一、填空题
1、请读程序段: int x=1;
printf(\"%d\\n\",~x); 上面程序段的输出结果是_______。
2、在C语言中,输入操作是由库函数________完成的,输出操作是由库函数________完成的。
3、C语言源程序文件的后缀是 ;经过编译后,生成文件的后缀是 ;经过连接后,生成文件的后缀是
4、C语言中的标识符可分为关键字、_______和_______3类。
5、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。
6、函数process是一个可对两个整型数a和b进行计算的通用函数;函数max()可求这两个数中的较大者,函数min()可求它们中的较小者。已有调用语句process(a,b,max);和process(a,b,min);。请填空。
void process(_______) {int result; result=(*fun)(x,y); printf(\"%d\\n\ }
7、下面程序段是找出整数的所有因子。请填空。
scanf(\"%d\",&x);
i=1;for(;_______;)
{if(x%i==0)printf(\"%3d\",i); i++; }
8、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。
#include scanf(\"a=%d b=%d\",&.a,&.b); scanf(\"x=%f y=%\",8.x,8.y); scanf(\"c1=%cc2=%c”,8.cl,8.c2); printf(\"a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\",a,b,x,y,cl,c2); return0; } 9、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。请填空。 _______;a=b;b=c;_______; 10、字符串\"ab\\n\\\\012\\\\\\\"”的长度是_______。 二、选择题 11、下面4个选项中,是不合法的用户标识符的选项是( )。 A.A B.float C.b-a D._123 P_01 a0 goto temp Do A int INT 12、表达式18/4*sqrt(4.0)/8值的数据类型为( ) A.int B.float C.double D.不确定 13、已有定义inta=-2;和输出语句:printf(\"%81x”,A.;以下正确的叙述( ) A.整型变量的输出格式符只有%d一种 B.%x是格式符的一种,它可以适用于任何一种类型的数据 C.%x是格式符的一种,其变量的值按十六进制输出,但%81x是错误的 D.%81x不是错误的格式符,其中数字8规定了输出字段的宽度 14、有输入语句:scanf(\"a=%d,b=%d,c=%d\",&a,&b,&C.;为使变量a的值为1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是( )。(注:囗表示空格) A.132<回车> B.1,3,2<回车> C.a=1囗b=3囗c=2<回车> D.a=1,b=3,c=2<回车> 15、判断字符串a和b是否相等,应当使用( )。 A.if(a==B. B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.) 16、C语言规定:在一个源程序中,main函数的位置( ) A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 17、下面的程序段( )。 x=3; do {y=x--; if(!y){printf(\"x\");continue;} printf(“#”); }while(1<=x<=2); A.将输出## B.将输出并## * C.是死循环 D.含有不合法的控制表达式 18、若用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 19、若有以下定义和语句,则对a数组元素地址的正确引用为( )。 int a[2][3],(*p)[3]; p=a; A.*(p+2) B.p[2] C.p[1]+1 D.(p+1)+2 20、若需要建立如图9-3所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是( ) A)p=m; B)p=&m; C)*p=m; D)*p=&m; 21、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A',B’,C.;则符合程序段运行结果的选项是( )。 void move(char getone,char putone) {printf(\"%c——>%c\\n\",getone,putone); void hanoi(int n,char one,char two,char three) {if(n==1)move(one,three); else {hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } A)A-->C B)A-->C C)A-->C D)A-->C A-->B A-->B A-->B A-->B C-->B C-->A C-->B C-->B B-->A A-->B A-->C A-->C C-->B B-->C B-->A A—->B A-->C A-->C B-->C B-->C A-->B A-->B A-->C A-->C 22、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请选择填空。( ) #include {char s[80],c1,c2='';int i=0,num=0; gets(s); while(s[i]!='\\o') { c1=s[i]; if(i==0)c2=''; else c2=s[i-1]; if(【】)num++; i++; printf(\"There are%d words.\\n\",num); return 0; } A.c1==′′&&c2=='' B.cl!= ''&&c2=='' C.c1==''&&c2!=''D.cl!=''&&c2!='' 23、下面程序段的运行结果是( )。 char a[7]=\"abcdef\"; char b[4]=\"ABC\"; strcpy(a,B.; printf(\"%c\",a[5]); A.口 B.\\0 C.e D.f(其中口表示1个空格) 24、若变量都已正确定义,则以下程序段的输出是( )。 a=10;b=50;c=30; if(a>B.a=b,b=c; c=a; printf(\"a=%db=%dc=%d\\n\".a,b,C.; A.a=10 b=30 c=10 B.a=10 b=50 c=10 C.a=50 b=30 c=10 D.a=50 b=30 c=50 25、下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空( )。 #include { if(max 三、读程序填空 26、以下程序的输出结果为_______。 #include int main() {short i; i=一4; printf(\"\\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\\n\",i,i,i,i); return 0; } 27、以下程序的输出结果是_______。 #include {int x=10;float pi=3.1416; printf(\"(1)%d\\n\ printf(\"(2)%6d\\n\ printf(\"(3)%f\\n\ printf(\"(4)%14fNn\ printf(\"(5)%e\\n\ printf(\"(6)%14e\\n\ printf(\"(7)%g\\n\ printf(\"(8)%12g\\n\ return 0; } 28、以下程序a对应的数学表达式是_______;程序b对应的数学表达式是_______。 程序a 程序b # include scanf(\"%d\ if(a<0) b=-1; b=0; else if(a==0) if(a!=0) b=0; if(a>0) b=1; else b=1; else b=-1; printf(\"a=%d,b=%d\\n\ return 0; return0; } } 29、以下程序的功能是_______。 #include {int x,y,sum,product; printf(\"Enterxand y:\"); scanf(\"%d,%d\",&x,&y); sum=x+y; product=x*y; if(sum>product) printf(\"(x+y)>(x*y)\"); else printf(\"(x*y)>=(x+y)\"); return 0; } 30、下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数;若未找到,打印not exist。请填空。 #include for(i=1;i<=10;i++) {scanf(\"%d\",&a); if(a%7==0)_______; } if(_______)printf(\"%d\\n\",a); else printf(\"not exist\\n\"); return0; } 31、下面程序的运行结果是_______。 #include int sub(int n);int main() {int i=5; printf(\"%d\\n\",sub(i)); return(0); } int sub(int n) {int a; if(n==1)return 1; a=n+sub(n一1); return(a); } 32、下面程序用“快速顺序查找法”判断数组a中是否存在某一数。请填空。 #include {int a[9]={25,57,48,37,12,92,86,33},i,x; scanf(\"%d”,8&.x); _______;i=0; while(a[i]!=x)i++; if(_______)printf(\"Found!The index is:%d\\n\",i); else printf(\"Can't found!\\n\"); return0; } 33、下面程序的运行结果是_______。 #include {char a[80],b[80],*p=\"aAbcdDefgGH\"; Int i=0,j=0; while(*p!='\\0') {if(*p>='a'&&*p<='z') {a[i]=*p;i++;} else{b[j]=*p;j++;} p++; } a[i]=b[j]= '\\o'; puts(a); puts(b); return(0); } 四、编程题 34、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。 35、函数fun的功能是:判断输入的3个整型值能否组成三角形,组成的是等边三角形,还是等腰三角形。请在函数中填写正确的内容。 #include void fun(int a,int b,intc); int main() {int a,b,c; printf(\"\\ninput a,b,c:\\n\"); scanf(\"%d%d%d\",&a,&b,&c); fun(a,b,c); return(0); } void fun(int a,int b,int c) {if(a+b>c&&b+c>a8.&a+c>b) (请在此处填写正确的内容) Else printf(\"不能组成三角形\"); } 参考答案 一、填空题 1、-2 2、【1】scanf【2】printf 3、【1】.c【2】.obj【3】.exe 4、【1】用户标识符【2】预定义标识符 5、【1】6【2】4【3】2 6、int x,int y,int(*fun)(int,int) 7、i<=x 8、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车> (注:答案中的囗代表空格) 9、【1】t=a【2】c=t 10、9 二、选择题 11、C 12、C 13、D 14、D 15、D 16、C 17、C 18、A 19、C 20、B 21、C 22、B 23、D 24、B 25、B 三、读程序填空 26、i:dec=-4,oct=177774,hex=fffc,unsigned=65532 27、(1)10 (2)口口口囗10 (3)56.100000 (4)口口口口口口3.141600 (5)5.68100e+02 (6)口口口3.14160e+00 (7)3.1416 (8)口口口口囗囗3.1416 (注:答案中的囗代表空格) 28、【1】 29、输入两个数x、y,比较x+y和x*y哪个大。 30、【1】break【2】i<=10 31、15 32、【1】a[8]=x【2】i<8 33、abcdefg ADGH 四、编程题 34、#include {struct study int mid; int end; int average; }math; scanf(\"%d%d\",&math.mid,&.math.end); math.average=(math.mid+math.end)/2; printf(\"average=%d\\n\",math.average); return 0; } 35、{if(a==b&&b==c)printf(\"这是等边三角形\"); else if(a==b||b==c||a==c)printf(\"这是等腰三角形\"); else printf(”组成一般三角形”); } 因篇幅问题不能全部显示,请点此查看更多更全内容