C语言练习题一
(一)
1. ___D__是合法的用户自定义标识符。
A、 b-b B、int C、
2. C 语言程序中可以对程序进行注释,注释部分必须用符号___C__括起来。 A、?{? 和?}? B、?[?和?]? C、“/*”和”*/” D、“*/”和”/*” 3. C语言源程序文件经过编译连接之后生成一个后缀为___C___的文件。
A.”.c” B.“.obj” C.“.exe” D.“.bas” 4. C 语言程序的三种基本结构是顺序结构、选择结构和___C___结构。 A.递归 B.转移 C.循环 D.嵌套 5. 下面C语言的标识符中,哪个是不合法____B______。 A、_total B、Large#Tall C、int_1 D、_while 6. 标准C源程序的文件扩展名是__A___。 A.”.c” B.“.obj” C.“.exe”
D.“.cpp”
7. 结构化程序由三种基本结构组成,三种基本结构组成的算法___B___..。 A.可以完成任何复杂的任务 B.只能完成部分复杂的任务 C.只能完成符合结构化的任务 D.只能完成一些简单的任务
8. 若a是基本整型变量,c是单精度实型变量,输入语句___D___是错误的。 A.scanf(\ B.scanf(\ C.scanf(\ D.scanf(\
9. 设变量定义为“int a, b;”,执行下列语句时,输入___B__,则a和b的值都是10。 scanf(\;
A.10 10 B.10, 10 C.a=10 b=10 D.a=10, b=10 10. C语言源程序文件经过编译之后生成一个后缀为__B____的文件。 A.”.c” B.“.obj” C.“.exe” D.“.bas” 11. 表达式___C___的值是0。 A.3%5 B.3/5.0 C.3/5 的输入。
A.203040 B.20 30 40
D.3<5
12. 若变量已正确定义,执行语句scanf(\;时,___B___是正确
C.20, 30 40
D.20, 30,40
13. 程序段___D___的功能是将变量u、s中的最大值赋给变量t。 A.if (u>s) t=u; t=s; B.t=u; if (t>s) t=s; C.if (u>s) t=s; else t=u; D.t=s; if (u>t) t=u;
(二)
单选题
1.执行语句for(i=0;i<=10;i=i+3); 后,变量i的值是:B
A. 13 B. 12 C. 11 D. 10
2.设有double x,s;且s=0,在执行语句“for(x=0; x < 1; x=x+0.3) s=s+x;”后,变量x的值为 B 。
A、 不可能大于1 B、 不可能大于1.3 C、 等于1.3 D、 可以远大于1 3.若 x 是浮点型变量,表达式 (x=10/4) 的值是___A__ 。
A.2.5 B.2.0 C.3 D.2 4.以下选项中正确的实型常量是____C____。
A. 0 B. -10 C. 0.19 D. 1.9×102 5.C语言中运算对象必须是整型的运算符是___A____。
A. % B. / C. + D. *
判断题
1.在C源程序中将语句“if(x==5) y++;”误写作“if(x=5) y++;”,将导致程序不能运行。F 2.C的double类型数据可以精确表示任何实数。F
3.若x的当前值为5, 执行语句“if(x=3) x=x+5;”后,x的值依然是5。F 4.执行循环语句“for(i=1;i<10;i=i+2) s+=i;”后,i的当前值为11。T 5.在 C 程序中,A 和 a 代表不同的变量。T
填空题
执行下列程序段后,sum的值是___10___。
(三)
(一)选择题
1.已知字符 ?a? 的ASCII码为 97 ,执行下列语句的输出是__D___。
printf (\
A、98, b B、语句不合法 C、98, 99 D、 98, c 2.设x,y,t为整型变量,且已赋值。下列程序段中,( C )在实现两个变量x和y的交换可能会出错。
A、{ t=x; x=y; y=t; } B、 {x=x+y; y=x-y; x=x-y; } C、{ x=x*y; y=x/y; x=x/y; } D、{ x=x-y; y=x+y; x=y-x; }
3. 执行语句“s=0; for(k=1; s<20||k<=12; k=k+2) s=s+k;”后,s、k的值为( B )。 A、 25、9 B、 25、11 C、 36、11 D、 36、13 4. 若有如下程序,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++) s=s+1;
则与上述程序段功能等价的赋值语句是( B )
A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c;
5.判断i和j至少有一个值为非0的表达式是__B___。
A、 i!=0 && j!=0 B、i!=0||j!=0 C、!(i==0 || j==0) D、i&&j (二)判断题
1.表示数学式3 3.与float型数据相比,double型数据的精度高,取值范围大。T (三)填空题 2.下列程序段的输出是___7, 9___。 int k; float s=0; for (k=0; k < 7; k ++) s =s+ k/2; printf(\ 3. 设ch是字符型变量,判断ch为英文字母的表达式是___ch>=65&&ch<=90||ch>=97&&ch<=122___。 4. 计算下列分段函数的 if 语句是___if(x>0)y=1;else if(x<0)y=-1;else y=0;___。 1 x>0 y= 0 x=0 -1 x<0 (四) 单选题 1.对于if语句,以下( B )是正确的。 A、if语句可以嵌套,嵌套时的else总与它最近的没有else的if相匹配 B、如果有if(a>=3){if(a==3)y=1;}else y=10;,则else与第一个if匹配 C、如果有if(a>=3){if(a==3)y=1;}else y=10;,则else与第二个if匹配 D、if语句不可以嵌套 2.若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是:___D___ A、 B、 swich(a+b); switch(a*a+b*b) { case 1:y=a+b; break; {case 3: case 0:y=a-b; break; case 1:y=a+b;break; } case 3:y=b-a,break; } C、 D、 switch a switch(a-b) {case c1 :y=a-b; break {default:y=a*b;break; case c2: x=a*d; break case 3:case 4:x=a+b;break; default:x=a+b; } 3.下列程序段的输出结果是 B 。 int k=1; switch(k) { case 1: putchar('P'); case 2: case 3: putchar('Q'); break; case 4: putchar('R'); default: putchar('S'); case 10:case 11:y=a-b;break; } } A、P B、PQ C、PQR D、PQRS 4.只有当输入的数据满足1<=month<=12时,循环语句 C 才能正常退出。 A.do{ scanf(\%d\, &month); } while (month >= 1 || month <= 12); B.do{ scanf(\%d\, &month); } while (month >= 1 && month <= 12); C.do{ scanf(\%d\, &month); } while (month < 1 || month > 12); D.do{ scanf(\%d\, &month); } while (month <= 1 || month >= 12); 判断题 1. while循环有可能循环体一次也不执行。T 2 int x=0;while(1){x++;}存在语法错误,程序不会执行。F 3 int x=0;for(;;){x++;}是死循环程序。T 4.do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。T 填空题 1.能正确表示条件“x取值在[1,10]和[200,210]范围内”的表达式为___x>=1&&x<=10||x>=200&&x<=210___。 2.判断char型变量ch是否存放着数字字符的表达式为___ch>='0'&&ch<='9'___。 3.表示关系x≥y≥z的表达式是___y<=x&&y>=z___。 4.假定变量已正确定义,当a=1,b=3,c=5,d=4,x=0时,执行以下程序后,x的值是__A___。 if(a>b) if(c A)7 B)2 C)3 D)6 5.执行下列程序后的输出结果是__a=2,b=1____。 main() {int x=1,y=0,a=0,b=0; switch(x){case 1:switch(y) {case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++;} printf(\} 6.设有程序段:int i=10;while(i==0)i--;则下面描述中正确的是___C___。 A)while循环执行10次 B)循环是无限循环 C)循环体一次也不执行 D)循环体执行一遍 7.下列程序的输出结果是_k=0,m=5_____。 #include {int k=0,m=0,i,j; for(i=0;i<2;i++){for(j=0;j<3;j++)k++;k=k-j;} m=i+j; printf(\} 8.下列程序中,判断i>j共执行了__5___次。 #include {int i=0,j=10,k=2,s=0; for(;;){ i=i+k; if(i>j){ printf(\ s=s+i; } } 9.以下程序的运行结果是___32___。 #include {int i=0,a=0; while(i<20){ for(;;){if(i==0)break;else i--;} i=i+11; a=a+i; } printf(\} 10.以下程序的运行结果是_1,3,2_____。 #include {int i,m=0,n=0,k=0; for(i=9;i<=11;i++) switch(i/10){ case 0:m++;n++;break; default :k++;n++; case 10:n++;break; } printf(\} 11.以下程序的运行结果是___17___。 #include while(x>10&&x<50){x++;if(x/3){x++;break;}else continue;} printf(\}