湖南工程学院C语言程序考试复习题有答案.docx
- 文档编号:23833029
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:20
- 大小:24.56KB
湖南工程学院C语言程序考试复习题有答案.docx
《湖南工程学院C语言程序考试复习题有答案.docx》由会员分享,可在线阅读,更多相关《湖南工程学院C语言程序考试复习题有答案.docx(20页珍藏版)》请在冰豆网上搜索。
湖南工程学院C语言程序考试复习题有答案
2021湖南工程学院年C语言程序考试题
一、单项选择题
1.C程序的根本构成单位是〔C〕
A)文件B)命令C)函数D)语句
2.在C语言中,'a'是〔B〕
A)字符串常量B)字符常量C)变量D)函数
3.在C语言中,“a=b=c=5〞属于哪种表达式?
〔B〕
A)关系B)赋值C)逻辑D)非法
4.设a、b为整型,那么表达式(a=2,b=5,b++,a+b)的值是〔D〕
A)2B)6C)7D)8
5.假设有以下变量定义:
intb=2;
floata=5;
那么表达式“a/b〞之值为〔A〕
A)2.5B)2C)3D)5/2
6.假设j=3,那么表达式(++j)+(j++)的值为〔C〕
A)6B)7C)8D)10
7.以下只能输入单个字符的函数是〔C〕
A)printf()B)puts()C)getchar()D)putchar()
8.假设a的原值为4,那么表达式“a*=a-=3〞运算后,a的值是〔D〕
A)13B)4C)3D)1
9.假设a=5、b=3、c=1,那么表达式“a>b>c〞的值为〔A〕
A)0B)1C)3D)5
10.假设有代数式:
以下错误的C语言表达式是〔C〕
A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3
11.以下能输出字符数组str中字符串的语句是〔B〕
A)printf("%c",str[0]);B)printf("%s",str);
C)printf("%s",str[]);D)putchar(str);
12.假设p=&x,那么以下关系表达式之值为1的是〔B〕
A)p==xB)*p==xC)&p==xD)*x==p
13.C语言中最根本的数据类型包括〔B〕
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、逻辑型、字符型D)整型、实型、字符串型
14.C语言中,要求运算对象必须是整型数据的运算符是〔A〕
A)%B)/C)\D)&&
15.表示数学关系“x≥y≥z〞的C语言表达式是〔C〕
A)x>=y>=zB)x>=y||y>=zC)x>=y&&y>=zD)x≥y≥z
16.以下说法中正确的选项是〔C〕
A)C程序总是从文件中第一个函数开场执行
B)C程序中,只有main()函数才可以调用其他函数
C)C程序总是从main()函数开场执行
D)C程序中的main()函数必须放在程序的开头
17.假设有定义:
inta=7;
floatx=2.5,y=4.7;
那么表达式x+a%3*(int)(x+y)%2/4的值为〔A〕
A)2.5B)2.75C)3.5D)0
18.设变量a是整型,f是实型,i是双精度型,那么表达式10+'a'+i*f值的数据类型为〔C〕
A)intB)floatC)doubleD)不确定
19.有输入语句:
scanf("%d,%d",&a,&b);
为使变量a、b分别为5与3,从键盘输入数据的正确形式为〔B〕
A)53<回车>B)5,3<回车>C)a=5b=3<回车>D)a=5,b=3<回车>
20.定义如下变量与数组:
intj;
intx[3][3]={1,2,3,4,5,6,7,8,9};
那么下面语句的输出结果是〔C〕
for(j=2;j>=0;j--)
printf("%2d",x[j][2-j]);
A)159B)147C)753D)369
21.执行下面程序后,a的值是〔B〕
#include
#defineSQR(x)x*x
voidmain()
{inta=10,k=2,m=1;
a=SQR(k+m);
printf("%d\n",a);
A)10B)5C)2D)1
22.以下表达不正确的选项是〔C〕
A)在函数内部定义的变量是局部变量
B)函数中的形式参数是局部变量
C)全局变量的作用范围仅限于其所在的整个文件
D)局部变量的作用范围仅限于本函数
23.设a=3,b=4,c=2,d=1,那么表达式“a>b?
a:
c>d?
c:
d〞的值为〔C〕
A)4B)3C)2D)1
24.有以下程序段:
x=-1;
do
x=x*x;
while(!
x);
执行时,循环体执行的次数为〔B〕
A)0B)1C)2D)不确定
25.以下不正确的if语句形式是〔C〕
A)if(x>y&&x!
=y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf("%d",&x)
elsescanf("%d",&y);
D)if(x 26.以下程序的输出结果是〔C〕 #include voidmain() {intx=2,y=-1,z=2; if(x if(y<0)z=0; elsez+=1; printf("%d\n",z);} A)0B)1C)2D)3 27.以下能正确计算1×2×3×…×10的程序段是〔A〕 A)i=1,s=1;B)s=1;i=1; dowhile(i<=10) {s=s*i;i++;}s=s*(++i); while(i<11); C)for(i=1,s=0;i<=10;i++)D)for(i=1,s=1;;i++) s=s*i;s=s*i; 28.假设j为整型变量,那么以下循环执行次数是〔C〕 for(j=0;j==0;) printf("%d",j--); A)无限次B)0次C)1次D)2次 29.假设有说明: inta[10];那么对a数组元素的正确引用是〔C〕 A)a[3.5]B)a(8)C)a[6-5]D)a[10] 30.C语言规定,变量做实参时,它与对应形参之间的数据传递方式是〔B〕 A)地址传递B)单向值传递C)双向值传递D)由用户指定传递方式 31.C中,一个float类型的数据在内存中占〔C〕个字节。 A)1B)2C)4D)8 32.设有程序段: intk=5; while(k<=0) k--; 那么以下描述中正确的选项是〔C〕 A)while循环执行5次B)循环是无限循环 C)循环语句一次也不执行D)循环体语句执行一次 33.下面程序段的运行结果是〔B〕 charc[5]={'a','b','\0','c','\0'}; printf("%s",c); A)'a''b'B)abC)AbcD)"abc" 34.以下不正确的字符串赋值语句是〔C〕 A)char*s;s="abcde";B)chars[]="abcde"; C)chars[10];s="abcde";D)char*s="abcde"; 35.设p1、p2是指向int型一维数组的指针变量,k为int型变量,以下错误的语句是〔B〕 A)k=*p1+*p2;B)p2=k;C)p1=p2;D)k=p2-p1; 36.下面程序的输出结果是〔A〕 #include voidmain() {chars[]="ABCD"; char*p; for(p=s;p printf("%s\n",p); A)ABCDB〕AC〕DD〕ABCD BCDBCABC CDCBAB DDAA 37.以下关于C函数的定义与调用描述正确的选项是〔B〕 A)函数的定义可以嵌套,但函数的调用不可嵌套 B)函数的调用可以嵌套,但函数的定义不可嵌套 C)函数的定义与调用均可以嵌套 D)函数的定义与调用均不可嵌套 38.以下关于变量的作用域说法正确的选项是〔D〕 A)在不同函数中不能使用一样名字变量 B)在函数外部定义的变量只在本函数范围内有效 C)在函数内的复合语句定义的变量在本函数内有效 D)形式参数是局部变量 39.以下关于变量的作用域表达不正确的选项是〔C〕 A)在函数内部定义的变量是局部变量 B)函数中的形式参数是局部变量 C)全局变量的作用范围仅限于其所在的文件 D)局部变量的作用范围仅限于本函数 40.以下关于C函数参数说法不正确的选项是〔B〕 A)实参可以是常量、变量与表达式 B)形参可以是常量、变量与表达式 C)实参可以为任意数据类型 D)形参应与对应的实参类型一致 41.以下关于C函数返回值的表达正确的选项是〔D〕 A)被调函数中只有使用return语句才能返回主调函数 B)使用一个return语句可以返回多个函数值 C)函数返回值类型取决于return语句中的表达式类型 D)函数返回值类型取决于定义该函数时所指定的类型 42.在C中,“a>b>c〞属于哪种表达式? 〔A〕 A)关系B)赋值C)逻辑D)非法 43.以下不合法的C表达式是〔C〕 A)10||8B)12==9+1C)++5D)x! =y 44.给定以下程序段: intn=10; while(n>6) {n--; printf("%3d",n); 以上程序段输出结果是〔D〕 A)1098B)987C)10987D)9876 45.假设i,j已定义为int型,那么以下程序段中内循环总的执行次数是〔C〕 for(i=5;i>0;i--) for(j=1;j<6;j++) A)30B)24C)25D)20 46.假设已定义: float*p,m=3.14159;那么使p指向m正确的赋值语句是〔B〕 A)p=m;B)p=&m;C)*p=m;D)*p=&m; 47.假设已定义: chars[10];那么下面表达式中不能表示s[1]地址的是〔A〕 A)s++B)s+1C)&s[0]+1D)&s[1] 二、填空题 1.函数是C程序的根本构成单位,C程序总是从main函数____开场执行的。 2.赋值表达式x*=y+5的另一种书写形式为x=x*(y+5) 3.a=10,b=20,c=3,那么表达式a>b||c的值为1 4.整数m既能被3整除又能被4整除的逻辑表达式为(m%3==0)&&(m%4==0) 5.假设有定义: doublea[10][5];那么数组a中行下标最大值为9,列下标最大值为4。 6.假设有定义: inta[]={1,4,6,5,8,9};那么*(a+5)的值为9 7.设有如下定义inta[5][6],*p;取数组元素a[4][2]的地址放到p中的语句为p=&a[4][2]; 8.未加特别说明〔说明为静态的〕的全局变量是外部的,能被其它文件中的函数使用,而在引用它的文件中,需要用关键字extern说明。 9.a=10,b=20,那么表达式! a>b的值为0 10.写出0 11.假设有定义: inta[10],*p=a;那么元素a[5]的值用p表示的形式是*(p+5) 12.假设有定义: int*p[4];那么标识符p表示数组长度为4的一维指针数组 13.但凡函数中未指定存储类型的局部变量,其默认的存储类型为auto 三、程序填空 1.下面程序的功能是: 从键盘输入一个字符,假设是大写字母,那么转换为小写字母并输出,假设为小写字母那么直接输出,请在_____处填上适宜内容,使程序完整。 #include voidmain() {charch; ch=getchar(); if(ch>='A'&&ch<='Z') ch+=32; printf("%c",ch); 2.下面程序的功能是: 求1~100间的偶数与,请在_____处填上适宜内容,使程序完整。 #include<> voidmain() {intnum,sum=0; for(num=2;num<=100;num=num+2) sum=sum+num; printf("1-100间的偶数与是: %d\n",sum); 3.下面程序段是求n! 的递归函数,请将函数补充完整。 doublefac(intn) {doubleresult; if(n==1) result=1; else result=n*fac(n-1); return(result); 4.以下程序的功能是: 输入一整数n,判断是否为素数。 #include #include voidmain() {inti,n; scanf("%d",&n); for(i=2;i<=sqrt(n);i++) if(n%i==0) break; if(i>sqrt(n)) printf("%disaprimenumber.\n",n); else printf("%disnotaprimenumber.\n",n); 四、阅读程序 1.#include voidmain() {charch; intcnt1=0,cnt2=0; while((ch=getchar())! ='\n') if(ch>='a'&&ch<='z')cnt1++; elsecnt2++; printf("COUNT=%d\n",cnt1); 假设输入“ThisisaCprogram.〞,运行结果: COUNT=13 voidmain() {inti,j,temp; inta[]={0,1,2,3,4,5,6,7,8,9}; for(i=0,j=9;i {temp=a[i];a[i]=a[j];a[j]=temp;} for(j=0;j<10;j++) printf("%2d",a[j]); 运行结果: 9876543210 #include voidmain() {charstr1[20]="good",str2[]="morning"; inti,j; for(i=strlen(str1),j=0;str2[j]! ='\0';i++,j++) str1[i]=str2[j]; str1[i]='\0'; printf("string1=%s",str1); 运行结果: string1=goodmorning voidmain() {inti,j,pos; floatval,a[10]; for(i=0;i<10;i++) scanf("%f",&a[i]); val=a[0]; for(j=0;j<10;j++) if(a[j]>val) {val=a[j];pos=j;} printf("Max=%f,position: %d",val,pos); 本程序的功能是: 从键盘输入10个数存到数组a中,求10个数的最大值及其位置 当程序运行时,从键盘输入“1029384756〞,运行结果: Max=,position: 3 floataverage(intx[],intn) {inti; floatsum=0; for(i=0;i sum+=x[i]; return(sum/n); voidmain() {inta[5]={2,4,6,8,10}; floatrst; rst=average(a,5); printf("result=%f\n",rst); 运行结果: result= 2.给定如下程序: voidmain() {chargrade; scanf("%c",&grade); switch(grade) {case'A': printf("85—100\n");break; case'B': printf("70—84\n");break; case'C': printf("60—69\n");break; case'D': printf("<60\n");break; default: printf("error\n"); 当程序运行时,从键盘输入“D〞,输出的结果是: <60 3.给定如下程序: voidmain() {inta[5]={2,5,3,7,6},i,j,t; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<5;i++) printf("%3d",a[i]); 该程序的功能是: 用“起泡法〞对数组a中的5个整数按由小到大排序并输出 输出的结果为: 23567 4.给定如下程序: voidfun() {autointb=0; staticintc=4; b++; c++; printf("b=%dc=%d\n",b,c); voidmain() {inti; for(i=0;i<3;i++) fun(); 运行结果是: b=1c=5 b=1c=6 b=1c=7 5.给定如下程序: #include voidmain() {char*p1,*p2,c,s[50]; gets(s); p1=s;p2=s+strlen(s)-1; for(;p1 {c=*p1;*p1=*p2;*p2=c; printf("Thenewstringis%s\n",s); 此程序的功能是: 从键盘输入一字符串存放到数组s中,将此字符串逆序输出 当程序运行时,从键盘输入“abcwe#y〞,输出的结果是: Thenewstringisy#ewcba 五、按要求编程 1.编写0~100之间偶数之与的程序。 #include voidmain() {intnum,sum=0; for(num=2;num<=100;num=num+2) sum=sum+num; printf("sum=%d\n",sum); 2.编程计算1! +2! +3! +…+20! 。 #include voidmain() floats=0,t=1; intn; for(n=1;n<=20;n++) t=t*n; s=s+t; printf("1! +2! +....+20! =%e\n",s); 3.统计由键盘输入的任意一串字符中空格的个数。 #include voidmain() charch; intspace=0; while((ch=getchar())! ='\n') if(ch=='')space++; printf("konggeshu=%d\n",space); 4.编写程序找出1—100之间的素数,并统计素数的个数。 #include #include voidmain() intm,k,i,n=0; for(m=1;m<=100;m=m+2) k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) printf("%3d",m); n=n+1; if(n%10==0)printf("\n"); printf("\ntotalnumberis=%d",n); 5.打印杨辉三角形〔10行〕。 要求: 使用二维数组与循环语句实现。 1 11 121 1331 #include #defineN11 voidmain() inti,j,a[N][N]; for(i=1;i a[i][i]=1; a[i][1]=1; for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); 6.从键盘输入10个数,找出最大值与最小值,并计算它们的平均值。 #include voidmain() floata[10],aver,sum,max,min; inti; for(i=0;i<10;i++) scanf("%f",&a[i]); max=min=a[0]; sum=a[0]; for(i=1;i<10;i++) if(a[i]>max)max=a[i]; elseif(a[i] sum=sum+a[i]; aver=sum/10; printf("aver=%f,max=%f,min=%f",aver,max,min); 7.写一个函数求两个整数的最大公约数,函数原型为: intgongyue(intm,intn),在主函数中从键盘输入两个整数,然后调用gongyue函数,并输出结果。 #include intgongyue(intm,intn) inti; for(i=m;i>=1;i--) if(m%i==0&&n%i==0)break; return(i); voidmain() inta,b; scanf("%d,%d",&a,&b); printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南 工程学院 语言 程序 考试 复习题 答案