C语言17复习题.docx
- 文档编号:26927728
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:20
- 大小:29KB
C语言17复习题.docx
《C语言17复习题.docx》由会员分享,可在线阅读,更多相关《C语言17复习题.docx(20页珍藏版)》请在冰豆网上搜索。
C语言17复习题
1-6章习题
一、选择题
1.一个C语言程序是由()组成。
A)主程序和子程序B)函数C)若干过程D)多个子程序
2.C语言中用于结构化程序设计的三种基本结构是()。
A)顺序结构、选择结构、循环结构B)if、switch、break
C)for、while、do-whileD)if、for、continue
3.C语言中运算对象必须是整型的运算符是()。
A)%B)/C)=D)〈=
4.以下选项中不能作为合法常量的是()。
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
5.以下不合法的变量是()。
A)nB)C$C)_intD)t3
6.下面程序的输出结果是()
A)1B)0C)4D)3
main()
{
intx=10,y=3,z;
printf(“%d\n”,z=(x%y,x/y));
}
7.设a=5、b=6、c=7、d=8、m=2、n=2,执行表达式:
(m=a>b)&&(n=c>d)后n的值为()
A)1B)2C)3D)4
8.设a=10、b=12,则printf(“%d”,(a>b)?
a:
b);的输出结果是()
A)10B)11C)12D)13
9.以下程序输出结果是()
main()
{intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf(“%d\n”,m--);}
A)7 B)6 C)5 D)4
10.为了避免嵌套if语句的二义性,C语言规定else总是与( )组成配对关系。
A)缩排位置向他的if
B)与其之前未配对的if
C)与其之前未配对的最近if
D)同一行上的if
11.设变量a、b、c、d和y都已正确定义并赋值。
若有以下if语句:
if(a
if(c==d)y=0;
elsey=1;
该语句所表示的含义是()
A)
y=
y=
0a
1a≥b1a≥b且c≠d
y=
y=
C)0a
1a
12.若有定义inti=10;执行下列程序后,变量i的正确结果是()。
switch(i)
{case0:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A)10B)13C)12D)11
13.下列程序是求1到100的累加和,其中有1个不能够完成规定的功能,是()。
A)s=0;i=0;B)s=0;i=1;
while(i<=100)while(i++<100)
s+=i++;s+=i;
C)s=0;i=0;D)s=0;i=0;
while(i<100)while(++i<=100)
s+=++i;s+=i
14.下面程序段
intn,t=1,s=0;
scanf("%d",&n);
do{s=s+t;t=t-2;}while(t!
=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是()
A)任意正奇数B)任意负奇数
C)任意正偶数D)任意负偶数
15.当执行以下程序段时()
x=-1;
do{x=x*x;}
while(!
x);
A)循环体将执行一次 B)循环体将执行两次
C)循环体将执行无限次 D)系统将提示有语法错误
16..以下叙述中错误的是()
A)C语句必须以分号结束
B)复合语句在语法上被看作一条语句
C)空语句出现在任何位置都不会影响程序运行
D)赋值表达式末尾加分号就构成赋值语句
1.下列不合法的变量名是()
A)DayB)_cwsC)a2_1D)3d64
2.以下选项合法的字符常量是()。
A)“a”B)‘\n’C)‘china’D)a
3.下面字符串常量"Name\0Add\"ress\n"的长度是()。
A)14B)15C)16D)4
4.若变量已正确定义并赋值,下面符合C语言语法的表达式是()
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
5.设a=5、b=6、c=7、d=8、m=2、n=2,执行表达式:
(m=a>b)&&(n=c>d)后n的值为()
A)1B)2C)3D)4
8.能正确表示逻辑关系:
“x≥3且x≤9”的C语言表达式是()。
A)x>=3orx<=9B)x>=3|x<=9
C)x>=3&&x<=9D)x>=3‖x<=9
11.下面程序的运行结果是()。
#include"stdio.h"
voidmain()
{inta=3,c=5;
printf("a=%%d,c=%%d\n",a,c);
}
A)a=3,c=5B)a=%3,c=%5C)a=%d,c=%dD)a=%%d,c=%%d
13.数字字符0的ASCII值为48,若有以下程序
main()
{chara='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是()。
A)3,2B)50,2C)2,2D)2,50
14.设变量已正确定义,则以下能正确计算f=n!
的程序段是()
A)f=0;B)f=1;
for(i=1;i<=n;i++)f*=i;for(i=1;i C)f=1;D)f=1; for(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i; 15.有如下程序 main() { intx,y; x=-1;y=-1; if(x! =0) {if(x>0)y=1;} elsey=0; printf("%d\n",y); } 该程序的输出结果是() A)1B)-1C)0D)2 21.若有定义inti=10;执行下列程序后,变量i的正确结果是()。 switch(i) {case0: i+=1; case10: i+=1; case11: i+=1; default: i+=1; } A)10B)13C)12D)11 18.若有定义: float x=1.5;int a=1,b=3,c=2;则正确的switch语句是() A)switch(x) B)switch((int)x); {case 1.0: printf(“*\n”); {case 1: printf(“*\n”); case 2.0: printf(“**\n”);} case 2: printf(“**\n”);} C)switch(a+b) D)switch(a+b) {case 1: printf(“*\n”) {case 1: printf(“*\n”); case 2+1: printf(“**\n”);} case c: printf(“**\n”);} 二、填空题 1.代数式 的C语言表达式是________________________________。 2.一个C程序必定从_____________函数开始执行。 3.若有定义语句: intx=28,y=35;要求用printf函数以x=28,y=35的形式输出,请写出完整的输出语句: _________________________________________ 4.在C语言中,用__________语句实现当型循环结构,__________语句实现直到型循环结构,for语句属于__________型循环。 三、写出程序运行结果 1.下面程序运行后输出的结果是________________ #include main() { inti,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2)continue; x++; } x++; } printf("x=%d\n",x); } 四、完善程序题 1.以下程序功能为: 从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入,请填空将程序补充完整。 #include“stdio.h” main() {floatx,amax,amin; scanf(“%f”,&x); amax=amin=x; while() {if(x>amax)amax=x; if()amin=x; () } printf(“\namax=%f\namin=%f\n”,amax,amin); } 1.以下数组定义中错误的是() A)int x[][3]={0}; B)int x[2][3]={{1,2},{3,4},{5,6}}; C)int x[][3]={{1,2,3},{4,5,6}};D)int x[2][3]={1,2,3,4,5,6}; 2.有以下程序 main() {charp[]={'a','b','c'},q[]="abc"; printf("%d%d\n",sizeof(p),sizeof(q)); } 程序运行后的输出结果是() A)44B)33C)34D)43 3.若有定义: inta[5];则a数组中首元素地址可以表示为() A)&aB)a+1C)&a[1]D)a 4.下面程序段的执行结果是()。 #definePT5.5 #defineS(x)PT*x*x main() {inta=1,b=2; printf(“%4.1f\n”,S(a+b)) } A)49.5 B)9.5 C)22.0 D)45.0 5.有以下程序 #definef(x)(x*x) main() {inti1,i2; i1=f(8)/f(4);i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } 程序运行后的输出结果是() A)64,28B)4,4C)4,3D)64,64 6.有以下程序 main() { chara[7]="a0\0a0\0";inti,j; i=sizeof(a);j=strlen(a); printf("%d%d\n",i,j); } 程序运行后的输出结果是()。 A)22B)76C)72D)62 1.阅读下面程序,写出运行结果________________ #include"stdio.h" #definePQ4.5 #defineABC(x)PQ+(x*x) main() { inta=3,b,c,d; b=ABC(a); c=ABC(a+1); d=2.0*ABC(a); printf("b=%d,c=%d,d=%d\n",b,c,d); } 4.下面程序运行后输出的结果是________________ fun(inta) {intb=0;staticintc=3; b++;c++; return(a+b+c); } main() {inti,a=5; for(i=0;i<3;i++)printf("%d%d",i,fun(a)); printf("\n"); } 3.下面程序的功能是用: 从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算所有学生的平均成绩,并输出低于平均分的学生的成绩。 填空将程序补充完整。 #include"stdio.h" voidmain() {floats[1000],aver,sum=0.0,a; intn=0,i; printf("Enterthescore: \n"); scanf("%f",&a); while(a>=0&&a<=100) {sum+=_____⑦____;s[n]=a;n++;scanf("%f",&a);} aver=______ _______; printf("aver=%10.4f\n",aver); printf("Thescorebelowaverage: \n"); for(i=0;i if(_____⑨__)printf("%6.2f",s[i],); .下面函数的功能是()。 voidExchange(int*p1,int*p2) { intp; p=*p1;*p1=*p2;*p2=p; } A)交换*p1和*p2的值B)正确,但无法改变*p1和*p2的值 C)交换*p1和*p2的地址D)可能造成系统故障 2.下列对字符串的定义,错误的是() A)charstr[7]=”FORTRAN”; B)charstr[]=”FORTRAN”; C)char*str=”FORTRAN”; D)charstr[]={‘F’,’O’,’R’,’T’,’R’,’A’,’N’,’\0’}; 3.有以下程序 main() {inta[10]={1,2,3,4,5,6,7,8,9,10},*p,*q; p=&a[4];q=p+3; printf("%d\n",*p+*q); } 程序运行后的输出结果是()。 A)16B)10C)13D)程序出错 4.有以下程序 voidfun1(char*p) {char *q; q=p; while(*q! =′\0′) { (*q)++;q++; } } main() {char a[]={″Program″},*p; p=&a[3];fun1(p);printf(″%s\n″,a); } 程序执行后的输出结果是() A)Prohsbn B)Prphsbn C)Progsbn D)Program 5.有以下函数 fun(char*a,char*b) {while((*a! ='\0')&&(*b! ='\0')&&(*a==*b)) {a++;b++;} return(*a-*b); } 该函数的功能是()。 A)计算a和b所指字符串的长度之差 B)将b所指字符串连接到a所指字符串中 C)将b所指字符串连接到a所指字符串后面 D)比较a和b所指字符串的大小 6.有下面程序段 main() {char*s=”cdefg”; s+=2; printf(“%s”,s); } 其运行结果是________。 7.设整型变量year表示某一年号,已知判断其是否是闰年需符合下列条件之一: (a)能被4整除,但不能被100整除; (b)能被400整除。 则其可以用C语言的逻辑表达式表示为________________________________。 8.下面程序运行后输出的结果是________________ inta=1; intf(intn) {staticinta=2; intt=0; if(n%2){staticinta=4;t+=a++;} else{staticinta=5;t+=a++;} returnt+a++; } main() {ints=a,i; for(i=0;i<3;i++)s+=f(i); printf("%d\n",s); } 9.下面程序运行后输出的结果是________________ #include"stdio.h" voidmain() {inta=-1,b=3,c=3,s=0,w=0,t=0; if(c>0)s=a+b; if(a<=0) {if(b>0) if(c<=0)w=a-b; } elseif(c<0)w=a-b; elset=c; printf("%d,%d,%d,\n",s,w,t); } 10.下面程序运行后输出的结果是________________ #include"stdio.h" voidsub(intx,inty,int*z) {*z=y+x;} voidmain() { inta,b,c; sub(9,5,&a);sub(6,a,&b);sub(a,b,&c); printf("%4d,%4d,%4d\n",a,b,c); } 11.下面程序运行后输出的结果是________________ #include voidfun(intp[],intn) { inti,j,t; for(i=0,j=n-1;i { t=p[i];p[i]=p[j];p[j]=t; } } voidmain() { inti,a[10]={1,2,3,4,5,6,7,8,9,10}; fun(a,10); for(i=0;i<10;i++) printf("%d\t",a[i]); } 12.以下程序的功能是编一个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。 形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。 voidfun(int*a,intn,int*odd,int*even) { ④ ; *even=0;*odd=0; for(i=0;i if( ⑤ ) *even+=a[i]; else *odd+= ⑥ ; } 13.若用数组名作为函数调用的实参,则实际上传递给形参的是() A)数组的首地址;B)数组的第一个数组元素; C)数组中的全部元素的值;D)元素的个数. 14.若有语句: char*line[5];,以下叙述中正确的是()。 A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 15.有以下程序 point(char*p){p+=3;} main() {charb[4]={'a','b','c','d'},*p=b; point(p);printf("%c\n",*p); } 程序运行后的输出结果是()。 A)aB)bC)cD)d 16.下面程序运行后输出的结果是________________ #include"stdio.h" voidswap(int*p1,int*p2) {int*t; printf("%d,%d\n",*p1,*p2); t=p1;p1=p2;p2=t; printf("%d,%d\n",*p1,*p2); } main() {inta,b,*p,*q; p=&a;q=&b; a=7;b=8; printf("a=%d,b=%d\n",a,b); swap(p,q); printf("a=%d,b=%d\n",a,b); } 17.下面程序运行后输出的结果是________________ #include"stdio.h" voidmain() {intarr[]={30,25,20,15,10,5}; int*p=arr; p++; printf("%d\n",*(p+2)); } 18下面程序,写出运行结果。 main() {inta,b,k=4,m=6,*p1=&k,*p2=&m; a=(pl==&m); b=(*p1)/(*p2)+7; printf("a=%d,b=%d\n",a,b); } 19.有以下程序 voidf(int*x,int*y) { intt; t=*x;*x=*y;*y=t; } main() { inta[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p {f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是()。 A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4, C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1, 20.下面函数str_copy实现将形参指针str1所指的字符串复制到形参指针str2所指的字符数组里,并返回字符串的长度。 函数源代码如下,请将空白处填充完整。 intstr_copy(str1,str2) char*str1,*str2; {intk; k=0; while(______①____) { ______②____; k=k+1; } str2[k]='\0'; return(______③____); } 22.有以下程序 voidsum(inta[]) {a[0]=a[-1]+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 17 复习题