为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > C语言的主要特点有哪些

C语言的主要特点有哪些

2017-09-18 50页 doc 112KB 55阅读

用户头像

is_995397

暂无简介

举报
C语言的主要特点有哪些C语言的主要特点有哪些 一、选择题 1. C语言的主要特点有哪些?(多选) A.简洁、紧凑,使用方便、灵活,易于学习和应用。 B.C语言是面向结构化程序设计的语言。 C.C语言允许直接对位、字节和地址进行操作。 D.数据类型丰富。 E.C语言生成的目标代码质量高。 2. C语言程序由什么组成?(单选) A. 子程序 B. 主程序和子程序 C. 函数 D. 过程 3. 源程序要正确地运行,必须要有什么函数?(单选) A. printf函数 B. 自定义的函数 C. main函数 D. 不需要函数 4. 一...
C语言的主要特点有哪些
C语言的主要特点有哪些 一、选择题 1. C语言的主要特点有哪些?(多选) A.简洁、紧凑,使用方便、灵活,易于学习和应用。 B.C语言是面向结构化程序设计的语言。 C.C语言允许直接对位、字节和地址进行操作。 D.数据类型丰富。 E.C语言生成的目标代码质量高。 2. C语言程序由什么组成?(单选) A. 子程序 B. 主程序和子程序 C. 函数 D. 过程 3. 源程序要正确地运行,必须要有什么函数?(单选) A. printf函数 B. 自定义的函数 C. main函数 D. 不需要函数 4. 一个C程序的执行是从_____。 A. 本程序的main函数开始,到main函数结束 B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C. 本程序的main函数开始,到本程序文件的最后一个函数结束 D. 本程序文件的第一个函数开始,到本程序main函数结束 5. 以下叙述正确的是: A. 在C程序中,main函数必须位于程序的最前面 B. C程序的每行中只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 6. 以下叙述不正确的是。 A. 一个C源程序可由一个或多个函数组成 B. 一个C源程序必须包含一个main函数 C. C程序的基本组成单位是函数 D. 在C程序中,注释说明只能位于一条语句的后面 7. C语言规定:在一个源程序中,main函数的位置 。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 8. 一个C语言程序是由 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 一、选择题 1. 指出下面合法的标识符:(多选) A. 3ab B. int C. ABC D. a_3 E. sum.a F. #abc G. _stu2 H. abc f 2. 指出下面哪些是保留字:(多选) A. char B. abc C. printf D. Int E. float F. define G. include H. PI 3. 指出下面哪些是合法的用户定义的标识符?(多选) A. P-S B. putchar C. double D. _908 E. *par B. F. sheep! G. wind H. x y 4. C语言的基本类型哪些:(多选) A. 整型 B. 枚举型 C. 数组型 D. 指针型 E. 字符型 F. 构造型 G. 实形 H. 空类型 5. 这段程序中的常量有:(多选) #define PI 3.14 void main() { int sum; sum = 10 + 15; printf("sum=%d\n",sum); printf("result is 25\n"); } 这段程序中常量有: A. 10 B. sum C. 15 D. 25 E. main F. PI 6. C语言中整形常量按进制划分,有以下几种:(多选) A. 十六进制常量 B. 十进制常量 C. 八进制常量 D. 二进制常量 7. 75的十六进制写法为___,八进制写法为___。 0x75的八进制写法为___,十进制写法为___。 075的十进制写法为___,十六进制写法为___。 8. 如果要把常量327存入变量a中,a可以定义成哪些类型?(多选) A. int B. char C. long D. float 9. 下面哪些写法是对的,而且是常量?(多选) A. 125 B. -.456 C. 1.25e20 D. 'AB' E. E6 F. 0238 G. 0xabcdef H. "\n\\\'\123" 10. 下面哪个表达式的值为4.(单选) A. 11/3 B. 11.0/3 C. (float)11/3 D. (int)(11.0/3+0.5) 11. 已知整型变量a=6,b=7,c=1,则下面表达式的值为多少? a+3 ___ (b-a*3)/5 ___ c*(a+b)+b*(c+a) ___ 3.2*(a+b+c) ___ 12. 已知整型变量a=6,字符型变量ch='A',浮点数变量f=2.1,则下面表达式的值为多 少?(提示:'A'的ASCII码为65) a+4.5 ___ ch+a+f ___ (a+30)/5 ___ (a+30)/5.0 ___ 13. 指出下面错误的表达式:(多选) A. a+b=5 B. 56=a11 C. i=i++ D. 5.6+6.2%3.1 E. 12 F. a=5,b=6,c=7 14. 若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实 现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?(多选) A. f=(f*100+0.5)/100.0 B. i=f*100+0.5,f=i/100.0; C. f=(int)(f*100+0.5)/100.0; D. f=(f/100+0.5)*100.0; 15. 下面哪些是非法的C语言转义字符?(多选) A. '\t' B. '\08' C. '\0xaf' D. '\\' 16. 若有以下说明语句:(单选) char s='\\\092'; 则下面哪一项是正确的. A. 使s的值包含2个字符 B. 说明语句不合法 C. 使s的值包含6个字符 D. 使s的值包含4个字符 17. 请从下面的选项中选出正确的C语言的转义字符。(多选) A. '//' B. '\'' C. '\t' D. '\n' E. '\1011' F. '/018' G. '/123' H. '\xaa' 18.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为 A. char void main() { char ch=0x31; printf("%d\n",ch);//屏幕显示___ printf("%o\n",ch);//屏幕显示___ printf("%x\n",ch);//屏幕显示___ printf("%c\n",ch);//屏幕显示___ } 3. 以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的 值给c,然后输出a,b,c的值。请填空。 #include main() { ___ int temp; printf("Enter a,b,c:"); scanf("%d%d%d",___); ___ a=b; b=c; ___ printf("a=%d b=%d c=%d\n",a,b,c); } 4. 输入两个实数a,b,然后交换它们的值,最后输出(提示:要交换两个数得借助一个 中间变量temp。首先让temp存放a的值,然后把b存入a,再把temp存入b就完成了)。 void main() { float a,b,temp; printf("请输入a和b的值:"); scanf("%d,%d",___); temp = a; ___ ___ printf("交换后, a=%d , b=%d\n",___); } 一、选择题 1. 假设所有变量均已说明,写出下列各程序段运行后x的值。(多选) ok1=1; ok2=2; ok3=0; x=15; a=3; b=4; (1)if(!ok1) x++; else if(ok2) { if(ok3) x=3; else x=4; } 运行后x的值为下面哪一个? A. 15 B. 3 C. 16 D. 4 (2)if(ok1) { if(ab) a=b,b=c;c=a; printf("a=%d b=%d c=%d\n",a,b,c); A. a=7 b=8 c=7 B. a=7 b=9 c=7 C. a=8 b=9 c=7 D. a=8 b=9 c=8 4. 该程序的运行结果是:(单选) void main() { int a,b,c; a=2;b=7;c=5; switch(a>0) { case 1: switch(b<10) { case 1:printf("^");break; case 0:printf("!");break; } case 0: switch(c==5) { case 0: printf("*");break; case 1: printf("#");break; default:printf("%%");break; } default: printf("&"); } printf("\n"); } A. ^#& B. ^ C. & D. ^!*#%& 5.能正确表示"当x 的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是 A. (x>=1) &&(x<=10) &&(x> = 200) &&(x<=210) B. (x>=1) || (x<=10) ||(x>=200) ||(x<=210) C. (x>=1) &&(x<=10)||(x>= 200) &&(x<=210) D. (x > =1)||(x< =10) && (x> = 200)||(x<=210) 6.判断char型变量ch是否为大写字母的正确表达式是 A. ' A' <=ch<='Z' B. (ch> = 'A')&(ch<=' Z' ) C. (ch>=' A' )&&(ch<='Z') D. (' A' < = ch)AND('Z'> = ch) 7.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 A. 'y'&&'y' B. x < =y C. x||y+z&&y-z D. !(xy && x!=y); B. if(x= =y) x+=y; C. if(x != y) scanf("%d",&x ) else scanf("%d",&y); D. if(X 5) printf(" %d\n",m); e1se printf("%d\n",m- - ); } A. 4 B. 5 C. 6 D. 7 二、填空题 1. 当a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1)if(a>c) {a=b;b=c;c=a;} else {a=c;c=b;b=a;} 执行后a,b,c的值为___,___,___ (2)if(ac&&b==c的值为___。 3. 若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什么? switch(x/10) { case 6: case 7: printf("Pass\n"); break; case 8: printf("Good\n"); break; case 9: case 10: printf("VeryGood\n"); break; default: printf("Fail\n"); } x等于 95时,程序段运行后屏幕上显示___ x等于 87时,程序段运行后屏幕上显示___ x等于100时,程序段运行后屏幕上显示___ x等于 43时,程序段运行后屏幕上显示___ x等于 66时,程序段运行后屏幕上显示___ x等于 79时,程序段运行后屏幕上显示___ 4. 下面这个程序要求用户输入两个整数和一个字符。字符必须是'+'、'-'、'*'、'/' 其中的一个。然后程序输出两数作相应运算的结果。 例如:输入 123,34,+ 程序输出 123+34=157。请填空。 #include void main() { float d1,d2,result; char op; int error=0; scanf("%f,%f,%c",&d1,&d2,&op); switch(op) { case '+':result=___;break; case '-':result=___;break; case '*':result=___;break; case '/':result=___;break; default :error=1; } if(error) printf("运算操作符输入有错!"); else printf("%.2f%c%.2f=%.2f\n",___); } 三、编程题 1、键入大写字母,将该大写字母转换为小写字母输出。 2、编程依据x的取值范围求y的值: x (x?1) y= 2x-1(1n) m=m-n; while(n>m) n-=m; } printf("m=%d\n",m); 输出结果为: A. m=13 B. m=11 C. m=1 D. m=2 2. 该程序的输出结果是多少?(单选) for(i=0;i<5;i++) { for(j=1;j<10;j++) if(j==5) break; if(i<2) continue; if(i>2) break; printf("%d,",j); } printf("%d\n",i); 输出结果为: A. 10,3 B. 5,2 C. 5,3 D. 10,2 3. 该程序的输出结果是什么?(单选) #include void main() { int n; n=0; while(n<8) { switch(n%3) { case 2: putchar('2'); case 1: putchar('i'); break; case 0: putchar('H'); } n++; } } A. Hi2Hi2Hi B. Hi2 C. Hi2iHi2i D. Hi2iHi2iHi 4. 该程序的输出结果是多少?(单选) #include main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; } } printf("x=%d\n",x); } A. x=4 B. x=8 C. x=6 D. x=12 5. 若k为整型,以下while循环执行___次.(单选) k=2; while(k=0) printf("%d",k),k--; printf("\n"); A. 无限次 B. 0次 C. 1次 D. 2次 6. 下面这个程序的输出是什么?(单选) #include main() { int y=10; while(y--); printf("y=%d\n",y); } A. y=0 B. while构成死循环 C. y=1 D. y=-1 7. 圆周率pi的近似率可用下面的公式求得: pi*pi/6 约等于 1/(1*1) +1/(2*2) +...+1/(n*n) 由以上公式可知,若n取值10000,则最后一项的值为1E-4,认为可达到精度要求。 以下程序用来求pi的近似值。请填空。(其中函数sqrt(a)用于求a的平方根)(单选) #include #include main() { long i; float pi; pi=0.0; for(i=1;i<=10000;i++) pi+=___; pi=sqrt(6.0*pi); printf("pi=%10.6lf\n",pi); } A. 1/i*i B. 1/(i*i) C. 1.0/i*i D. 1.0/(i*i) 8. 下面这个程序执行后i和s的值为多少?(单选) #include void main() { int i,s; i=0;s=0; while(i<10); { s+=(i++); printf("%d\n",s); } printf("i=%d\n",i); } A. i值为9,s值为45 B. i值为10,s值为45 C. i值为10,s值为36 D. 程序陷入了死循环 9.设有程序段 int k=10; while (k=0) k= k—1; 则下面描述中正确的是 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句一次也不执行 D. 循环体语句执行一次 10.下面程序段的运行结果是: x = y= 0; while(x<15) y++,x + = ++y; printf("%d,%d",y,x); A. 20,7 B. 6,12 c) 20,8 D. 8,20 11.下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数 时结束循环,请选择填空: #indude main() {int a,b,t; scanf("%d%d",&a,&b); while( ________ ) {if(a>b) {t=a;a=b;b=t;} printf("%d,%d",a,b); scanf("%d%d",&a,&b); } } A. !a=b B. a!=b C. a= =b D. a=b 12.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的 个数n,并输出m、n中的较大者,请选择填空: #indude "stdio.h" main() {int m=0,n=0; char c; 1 while((_____)!='\n') { if(c>='A' && C<='Z') m++ ; if(c>='a' && c<='z') n++; } printf("%d\n", m= 'a'&& c<='z') c - = 30; if(c>'z' && c<='z'+ 2) _________; } printf(" %c",c) } A. c='B' B. c='A' C. c-=26 D. c=c+26 14.下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填 空。 #include main() {int a,max= 0; scanf("%d",&a) while(_____) {if(max(CR)表示回车),则下面程序的运 行结果是: #include main() { char c; int v0=0.v1=0,v2=0; do{ switch(c=getchar()) { case 'a':case 'A' : case 'e':case ' E' : case 'i':case 'I' : case 'o':case 'O' : case 'u':case 'U' :v1+=1; default:v0+=1;v2+=1 ;} ; }while(c!='\n'); printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2); } A. v0=7,v1=4,v2=7 B. v0=8,v 1=4,v2=8 C. v0= 11,v1=4,v2=11 D. v0=12,vl=4,v2=12 16.以下for循环的执行次数是: for (x=0,y=0; (y=123)&&(x<4); x++); A. 是无限循环 B. 循环次数不定 C. 执行4次 D. 执行3次 17.下面程序段的运行结果是: for (y= 1;y<10;) y=((x=3* y,x+1),x-1); printf ("x=%d,y=%d",x,y); A. x=27,y=27 B. x=12,y=13 C. x=15,y=14 D. x=y=27 18.下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。 #include ? main() {int i,sum= 0; for(i=1;i<=50;i++) if([1]) sum+=i; printf("%d",sum); } A. (int)(i/7)==i/7 B. (int)i/7==i/7 C. i%7= 0 D. i%7==0 19.下面程序的运行结果是: #include main() {int i,b,k=0; for(i=1;i<=5;i++) {b=i%2; while(b-->=0) k++; } printf("%d,%d",k,b); } A. 3,-1 B )8,-1 C. 3,0 D. 8,-2 20.以下正确的描述是。 A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时, 只能使用goto语句 21.下面程序段: for (t=1; t<=100;t++) {scanf("%d",&x); if(x<0) continue; printf("%3d",t);} A. 当x<0时整个循环结束 B. x>=0时什么也不输出 C. printf函数永远也不执行 D. 最多允许输出100个非负整数 22.与下面程序段等价的是: for(n=100;n<= 200; n++) { if (n%3==0) continue; printf("%4d",n); } A. for(n=100;(n%3)&& n<=200;n++) printf("%4d",n); B. for(n=100;(n%3)|| n<=200;n++) printf("%4d",n); C. for(n=100;n<=200;n++)if(n%3!=0)printf("%4d",n) D. for(n=100;n<=200; n++) { if(n%3) printf("%4d",n); else continue; break; } 23 .下面程序的运行结果是: #include "stdio.h" main() { int i; for(i=1;i<=5;i++) { if (i%2) printf("*"); else continue; printf("#"); } printf("#"); } A. *#*#$ B. *#*#*## C. *#*#$ D. #*#*$ 24.下面程序的运行结果是: main() { int i,j,a=0; for (i=0;i<2;i++) { for (j=0;j<=4;j++) { if (j%2) break; a++;} a++;} printf("%d\n",a); } A. 4 B. 5 C. 6 D. 7 1、依据公式?2222/6?1/1+1/2+„+1/n求?值。 #include main( ) { long I,n; double s=0.0; scanf(“%ld”,&n); for(I=1;I<=n;I++) s=s+_________?____; printf(“pai=%f\n”,_______?__); } 2、已知程序段: s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf(“%f\n”,s); 补充程序使之与上程序段功能相同 s=0.0; ________?___________; k=0; do { s=s+d; _________?__________; d=1.0/(k*(k+1)); }while(_______?________); printf(“%f\n”,s); 3、程序功能为键入若干学生成绩统计最高分与最低分,当输入负数时结束输入。 main( ) {float x,max,min; scanf(“%f”,&x); max=x;min=x; while(________?______) {if(x>max)max=x; if(________?______)min=x; scanf(“%f”,&x); } printf(“max=%f,min=%f\n”,max,min); } 4、求20以内3的倍数的和sum1及其余数的和sum2。 mian() { int sum1=0, sum2=0,i; for (i=1;_______ ;i++) if (________) sum1+=i; else sum2+=i; printf(“%d,%d\n”, sum1, sum2); } 5、输出fibnacci数列的前20项。 main() { int f1=1, f2=1, I, n=0; for(i=1;i<=10;i++) { printf (“%12d %12d”,f1, f2); f1=f1+f2; ___________; if(i%2==0) printf(“\n”); } } 6. 以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数.用输入 零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数. 请填空. #include main() { ___ n,i,j; printf("输入非零的整数(输入零结束程序)"); i=j=0; scanf("%d",&n); while___ { if(n>0) i=___; if(n<0) j=___; ___; } printf("i=%4d j=%4d\n",i,j); } 7. 斐波哪契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和, 即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。请 填空。 #include void main() { int f,f1,f2,i; f1=0;f2=___; printf("%d\n%d\n",f1,f2); for(i=3;i<=30;___) { f=___; printf("%d\n",f); f1=f2; f2=___; } } 8. 下面这个程序打印出以下这个三角形.请填空。 0 11 222 3333 44444 555555 6666666 77777777 888888888 9999999999 void main() { int i,j; for(i=0;i<=___;i++) { for(j=0;j<=___;j++) printf(___); ___ } } 9. 读懂下面的程序并填空。 #include void main() { long a,b,r; scanf("%ld",&a); b=0; do{ r=a%10; a=a/10; b=b*10+r; }while(a); printf("%ld",b); } 程序运行时如果输入 37 , 输出为___。 程序运行时如果输入 -345 , 输出为___。 程序运行时如果输入 10239, 输出为___。 10. 请改正下面这个远程序的错误: #include main() { int i,j,list(10); for(i=0,i<10,i++) { list[i] = 2*i+3; for(j=9,j>=0,j--) printf("%d\n",list[j]); } } 11.下面这个程序的作用是统计公元1年到公元2000年的闰年个数。判断闰年的方法是: 能被400整除的年是闰年;除能被400整除的年以外,凡是能被4整除,但不能被100 整除的年是闰年。其余年份是平年。请填空。 #include void main() { int year; int count=0; for(year=0;year<=2000;year++) if( (_____)||( year%4==0 && ____) ) ____; printf("%d",count); } 12. 读懂程序并填空。 #include void main() { int digit_num=0; int letter_num=0; int other_num=0; char ch; while(1) { ch=getchar(); if(ch=='!') break; if(ch>='0'&&ch<='9') digit_num++; else if( (ch>='A'&&ch<='Z') ||(ch>='a'&&ch<='z') ) letter_num++; else other_num++; } printf("The number of digit is %d\n",digit_num); printf("The number of letter is %d\n",letter_num); printf("The number of other is %d\n",other_num); } 程序运行时如果输入: 123adfhd^%234FDG%34%hJK+!_AAAD!<回车> 最后,变量 digit_num的值为___, 变量letter_num的值为___, 变量 other_num的值为___。 13. 除1外,只能被1和自己本身整除的自然数叫素数。下面这个程序就是求2到100 之间的素数。其中判断某数为素数的方法为用2到该数平方根之间的自然数去试整除该 数。如果没有哪个数能够整除该数,那么该数为素数;如果有,那么时合数。请填空。 (函数sqrt(a)求a的平方根) #include #include void main() { int i,j,k; int flag; for(i=2;i<=___;i++) { flag=1; k=(int)sqrt(i); for(j=2;j<___;j++) if(___==0) { flag=0; break; } if(flag) printf("%d\n",i); } } 三、编程题 1、求1+2+3+„+100的和。 2、求 1!+2!+ „+10! 3、求1+3+5+„+99的和。 4、打印如图所示的图形(利用循环语句) (1) ******* (2) * ***** *** *** ***** * ******* 5、任意从键盘键入10个数求其最大值与最小值。 6、“猴子吃桃子问题”,猴子每天吃掉前一天的一半多一个,第10天只剩下了1个桃子, 问第一天共有多少个桃子。 一、选择题 1. 指出下面各说明语句中哪些是合法的:(多选) A. int abcd[0x80]; B. char 9ab[10]; C. char chi[-200]; D. int aaa[5]={3,4,5}; E. float key[]={3.0,4.0,1,0}; F. char disk[]; G. int n,floppy[n]; H. int cash[4]={1,2,3,4,5,6}; 2. 下面的程序中哪一行有错误?(单选) #include main() { float array[5]={0.0}; /*第A行*/ int i; for(i=0;i<5;i++) scanf("%f",&array[i]); for(i=1;i<5;i++) array[0]=array[0]+array[i];/*第B行*/ printf("%f\n",array[0]); /*第C行*/ } A. 第A行 B. 第B行 B. 第C行 D. 没有 3. 下面哪一项是不正确的字符串赋值或赋初值的方式。(单选) A. char *str; str="string"; B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1="string"; D. char str1[]="string",str2[]="12345678"; 4. 若有以下说明和语句,则输出结果是哪一项?(单选) (strlen(s)为求字符串s的长度的函数) char s[12]="a book!"; printf("%d",strlen(s)); A. 12 B. 8 C. 7 D. 11 5. 若有以下说明和语句,则输出结果是___。(单选) (strlen(s)为求字符串s的长度的函数) char sp[]="\t\v\\\0will\n"; printf("%d",strlen(sp)); A. 14 B. 3 C. 9 D. 字符串中有非法字符 6. 若有以下说明和语句,则输出结果是___。(单选) char str[]="\"c:\\abc.dat\""; printf("%s",str); A. 字符串中有非法字符 B. \"c:\\abc.dat\" C. "c:\abc.dat" D. "c:\\abc.dat" 7. 在c语言中,引用数组元素时,其数组下标的数据类型允许是__. A. 整型常量 B. 整型表达式 c.整型常量或整型表达式 D. 任何类型的表达式 8.以下对二维数组a的正确说明是__。 A. int a[3][]; B. floatf a(3,4); C. double a[1][4]; D. float a(3)(4); 9.若有说明:int a[3][4]; 则对a数组元素的正确引用是__。 A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1); 10.以下能对二维数组a进行正确初始化的语句是__B。 A. int a[2][]={{1,0,1},{5,2,3}}; B. int a[][3]={{1,2,3},{4,5,6}}; C. int a [2][4]={{1,2,3},{4,5},{6}}; D. int a[][3={{1,0,1},{},{1,1}}; 11.下面程序(每行程序前面的数字表示行号) 1 main() 2 { 3 int a[3]={0}; 4 int i; 5 for(i=0;i<3;i++)scanf("%d",&a[i]); 6 for(i=1;i<4;i++)a[0]=a[0]+a[i]; 7 printf("%d\n",a[0]); 8 } A. 没有错误 B. 第3行有错误 C. 第5行有错误 D. 第6行有错误 12.若有说明:int a[]「3」={1,2,3,4,5,6,7};则a数组第一维的大小是__. A. 2 B. 3 C. 4 D. 无确定值 13.定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; for(k=0;k<3;k++) printf ("%d",a[k][2-k]); A. 3 5 7 B. 3 6 9 C. 1 5 9 D. 1 4 7 14.下面程序的运行结果是__. main() {int a[6]「6」,i,j; for(i=1;i<6;i++) for(j=1;j<6,j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) {for(j=1;j<6;j十十) printf("%2d",a[i][j]); printf("\n"_); } } A. 11111 B. 00001 C. 10000 D. 10001 11111 00010 01000 01010 11111 00100 00100 00100 11111 01000 00010 01010 11111 10000 00001 10001 15.下面是对s的初始化,其中不正确的是__. A. char s[5]={"abc"} B. char s[5]={'a','b','c'}; C. char s[5]="" D. char s[5]="abcdef"; 16.下面程序段的运行结果是 __. char c[5]={'a','b','\0','c','\0'}; printf("%s",c);} A. ’a’’b’ B. ab C. ab c D. ab 17.对两个数组a和b进行如下初始化 char a[]="ABCDEF"; char b[]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是 __. A. a与b数组完全相同 B. a与b长度相同 C. a和b中都存放字符串 D. a数组比b数组长度长 18.有两个字符数组a、b,则以下正确的输入格式是 __. A. gets (a,b); B. scanf ("%s%s",a,b); C. scanf ("%s%s",&a,&b); D. gets ("a"), gets ("b"); 19.有字符数组a[80]和b[80],则正确的输出形式是__. A. puts (a,b); B. printf ("%s,%s,a[],b[]); C. putchar(a,b); D. puts (a), puts (b); 20.下面程序段的运行结果是__. char a[7]="abcdef"; char b[4]="ABC"; strcpy(a,b); printf ("%c",a[5]); A. d B. \0 C. e D. f 21.有下面的程序段 char a[3],b[]="china"; a=b; printf("%s",a); 则__. A. 运行后?将输出Chm、"、 B. 运行后将输出Ch’一 C. 运行后将输出Chi D. 编译出错 22.判断字符串a和b是否相等,应当使用__. A. if (a==b) B. if (a=b) C. if (strcpy(a,b)) D. if (strcmp(a,b)==0) 23.判断字符串s1是否大于字符串s2应当使用__. A. if (sl>s2) B. if (strcmp(s1,s2)) C. if (strcmp(s2,sl)>0) D. if (strcmp(s1,s2)>0) 24.下面程序的运行结果是 #include #inc1ude main() { char a[80」="AB",b[80]="LMNP"; int i=0; strcat(a,b); whi1e(a[i++]!='\0') b[i]=a[i]; puts(b); } A. LB B. ABLMNP C. AB D. LBLMNP 二、填空题 1、程序功能为将十进制数x转换为二进制数,将二进制数放在一个一维数组中,最低位放在下标为0的元素中。 main( ) { int x,j,a[]; int k=0,r; do { r=x%_____?______; a[k++]=r; x/=_______?_______; }while(x); for(j=0;jarray[i]) ___ sum=___; } average = ___; printf("20个数中最大值是%d,",max); printf("最小值是%d,",min); printf("和是%d,",sum); printf("平均值是%d.\n",average); } 8 该程序的运行结果是: min=___,m=___,n=___。 void main() { float array[4][3]={ {3.4,-5.6,56.7}, {56.8,999.,-.0123}, {0.45,-5.77,123.5}, {43.4,0,111.2} }; int i,j; float min; int m,n; min = array[0][0]; m=0;n=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(min > array[i][j]) { min = array[i][j]; m=i;n=j; } printf("min=%5.2f,m=%d,n=%d\n",min,m,n); } 9. 若有以下整型的a数组,数组元素和它们得值如下所示: 数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 元素的值: 9 4 12 8 2 10 7 5 1 3 (1)请写出对该数组的说明,并赋以上初值。 ___ (2)该数组的最小下标值为___,最大下标值为___。 (3)写出下面各式的值: a[a[9]]的值为___ a[a[4]+a[8]]的值为___ 10. 写出下面这个程序的输出结果: void main() { char str[]="ABCDEFGHIJKL"; printf("%s\n",str); 屏幕上显示___ printf("%s\n",&str[4]); 屏幕上显示___ str[2]=str[5]; printf("%s\n",str); 屏幕上显示___ str[9]='\0'; printf("%s\n",str); 屏幕上显示___ } 11. 字符串"ab\n\\012\\\""的长度为___。 7. 读懂下面的程序并填空。 void main() { char str[80]; int i=0; gets(str); while(str[i]!=0) { if(str[i]>='a'&&str<='z') str[i]-=32; i++; } puts(str); } 程序运行时如果输入 upcase, 屏幕显示___ 程序运行时如果输入 Aa1Bb2Cc3, 屏幕显示___ 三、编程题 1、打印如图所示的图形(利用循环语句和数组) 2、分别用选择法和冒泡法将N个数按照从大到小的顺序排列。 3、求一个3Χ3矩阵 1 2 3 某条对角线各个元素之和(如1+5+9=15) 4 5 6 7 8 9 1 2 3 4、已知矩阵a= 4 5 6 求a的转置矩阵。 1 2 3 4 5、 已知a= 8 9 10 15 求其中最大值及所对应的行列号。 -7 8 9 2 一、选择题 1. C语言可执行程序从什么地方开始执行?(单选) A. 程序中第一条可执行语句 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的第一个函数 2. 有一个函数原型如下所示:(单选) abc(float x,float y); 则该函数的返回类型为___。 A. void B. double C. int D. float 3. 在C语言程序中,下面哪一个是正确的?(单选) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义可以嵌套,函数的调用也可以嵌套 D. 函数的定义和函数的调用都不可以嵌套 4. 下面哪些是定义局部变量储存类别的保留字?(多选) A. int B. auto C.static D.float E. register F.extern G. unsigned H.signed 5.以下各组选项中,均能正确定义二维实型数组a的选项是 A. float a[3][4]; B. float a(3,4); float a[][4]; float a[3][4]; float a[3][]={{1},{0}}; float a[][]={{0},{0}}; C. float a[3][4]; D. float a[3][4]; static float a[][4]={{0},{0}}; float a[3][]; auto float a[][4]={{0},{0},{0}}; float a[][4] 二、填空题 1.计算输入字符串的长度。 main() { char str[80]; int n; scanf(“%s”,str); n=str1(str); printf(“%d\n”, n); } str1(char *s) { int n=0; while(*s!=’\0’) {_________; s++; } return(n); } 2. 分析下面的程序,并写出运行结果。 #include int max(int a,int b); main() { int x,y,z,t,m; scanf("%d,%d,%d",&x,&y,&z); t=max(x,y); m=max(t,z); printf("%d",m); } int max(int a,int b) { if(a>b) return(a); else return(b); } 运行时若输入:10,15,9 则输出:___ 运行时若输入:300,129,300 则输出:___ 3. 分析下面的程序,并写出运行结果。 #include long sum(int a,int b); long factorial(int n); main() { int n1,n2; long a; scanf("%d,%d",&n1,&n2); a=sum(n1,n2); printf("a=%1d",a); } long sum(int a,int b) { long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); } long factorial(int n) { long rtn=1; int i; for(i=1;i<=n;i++) rtn*=i; return(rtn); } 运行时若输入:2,3 则输出:___ 运行时若输入:0, 5 则输出:___ 4. 分析下面的程序,并写出运行结果。 #include int s(); int x,y; main() { int n; x=1;y=2; n=s(); printf("x=%d,y=%d,n=%d",x,y,n); } int s() { int z; x=3;y=4; z=x+y; return(z); } 程序运行后输出:___ 5. 以下程序的输出结果是:。 #include int func(int a,int *p); void main() { int a=1,b=2,c; c=func(a,&b); b=func(c,&a); a=func(b,&c); printf("a=%d,b=%d,c=%d",a,b,c); } int func(int a,int *p) { a++; *p=a+2; return(*p+a); } 6. 下面这个函数的功能是求两个整数的积,并通过形参传回结果。请填空。 void mul(___x,___y,___result) { ___=x*y; } 三、编程题 1、利用递归调用的方法求8!。 2、利用函数调用求两个数的最大公约数和最小公倍数(用辗转相除法) 3、写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。 编程题 1、定义一个带参数的宏,使两个参数的值互换。 2、用条件编译的方法实现以下功能:输入一行电报文字,分别按原文输出;再按将字 母变成其下一字母输出。 一、选择题 1.对于类型相同的指针变量,不能进行哪种运算?(单选) A. + B. - C. = D. == 2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选) int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i; p=a; A. *(a+i) B. a[p-a] C. p+i D. *(&a[i]) 3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单 选) int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i; p=a; A. &(a+1) B. a++ C. &p D. &p[i] 4. 以下程序的输出结果是___。 #include main() { int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d\n",*p,*(p+3)); } A. 0,5 B. 1,5 C. 0,6 D. 1,6 5. 若有以下说明和语句,, 则p2-p1的值为多少?(单选) int a[10], *p1, *p2; p1=a; p2=&a[5]; A. 5 B. 6 C. 10 D. 没有指针与指针的减法 6.下列程序段的输出是 int a[6]={1,2,3,4,5,6}; int x, *p=a; x=(*p)*(*p+2)*(*p+4); printf(“%d”,x); A. 13 B.14 C.15 D.16 7.若有以下定义:int *P, *q, X, Y; 则__B___是合法的运算。 A.P=**&&P B.P=&X C.P=&q D.P=*q 8.若有以下定义,对数组a的元素的正确引用是 ____ int a[10],*p=a; A.*(a+2) B.*(P+10) C.a+2 D.*&a[10] 9.以下程序段输出结果是_____. int a[10], *p=a; int i; for(i=0;i<5;i++) *p++=I; for(i=0;i<5;i++) printf(“%d”, *p++); A.0,1,2,3,4 B.五个随机数 C.1,2,3,4,5 D.5,6,7,8,9 10.设有以下程序: main() { int a[10]={0,1,2,3,4,5,6,7,8,9,} , *p; p=&a[0]; printf(“%d”,p); printf(“%d”,p+5); } 执行此程序,如果第一个printf函数输出的值是2000,则第二个printf 函数输 出的是 A.2000 B.2005 C.2010 d.4 二、填空题 1、下面程序用指针p输出p所指向的数组元素的其后所有元素。 main() { int a[10]={6,-1,3,2,5,7,6,12,-1,-3}; int i, j, *p; p=a+4; for(i=0;i<=5;i++) printf(“%d”, ________); } 2. 已知有以下的说明, int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为___. 3.如图所示为数学上的杨晖三角形,它的规律是: 1.每一行的首尾列都是1。 2.每一行的第i列(除首尾列外)是上一行的第i-1列与上一行的第i列的和。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 下面这个程序打印了10层杨晖三角形,请填空。 #include #define LAYER 10 #define LAYER_1 (LAYER+1) #define NUM ( LAYER_1 * (LAYER_1 /2) ) void main() { int array[NUM],*p[LAYER],i,j,pos; for(i=0;i #define SIZE 3 void swap(int *a,int *b); void main() { int data[SIZE]; int i,j; for(i=0;idata[j]) swap(&data[i],&data[j]); for(i=0;i
/
本文档为【C语言的主要特点有哪些】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索