1.一个C程序的执行是从( A )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序的main函数结束 2.以下叙述正确的是( C )。 A) 在C程序中,main函数必须位于程序的最前面 B) C程序的每行中只能写一条语句 C) C语言本身没有输入输出语句 D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.以下叙述不正确的是( D )。 A) 一个C源程序可由一个或多个函数组成 B) 一个C源程序必须包含一个main函数 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 4.C语言规定,在一个源程序中,main函数的位置( C )。 A) 必须在最开始 B) 必须在系统调用的库函数的后面 C) 可以任意 D) 必须在最后 5.一个C语言源程序是由( B )。 A) 一个主程序和若干子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成
第三章 数据类型、运算符与表达式 一 单项选择题 1.下面四个选项中,均不是c语言关键字的选项是( A )。 A) define IF Type B) getc char printf C) include scanf case D) while go pow 2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C )。 A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符 3.下列四个选项中,均是C语言关键字的选项是( B )。 A) auto enum include B) switch typedef continue C) signed union scanf D) if struct type 4.下面四个选项中,均是不合法的用户标识符的选项是( C )。 A) A P_0 do B) float la0 _A C) b-a goto int D) _123 temp int 5.以下有4组用户标识符,其中合法的一组是( C )。 A) For -sub Case B) 4d DO Size C) f2_G3 IF abc D) WORD void define 二 填空题 1.若x和a均是int型变量,则计算表达式(1)后的x值为 12 ,计算表达式(2)后的x值为 4 。 (1) x=(a=4, 6*2) (2) x=a=4, 6*2 2.若a是int型变量,则表达式(a=4*5, a*2), a+6的值为 26 。 3.若b是int型变量,则表达式b=25/3%3的值为 2 。 4.若s是int型变量,且s=6 则下面表达式s%2+(s+1)%2的值为 1 。 5.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。 6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为 10 ,n的值为 6 。 7.若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为 4.5 。 8.若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为 3.5 。 9.若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为 1 。 10.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。 第四章 最简单的C程序设计——顺序程序设计 一 单项选择题 1~5 BDDAB 1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式( B )。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字串,左补空格 D) 输出错误信息 2.已有定义int a= -2; 和输出语句 printf(“%8x”,a); 以下正确的叙述是( D )。 A) 整型变量的输出形式只有%d一种 B) %x是格式符的一种,它可以适用于任何一种类型的数据 C) %x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的 D) %8x不是错误的格式符,其中数字8规定了输出字段的宽度 3.若x, y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是 ( D )。 A) scanf(“%d %x, %le”, &x, &y, &z); B) scanf(“%2d *%d, %lf”, &x, &y, &z); C) scanf(“%x %*d %o”, &x, &y); D) scanf(“%x %o%6.2f”, &x, &y, &z); 4.以下程序的输出结果是( D )。 main( ) { int k=17; printf("%d,%o,%x\n",k,k,k); } A)17,021,0x11 B)17,17,17 B)17,0x11,021 D)17,21,11 5.下列程序的运行结果是( B )。 #include <stdio.h> main() { int a=2,c=5; printf("a=%d,b=%d\n",a,c); } A) a=%2,b=%5 B) a=2,b=5 C) a=d,b=d D) a=2,c=5 二 填空题 1.下面程序的运行结果是 i:dec=4,oct=4,hex=4,unsigned=65531 。 main() { short i; i= -4; printf(“\ni: dec=%d, oct=%o, hex=%x, unsigned=%u\n”, i, i, i, i); } 2.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 5.0,4,c=3 。 int b,c; float a; scanf("%f,%d,c=%d",&a,&b,&c); 3.下列程序的输出结果是16.00,请填空。 main() { int a=9, b=2; float x= 6.6 , y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n", z ); } 4.在printf格式字符中,只能输出一个字符的格式字符是 c ;用于输出字符串的格式字符是 s ;以小数形式输出实数的格式字符是 f ;以标准指数形式输出实数的格式字符是 e 。 三 编程题 1. 若a=3, b=4, c=5, x=1.2, y=2.4, z= -3.6, u=51274, n=128765, c1=’a’, c2=’b’。想得到以下的输出格式和结果,请写出完整的程序(包括定义变量类型和设计输出)。 要求输出的结果如下: a= <空格>3 <空格><空格> b= <空格> 4<空格><空格> c= <空格>5 x=1.200000, y=2.400000, z= -3.600000 x+y=<空格>3.60<空格><空格> y+z = -1.20<空格><空格>z+x= -2.40 u=<空格>51274<空格><空格>n=<空格><空格><空格>128756 c1= a <空格>or<空格>97(ASCII) c2= B <空格>or<空格>98(ASCII)
/* void main() { int a, b, c; unsigned u; long int n; float x, y, z; char c1,c2; a=3, b=4, c=5, x=1.2, y=2.4, z= -3.6, u=51274, n=128765, c1='a', c2='b'; printf("a=%2d b=%2d c=%2d\n", a, b, c); printf("x=%f, y=%f, z=%+f\n"); printf("x+y=%5.2f y+z =%+5.2f z+x=%+5.2f\n", x+y, y+z, z+x); printf("u=%6d n=%9d\n"); printf("c1=%c or %d(ASCII)\n", c1, c1); printf("c2=%c or %d(ASCII)\n", c2-32, c2); } */ 2. 输入一个华氏温度,要求输出摄氏温度。公式为
/* void main() { char c1, c2; c1 = getchar(); c2 = getchar(); putchar(c1); putchar(c2); printf("\nc1 = %c; c2 = %c\n", c1, c2); } */ 第五章 选择结构程序设计 一 单项选择题 1.逻辑运算符两侧运算对象的数据类型是( D )。 A) 只能是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型的数据 2.已知x=43, ch='A', y=0;则表达式(x>=y&&ch<'B'&&!y)的值是( C )。 A) 0 B) 语法错 C) 1 D) “假” 3.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( B )。 if(x>y) z=x;x=y;y=z; A) x=10,y=20,z=30 B) x=20,y=30,z=30 C) x=20,y=30,z=10 D) x=20,y=30,z=20 4.执行下列语句后a的值为( 2 ),b的值为( 1 )。( C ) int a, b, c; a=b=c=1; ++a|| ++b && ++c; A) 错误 1 B) 2 2 C) 2 1 D) 1 1 5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。 A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2 二 填空题 1.若从键盘输入58,则以下程序输出的结果是 585858 。 main() { int a; scanf(“%d”,&a); if(a>50) printf(“%d”,a); if(a>40) printf(“%d”,a); if(a>30) printf(“%d”,a); } 2.下面程序的运行结果是 -1 。 main() { int a=2, b=3, c; c=a; if(a>b) c=1; else if(a==b) c=0; else c=-1; printf(“%d\n”,c); } 3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。 main() { int x, y, z, c; scanf(“%d %d %d”, &x, &y, &z); if( x<y ) if( x<z ) if( y<z ) printf(“ %d %d %d”, x, y, z); } 4.如果运行时输入字符Q,则下面程序的运行结果是 Q 。 main() { char ch; scanf(“%c”, &ch); ch=(ch>=‘A’&& ch<=‘Z’)? (ch+32):ch; ch=(ch>=‘a’&& ch<=‘z’)? (ch-32):ch; printf(“%c”, ch); }
5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 x==0 。 第六章 循环控制 一 单项选择题 1.下面程序段的运行结果是( C )。 int n=0; while(n++<=2); printf(“%d”,n); A) 2 B) 3 C) 4 D) 有语法错 2.设有程序段: t=0; while(printf(“*”)) {t++; if(t<3) break; } 下面描述正确的是( D )。 A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价 C) 其中循环控制表达式是不合法的 D) 以上说法都不对 3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。 #include <stdio.h> main() {int a,b,t; scanf(“%d%d”,&a,&b); while( ___________ ) {if(a>b)
printf(“%d,%d\n”,a,b); scanf("%d%d",&a,&b); } } A) !a=b B) a!=b C) a==b D) a=b 4.C语言中,while和do-while循环的主要区别是( A )。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件更严格 C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 5.对以下程序段描述正确的是( C )。 x=-1; do
while(!x); A) 是死循环 B) 循环执行二次 C) 循环执行一次 D) 有语法错误 二 填空题 1.以下程序运行后的输出结果是 52 。 main() { int i=10, j=0; do