第1单元 C语言基础知识
一、单项选择题
1.是构成C语言程序的基本单位。
A.函数
B.过程
C.子程序
D.子例程
2.以下叙述中正确的是______。
A. 构成C程序的基本单位是函数
B. 可以在一个函数中定义另一个函数
C. main()函数必须放在其它函数之前
D. 所有被调用的函数一定要在调用之前进行定义
3.下述正确的C语言常量是。
A.E2
B.1.5E2.3
C.5.OE
D.3e-3
4.下列计算机语言中,CPU能直接识别的是__ ____。
A. 自然语言
B. 高级语言
C.汇编语言
D.机器语言
5.设int x=1,y=1; 表达式(!x||y--)的值。
A. 0
B. 1
C.2
D. -1
6.是C语言提供的合法的数据类型关键字。
A.Float
B.signed
C.integer
D.Char
7.不合法的常量是。
A.’\2’
B. ""
C. ‘’
D. "\486"
8.以下选项中合法的实型常数是______。
A. 5E2.0
B. E-3
C. .2E0
D. 1.3E
9.以下选项中合法的用户标识符是______。
A. long
B. _2Test
C. 3Dmax
D. A.dat
10.在以下各组标识符中,合法的用户标识符是 (1) 、 (2) 、 (3) 。
(1) A.B0l B.table_1 C.0_t D.k%
int t*.1 W10 point
(2) A. Fast_ B.void C.pb1 D.〈book〉
Fast+Big abs fabe beep
(3) A.xy_ B.longdouble C.*p D.CHAR
变量1 signed history Flaut
11.与十进制511等值的十六进制数为______。
A. 1FF
B. 2FF
C. 1FE
D. 2FE
12.英文大写字母B的ASCII码为42H,英文小写字母b的ASCII码为______。
A. 43H
B. 84H
C. 74H
D. 62H
13.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是______。
A. 字符A
B. 字符a
C. 字符e
D. 非法的常量
14.属于合法的C语言长整型常量的是。
A.5876273
B.OL
C.2E10
D.(long)5876273
15.在C语言中,设int型占2字节,下列不正确的int型常数为。
A.32768
B.0
C.037
D.0xaf
16.在C语言中不同数据类型的长度是。
A.固定的
B.由用户自己定义的
C.任意的
D.与机器字长有关的
17.在通常微机上的C语言中,int类型数据占用 (1) 个字节存储;unsigned int类型数据占用 (2) 个字节存储;short类型数据占用 (3) 个字节存储;long类型数据占
用 (4) 个字节存储。
A.1
B.2
C.4
D.8
18.下列四组(八进制或十六进制)常数中,正确的一组是。
A.016 0xbf 0017
B.0abc 017 0xa
C.010 x11 Oxl6
D.0A12 7FF -123
19.在C语言中,合法的字符常数是。
A.’\084’
B.’\x42’
C.’\84’
D.”\0”
20.下列不正确的转义字符是。
A.‘\\’
B.’\’’
C.‘074’
D.’\0’
21.下列四个叙述中,错误的是。
A.在C程序中,无论是整数还是实数,都能被准确地表示。
B.在C程序中,变量名代表存储器中的一个位置
C.静态变量的生存期与整个程序的运行期相同
D. C语言中的变量必须先说明后引用
22.有关下述语句输出的判断中,正确的是。
int x=0xafffc;
printf(“%d”,x);
A.赋值非法
B.输出值不确定
C.输出值为afff
D.输出值-4
23.有关下述语句输出的判断中,正确的是。
char x=’\xeO’;
printf(“%x”,x);
A.赋值非法
B.输出值不确定
C.输出值为-32
D.输出值为224
24.下述语句的输出为。
int x=-1;
printf(“%d, %u, %o”,x,x,x);
A.-1,-1,-1
B.-1,32767,-177777
C.-1,32768,177777
D.-1,65535,177777
25.下述语句的输出为。
int x=2.5555555;
float y=2.5555555;
printf(“%d,%f”,x,y);
A.格式不匹配,错误输出
B.2, 2.555556
C.3, 2.555555
D.3, 2.555556
26.在C语言中,要求参加运算的数必须是整数的运算符是。
A./
B.!
C.%
D.==
27.下列语句中,符合语法的赋值语句是。
A.a=7+b+c=a+7;
B.a=7+b++=a+7
C.a=7+b,b++,a+7
D.a=7+b,c=a+7
28.下述程序的输出结果是。
#include
void main( )
{ int a=2;
a%=4-1;
printf(“%d,”,a);
a+=a*=a-=a*=3;
printf(“%d”,a);
}
A.2,O
B.1,O
C.-1,12
D.2,12
29.下述正确的语句是。
A.int x=y=z=0;
B.int z=(x+y)++;
C.x=+3==2;
D.d%=2.5;
30.下述程序的输出是。
#include
void main( )
{ int a =011, b=101;
printf(“\n%x,%o”, ++a,b++);
}
A.12,145
B.9,144
C.a,145
D.a,5
31.以下非法的赋值语句是______。
A. n=(i=2,++i).;
B. j++;
C. ++(i+1);
D. x=j>0;
32.下列语句错误的是。
A.x=sizeof int;
B.x=sizeof(3.14);
C.printf("%d",a=a+1,b--,c+1);
D.printf("%d",++x,x++);
33.对下述程序段正确的描述是。(注:题中的□表示空格,以下同)
int x=1234;
printf("ABS(x)=|%-08d|",x);
A.输出为ABS(x)=|-0001234|
B.输出为ABS(x)=|0001234|
C.输出为ABS(x)=|1234□□□□|
D.输出格式描述非法,无输出
34.下面程序的输出结果是。
#include
void main( )
{ int x=02,y=3;
printf("x=%%d,y=%%d", x,y);
}
A.x=2,y=3
B.x=%2,y=%3
C.x=%%d,y=%%d
D.x=%d,y=%d
35.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。
A. 6.500000
B. 6
C. 5.500000
D. 6.000000
36.下述程序。
#include
void main( )
{ int a=1234;
float b=123.456;
double c=12345.52345;
printf("\n%2d,%2.1f,%2.1f",a,b,c);
}
A.输出格式中位数不够,无输出
B.输出结果为12,12.4,12.5
C.输出结果为1234,123.5,12345.5
D.输出结果为1234,123.4,1234.5
37.下述程序。
#include
void main( )
{ long a=0xabcdef;
double b=1.0E40;
printf("\n5.2e,%-6x",b,a);
}
A.由于类型不符,不产生输出
B.输出1.0e+40.cdef□□
C.输出1.Oe+40, abcdef
D.有输出,但值与B.,C.皆不相同
38.已知字母A的ASCII码值是65,以下程序。
#include
void main( )
{ char a ='A';
int b=20;
printf("%d,%o",(a=a+1,a+b,b),a+'a'-'A',b);
}
A.表达式非法,输出零或不确定值
B.因输出项过多,无输出或输出不确定值
C.输出结果为20,141
D.输出结果为20,141,20
二、填空题
1.经过下述赋值后,变量x的数据类型是。
int x=2;
double y;
y=(int)(float)x;
2.下述程序的输出是。
#include
void main( )
{ int x=-2345;
float y=12.3;
printf("%6D,%06.2F",x,y);
}
3.下述程序的执行结果是。
#include
void main( )
{ printf("\n%s","\tab\%L"\’\060\084\\");
}
4.char型常量在内存中存放的是码值。
5.’\72’在内存中占 (1) 个字节,"\72"在内存中占 (2) 个字节。
6.表达式5%(-3)的值是 (1) ,表达式-5% (-3)的值是 (2) 。
7.定义:
double x=3.5,y=3.2;则表达式(int)x*0.5的值是 (1) ,表达式y+=x++的值是(2)。
8.定义:
int m=5,n=3;则表达式m/=n+4的值是 (1) ,表达式m=(m=1,n=2,n-m)的值是(2) ,表达式m+=m-=(m=1)*(n=2)的值是 (3) 。
若再进行下述赋值:
m=1,2,n++;则m的值是 (4) ,n的值是(5)。
9.阅读下述程序,说明其输出结果。请填空。
#inetude
void main ( )
{int n=3,b=4;
printf("%d\n',a=a+1,b+a,b+1); \*输出结果 (1) */
printf("%d\n',(a=a+1,b+a,b+1)); \*输出结果 (2) */
}
10.设有以下定义,并已赋于了确定的值:
char w;int x;float y;double z;
则表达式w*x+z-y所求得值的数据类型为。
11.设有int x=11;,则表达式(x++*1/3)的值为。
12.设已定义int x=1;y=1,则表达式(!x||y--)的值是。
13.设x为int变量,与逻辑表达式!x等价的最简单的C语言关系表达式为。
第2单元顺序结构程序设计
一、单项选择题
1.指出下列不正确的赋值语句是____________。
A.a++ B.a= =7 C.a+=7 D.a=1,b=1
2.若有以下程序,执行后的输出结果是__________。
main()
{ int k=2,i=2,m;
m=(k+=i*=k);
printf(“%d , %d\n”,m,i);
}
A.8 ,6 B.8,3 C.6, 4 D.7,4
3.以下程序的输出结果是________。
main()
{ int a=5,b=4,c=6,d;
printf(“%d\n”,d=a>b?(a>c?a:c)(b)); }
A.5 B.4 C.6 D.不确定
4.设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是_______。
A.printf(“x=%d\n”,x) B.printf(“x=%ld\n”,x)
C.printf(“x=%8dl\n”,x) C.printf(“x=%LD\n”,x);
5.以下程序的输出结果是_________。
main()
{ int k=17;
printf(“%d , %do, %x \n”,k,k,k); }
A.17,021,0x11 B.17,17,17 C.17,0x11,021 D.17, 21,11 6.下列程序的输出结果是:__________。
main()
{ int a=2;
a%=4-1;
printf(“%d”,a);
a+=a*=a-=a*=3;
printf(“%d”,a); }
A 2 ,0
B 1,0
C –1,12
D 2,12
7.设整型变量n的值为2,执行语句“n+=n - =n*n”后,n的值是_______。
A.0 B.2 C.- 4 D.4
8.指出下列语句中有实际意义的语句是___________。
A.a||b; B.a!=b; C.a+=b; D.getchar(a);
9.执行下列程序时的输出结果是________。
main()
{ int x,y;
x=13;
y=5;
printf(“%d”,x%=(y/=2)); }
A.3 B.2 C.1 D.0
10.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是______。
A.1 B.2 C.2.0 D.2.5
11.若运行时x输入12,则以下程序的输出结果是________。
main()
{ int x,y;
scanf(“%d”,&x);
y=x>12?x+10:x-12;
printf(“%d\n”,y);
}
A.0 B.22 C.12 D.10
12.下面程序的输出结果是_______。
main()
{ int a=-1,b=4,k;
k=(++a<0) && !(b- - <=0);
printf(“%d%d%d\n”,k,a,b);
}
A.1 0 4 B.1 0 3 C.0 0 3 D.0 0 4
13.下面程序的输出结果是________。
#include
main()
{ int k;
k=22;
printf(“%o\n”,k);
}
A.26 B.25 C.24 D.23
14.设x,y均为int类型变量,则以下不正确的函数调用语句为_______。
A.getchar( ); B.putchar(‘\108’);
C.scanf(“%d %*2d%d”,&x,&y); D.putchar(‘\’’);
15.下面程序的输出结果为_______。
main()
{ char c1=’6’,c2=’0’;
printf(“%d %d %d\n”,c1,c2,c1-c2);
}
A.因输出格式不合法,输出出错信息 B.54,48,6
C.6,0,7 D.6,0,6
16.下面程序的输出结果是_______。
main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”a,b);
}
A.6,1 B.2,1 C.6,0 D.2,0
17.若有下面程序,执行后的输出结果是________。
main()
{ int m=0xabc,n=0xabc;
m-=n;
printf(“%x\n”,m);
}
A.0x0 B.0X0 C.0 D.0XABC
18.有下面程序,若从键盘上输入:10A10<回车>,则输出结果是_______。 main()
{ int m=0,n=0; char c=’a’;
scanf(“%d%c%d”,&m,&c,,&n);
printf(“%d,%c,%d\n”,m,c,n);
}
A.10,A,10 B.10,a,10 C.10,a,0 D.10,A,0
19.有下面程序,执行后的输出结果是______。
main()
{ int i=1,j=1,k=2;
printf(“%d,%d,%d\n”,++i,j++,++k); }
A.1,1,2 B.2,2,1 C.2,2,2 D.2,1,3
二.分析下列程序,写出输出结果。
1.#include “stdio.h”
main()
{ int x = 1,y = 1, a,b ;
printf ("%d\n",! x || y-- ) ;
printf ("%d" ,(a = 2 )&& (b= -2) ) ;
x = l ,y=-1 ;
printf("%d\n" , (x--&++y)) ;
a = 1;x = 2;y = 3;
b = 4 ;
printf("%d\n", a } 2. #include “stdio.h” main() { int x , y , z ; x=y=z=0 ; ++x || ++y && ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); ++x && ++y || ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); ++x && ++y && ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); x=y=z=1 ; ++x || ++y && ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); ++x && ++y || ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); ++x && ++y && ++z ; printf( " x=%d\ty=%d\tz=%d\n " ,x,y,z); } 3.#include “stdio.h” main() { char a; a=’H’-‘A’+’0’; printf(“%c\n”,a); } 4.#include “stdio.h” main( ) { int a=1,b=1; a+=b+=1; { int a=10,b=10; a+=b+=10; printf("b=%d",b); } a*=a*=b*10; printf("a=%2d\n",a); } 5.#include “stdio.h” main( ) { int a=1,b=1,c=1; printf("%d,%d,%d\n",a,b,c); a+=b+=++c; printf("%d,%d,%d\n",a,b,c); printf("%d,%d,%d\n",a++,--b,++c); printf("%d,%d,%d\n",a,b,c); } 三、编程题 1.变量a、b中各存有一个整数,交换两数后输出。 2.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各有多少只? 3.从键盘输入一个字符,输出这字符的ASCII码的值。 4.编写程序,根据本金 a 、存款年数 n 和年利率 p 计算到期利息。 【提示】 ⑴到期利息公式 a*(1+p) n –a ; ⑵ a 的 b 次方计算公式为 exp(b*ln(a))。 5.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆体积。用scanf输入数据,编程计算结果,保留二位小数。。 6.用getchar( )函数读入一个字符,输出读入字符的前一个字符和后一个字符。 7.从键盘上输入一个ASCII码值,输出相应的字符。 第3单元分支结构程序设计 一、单项选择题 1.下面程序运行后,如果从键盘上输入5,则输出结果是_______。 main() { int x; scanf(“%d”,&x); if(x- -<5) printf(“%d\n”,x); else printf(“%d”,x++); } A.3 B.4 C.5 D.6 2.下面程序的输出结果是_______。 main() { int m=5; if(m++>5 printf(“%d \n”,m); else printf(“%d\n”,m- -); } A.7 B.6 C.5 D.4 3.下面程序的输出结果是________。 main() { int x=3,y=0,z=0; if(x==y+z) printf(“****”); else printf(“# # # #”); } A.有语法错误,不能通过编译 B.输出**** C.可以通过编译,但是不能通过连接,因而不能运行 D.输出# # # # 4.执行下列语句后,变量b的值是________。 int x=35; char z=’A’;int b; b=((x&15)&&(z<’a’)); A.0 B.1 C.2 D.3 5.以下关于switch语句和break语句的描述中,正确的是_______。 A.在switch语句中必须使用break语句 B.在switch语句中,可以根据需要使用或不使用break语句 C.break语句只能用于switch语句中 D.break语句是switch语句的一部分 6.下面程序的输出结果是_______。 main() { int x=10,y=20,t=0; if(x= =y) t=x; x=y; y=t; printf(“%d %d\n”,x,y); } A.10 10 B.10 20 C.20 10 D.20 0 7.有下面程序,执行后的输出结果是_______。 main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%d\n”,d); else if((c-1>=d)= =1) printf(“%d\n”,d+1); else printf(“%d\n”,d+2); } A.2 B.3 C.4 D.编译时有错,无结果。 8.若a,b,c1,c2,x,y均为整型变量,正确的switch语句是______。 A.switch(a+b); 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.switch a D.switch(a-b); { case c1:y=a-b;break; { default:y=a*b;break; case c2:x=a*b;break; case 3:case 4:x=a+b;break; default:x=a+b; } case 10:case 11:y=a-b;break; } 9.有一函数: ? ? ? ? ? < - = > = 1 1 x x x y ,以下程序段中不能根据x值正确计算出y值的是____。 A.if(x>0) y=1; B.y=0; else if(x= =0) y=0; if(x>0) y=1; else y=-1; else if(x<0) y=-1; C.y=0; D.if(x>=0) if(x>=0) if(x>0) y=1; if(x>0) y=1; else y=0; else y=-1; else y=-1; 10.有下面程序,程序运行后的输出结果是________。 main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf(“%d\n”,m); } A.1 B.2 C.3 D.4 11.C语言用_______表示逻辑“真”值。 A.true B.t或y C.非零整型值 D.整型值0 12.为了避免嵌套的条件分支语句if—else 的二义性,C语言规定:C程序中的else总是与_____组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 13.执行下面程序,输入为1的输出结果是__⑴__,输入为3的输出结果为__⑵__。 #include “stdio.h” main() { int k; scanf(“%d”,&k); switch(k) { case 1: printf (“%d\n”,k++); case 2: printf (“%d\n”,k++); case 3: printf (“%d\n”,k++); case 4: printf (“%d\n”,k++); break; delfault: printf(“Full!! \n”); } } ⑴ A.1 B.2 C. 2 D. 1 3 2 4 3 5 4 ⑵ A. 3 B.4 C.3 D. 4 4 5 14.若从键盘输入58,则下面程序输出的结果是_____________ 。 main() { int a; scanf("%d",&a); if(a>50) printf("%d ",a); if(a>40) printf("%d ",a); if(a>30) printf("%d ",a); } A.58 58 58 B.58 58 C.58 D.0 15.运行两次下面的程序,如果从键盘上分别输入6和4,则输出结果是 ________。 main( ) { int x ; scanf(“%d”,&x); if (x + +>5) printf(“%d”,x); else printf (“%d\n”, x - -); } A.7 和5 B.6和3 C.7和4 D.6和4 二、读程序 1.改正下列程序中错误的语句。 #include “stdio.h” main( ) { int a; printf("Input an integer:"); scanf("%d",a); if(a=1) printf("One\n"); else if(a<>2) printf("Many\n") else printf("Two\n"); } 2.写出下面程序的功能。 #include “stdio.h” main() { char ch; scanf("%c",ch); if(ch>=’A’ && ch<=’Z’) ch=ch-32; printf(“%c”,ch); } 3.写出下列程序的输出结果。 #include “stdio.h” main() { int x=11,y=1; if(x%2==1) x+=5; else x-=3; y+=5; printf(“%d %d”,x,y); } 4.写出下列程序的输出结果(执行后输入数据3)。 #include “stdio.h” main() { int k; scanf(“%d”,k); switch(k) { case 1:printf(“%d\n”,k++); case 2:printf(“%d\n”,k++); case 3:printf(“%d\n”,k++); case 4:printf(“%d\n”,k++); break; default:printf(“Full!\n”); } } 5.写出下列程序的输出结果。 #include “stdio.h” main() { int x=6; if(x++>7) printf(“%d\n”,x); else printf(“%d\n”,x--); } 6.写出下列程序的输出结果。 #include “stdio.h” main() { int k=2,j=3; if (k+j<10) { k=5; j=k; } printf(“%d %d”,k,j); } 7.根据下面程序,写出相应的数学表达式。 #include “stdio.h” main() { int x,y; scanf(“%d”,&x); if(x<0) y=-1; else if(x= =0) y=0; else y=1; printf(“%d %d\n”,x,y); } 三、编程题 1.给定一个整数,判断它是否能同时被3、5、7整除。 2.输入三角形三条边的长度,判断它们能否构成三角形,若能则指出是何种三角形:等边、等腰、直角、一般;若不能构成三角形,则输出相应的信息。 3.输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数 odd-奇数) 4.输入一个x值,计算分段函数的值。 ? ? ? ? ? ≥ - < ≤ < + = 12 1 12 7 10 7 1 3 2 x x x x x y 5.从键盘输入 4 个不相等的整数存入变量 n1,n2,n3,n4,找出其中最小的一个数并输出。 6.从键盘上输入一个数,若该数可以被13整除则输出,否则显示相应信息。 7.从键盘上输入一个字符,若该字符不是英文字母,则输出该字符。 第4单元循环结构程序设计 一、单项选择题 1.在C语言中,while和do-while语句的主要区别是__________。 A.do-while语句的循环体至少执行一次; B.while语句的循环体也至少执行一次; C.do-while语句允许从循环体外转到循环体内; D.do-while语句的循环体不能是复合语句; 2.若k为整型变量,则以下循环体执行的次数为__________。 for(k=2; k= =0; ) printf(“%d”, k--); A.0 B.1 C.2 D.无限次 3.执行循环语句for(k=1; k++<4; ); 后,变量k的值是________。 A.3 B.4 C.5 D.不定 4.执行下列程序段后的输出结果是________。 int k=1, a=0, b=1; do { a=a+b*k; b= -b; k++; } while (a>=0); printf(“%d”,a); A.1 B.0 C.-1 D.-2 5.运算下列程序,如果从键盘上输入:ab<回车> c<回车> def<回车>则输出结果为________。 #include “stdio.h” main() { char c[6]; int i=0; for( ; i<6; c[i]=getchar( ),i++) ; for(i=0;i<6; i ++) putchar(c[i]); printf(“\n”); } A.a B.a C.ab D.abcdef B b c C c d D d E F 6.下面程序的输出结果是__________。 main() { int n=0; while(n<=2) { n++; printf(“%d\n ”, n); } } A.1 B.1 C.1 D.1 2 2 2 3 3 d 4 7.下列语句中错误的是_______。 A.while(x=y) 5; B.do x++ while (x= = 10); C.while(0); D.do 2; while(a= =b); 8.循环语句for(a=0,b=0;(b!=12 || (b<4); a++) 的循环执行了__________。 A.3次 B.4次 C.5次 D.无限次 9.以下说法中正确的是_________。 A.continue和break只能用在循环体中 B.continue只能用在循环体中 C.break只能用在循环体中 D.continue不能用在循环体中 10.不能计算s=1×2×3×…×10的程序段是_________。 A.s=1*2*3*4 B.for(s=k=1;k<11;k++) s=s*5*6*7*8*9*10 s*=k; C.s=k=1; D.s=k=1 while(k<11) do s*=k; s*=k++; while(k++<11); 11.下面程序中,while循环的循环次数是__________。 main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } ...... } A.1 B.10 C.死循环 D.不能确定次数12.下面程序的输出结果是____________。 #include “stdio.h” main() { int i=0,a=0; while(i<20) { for(; ;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d\n",a); } A.21 B.32 C.33 D.11 13.下面程序的输出结果是____________。 main() { int i,sum=0; for(i=1;i<=3;sum++) sum+=i; printf(“%d\n”,sum); } A.6 B.3 C.0 D.死循环 14.下面程序的输出结果是____________。 #include “stdio.h” main() { int x=23; do { printf(“%d”,x--); } while(!x); } A.321 B.23 C.死循环 D.不输出任何内容15.下面程序的输出结果是____________。 #include “stdio.h” main() { int n=9; while(n>6) { n--; printf(“%d”,n); } } A.987 B.876 C.8765 D.9876 16.下面程序的输出结果是____________。 main () { int y=10; do { y - -;} while(- - y); printf("%d\n",y - -); } A.-1 B.1 C.8 D.0 17.在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出为_______。 #include 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.DEF 18.下列关于循环语句的描述,不正确的是_______。 A.循环语句的由循环条件和循环体两部分组成。 B.循环语句可以嵌套,即要循环体中可以用循环语句。 C.循环语句的循环体可以是一条语句,也可以是复合语句,还可以是空语句。 D.任何一种循环语句,它的循环体至少要被执行一次。 二、填空题 1.下面程序段的功能是:从键盘上输入若干字符(用回车键结束输入),统计其中数字字符的个数。 int n=0,ch; ch=getchar(); while( ________________ ) { if( ____________________ ) n++; ch=getchar(); } 2.下面程序的功能是:计算1-3+5-7+…-99+101的值。 #include “stdio.h” main() { int k,t=1,s=0; for(k=1; k<=101; k+=2) { _____________; s=s+t; _____________; } printf(“%d\n”,s); } 3.下面程序的功能是:输出100以内个位数为6并且能被3整除的所有数。 )! 14()!14(...!9!7!5!3)sin(14149753++---+-+-≈=+-n x n x x x x x x x y n n main() { int k,j; for(k=1; __________; k++) { j=k*10+6; if( _____________ ) continue ; printf(“%d\n ”,j); } } 4.计算一个班某课程的平均分,通过键盘输入数据,-1表示数据输入结束。 #include “stdio.h ” main() int sum=0,data,k=0; scanf(“%d ”,&data); while(data___________) { scanf(“%d ”,&data); sum=sum+___________; ______________ } printf(“%d\n ”,sum/_______); } 5.下面程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高分成绩和最低分成绩,当输入负数时结束输入。 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(“\n amax=%f\n amin=%f\n ”,amax,amin); } 6.下面程序的功能是求x 的y 次方。 main() { int k,y; float x , z=1.0; for(k=1; k________;k++) z=______; printf(“8.2f ”,z); } 三、编程题 1.输入20个整数,统计其中正数、负数和零的个数。 2.编程计算: (要求通项的值小于10-6 即停止计算!) 3.编程输出九九乘法表。 4.输出0—127之间的所有ASCII码字符。 5.编程求出3-100之间的所有素数。 6.编程按顺序输出26个大写字母。 7.求100~500之间各位数字之和等于6的所有整数。 8.形成数列1,2,3,5,16,231,……的前10项,该数列的规律是从第三项起,每一项是前两项的平方差。 第5单元数组程序设计 一、单项选择题 1.在C语言中,数组下标的数据类型是_______。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式2.若有说明,int a[5]; 则对数组元素的正确引用是_________。 A.a[5] B.a[3.5] C.a(5) D.a[5-5] 3.以下程序的输出结果是 #include “stdio.h” main() { char cf[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); } A.AAAA B.BBB C.BBBCC D.CC 4.若有说明,int a[3][4];则对a数组元素的正确的引用是________。 A.a[2][4] B.a[1,3] C.a[1+1][0] D.a(2)(1) 5.设有数组定义:char array[]=”Computer”;则数组所占的存贮空间为__________。 A.7个字节 B.8个字节 C. 9个字节 D.10个字节 6.有如下程序,该程序的输出结果是____________。 #include “stdio.h” main() { int n[5]={0,0,0},i,k=2; for(i=0;i printf(“%d\n”,n[k]); } A.不确定的值 B.2 C.1 D.0 7.若有定义:int t[3][2];能正确表示t数组元素地址的表达式是___________。 A.&t[3][2] B.t[3] C.t[1] D.t[2] 8.有如下程序,该程序的输出结果是___________。 #include “stdio.h” main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i3;i++) for(j=0;j printf(“%d\n”,s); } A.18 B.19 C.20 D.21 9.下面程序的输出结果是_________。 #include “stdio.h” main() { char a[2][4]; strcpy(a,”you”); strcpy(a[1],”me”); a[0][3]=’&’; printf(“%s\n”,a); } A.you&me B.me C.you D.me&you 10.定义两个一维字符数组:char a[5],b[5];下列正确的输入语句是__________。 A.gets(a,b); B.gets(‘a’ ),get(‘b’); C.scanf(“%s%s”,&a,&b); D.scanf(“%s%s”,a,b); 11.下列数组定义中不正确的是___________。 A.int b[2][3]; B.int b[][3]={0,1,2,5}; C.int b[10][10]={0}; D.int b[3][]={{1,2},{1,3,5},{1,3,5,7}}; 12.下列程序段的输出结果是_________。 char c[5]={‘m’,’e’,’\0’,’y’,’\0’}; printf(“%s”,c); A.’a’’b’ B.ab C.ab c D.abc 13.执行下列程序后,数组中最大值元素的下标是__⑴_____,最大值是__⑵____。 #include “stdio.h” main() { int a[6],k,j; for(k=1;k<=3;k++) { for(j=3;j>=1;j- -) a[k+j]=k*j+a[k+j]; } for(k=1;k<=6;k++) printf("%d\n",a[k]); } ⑴ A.3 B.4 C.5 D.6 ⑵ A.4 B.10 C.12 D.24 14.以下程序运行后,输出结果是___________。 main() { char *s="abcde"; s+=2; printf("%ld\n",s); } A.cde B.字符c的ASCII码值 C.字符c的地址 D.出错15.以下不能正确进行字符串赋初值的语句是__________。 A.char str[5]="good!"; B.char str[]="good!"; C.char *str="good!"; D.char str[5]={'g','o','o','d'}; 16.若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的地址的是______。 A.&aa[0]+1 B.&aa[1] C.&aa[0]++ D.aa+1 17.下面程序运行的结果是__________。 main() { char ch[7]={ "65ab21"}; int i,s=0; for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } A.2ba56 B.6521 C.6 D.62 18.下列说法中正确的是______________。 A.字符串是由若干个字符组成的。 B.字符串肯定是一个一维的字符数组。 C.一维字符数组都是字符串。 D.带有结束符的一维字符数组才是字符串。 二、读程序 1.写出下面程序的输出结果。 #include “stdio.h” main() { char s[]="abcdef"; s[3]='\0'; printf("%s\n",s); } 2.写出下面程序的输出结果。 #include “stdio.h” main() { int k; int a[3][3]={1,2,4,6,7,8,9,5,3}; for(k=0;k<3;k++) printf(“%d”,a[k][2-k]); } 3.写出下面程序的输出结果。 #include “stdio.h” main( ) { int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y + =*(p+x); printf(“%d\n”,y); } 4.写出下面程序的输出结果。 #include “stdio.h” main() { int a[3][3],*p,k; p=&a[0][0]; for(k=0;k<9;k++) p[k]=k+1; printf(“%d\n”,a[1][2]); } 5.改正下面程序中不正确的语句。 #include “stdio.h” main() { int n ; float s=1.0; for(n=10;n>1;n- -) s=s+1/n; printf(“%6.1f\n”,s); } 三、程序填空 1.有一个已排好序的字符串a,将字符串s中的每个字符按序插入到字符串a中。