c语言练习题带答案)-绝对经典题目不看后悔

合集下载

C语言基础练习100题(含答案)

C语言基础练习100题(含答案)

C语言基础练习100题(含谜底)之马矢奏春创作雷柳青编排1、下面法式的输出是________#include<stdio.h>void main(){ int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}A) k=11,k=12,k=11 B) k=11,k=13,k=13C) k=11,k=013,k=0xb D) k=11,k=13,k=b2、在下列选项中,不正确的赋值语句是________.A) ++t; B) n1=(n2=(n3=0));C) k=i=j; D) a=b+c=1;3、下面合法的C语言字符常量是__________.A) '\t' B) "A" C) 65 D) A4、字符(char)型数据在微机内存中的存储形式是____.A) 反码B) 补码C) EBCDIC码D) ASCII码5、设int a=12,则执行完语句a+=a-=a*a 后,a的值是________A) 552 B) 264 C) 144 D) -2646、执行下面法式中的输出语句后,输出结果是______.#include<stdio.h>void main(){int a;printf("%d\n",(a=3*5,a*4,a+5));}A) 65 B) 20 C) 15 D) 107、下面法式的输出是__________.#include<stdio.h>void main(){int x=023;printf("%d\n",--x);}A) 17 B) 18 C) 23 D) 248、下面法式的输出是___________.#include<stdio.h>void main(){char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A) 67,D B) B,C C) C,D D) 不确定的值9、以下法式的输出结果是________.#include<stdio.h>void main(){ int x=10,y=10;printf("%d %d\n",x--,--y);}A) 10 10 B) 9 9 C) 9 10 D) 10 910、若x和y都是int型变量,x=100,y=200,且有下面的法式片段: printf("%d",(x,y));上面法式片段的输出结果是_______. A) 200 B) 100C) 100 200 D) 输出格式符不够,输出不确定的值11、阅读下面的法式#include<stdio.h>void main(){int i,j;i=010;j=9;printf("%d,%d",i-j,i+j);}则法式的运行结果是________.A) 1,19 B) -1,19C) 1,17 D) -1,1712、阅读下面的法式#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d",i,j,m,n);}法式的运行结果是_________.A) 8,10,8,10 B) 9,11,8,10C) 9,11,9,10 D) 9,10,9,1113、若已界说int a,则表达式a=10,a+10,a++的值是___.A) 20 B) 10 C) 21 D) 1114、阅读下面的法式#include<stdio.h>void main(){int i,j;scanf("%3d%2d",&i,&j);printf("i=%d,j=%d\n",i,j);}如果从键盘上输入1234567<回车>,则法式的运行结果是________.A) i=123,j=4567 B) i=1234,j=567C) i=1,j=2 D) i=123,j=4515、下面法式的输出结果是________.#include<stdio.h>void main(){int a=-1, b=4, k;k=(++a<=0)&&(b--<=0);printf("%d,%d,%d\n",k,a,b);}A) 1,1,2 B) 1,0,3C) 0,1,2 D) 0,0,316、下面法式的输出结果是_______.#include<stdio.h>void main(){int a=5,b=3;float x=3.14, y=6.5;printf("%d,%d\n",a+b!=a-b,x<=(y-=6.1));}A) 1,0 B) 0,1C) 1,1 D) 0,017、若有以下界说和语句:int a=010, b=0x10, c=10;printf("%d,%d,%d\n",a,b,c);则输出结果是_________.A) 10,10,10 B) 8,16,10 C) 8,10,10 D) 8,8,1018、已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式x+a%3*(int)(x+y)%2/4 的值是_________.A) 2.4 B) 2.5 C) 2.75 D) 0A) 14 B) 15 C) 11 D) 1220、若d为double型变量,则表达式d=1,d+5,d++的值是_______.A) 1 B) 6.0 C21、若有界说int a=12,n=5,则表达式a%=(n%2)运算后,a的值__________.A) 0 B) 1 C) 12 D) 622、若有界说int x=3,y=2和float a=2.5,b=3.5,则表达式:(x+y)%2+(int)a/(int)b的值是____.A) 0 B) 2 C) 1.5 D) 123、在C语言中,以下叙述不正确的是________.A) 在C法式中,无论是整数还是实数,都能被准确无误的暗示B) 在C法式中,变量名代表存储器中的一个位置C) 静态变量的生存期与整个法式的生存期相同D) C语言中变量必需先界说后引用24、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是________.A) 10<a<15 B) a==11||a==12||a==13||a==14C) a>10&&a<15 D) !(a<=10)&&!(a>=15)25、如果c为字符型变量,判断c是否为空格不能使用________.(假设已知空格ASCII码为32)A) if(c=='32') B) if(c==32)C) if(c=='\40') D) if(c==' ')26、执行下面法式时,若从键盘输入"2<CR>",则法式的运行结果是________. #include <stdio.h>void main( ){ int k; char cp;cp=getchar( );if (cp>='0' && cp<='9')k=cp-'0';else if (cp>='a' && cp<='f')k=cp-'a'+10;else k=cp-'A'+10;printf("%d\n",k);}A) 2 B) 4 C) 1 D) 1027、执行下面法式后,运行结果是________.#include <stdio.h>void main( ){ int x=41,y=1;if (x%3==0 && x%7==0){ y+=x;printf("y=%d\n",y);}else{y=x;printf("y=%d",y);}}A) y=41 B) y=43 C) y=42 D) y=128、运行下面法式时,从键盘输入"12,34,9<CR>",则输出结果是______.#include <stdio.h>void main( ){ int x,y,z;scanf("%d,%d,%d",&x,&y,&z);if (x<y)if (y<z)printf("%d\n",z);else printf("%d\n",y);else if (x<z)printf("%d\n",z);else printf("%d\n",x);}A) 34 B) 12 C) 9 D) 不确定的值29、运行下面法式时,从键盘输入字母H,则输出结果是________.#include <stdio.h>void main( ) { char ch;ch=getchar( );switch(ch){ case 'H':printf("Hello!\n");case 'G':printf("Good morning!\n");default:printf("Bye_Bye!\n");}}A) Hello! B) Hello!Good Morning!C) Hello! D) Hello!Goodmorning! Bye_Bye!Bye_Bye!30、执行下列法式段后的输出结果是_________.int x=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);A) 3 B) 2 C) 1 D) 431、设ch是char型变量,值为'A',则表达式ch=(ch>='A' && ch<='Z')?ch+32:ch的值是_____.A) Z B) a C) z D) A32、下面法式的输出结果是________.#include <stdio.h>void main( ){ int x=8,y=-7,z=9;if (x<y)if (y<0) z=0;else z-=1;printf("%d\n",z);}A) 8 B) 1 C) 9 D) 033、运行下面法式时,若从键盘输入"3,4 <CR>",则法式的输出结果是_______.#include <stdio.h>void main( ){ int a,b,s;scanf("%d,%d",&a,&b);s=a;if (s<b) s=b;s=s*s;printf("%d\n",s) ;}A) 14 B) 16 C) 18 D) 2034、下列法式的执行结果是_________. #include <stdio.h>void main( ){ int x=0,y=1,z=0;if (x=z=y)x=3;printf("%d,%d\n",x,z);}A) 3,0 B) 0,0 C) 0,1 D) 3,135、能够完成如下函数计算的法式段是______.┌ -1 x<0y= ┤ 0 x=0└ 1 x>0A) y=1;B) if (x>=0)if(x!=0)if(x>0) y=1;if(x>0) y=1; else y=0;else y=0; else y=-1;C) y=0;D) y=-1;if (x>=0) if (x>0) y=1;if (x>0) y=1;else y=0;else y=-1;36、以下法式的执行结果是________.#include <stdio.h>void main( ){ int x=1,y=0;switch (x){case 1:switch (y){case 0:printf("first\n");break;case 1:printf("second\n");break;}case 2:printf("third\n");}}A) first B) firstsecond thirdC) first D) secondthird37、以下法式的执行结果是________.#include <stdio.h> void main( ){ int a,b,c,d,x;a=c=0;b=1;d=20;if (a) d=d-10;else if(!b)if (!c) x=15;else x=25;printf("d=%d\n",d);}A) d=20 B) d=10 C) d=15 D) 2538、下列法式执行后的输出结果是________.#include <stdio.h>void main( ){ int x,y=1,z;if ((z=y)<0) x=4;else if (y==0) x=5;else x=6;printf("%d,%d\n",x,y);}A) 4,1 B) 6,1 C) 5,0 D) 犯错信息39、有如下法式#include <stdio.h>void main( ){ int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);}该法式的输出结果是__________.A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=240、下面法式的输出结果是_________. #include <stdio.h>void main( ){ int a=-1,b=1,k;if ((++a<0) && (b--<=0))printf("%d %d\n",a,b);elseprintf("%d %d\n",b,a);}A) -1 1 B) 0 1 C) 1 0 D) 0 041、假定w、x、y、z、m均为int型变量,有如下法式段:w=1;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;则该法式段执行后,m的值是_________.A) 4 B) 3 C) 2 D) 142、以下法式的输出结果是_________. main( ){ int a=100;if (a>100) printf("%d\n",a>100);else printf("%d\n",a<=100);}A) a<=100 B) 100 C) 0 D) 1#include <stdio.h>void main( ){int n;scanf("%d",&n);if (n++<10) printf("%d\n",n);else printf("%d\n",n--);}A) 11 B) 10 C) 9 D) 844、以下法式段运行结果是________.int x=1,y=1,z=-1;x+=y+=z;printf("%d\n",x<y?y:x);A) 1 B) 2 C) 4 D) 不确定的值45、有以下法式#include <stdio.h>void main( ){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是________.A) 2,1 B) 3,2 C) 4,3 D) 2,-146、运行下面法式时,若从键盘输入数据为"123",则输出结果是_______. #include "stdio.h"void main(){ int num,i,j,k,place;scanf("%d",&num);if (num>99)place=3;else if(num>9)place=2;elseplace=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch (place){ case 3: printf("%d%d%d\n",k,j,i);break;case 2: printf("%d%d\n",k,j);break;case 1: printf("%d\n",k);}}A) 123 B) 1,2,3C) 321 D) 3,2,147、执行下列法式后的输出结果是_______.#include <stdio.h>void main( ){ int k=4,a=3,b=2,c=1;printf("%d\n",k<a?k:c<b?c:a);}A) 4 B) 3 C) 2 D) 148、以下条件表达式中能完全等价于条件表达式if(x)中的x 的是____.A) (x==0) B) (x!=0) C) (x==1) D) (x!=1)49、若运行下面法式时,给变量a输入15,则输出结果是______.#include <stdio.h>void main( ){ int a,b;scanf("%d",&a);b=a>15?a+10:a-10;printf("%d\n",b) ;}A) 5 B) 25 C) 15 D) 1050、执行下面法式的输出结果是________.#include <stdio.h>void main( ){ int a=5,b=0,c=0;if (a=a+b) printf("****\n");else printf("####\n");}A) 有语法毛病不能编译B) 能通过编译,但不能通过连接C) 输出 ****D) 输出 ####51、为了防止嵌套的if-else语句的二义性,C语言规定else总是与______组成配对关系.A) 缩排位置相同的ifB) 在其之前未配对的ifC) 在其之前尚未配对的最近的ifD) 同一行上的if52、以下法式段__________.x=-1;do{x=x*x;} while (!x);A)是死循环 B)循环执行两次C)循环执行一次D)有语法毛病53、对下面法式段描述正确的是_______.int x=0,s=0;while (!x!=0) s+=++x;printf("%d",s);A) 运行法式段后输出0B) 运行法式段后输出1C) 法式段中的控制表达式是非法的D) 法式段循环无数次54、下面法式段的输出结果是_______.x=3;do { y=x--;if (!y) {printf("*");continue;}printf("#");} while(x=2);A) ## B) ##* C) 死循环 D)输犯毛病信息55、下面法式的运行结果是_______.#include<stdio.h>void main( ){ int a=1,b=10;do{ b-=a;a++;} while(b--<0);printf("%d,%d\n",a,b);}A) 3,11 B) 2,8 C) 1,-1 D) 4,956、下面法式段的运行结果是__________.int n=0;while (n++<=2)printf("%d",n);A) 012 B) 123C) 234 D) 毛病信息57、下面法式段的运行结果是________. int x=0,y=0;while (x<15) y++,x+=++y;printf("%d,%d",y,x);A) 20,7 B) 6,12 C) 20,8 D)8,2058、下面法式的运行结果是________.#include<stdio.h>void main(){ int s=0,i=1;while (s<=10){ s=s+i*i;i++;}printf("%d",--i);}A) 4 B) 3 C) 5 D) 659、下面法式段的运行结果是________.for(x=10;x>3;x--){ if(x%3) x--;--x; --x;printf("%d ",x);}A) 6 3 B) 7 4 C) 6 2 D) 7 360、下面法式的运行结果是________.#include<stdio.h>void main( ){ int a,b;a=-1;b=0;do {++a;++a;b+=a;} while(a<9);printf("%d\n",b);}A) 34 B) 24 C) 26 D) 2561、下面法式段的运行结果是___________.for(i=1;i<=5;)printf("%d",i);i++;A) 12345 B) 1234 C) 15 D) 无限循环62、下面法式的输出结果是__________.#include<stdio.h>void main( ){ int n=4;while (n--) printf("%d ",n--);}A) 2 0 B) 3 1 C) 3 2 1 D) 2 1 063、以下法式运行后的输出结果是________.#include<stdio.h>void main(){ int i=10,j=0;do{ j=j+1; i--;}while(i>2);printf("%d\n",j);}A) 50 B) 52 C) 51 D) 864、有如下法式#include<stdio.h>void main(){ int x=23;do{ printf("%d",x--);}while(!x);}该法式的执行结果是_______A) 321 B) 23C) 不输出任何内容 D) 陷入死循环65、以下法式段的执行结果是_______.int i,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4)m++;printf("%d\n",m);A) 12 B) 15 C) 20 D) 2566、下面法式的输出结果是___________.#include<stdio.h>void main( ){ int i;for(i=1;i<6;i++){ if (i%2!=0) {printf("#");continue;}printf("*");}printf("\n");}A) #*#*# B) ##### C) ***** D) *#*#*67、下面法式的输出结果是__________.#include<stdio.h>void main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6C) 10 9 9 0 D) 10 10 9 168、执行以下法式后,输出的结果是__________.#include<stdio.h>void main( ){ int y=10;do {y--;}while (--y);printf("%d\n",y--);}A) -1 B) 1C) 8 D) 069、有如下法式#include<stdio.h>void main( ){ int n=9;while(n>6) {n--;printf("%d",n);}}该法式段的输出结果是__________.A) 987 B) 876 C) 8765 D) 987670、有如下法式#include<stdio.h>void main( ){ int i,sum=0;for(i=1;i<=3;sum++) sum+=i;printf("%d\n",sum);}该法式的执行结果是___________.A) 6 B) 3 C) 死循环 D) 071、以下循环体的执行次数是_______#include<stdio.h>void main( ){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);}A) 3 B) 2 C) 1 D) 072、在执行以下法式时,如果从键盘上输入:ABCdef<回车>,则输出为________.#include <stdio.h>void main( ){ char ch;while ((ch=getchar( ))!='\n'){ if (ch>='A' && ch<='Z')ch=ch+32;else if (ch>='a' && ch<'z') ch=ch-32;printf("%c",ch);}printf("\n");}A) ABCdef B) abcDEF C) abc D) DEF73、下面法式的输出结果是__________.main( ){int i,k=0, a=0, b=0;for(i=1;i<=4;i++){k++;if (k%2==0) {a=a+k; continue;}b=b+k;a=a+k;}printf("k=%d a=%d b=%d\n",k,a,b);}A) k=5 a=10 b=4 B) k=3 a=6 b=4C) k=4 a=10 b=3 D) k=4 a=10 b=474、执行下面法式段后,k的值是_________.int i,j,k;for(i=0,j=10;i<j;i++,j--)k=i+j;A) 9 B) 11 C) 8 D) 1075、以下法式的功能是:从键盘上输入若干个学生的成果, 统计并输出最高成果和最低成果,当输入负数时结束输入.请填空.________#include<stdio.h>void main( ){ float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while (________ ){ if (x>amax) amax=x;if (______) amin=x;scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}A) x<=0 B) x>0 C) x>0 D) x>=0 x>amin x<=amin x>amin x<amin 76、阅读以下法式,法式运行后的输出结果是______.#include<stdio.h>void main( ){ int x;for(x=5;x>0;x--)if (x--<5) printf("%d,",x);else printf("%d,",x++); }A) 4,3,2 B) 4,3,1, C) 5,4,2 D) 5,3,1,77、以下法式段的输出结果是_______.int k,n,m;n=10;m=1;k=1;while (k<=n) {m*=2;k+=4;}printf("%d\n",m);A) 4 B) 16 C) 8 D) 3278、语句while(!e);中的条件!e 等价于________.A) e==0 B) e!=1 C) e!=0 D) ~e79、以下叙述正确的是_________.A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句体内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句80、在下列选项中,没有构成死循环的法式段是____.A) int i=100;B) for( ; ; );while (1){ i=i%100+1;if (i>100) break;}C) int k=1000;D) int s=36;do {++k;} while (k>=1000); while (s) --s;81、下面法式的输出结果是________.#include<stdio.h>void main( ){ int i;for(i=1;i<=5;i++){ if (i%2) printf("*");else continue;printf("#");}printf("$\n");}A) *#*#*#$ B) #*#*#*$ C) #*#*$ D) *#*#$82、下面法式段中,循环体的执行次数是_________.int a=10,b=0;do {b+=2;a-=2+b;} while(a>=0);A) 4 B) 5 C) 3 D) 283、若i为整型变量,则以下循环语句的循环次数是__.for(i=2;i==0;)printf("%d",i--);A) 无限次 B) 0次 C) 1次 D) 2次84、对for(表达式1;;表达式3)可理解为_________.A) for(表达式1;0;表达式3)B) for(表达式1;1;表达式3)C) for(表达式1;表达式1;表达式3)D) for(表达式1;表达式3;表达式3)85、合法的数组界说是________.A) int a[6]={"string"}; B) int a[5]={0,1,2,3,4,5};C) char a={"string"}; D) char a[]={0,1,2,3,4,5};86、给出以下界说:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为 ________.A) 数组x和数组y等价B) 数组x和数组y的长度相同C) 数组x的长度年夜于数组y的长度D) 数组x的长度小于数组y的长度87、界说如下变量和数组:int i;intx[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};则下面语句的输出结果是_______.for(i=0;i<4;i++) printf("%3d",x[i][3-i]);A) 1 5 9 13 B) 1 6 11 16C) 4 7 10 13 D) 4 8 12 1688、下面法式输出的结果是________.#include <stdio.h>void main( ){ int i,j,x=0;static int a[6]={1,2,3,4,5,6};for(i=0,j=1;i<5;++i,j++) x+=a[i]*a[j];printf("%d\n",x);}A) 数组a中首尾的对应元素的乘积B) 数组a中首尾的对应元素的乘积之和C) 数组a中相邻各元素的乘积D) 数组a中相邻各元素的乘积之和89、若有以下说明:char s1[ ]={"tree"},s2[]={"flower"}; , 则以下对数组元素或数组的输出语句中,正确的是_____.A) printf("%s%s",s1[5],s2[7]);B) printf("%c%c",s1,s2);C) puts(s1);puts(s2); D) puts(s1,s2);90、运行下面法式段的输出结果是_______.char s1[10]={'S','e','t','\0','u','p','\0'};printf("%s",s1);A) Set B) Setup C) Set up D) 'S''e''t'91、以下法式段的输出结果是________.char s[ ]="an apple";printf("%d\n",strlen(s));A) 7 B) 8 C) 9 D) 1092、若有说明:char c[10]={'E','a','s','t','\0'};,则下述说法中正确的是__________.A) c[7]不成引用 B) c[6]可引用,但值不确定C) c[4]不成引用 D) c[4]可引用,其值为空字符93、若有说明char c[7]={'s','t','r','i','n','g'};则对元素的非法引用是________.A) c[0] B) c[9-6] C) c[4*2] D) c[2*3]94、如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是________.A) s1=getchar(); s2=getchar();B) scanf("%s%s",s1,s2);C) scanf("%c%c",s1,s2);D) gets(s1,s2);95、以下法式输出的结果是_________.#include <stdio.h>void main( ){ char str[ ]="1a2b3c"; int i;for(i=0;str[i]!='\0';i++)if(str[i]>='0'&&str[i]<='9')printf("%c",str[i]);printf("\n");}A) 123456789 B) 1a2b3cC) abc D) 123 96、以下法式输出的结果是________.#include <stdio.h>void main( ){ int a[ ]={5,4,3,2,1},i,j;long s=0;for(i=0;i<5;i++) s=s*10+a[i];printf("s=%ld\n",s);}A) s=12345 B) s=5 4 3 2 1C) s=54321 D) 以上都分歧毛病97、在界说int a[5][6];后,数组a中的第10个元素是.________(设a[0][0]为第一个元素)A) a[2][5] B) a[2][4] C) a[1][3] D) a[1][5]98、当接受用户输入的含有空格的字符串时,应使用________函数.A) gets( ) B) getchar( ) C) scanf( ) D) printf( )99、以下一维数组a的正确界说是________ .A) int a(10); B) int n=10,a[n]; C) int n; D) #define SIZE 10 scanf("%d",&n); int a[SIZE];int a[n];100、以下对二维数组a进行正确初始化的是_______.A) int a[2][3]={ {1,2},{3,4},{5,6} };B) int a[ ][3]={1,2,3,4,5,6 };C) int a[2][ ]={1,2,3,4,5,6};D) int a[2][ ]={ { 1,2},{3,4}};时间:二O二一年七月二十九日答题卡班级______姓名__________得分_________参考谜底:1~5 DDADD 6~10 BBADA21-25 ADAAA 26-30 AAACA31-35 BCBDB 36-40 BABAC41-45 DDBAA 46-50 CDBAC51-55 CCBCB 56-60 BCBBD61-65 DBDBC 66-70 ADDBC71-75 CBDDD 76-80 BCABD81-85 ACBBD 86-90 CCDCA91-95 BDCBD 96-100CCADB时间:二O二一年七月二十九日。

c语言的考试题目答案及解析

c语言的考试题目答案及解析

c语言的考试题目答案及解析1. 题目:以下哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable-2答案:C解析:在C语言中,变量名必须以字母或下划线开头,不能以数字开头。

因此,选项A和D是不合法的。

选项B虽然以字母开头,但是数字紧跟字母,没有下划线或空格分隔,所以也是不合法的。

选项C 以下划线开头,符合变量命名规则。

2. 题目:以下哪个选项是C语言中正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!"D. "Hello, World!"答案:A解析:在C语言中,字符串字面量应该用双引号括起来。

选项B使用了单引号,这是用于字符字面量的,而不是字符串。

选项C和D是重复的,并且由于格式问题,它们可能没有正确显示,但假设它们是正确的字符串字面量,那么答案应该是A,因为它是第一个出现的合法字符串字面量。

3. 题目:以下哪个选项是C语言中正确的函数声明?A. int function(int x) {}B. void function() {}C. int function(int x, int y) {}D. All of the above答案:D解析:在C语言中,函数声明可以包含参数列表,也可以没有参数。

选项A和C都包含了参数列表,并且参数类型是int,这是合法的。

选项B没有参数列表,并且指定了返回类型为void,这也是合法的。

因此,所有选项都是正确的函数声明。

4. 题目:以下哪个选项是C语言中正确的条件语句?A. if (x > 0) { ... }B. if x > 0 { ... }C. if (x > 0) { ... } else { ... }D. if (x > 0) { ... } elseif { ... }答案:C解析:在C语言中,条件语句必须使用if关键字,并且条件表达式需要用括号括起来。

c语言练习题带答案)-绝对经典题目不看后悔

c语言练习题带答案)-绝对经典题目不看后悔

1单选题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。

A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。

A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。

A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。

c语言考试题及答案

c语言考试题及答案

c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有跨平台的特性答案:B2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 下列关于数组的描述中,正确的是:A. 数组必须在程序开始时初始化B. 数组的元素可以是不同的数据类型C. 数组的索引从1开始D. 数组的声明必须指定数组的大小答案:D5. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. define答案:B6. C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. &答案:A7. 下列哪个选项是C语言中合法的注释?A. // 这是一个注释B. /* 这是一个注释 */C. // 这是一个注释/* 这是一个注释 */D. /* 这是一个注释 */答案:A8. C语言中,用于定义一个空指针的值是:A. NULLB. 0C. falseD. none答案:A9. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以存储函数的地址C. 指针可以存储数组的索引D. 指针可以存储指针的地址答案:C10. 在C语言中,用于定义一个字符型指针的声明是:A. char *ptr;B. int *ptr;C. float *ptr;D. double *ptr;答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语法是:______ int array[10];。

答案:int2. 如果一个变量的值是10,那么表达式sizeof(&var)的结果是:______。

C语言基础练习题(含问题详解)

C语言基础练习题(含问题详解)

目录第1-3章 C语言基础知识习题 (2)1 选择题 (2)2 填空题 (7)3 答案及部分解析 (9)第4章选择结构习题 (11)1 选择题 (11)2 填空题 (17)3 答案及部分解析 (24)第5章循环结构习题 (27)1 选择题 (27)2 填空题: (33)3 答案及部分解题分析 (40)第6章数组习题 (42)1. 单项选择题 (42)2. 填空题 (45)3. 判断题 (46)4. 程序填空题 (46)5. 阅读程序,分析程序的功能。

(50)第7章函数习题 (56)1. 单项选择题 (56)2. 填空题 (57)3. 判断题 (58)4. 程序填空题 (59)5. 写出下列程序运行结果 (60)第8章指针习题 (68)1 选择题 (68)2 填空题 (70)第1-3章 C语言基础知识习题1 选择题1. 以下不是C语言的特点的是()。

A、语言简洁紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件操作D、C语言移植性好2. 下列字符序列中,不可用作C语言标识符的是()。

A.abc123 B.no.1 C._123_ D._ok3. 正确的C语言标识符是()。

A._buy_2 B.2_buy C.?_buy D.buy?4. 请选出可用作C语言用户标识符的一组标识符()。

A.void B.a3_b3 C.For D.2adefine _123 -abc DOWORD IF Case sizeof5. 下列符号中,不属于转义字符的是()。

A.\\ B.\0xAA C.\t D.\06. 不属于C语言关键字的是()。

A.int B.break C.while D.character7. 是C语言提供的合法关键字的是()。

A.Float B.signed C.integer D.Char8. 以下不能定义为用户标示符的是()。

A.scanf B.Void C._3com_ D.int9. 一个C程序是由()。

C语言编程题带答案

C语言编程题带答案

C语言编程题带答案题目 1:求两个整数的最大值```cinclude <stdioh>int max(int num1, int num2) {if (num1 > num2) {return num1;} else {return num2;}}int main(){int num1 = 10, num2 = 20;int maxValue = max(num1, num2);printf("最大值为: %d\n", maxValue);return 0;}```分析:在这个程序中,我们定义了一个名为`max` 的函数,它接受两个整数参数`num1` 和`num2` 。

通过使用条件判断语句`if` 来比较这两个数的大小,如果`num1` 大于`num2` ,则返回`num1` ,否则返回`num2` 。

在`main` 函数中,我们给定了两个整数`num1` 和`num2` 的值,并调用`max` 函数来获取它们中的最大值,最后使用`printf` 函数将最大值输出到控制台。

题目 2:计算一个整数数组的平均值```cinclude <stdioh>float average(int arr, int size) {int sum = 0;for (int i = 0; i < size; i++){sum += arri;}return (float)sum / size;}int main(){int arr ={10, 20, 30, 40, 50};int size = sizeof(arr) / sizeof(arr0);float avg = average(arr, size);printf("平均值为: %2f\n", avg);return 0;}```分析:在这个程序中,首先在`average` 函数里,我们初始化一个变量`sum` 为 0 ,用于存储数组元素的总和。

c语言试题及答案

c语言试题及答案

c语言试题及答案C语言试题及答案一、选择题1. 在C语言中,以下哪个是正确的数据类型?A. 整数型B. 浮点型C. 字符型D. 所有选项答案:D2. 以下哪个是C语言中的逻辑运算符?A. &&B. ||C. !D. 所有选项答案:D3. 在C语言中,哪个关键字用于定义一个函数?A. intB. voidC. functionD. return答案:A二、填空题1. 在C语言中,一个基本的程序结构由_____、_____、_____三个部分组成。

答案:预处理指令;函数定义;语句2. 一个C语言程序总是从_____函数开始执行。

答案:main3. 在C语言中,若要实现循环,可以使用_____、_____、_____等循环结构。

答案:for;while;do-while三、简答题1. 简述C语言中数组的定义和使用。

答案:在C语言中,数组是一种数据结构,用于存储具有相同数据类型的元素集合。

数组定义的一般形式为:类型名数组名[常量表达式],其中类型名是数组元素的数据类型,数组名是数组的标识符,常量表达式是数组中元素的数量。

数组的使用包括初始化、访问和修改元素等。

2. 解释C语言中的指针及其作用。

答案:指针是C语言中一种特殊的变量,它存储了另一个变量的内存地址。

指针的主要作用是直接访问和操作内存地址,从而可以更灵活地处理数据。

指针的使用包括指针的声明、指针的初始化、指针的运算等。

四、编程题1. 编写一个C语言程序,实现求两个整数的和。

```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum); return 0;}```2. 编写一个C语言程序,实现字符串的反转。

c语言经典编程试题12例(带答案)

c语言经典编程试题12例(带答案)
{
int i,num=0;
float a[10],sum=0.0;
printf("请输入10个数\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
for(i=0;i<10;i++)
if(i>=0)
{
num++;
sum+=a[i];
}
printf("10个数中非负数的个数为:%d\n",num);
void main()
{
char a[50];
char *p,*q;
printf("请输入一个字符串:");
gets(a);
for(p=a;*p!=0;)
if(*p=='a')
{
q=p;
while(*p)
{
*p=*(p+1);
p++;
}
p=q;
}
else
p++;
printf("%s\n",a);
}
12、一个皮球从100米的高度自由落下,每次落地后反弹回原来高度的一半,再落下,在反弹。求当它第10次落地时,共经过了多少米,第十次反弹多高?
printf("100之内偶数的和位: %d\n",sum);
}
7、求1*2*3+3*4*5+…99*100*101的值。
解题思路:
定义一个变量从1到101,再有标志变量j确定乘够3个数之后便重新开始下一次乘积。跳出循环后加上最后一次乘积。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1单选题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。

A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。

A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。

A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型10.在C语言程序中,表达式5%2的结果是C。

A)2.5 B)2 C)1 D)3详见教材P52~53.%为求余运算符,该运算符只能对整型数据进行运算。

且符号与被模数相同。

5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=211.如果int a=3,b=4;则条件表达式"a<b? a:b"的值是__A__。

A) 3 B) 4 C) 0 D) 1详见教材P97.表达式1?表达式2:表达式3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值作为整个大表达式的值;若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值此题中的a<b相当于表达式1,a相当于表达式2,b相当于表达式3.a为3,b为4。

a<b表达式1成立,因此计算表达式2,并将表达式2的值即a中的值,并作为整个表达式的值,因此整个表达式的值为312.若int x=2,y=3,z=4 则表达式x<z?y:z的结果是( B).A)4 B)3 C)2 D)0 E)113.C语言中,关系表达式和逻辑表达式的值是(B)。

A) 0 B) 0或1 C) 1 D) ‘T’或’F’14. 下面( D)表达式的值为4.A) 11/3 B) 11.0/3C) (float)11/3 D) (int)(11.0/3+0.5)14~16题为同一类型详见教材P54~56.(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0 /3=3.666666选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B 同选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为415.设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)aD.b=1/(a*1.0)16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)A.1B.4C.4.333333D.4.6“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为117. 以下对一维数组a的正确说明是:DA)char a(10);B) int a[];C)int k=5,a[k];D)char a[3]={‘a’,’b’,’c’};详见教材P143~144,一维数组的定义、初始化类型符数组名[常量表达式]类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

选项A,常量表达式只能放在中括号[ ]中选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是: ( C)A. int a[5]=(0,1,2,3,4,)B. int a(5)={}C. int a[3]={0,1,2}D. int a{5}={10*1}详见教材P145,一维数组的定义、初始化选项B,D,常量表达式只能放在中括号[ ]中选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().19.在C语言中对一维整型数组的正确定义为D。

A)int a(10); B)int n=10,a[n];C)int n;a[n]; D)#define N 10int a[N];20、已知:int a[10]; 则对a数组元素的正确引用是( D )。

A、a[10]B、a[3.5]C、a(5)D、a[0]详见教材P144,数组元素的引用数组名[下标]引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元素; ......;a[9] 表示组中第10个元素.选项A,超过了数组a的逻辑地址下标范围;选项B,逻辑地址下标只能为整数选项C,逻辑地址下标只能放在[ ]中21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10B.9C.6D.5先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].a[10]对应下面数组中的元素为9. 因此a[a[i]]即为a[9]a[9]对应下面数组中的元素为6. 因此a[9]即为622.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B)A. 2B. 3C. 4D.无确定值5 7 D) 36 9二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行23.对二维数组的正确定义是(C)详见教材P149~152,二维数组的定义、初始化类型符数组名[常量表达式][常量表达式]二维数组可以看做是矩阵类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度二维数组初始化时可以省略行数,但不能省略列数选项A,B,都省略了列数选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6};24.已知int a[3][4];则对数组元素引用正确的是__C___A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)详见教材P150,数组元素的引用数组名[下标] [下标]引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;选项A,列逻辑地址下标超过范围选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由A决定的.A)函数定义时指定的类型B) return语句中的表达式类型C) 调用该函数时的实参的数据类型D) 形参的数据类型26. 在C语言中,函数的数据类型是指( A )A 函数返回值的数据类型 B. 函数形参的数据类型C 调用该函数时的实参的数据类型 D.任意指定的数据类型27. 在函数调用时,以下说法正确的是(B)A.函数调用后必须带回返回值B.实际参数和形式参数可以同名C.函数间的数据传递不可以使用全局变量D.主调函数和被调函数总是在同一个文件里28. 在C语言中,表示静态存储类别的关键字是: (C)A) auto B) register C) static D) extern29.未指定存储类别的变量,其隐含的存储类别为(A)。

A)auto B)static C)extern D)register30. 若有以下说明语句:struct student{ int num;char name[ ];float score;}stu;则下面的叙述不正确的是: ( D )A. struct是结构体类型的关键字B. struct student 是用户定义的结构体类型C. num, score都是结构体成员名D. stu是用户定义的结构体类型名31.若有以下说明语句:struct date{ int year;int month;int day;}brithday;则下面的叙述不正确的是__C___.A) struct是声明结构体类型时用的关键字B) struct date 是用户定义的结构体类型名C) brithday是用户定义的结构体类型名D) year,day 都是结构体成员名32. 以下对结构变量stul中成员age的非法引用是Bstruct student{ int age;int num;}stu1,*p;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age33.设有如下定义:struck sk{ int a;float b;}data;int *p;若要使P指向data中的a域,正确的赋值语句是CA) p=&a; B) p=data.a; C) p=&data.a; D)*p=data.a;34.设有以下说明语句:typedef struct stu{ int a;float b;} stutype;则下面叙述中错误的是(D)。

相关文档
最新文档