当前位置:首页 >> 学科竞赛 >>

信息学奥赛辅导(C语言一)


A、'\'' '\\' '\n'

B、'\' '\017' '\"' D、'\\0' '\101' 'xlf'

信息学奥赛辅导:C 语言复习题(一)
第 1~3 章

一、选择题 练习题

C、'\018' '\f' 'xab'

7、下面正确的字符常量是____ A、'\X17' B、'\80' C、'\\' D、"\n"

8、下面四个选项中,均是正确的八进制数和十六进制数的选项是____ 1、一个C语言程序总是从____ A、-10 0x8f -011 A、主过程开始执行 C、子程序开始执行 B、主函数开始执行 C、010 -0x11 0xf1 D、主程序开始执行 9、下面四个选项中,均是正确的数值常量或字符常量的选项是____ 2、若 num、a、b 和 c 都是 int 型变量,则执行表达式 num=(a=4,b=16,c=32) 后 num 的值为_ A、4 B、16 C、32 D、52 A、0.0 0f 8.9e '&' C、'3' 011 0xFF00 0a B、"a" 3.9E-2.5 1e1 '\"' D、+001 0xabcd 2e2 50. D、0a12 -0x123 -0xa B、0abc -017 0xc

3、下面四个选项中,均是 C 语言关键字的选项是____ A、auto enum include C、signed union scanf B、switch typedef continue D、if struct type

10、若有代数式 ,则正确的 C 语言表达式是____ A、2*ln(x)*cos(x)/3*x C、2*log(x)*cos(x)/3*x B、2*ln(x)*cos(x)/(3*x) D、2*log(x)*cos(x)/(3*x)

4、下面四个选项中,均是合法整型常量的选项是____ A、160 -0xffff 011 C、-01 986,012 0668 B、-0xcdf 01a 0xe D、-0x48a 2e5 0x

11、若有说明语句:char ch1='\065';char ch2="2";char ch3='2';则:ch1 中____,ch2 中____,ch3 中____ A、包含 1 个字符 C、包含 3 个字符 B、包含 2 个字符 D、字符个数不确定,说明不正确

5、下面四个选项中,均是合法浮点数的选项是___ 12、若有运算符:>、*=、?:、%、sizeof,则将它们按运算的优先级排列的 A、+1e+1 5e-9.4 03e2 C、123e 1.2e-.4 +2e-1 B、-.60 12e-4 -8e5 D、-e3 .8e-4 5.e-0 正确次序为(由低至高)____ A、*=→?:→%→>→sizeof C、*=→>→?: →sizeof→%
-1-

B、?: →*=→>→%→sizeof D、*=→?: →>→%→sizeof

6、下面四个选项中,均是合法转义字符的选项是____

13、若有以下类型说明语句:char a; int b; float c; double d; 则表达式 a*b+d-c 的结果类型为____ A、float B、char C、int D、double

C、y=y*100+0.5/100.0

D、y=(y/100+0.5)*100.0

20、设 int 类型的数据长度为 2 个字节,则 unsigned int 类型数据的取值范围 是____ A、0~255 B、0~65535 C、-32768~+32767 D、-256~+255

14、若有变量说明:int a=0,b=0,c=0;,以下符合 C 语言语法的赋值表达式 是____ A、a=9+b+c=a+9 C、a=(9+b,b++) B、a=9+b;c=a+9; D、a=9+b++=a+7

21、若有以下定义,则能得到值为 3 的表达式是____(int m=7,n=12) A、n%=(m%=5) C、n%=m-m%5 B、n%=(m-m%5) D、(n%=m)-(m%=5)

15、已知字母 A 的 ASCII 码为(65)10,变量 ch1 为字符型,则执行语句 ch1='A'+'6'-'3';后,ch1 中的值为____ A、D B、68 C、一个不确定的值 D、C

22、若有说明:int a=1,b=2,c=3,d=4;则表达式 a<b?a:c<d?c:d 的值是___ A、4 B、3 C、2 D、1

23、若 x 为 int 类型,则逗号表达式(x=4*5,x*5),x+25 的结果是___,x 的值 是___ A、20 B、100 C、表达式不正确 D、45

16、以下运算符中优先级最高的运算符是____ A、&& B、++ C、?: D、!=

17、若有定义:int k=7;float a=2.5,b=4.7;则表达式 a+k%3*(int)(a+b)%2/4 的值是___ A、2.500000 B、2.7500000 C、3.500000 D、0.000000

24、putchar 函数可以向终端输出一个____ A、整型变量值 B、实型变量值 C、字符串 D、字符或字符型变量值

25、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表 空格)____ 变量说明:float x1,x2; 数据的输入方式:4.52<回车> 3.5<回车> A、scanf("%f,%f",&x1,&x2); B、scanf("%f%f",&x1,&x2);

18、sizeof(float)是____ A、双精度型表达式 B、一个整型表达式 C、一个函数调用 D、一个不合法的表达式

19、设变量 y 为 float 类型,x 为 int 类型,则以下能实现将 y 中的数值保留小 数点后两位,第三位进行四舍五入运算的表达式是____ A、y=(y*100+0.5)/100.0 B、x=y*100+0.5,y=x/100.0

C、scanf("%3.2f└─┘%2.1f",&x1,&x2); D、scanf("%3.2f%2.1f",&x1,&x2);
-2-

26、若运行以下程序时,从键盘输入 25,13,10<回车>,则输出结果为___ main( ) { int a1,a2,a3; scanf("%d%d%d",&a1,&a2,&a3); printf("a1+a2+a3=%d\n",a1+a2+a3); } A、a1+a2+a3=48 B、a1+a2+a3=10 B、a1+a2+a3=25 D、不确定值

30、下面程序段的输出结果是____ int a=023; printf("%d\n",--a); A、23 B、17 C、18 D、24

31、已知 ch 是字符型变量,则不正确的赋值语句是____ A、ch=5+9; B、ch='\0'; C、ch='7'+'9'; D、ch='a+b';

32、设 x,y 是 float 型变量,则不正确的赋值语句是____ A、++x; B、y=int(5); C、x*=y+1; D、x=y=0;

33、设有说明:double b=0.5,c=1.5; int a=10; 则正确使用了 C 语言库函数的赋值语句是____ A、c=asin(c)+fabs(a); C、c=sqrt(b-c); B、b=log10(b)+pow(b); D、a=(int)(atan2((double)a,b)+exp(b-0.2));

27、已知 a、b、c 为 int 类型变量,若有输入语句: scanf("a=%db=%dc=%d",&a,&b,&c);为使 a 值为 1,b 值为 3,c 值为 2,从键盘 输入数据的正确形式应当是____ A、132<回车> C、1<回车>3<回车>2<回车> B、a=1b=3c=2<回车>

34、以下程序段的输出结果是____ D、a=1<回车>b=3<回车>c=2<回车> int i=1,j=4,k=2; 28、以下能正确定义整型变量 x、y 和 z 并为其赋初值 5 的语句是____ float x=5.5,y=9.0,z; A、int x=y=z=5; C、int x=5,y=5,z=5; B、int x,y,z=5; z=(i+j)/k+sqrt((double)y)*1.2/k+x; D、x=5,y=5,z=5; printf("%f\n",z); 29、执行下面程序段后,x 的值是____ A、9.800000 int x; 35、若 a 为 int 类型变量,则执行以下程序段后 a 的值为____ printf("%d\n",(x=3*5,x+5)); a=5; A、10 B、15 C、20 D、5
-3-

B、9.300000

C、8.500000 D、8.000000

a*=a/=a++; A、2 B、1 C、40 D、3

printf("a=%d,b=%d,c=%d\n",a,b,c); c=(a=10,b=5,a+b); printf("a=%d,b=%d,c=%d\n",a,b,c); A、a=10,b=15,c=10 a=10,b=5,c=10 C、12 C、a=10,b=10,c=10 a=10,b=5,c=15 B、a=10,b=10,c=10 a=10,b=5,c=10 D、a=10,b=10,c=10 a=10,b=5,c=5

36、若 a 和 b 均为 int 型变量,则执行以下程序断后 x 的输出是____ x=15;y=15; printf("%d\n",x%=(y%=2)); A、0 B、1 C、6

37、若 x 为 unsigned int 类型变量,则执行以下程序段后 x 的值是____ x=65535; printf("%d\n",x); A、65535 B、1 C、无定值 D、-1

41、若 a1、a2、a3、a4 均为 char 类型变量,则执行以下程序段后的输出结 果为____ a1='1'; a2='2'; a3='3'; a4='4'; printf("%1c\n",a1); printf("%2c\n",a2); 无定值 printf("%3c\n",a3); printf("%4c\n",a4); A、1 2 3 4 B、1 2 3 4 C、1 02 003 0004 D、输出格式的描述符不正确

38、以下语句的执行结果是____ printf("%d\n",NULL); A、1 B、0 C、-1

39、若 x 为 int 类型变量,则执行以下程序段后的输出结果是____ x=0xDEF; printf("%4d,%4o,%4x\n",x,x,x); A、3567,6757,def C、3567,06757,0xdef B、3567,6757,xdef D、3567,6757,0def

40、若 a、b、c 均为 int 型变量,则执行以下程序段后的输出结果为____ b=(a=10,a+5,c=10);

42、执行语句 printf("The program's name is c:\\tools\book.txt");后的输出是 ____ A、The program's name is c:tools book.txt
-4-

B、The program's name is c:\tools book.txt C、The program's name is c:\\tools book.txt D、The program's name is c:\toolook.txt 43、设 a、b、c、d 均是 int 类型变量,为了使以下程序段的输出为: 1234+123+12+1,正确的输入形式应当是____ scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d); printf("%4d+%3d+%2d+%1d",a, b, c, d); A、1234123121<回车> B、1234123412341234<回车> D、1234+123+12+1<回车>

A、0

B、6

C、1

D、5

48、设 i、j、和 k 是 int 型变量,且 i=3,j=4,k=5,则以下值为 0 的表达式是_ A、'i'&&'j' B、i<=j C、i||j+k&&j-k D、!((i<j)&&!k||1)

49、设 ch 是 char 类型变量,其值是 A,则以下表达式的值是____ ch=(ch>='A'&&ch<='Z')?(ch+32):ch A、Z B、A C、a D、z

50、若希望当 num 的值为奇数时,表达式的值为“真”,num 的值为偶数时, 表达式的值为“假”。则以下不能满足要求的表达式是____ A、num%2==1 二、填空题 1、C 源程序的基本单位是____。 2、一个 C 语句中至少应包含一个____。 3、在 C 语言中,输入操作可以由库函数____完成,输出操作可以由库函 数____完成。 4、若 x 是 int 型变量,且 x=6,则表达式 x%2+(x+1)%2 的值为____。 5、若 a、b、c 均是 int 型变量,则执行表达式 c=(a=5)-(b=2)+a 后,c 的值为 ____。 B、!(num%2==0) C、!(num%2) D、num%2

C、1234+1234+1234+1234<回车>

44、设 c1、c2 均是 char 类型变量,则以下不正确的函数调用是____ A、scanf("c1=%cc2=%c",&c1,&c2); B、getchar( ) C、putchar(c2); D、putchar(c1,c2)

45、逻辑运算符两侧运算对象的数据____ A、只能是 0 或 1 C、只能是整型或字符型数据 B、只能是 0 或非 0 正数 D、可以是任何类型的数据

46、判断 char 型变量 c1 是否为大写字母的正确表达式是____ A、'A'<=c1<='Z' C、(c1>='A')&&(c1<='Z') B、(c1>='A')&(c1<='Z')

6、 若有定义: y=7;float x=2.5,z=4.7; 则表达式 x+(int)(y/3*(int)(x+z)/2)%4 int , D、('A'<=c1) AND ('Z'>=c1) 的值为____。 7、若采用十进制数的表示形式,则 077 为___,0111 为___,0x29 为 ___,0xab 为___。

47、执行以下程序段后的 a 值是___,b 的值是___,c 的值是___ int a=5,b=6,c=1,x=2,y=3,z=4; c=(a=c>x)&&(b=y>z);
-5-

8、设 x 为 float 型变量,y 为 double 型变量,a 为 int 型变量,b 为 long 型变 量,c 为 char 型变量,则表达式 x+y*a/x+b/y+c 的结果类型为____。 9、若有说明 int x=10,y=20;请写出下面各 printf 语句对应的输出结果。 ①printf("%3d\n",x+y); ②printf("%3o\n",x*y); ③printf("%3o\n",x%y); ____ ____ ____

double c=-123.45678; 请写出以下各 printf 语句的输出结果。 ①printf("%.3f%.3e%lf\n",b,b,c); _____ ②printf("%8.3f%8.3e%g\n",b,b,c); _____ ③printf("%u%-10.3f%-10.3e\n",a,b,c); ___ 12、若 a1 和 a2 都是 double 型变量,且 a1 的初值为 3.0,a2 的初值为 2.0, 则表达式 pow(a2,fabs(a1))的值为____。 13、假设变量 x 和 y 均为整型,以下语句可以不借助任何变量把 x、y 中的值 进行交换。 请填空。 x+=__; y=x-__; x-=__; 14、已有定义 int m; float n,k; char ch1,ch2;,为使 m=3, n=6.5, k=12.6, ch1='a', ch2='A',对应的 scanf 语句是___________________, 输入数据的方式是___________。 15、已有定义 int a,b; float k;,为将-10 赋给 a,将 12 赋给 b,410.34 赋 给 k;则对应以下 scanf 语句的数据输入形式是________。 scanf("%o%x%e",&a,&b,&k); 16、在 C 语言中,&作为双目运算符时表示的是___,而作为单目运算符时 表示的是__。

④printf("%3x\n",(x%y,x-y,x+y)); ____ 10、设有以下变量说明: int a=5,b=10; float x=3.5,y=10.8; char c1='A',c2='B'; 请根据以下输出格式和结果,完成 printf 语句中的填空。 ①a=5,b=10,x+y=14.3 printf("________",_____); ②x-y=-7.3└─┘a-b=-5 printf("________",_____); ③c1='A' or 65(ASCII) └─┘c2='B' or 66(ASCII) printf("________",_____);

17、设 x、y、z 均为 int 型变量,且 x=3, y=-4, z=5,请写出下面每个表达式 11、若有说明: int a=123; float b=456.78;
-6-

对应的结果。 ①、(x&&y)==(x||z) ____

②、!(x>y)+(y!=z)||(x+y)&&(y-z) ③、x++-y+(++z) ____

____

第 4 章 练习题 一、选择题 51、以下正确的 if 语句是____ A、if (n>0) printf("%f",n) printf("%f",-n); B、if (n>0) { n=n+m; printf("%f",n); } else printf("%f",-n); C、if (n>0) { n=n+m; printf("%f",n); }; else printf("%f",-n); D、if (n>0)

18、设 x、y、z 均为 int 类型变量,请用 C 语言的表达式描述以下命题。 ①、x 或 y 中有一个小于 z __________________ ②、x、y 和 z 中只有两个为负数 __________________ ③、y 是奇数 __________________ 19、以下程序的输出结果为____ main( ) { int x,y,z=246; x=z/100%9; y=(-1)&&(-1); printf("%d,%d\n",x,y); }

{ n=n+m; printf("%f",n) }; else printf("%f",-n); 52、以下程序____ main( ) { int x1=3, x2=0, x3=0; if(x1=x2+x3) printf("* * * *"); else

-7-

printf("# # # #"); A、输出:* * * * C、存在语法错误

} B、输出:# # # # D、无输出结果

1

(a>0)

0 (a>0) D、-1 (a<0) x= 1 (a=0) 0 (a>0)

C、 0 (a<0) x= -1 (a=0)

53、为了避免在嵌套的条件语句 if-else 中产生二义性,C 语言规定:else 子 句总是与__ A、缩排位置相同的 if 配对 C、其之前最近的 if 配对 B、其之前最近且不带 else 的 if 配对 D、第一个 if 配对

1 (a>0)

56、以下关于 switch 语句和 break 语句的描述中正确的是____ A、在 switch 语句中必须使用 break 语句 B、break 语句只能用于 switch 语句体中 C、break 语句只能用于循环语句中 D、在 switch 语句中使用 break 语句或 continue 语句的作用相同 w=1; x=2; y=3; z=4; 57、设有说明:int a=1,b=0; 则执行以下语句后的输出结果是____ k=(w<x)?w:x; switch(a) k=(k<y)?k:y; { case 1: k=(k<z)?k:z; switch(b)

54、若 w、x、y、z、k 均为 int 类型变量,则执行下面语句后的 k 的值是__ __

A、1

B、2

C、3

D、4 { case 0: printf("** 0 **\n"); break;

55、下面程序段所表示的数学函数关系是____ case 1: printf("** 1 **\n");break; x=-1; } if (a!=0) case 2: printf("** 2 **\n"); break; if (a>0) x=1; } else x=0; A、** 0 ** A、 -1 (a<0) x= 0 (a=0) B、 1 (a<0) ** 2 ** x= -1 (a=0)
-8-

B、** 0 **

C、** 0 ** ** 1 ** ** 2 ** 58、设有程序段____ int x=10; while (x=0) x=x-1; A、while 循环执行 10 次

D、switch 语句中存在语法错误

printf("****\n"); A、循环体只执行一次 C、循环体一次都不执行 B、是无限循环 D、for 语句中存在语法错误

62、以下程序段中的 do-while 循环____ m=-1; do { m=m*m; B、循环是无限循环 D、循环体语句只执行一次 }while(!m); A、是死循环 B、执行二次 C、执行一次 D、有语法错误

C、循环体语句一次也不执行

59、语句 while (!y)中的表达式 !y 等价于____ A、y==0 B、y!=1 C、y!=0 D、y==1

63、以下关于 for 循环的正确描述是____ A、for 循环只能用于循环次数已经确定的情况 B、for 循环是先执行循环体语句,后判断表达式 C、在 for 循环中,不能用 break 语句跳出循环体 D、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 64、语句 for (表达式 1; ; 表达式 3)等价于____

60、以下关于 do-while 循环不正确的描述是___ A、d0-while 的循环体至少执行一次 B、do-while 循环由 do 开始,用 while 结束,在 while (表达式)后面不能写分 号 C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假") 的操作 D、do-while 的循环体可以是复合语句

A、for (表达式 1; 0 ; 表达式 3) B、for (表达式 1; 1 ; 表达式 3) C、for (表达式 1; 表达式 1; 表达式 3)

61、设 x、y 均是 int 类型变量,且 x 值为 100,则关于以下 for 循环的正确判 断是____ for (y=100; x!=y; ++x,y++)
-9-

D、for (表达式 1; 表达式 3; 表达式 3) 65、若 k 为整型变量,则以下 for 循环的执行次数是____

for (k=2; k==0; ) printf("%d",k--); A、无限次 B、0 次 C、1 次 D、2 次

for (b=1,a=1; b<=50; b++) { if (a>=10) break;

if (a%2==1) { a+=5; continue; } a-=3; A、10 B、6 } C、7 D、8 E、4

66、以下程序段的执行结果是____ int x=-3; do { printf("%d\n", x++); }while(!x); A、-3 B、-2 C、陷入死循环 D、-3 -2 -1

69、以下程序段的执行结果是____ int a, b; for (a=1; a<5; a+=2) { for (b=1; b<5; b++) printf("%2d",a*b); if (b==5) printf("\n"); } A、 1 2 6 3 3 9 4 4 12 6 9 12 B、1 6 2 9 3 4 D、 2 6 3 9 4 12

67、执行以下程序段后,y 的值是____,x 的值是____ int x=1, y=10; do { y-=x; x++; }while(y--<0); A、9 B、8 C、-2 D、2 E、4 F、3

3 C、 2

12 15

68、执行以下程序段后 a 的值是____,b 的值是____ int a, b;

10 15 20

70、以下程序段中是死循环的是____

- 10 -

A、int n=1; while (!n) n++; C、int n=1; do { n++; }while(n);

B、int n=1; do { n--; }while(n); D、for (n=5; n<1; ) ;

72、以下能正确计算 1×2×3×…×10 的程序段是____ A、do { k=1; n=1; n=n*k; k++; }while(k<=10); C、k=1; n=1; do { n=n*k; k++; }while(k<=10); do { n=n*k; k++; }while(k<=10); B、do { k=1; n=0; n=n*k; k++; }while(k<=10); D、k=1; n=0;

71、下面程序的运行结果是____ main( ) { int m=0; while (m<=2) { m++; printf("%d\n", m); } } A、1 B、 1 2 C、1 2 3 D、1 2 3 4 空。

73、下面程序的功能是计算 1 至 10 之间的奇数之和以及偶数之和。请选择填

main( ) { int x, y, z, k; x=z=0; for (k=0; k<=10; k+=2) { x+=k; ________; z+=y; }
- 11 -

printf("偶数之和 = %d\n", x); printf("奇数之和 =%d\n", ________); } ①、A、y=k-- B、y=k+1 C、y=k++ D、y=k-1 ②、A、z-10 B、z C、z-11 D、z-y

A、当 y<0 时整个循环结束 C、printf 函数永远也不执行 76、以下程序段等价于____ for (k=100; k<=200; k++) { if (k%3==0) continue; printf("%4d", k); }

B、y>=0 时什么也不输出 D、最多允许输出 100 个非负整数

74、下面程序段的功能是计算 1000!的末尾含有多少个零。请选择填空。 (提示:只要算出 1000!中含有因数 5 的个数即可。) for (m=0,n=5; n<=1000; n+=5) { t=n; while (________) { m++; t=t/5; } } A、t%5 B、t=t%5==0 C、t%5==0 D、t%5!=0 75、若有以下程序段: for (m=1; m<=100; m++) { scanf("%d", &y); if (y<0) continue; printf("%3d", m); } 正确的描述是____

A、for (k=100; (k%3)&&k<=200; k++) printf("%4d", k); B、for (k=100; (k%3)||k<=200; k++) printf("%4d", k); C、for (k=100; k<=200; k++) if (k%3!=0) printf("%4d", k); D、for (k=100; k<=200; k++) { if (k%3) printf("%4d", k); else continue; break;

- 12 -

} 二、填空题 20、以下程序的功能是:输入三个整数 n1、n2、n3,按从大到小的顺序进行 输出。请填空。 main( ) { int n1, n2, n3, temp; scanf("%d%d%d", &n1, &n2, &n3); if (______) { temp=n2; n2=n3; n3=temp; } if (______) { temp=n1; n1=n2; n2=temp; } printf("%d, %d, %d\n", n1, n2, n3); } }

if (c1>='a' && c1<='u') ______; else if (c1>='v' && c1<='z') ______; putchar(c1);

22、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是 一个小写字母,则把它变成大写字母;其它字符不变。请填空。 main( ) { char ch1; scanf("%c", ch1); if (________________) ch1=ch1+32; else if (ch1>='a' && ch1<='z') ________;

21、以下程序的功能是:输入一个小写字母,按字母排列顺序后移 5 个位置后 输出(如把'a'变为'f', 'w'变成'b')。请填空。 #include "stdio.h" main( ) { char c1; c1=getchar( );
- 13 -

printf("%c", ch1); } 23、阅读下面的程序并回答问题。 main( ) { int m, n, x, y; scanf("%d, %d", &x, &y);

m=1; n=1; if (x>0) m=m+1; if (x>y) n=m+n; else if (x==y) n=5; else n=2*m; printf("m=%d, n=%d", m, n); }

{ s=(a1+a2+a3)/2; area=sqrt(s*(s-a1)*(s-a2)*(s-a3)); printf("%f", area); if (______________) printf("等边三角形"); else if (_________________) printf("等腰三角形"); else if ((a1*a1+a2*a2==a3*a3) || (a1*a1+a3*a3==a2*a2) || (a2*a2+a3*a3==a1*a1)) printf("直角三角形"); else printf("一般三角形"); } else

问题:为了使输出 n=4,x 的输入值应当为______,y 的输入值应当为 ____。 24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能 组成则输出三角形的面积和三角形的类型。请填空。 #include "math.h"

printf("不能组成三角形"); main( ) } { float a1, a2, a3; 25、以下程序的功能是判断输入的年份是否是闰年。请填空。 float s, area; main( ) scanf("%f%f%f", &a1, &a2, &a3); { int year, yes; if (_____________________)
- 14 -

scanf("%d", &year); if (year%400==0) year=1; else if (__________________) yes=1; else ____; if (yes) printf("%d is", year); else printf("%d is not", year); printf(" a leap year.\n"); } 26、以下程序段根据输入的截止日期(年:yend,月:mend,日:dend)和 出生日期(byear,bmonth,bday),计算出实际年龄。请填空。 …… int yend, mend, bend, byear, bmonth, bday, age; age=yend-byear; if (mend____bmonth) age--; else if (mend___bmonth &&dend___bday)
- 15 -

age--; …… 27、如果运行以下程序段时输入字符“t”,则程序段的运行结果是____ main( ) { char c1; scanf("%c", &c1); c1=(c1>='A' && c1<='Z') ? (c1+32) : c1; c1=(c1>='a' && c1<='z') ? (c1-32) : c1; printf("%c",c1); } 28、以下程序的功能是找出 x、y、z 三个数中的最小值。请填空。 main( ) { int x=4, y=5, z=8; int u, v; u=x<y ? ________; v=u<z ? ________; printf("%d", v); }

} 输入数据(从第一列开始): 1234<回车> 30、将以下嵌套的 if 语句改写成对应的 switch 语句,使其完成相同的功能。 请填空。(假设 mark 的取值在 1 至 100 之间。) if 语句: 29、若运行以下程序时,输入下面指定数据,则运行结果为______ #include <stdio.h> main( ) { int ch; while ((ch=getchar( ))!='\n') { switch(ch-'1') { case 0: case 1: putchar(ch+3); case 2: putchar(ch+3); break; case 3: putchar(ch+3); default: putchar(ch+1); break; } } printf("\n"); } switch 语句: switch(______) { ______ case 6 : case 7 : case 8 : ____ k=1; break; k=2; break; k=3; break; k=4; break; k=5; if (mark<60) k=1; else if (mark<70) k=2; else if (mark<80) k=3; else if (mark<90) k=4; else if (mark<=100) k=5;

- 16 -

if ((s<100) && (s>=90)) m=4; if ((s<90) && (s>=80)) m=3; if ((s<80) && (s>=70)) m=2; 31、将以下含有 switch 语句的程序段改写成对应的含有非嵌套 if 语句的程序 段,请填空。 含有 switch 语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default: } m=0; y= 1 32、用 switch 语句实现以下数学关系,请填空。 -1 (x<0) 0 (x=0) (x>0) if ((s<70) && (s>=60)) m=1; if (______) ________;

switch(x<0) { case 1: y=-1; ____ case 0: switch(x==0) { case 1: y=0; ____ ____ y=1; } }

含有非嵌套 if 语句的程序段: int s, m; if (______) m=5;
- 17 -

33、 将以下含有 switch 语句的程序段改写成对应的含有嵌套 if 语句的程序段, 请填空。 含有 switch 语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default: } 含有嵌套 if 语句的程序段: int s, m; if (____) m=0; else if (s<70) m=1; else if (s<80) m=2; else if (s<90) m=3; else if (s<100) m=4; ______;
- 18 -

34、设 x 和 y 均为 int 类型变量,则以下 for 循环中的 scanf 语句最多可执行 的次数是____ for (x=0, y=0; y!=123 && x<3; x++) scanf("%d", &y);

35、设 a、b、c 均是 int 类型变量,则执行以下 for 循环后,c 的值为___ _ for (a=1, b=5; a<=b; a++) c=a+b;

m=0;

36、以下程序的运行结果为____ main( ) { int j=5; while (j<=15) if (++j % 2!=1) continue; else printf("%d ", j );

printf("\n"); }

37、设 ch1 为 char 类型变量,若从键盘上由第一列输入以下数据: right?< 回车> 则以下三个程序段的输出结果分别是_____,____,____。 ①、c=getchar( ); while (c!='?') { putchar(c); c=getchar( ); } ②、while ((c=getchar( ))!='?') putchar(++c); ③、while (putchar(getchar( ))!='?') ; 38、 下面程序段的功能是统计从键盘输入的字符中的数字字符个数, 用换行符 '\n'结束循环,请填空。

{ b+=2; a-=2+b; }while(a>=0); 40、以下程序段的运行结果是____ x=2; do { printf("*"); x--; }while(!x==0); 41、下面程序段是找出整数的所有因子,请填空。 scanf("%d", &x); for ( ; ____ ; ) { if (x%i == 0) printf("%3d", i );

int n=0, c; c=getchar( ) ; } while (____) 42、设鸡兔共有 30 只,脚共有 90 个,下面程序段是计算鸡兔各有多少只, { if (____) n++; c=getchar( ); } 39、以下 do-while 语句中循环体的执行次数是____ a=10; b=0; do
- 19 -

i++;

请填空。 for (x=1; x<=29; x++) { y=30-x; if (________) printf("%d, %d\n", x, y); 43、若用以下形式表示 for 循环语句: for (表达式 1;表达式 2;表达式 3) }

循环体语句 则执行语句 for (i=0; i<3; i++) printf("*"); 时,表达式 1 执行____次, 表达式 3 执行____次。 44、下面程序的功能是计算 1-3+5-7+……-99+101 的值,请填空。 main( ) { int i, t=1, s=0; for (i=1; i<=101; i+=2) { ____; s=s+t; ____; } printf("%d\n",s); } 45、以下程序的功能是求出下面算式中的 X、Y、Z 的值,请填空。 算式:XYZ +YZZ 532 main( ) { int x, y, z, k, result=532; for (x=1; x<10; x++) for (y=1; y<10; y++) for (z=__; ___; z++) { k=(______)+(100*y+10*z+z); if (k==result)
- 20 -

printf("X=%d, Y=%d, Z=%d\n",x,y,z); } } 46、下面程序的功能是求 1000 以内的所有完全数,请填空。(说明:一个数 如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3, 6 为完全数。) main( ) { int a, i, m; for (z=1; a<=1000; a++) { for (____; i<=a/2; i++) if (!(a%i)) ____; if (m==a) } } printf("%4d", a);

47、下面程序的运行结果是____ #include "stdio.h" main( ) { int i, j; for (i=4; i>=1; i--)

{ for (j=1; j<=i; j++) printf("#"); for (j=1; j<4-i; j++) putchar('*'); putchar('\n'); } } 48、 下面程序的功能是计算 100 至 1000 之间有多少个数其各位数字之和是 5, 请填空。 main( ) { int i, s, k, count=0; for (i=100; i<=1000; i++) { s=0; k=i; while (____) { s=s+k%10; }

} 49、下面程序的功能是打印 100 以内个位数为 6 且能被 3 整除的所有数,请 填空。 main( ) { int i, j; for (i=0; ____; i++) { j=i*10+6; if (____) continue; printf("%d", j ); }

C语言程序设计第 5 章练习题

一、选择题 k=____; } 77、以下对一维数组 a 的正确说明是____ if (s!=5) A、char a(10); ____; C、int k=5,a[k]; count++; 78、若有说明语句:int a[2][4];,则对 a 数组元素的正确引用是____ } A、a[0][3] B、a[0][4] C、a[2][2] D、a[2][2+1] printf("%d", count);
- 21 -

B、int a[ ]; D、char a[ ]={'a' , 'b' , 'c'};

79、以下能对二维数组 y 进行初始化的语句是___ A、static int y[2][ ]={{1,0,1}, {5,2,3}}; B、static int y[ ][3]={{1,2,3}, {4,5,6}}; C、static int y[2][4]={{1,2,3}, {4,5} , {6}}; D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}}; 80、若有说明语句:int y[ ][4]={0,0}; 则下面叙述不正确的是____ A、数组 y 的每个元素都可得初值 0 B、二维数组 y 的行数为 1 C、该说明等价于 int y[ ][4]={0}; D、只有元素 y[0][0]和 y[0][1]可得到初值 0,其余元素均得不到初值 0 81、以下各组选项中,均能正确定义二维实型数组 s 的选项是____ A、float s[3][4]; float s[ ][4]; B、float s(3,4); float s[ ][ ]={{0};{0}};

A、j*m+i C、i*m+j-1

B、i*m+j D、i*m+j+1

84、下面程序中有错误的行是____ 1、 main( ) 2、 { 3、 4、 5、 6、 7、 8、 9、 } A、3 B、6 C、7 D、5 int x[3]={1}; int k; scanf("%d", &x); for (k=1; k<3; k++) x[0]=x[0]+x[i]; printf("x[0]=%d\n", x[0]);

float s[3][ ]={{1},{0}}; float s[3][4]; C、 float s[3][4]; D、float s[3][4]; float s[3][ ];

85、若有以下语句,则正确的描述是____ char x[ ]="12345"; char y[ ]={'1', '2', '3', '4', '5'}; A、x 数组与 y 数组的长度相同 B、x 数组长度大于 y 数组长度 C、x 数组长度小于 y 数组长度

static float s[ ][4]={{0},{0}};

auto float s[ ][4]={{0},{0},{0}}; float s[ ][4]; 82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则 a 数组的行数为___ _ A、3 B、2 C、无确定值 D、1

D、x 数组等价于 y 数组

83、若二维数组 y 有 m 列,则在 y[i][j]前的元素个数为____
- 22 -

86、以下不正确的数组定义语句是____ A、double x[5]={2.0, 4.0, 6.0, 8.0, 10.0}; B、int y[5]={0, 1, 3, 5, 7, 9}; C、char ch1[ ]={'1', '2', '3', '4', '5'}; D、char ch2[ ]={'\x10', '\xa', '\x8'}; 87、以下正确的数组定义语句是____ A、char a[5]={'1', '2', '3', '4', '5', '\0'}; B、int b[2][ ]={{1}, {2}}; C、float c[ ][3]={1, 2, 3, 4, 5}; D、char d[5]="CHINA"; 88、判断字符串 str1 是否大于字符串 str2,应当使用____ A、if (str1>str2) B、if (strcmp(str1, str2))

C、getchar(a); getchar(b); D、gets(a); gets(b); 91、有字符数组 s1[80]和 s2[80],则以下能正确对 s1, s2 进行输出的语句是 ____ A、puts(s1, s2) C、putchar(s1, s2); B、printf("%s, %s", s1, s2); D、puts(s1), puts(s2);

92、以下程序段的运行结果是____ char a[7]="abcdef"; char b[4]="ABC"; strcpy(a, b); printf("%c", a[5]); A、└┘ B、\0 C、e D、f

93、以下描述正确的是____ A、两个字符串所包含的字符个数相同时,才能比较字符串 B、字符个数多的字符串比字符个数少的字符串大 C、字符串"STOP└┘"与"STOP"相等 D、字符串"That"小于字符串"The" 94、以下对字符数组的描述中错误的是____

C、if (strcmp(str2, str1)>0) D、if (strcmp(str1, str2)>0) 89、下面程序段的运行结果是____ char x[5]={'a', 'b', '\0', 'c', '\0'}; printf("%s", x); A、'a''b' B、ab C、ab└┘c D、abc

A、字符数组中可以存放字符串 B、字符数组中的字符串可以整体输入、输出 C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符串进行比较
- 23 -

90、有两个字符数组 a,b,则以下能正确为 a,b 进行赋值的语句是____ A、gets(a, b); B、scanf("%s%s", &a, &b);

95、若有语句:char s1[10], s2[10]={"books"},则能将字符串 books 赋给数组 s1 的正确语句是____ A、s1={"books"}; C、s1=s2; B、strcpy(s1, s2); D、strcpy(s2, s1);

98、当运行以下程序时候,从键盘输入: ab<回车> c<回车> def<回车> 则下面程序的运行结果是__ #include <stdio.h>

96、以下 printf 语句的输出结果是____ printf("%d\n", strlen("school"); A、7 B、6 C、存在语法错误 D、不定值

#define N 6 main( ) { char ch1[N];

97、下面程序的功能是将字符串 s 中所有的字符 c 删除。请选择填空。___ _ #include <stdio.h>

int k=0; main( ) for ( ; k<N; ch1[k]=getchar( ), k++) ; { char s[80]; for (k=0; k<N; k++) int i, j; } gets(s); for (i=j=0; s[i]!='\0'; i++) if (s[i]!='c') ____ s[j]='\0'; puts(s); } A、s[j++]=s[i] C、s[j]=s[i]; B、s[++j]=s[i] D、s[j]=s[i];
- 24 -

putchar(ch1[k]);

A、 abcdef 、

B a、 b c d e f

C b 、 c d

D

ab

c d

A、LB C、AB

B、ABLMNP D、LBLMNP

二、填空题 50、在 C 语言中,二维数组元素在内存中的存放顺序是________。 51、若有定义:double x[3][5];,则 x 数组中行下标的下限为____,列下 标的上限为____。 52、若二维数组 a 有 m 列,则计算任一元素 a[i][j]在数组中相对位置的公式为 ________。(设 a[0][0]是数组的第一个元素) 99、下面程序的运行结果是____ 53、若有定义:int a[3][4]={{1, 2}, {0}, {4, 6, 8, 10}};, 则初始化后,a[1][2] #include <stdio.h> #include <string.h> main( ) { char x[80]="AB", y[80]="LMNP"; 55、请写出下面各 printf 语句的结果。 (98 题答案:) ①、printf("%s\n", strcat("school", "student")); int n=0; ____________ strcat(x, y); ②、printf("%d\n", strlen("CHINA")+strlen("C")); while (x[n++]!='\0') ____ y[n]=x[n]; ③、printf("%d\n", strcmp("The", "The")); puts(y); ____ } 56、根据下面说明和要求,完成对应的填空。
- 25 -

得到的初值是____,a[2][1]得到的初值是____。 54、若有说明:char s[20];,如果想从键盘上把字符串:This is a book. 输 入到数组 s 中,应当调用的函数是______,函数调用语句的形式是____ ___。

①、若有:char str1[10],str2[ ]={"student"}; 能把 str2 中的字符串赋给 str1 的串函数调用语句是_______________ ②、若有:char str1[20]={"a good"}, str2[ ]= {"student"}; 能把 str2 中的字符串接到 str1 中的字符串后面的串函数调用语 句是___ } 57、下面程序将二维数组 a 的行和列元素互换后存到另一个二维数组 b 中。 请填空。 main( ) { int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int b[3][2], i, j; printf("array a:\n"); for (i=0; i<=1; i++) { for (j=0; ____; j++) { printf("%5d", a[i][j]); ____________; } printf("\n"); } printf("array b:\n"); for (i=0; ____; i++)
- 26 -

{ for (j=0; j<=1; j++) printf("%5d", b[i][j]); printf("\n"); }

58、下面程序可求出矩阵 a 的两条对角线上的元素之和。请填空。 main( ) { static int a[3][3]={1, 3, 6, 7, 9, 11, 14, 15, 17}; int sum1=0, sum2=0, i, j; for (i=0; i<3; i++) for (j=0; j<3; j++) if (i= =j) sum1+=a[i][j]; for (i=0; i<3; i++)

for (____; ____; j--) if (i+j= =2) sum2+=a[i][j]; printf("sum1=%d, sum2=%d\n", sum1, sum2); } 59、 下面程序的功能是将二维数组 a 中每个元素向右移一列, 最右一列换到最 左一列,移后的数组存到另一个二维数组 b 中,并按矩阵形式输出 a 和 b。请填空。 例如:

for (____; ____; i++) b[i][0]=a[i][2]; printf("array b:\n"); for (i=0; i<2; i++) { for (j=0; j<3; j++) printf("%5d", b[i][j]); ________; } } 60、 下面程序的功能是检查一个二维数组是否对称 (即对所有的 a[i][j]=a[j][i]) 。

main( ) { static int a[2][3]={4, 5, 6, 1, 2, 3}; int b[2][3], i, j; printf("array a:\n"); for (i=0; i<=1; i++) { for (j=0; j<3; j++) { printf("%5d", a[i][j]); ____________; } printf("\n"); }

请填空。 main( ) { static int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int i, j, found=0; for (j=0; j<4; j++) for (____; i<4; i++) if (a[i][j]!=a[j][i]) { ______; break; } if (found)
- 27 -

printf("No"); else printf("Yes"); } 61、下面程序段将输出 computer,请填空。 char c[ ]="It's a computer"; for (i=0; ______; i++) { ______; printf("%c", c[j]); } 62、 以下程序的功能是对从键盘输入的两个字符串进行比较, 并输出两个字符 串中第一个不相同字符的 ASCII 码之差。例如:输入的两个字符串分别为 these 和 there,则输出是 1。请填空。 }

x=0; while ((s1[x]= =s2[x])&&(s1[x]!= ____)) x++; y=________; printf("%d\n", y);

63、以下程序的输出结果是____ main( ) { int x[6], a=0, b, c=14; do { x[a]=c%2; a++; c=c/2;

#include <stdio.h> }while(c>=1); main( ) for (b=a-1; b>=0; b--) { char s1[100], s2[100]; printf("%d", x[b]); int x, y; printf("\n"); printf("\nInput string1:\n"); } gets(s1); 64、 下面程序的功能是在一个字符数组中查找一个指定的字符, 若数组中含有 printf("\nInput string2:\n"); gets(s2);
- 28 -

该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。 #include <stdio.h>

#include <string.h> main( ) { char c='a', t[50]; int n, k, j; gets(t); n=______; for (k=0; k<n; k++) if (______) { j=k; break; } else j=-1; printf("%d", j); } 65、下面程序的功能是把以下给定的字符按其矩阵格式读入数组 str1 中,并 输出行列号之和是 3 的数组元素。请填空。 main( ) { char str1[4][3]={'A', 'b', 'C', 'd', 'E', 'f', 'G', 'h', 'I', 'j', 'K', 'l'}; int x, y, z; for (x=0; x<4; x++) for (y=0; ____; y++) { z=x+y; if (______)
- 29 -

printf("%c\n", str[x][y]); } } 66、下面程序的功能是输出两个字符串中较短串的长度。请填空。 #include <stdio.h> main( ) { char str1[20], str2[20]; int i, k, num; gets(str1); gets(str2); i=strlen(str1); k=strlen(str2);

num=______? ____: ____; printf("%d\n", num); } 67、下面程序的功能是在三个字符串中找出最小的串。 #include <stdio.h> #include <string.h> main( ) { char s[20], str[3][20]; int i; for (i=0; i<3; i++)

gets(str[i]); strcpy(s, _______________); if (strcmp(str[2], s)<0) strcpy(s, str[2]); printf("%s\n", ____); } 68、当运行以下程序时,从键盘输入: 第六章 GOOD<回车> TEACH<回车> } }

strcpy(temp, str);

puts(temp);

C语言程序设计第 6、7 章练习题

一、选择题 100、以下正确的函数说明是_____

SET<回车> A、int fun(int a, b) ROOM<回车> C、double fun( ) 则程序的运行结果是______ 101、以下正确的函数形式是_____ #include <stdio.h> A、double fun1(int x, int y) #include <string.h> { z=x+y; return z; } main( ) return z; } { int i; C、fun1(x, y) char str[10], temp[10]="Computer"; { int x, y; double z; for (i=0; i<4; i++) z=x+y; { gets(str); return z; } if (strcmp(temp, str)<0) D、double fun1(int x, int y)
- 30 -

B、float fun(int a; int b) D、int fun(char a[ ][ ])

B、fun1(int x, y) { int z;

{ double z; z=x+y; return z; } 102、以下正确的说法是_____ A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共占用一个存储单元 C、只有当实参和与其对应的形参同名时才共用存储单元 D、形参是虚拟的,不占用存储单元 103、以下正确的描述是_____ A、定义函数时,形参的类型说明可以放在函数体内 B、return 后面的值不能为表达式 C、如果函数值的类型与返回值类型不一致,以函数值类型为准 D、如果实参与形参的类型不一致,以实参类型为准 择填空。 __ }

b=p_ch( A ); ……

A、语句 void p_ch( );有错,它是函数调用语句,不能使用 void 说明 B、变量名不能使用大写字母 C、函数说明和函数调用语句之间有矛盾 D、函数名中不能使用下划线 106、C 语言允许函数值类型的缺省定义,此时该函数值隐含的类型是___

A、float

B、int

C、long

D、double

107、以下程序的功能是计算函数 F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选

#include <stdio.h> 104、C 语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是 _____ A、地址传递 B、单向值传递 D、由用户指定传递方式 #include <math.h> float fun1(float , float); main( ) { float x, y, z, sum; scanf("%f%f%f", &x, &y, &z); sum=fun1(__①__)+fun1(__②__); printf("sum=%f\n", sum); }
- 31 -

C、由实参传给形参,再由形参传回实参

105、以下程序存在语法性错误,关于错误原因的正确说法是_____ main( ) { int A=5, b; void p_ch( ); ……

float fun1(float a, float b) { float num; num=a/b; return(num); } ① A、x-y, x+y C、z+y, z-y ② A、x-y,x+y C、z+y,z-y B、x+y, x-y D、z-y, z+y B、x+y,x-y D、z-y,z+y

A、该变量只在该复合语句中有效 B、该变量在该函数中有效 C、该变量在本程序范围内有效 D、该变量为非法变量 111、以下不正确的说法为_____ A、在不同函数中可以使用相同名字的变量 B、形式参数是局部变量 C、在函数内定义的变量只在本函数范围内有效 D、在函数内的复合语句中定义的变量在本函数范围内有效 112、在一个源文件中定义的全局变量的作用域为_____ A、本文件的全部范围 B、本程序的全部范围 C、本函数的全部范围 D、从定义该变量的位置开始至本文件结束 113、以下程序的运行结果是_____ #include <stdio.h> void ff1( ) { extern int x, y; int a=15, b=10; x=a-b;

108、以下正确的描述是_____ A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套 109、若使用一维数组名作函数实参,则以下正确的说法是_____ A、必须在主调函数中说明此数组的大小 B、实参数组类型与形参数组类型可以不匹配 C、在被调函数中,不需要考虑形参数组的大小 D、实参数组名与形参数组名必须一致 110、如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是 _____
- 32 -

y=a+b; } int x, y; main( ) { int a=7, b=5; x=a+b; y=a-b; ff1( ); printf("%d, %d\n", x, y); } A、12, 2 B、不确定 C、5, 25 D、1, 12

} f1(int x) { static int z=3, y=0; y++; z++; return(x+y+z); } A、6 8 10 C、7 8 9 B、6 6 6 D、7 9 11

116、以下程序的运行结果是_____ main( ) { char str1[ ]="abcdef";

114、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为____ _ A、自动(auto) C、外部(extern) B、静态(static) D、寄存器(register) }

ff(str1); printf("str[ ]=%s\n", str1);

ff(char str1[ ]) { int x, y; for (x=y=0; str1[x]!='\0'; x++) if (str1[x]!='c') str[y++]=str1[x];

115、以下程序的运行结果是_____ main( ) { int a=1, k; for (k=0; k<3; k++) printf("%4d", f1(a));
- 33 -

str1[y]='\0'; } A、str[ ]=abdef C、str[ ]=a 二、填空题 69、一个C程序是由若干个函数构成的,其中必须有一个_____ 70、在C语言中,一个函数通常由两部分组成,它们是_____和____ _ 71、以下程序的运行结果是_____ void f1(int x, int y, int z) { x=111; y=222; z=333; } main( ) { int x=100, y=200, z=300; f1(x, y, z); printf("%d, %d, %d\n", z, y, x); } 72、以下程序的运行结果是_____ int fun(int x, int y) { int z; while (y)
- 34 -

{ z=x%y; x=y; y=z; } return(x); B、str[ ]=abcdef D、程序中存在语法错误 } main( ) { int i=16, j=6, k; k=fun(i, j); printf("%d\n", k); } 73、以下函数用于统计一行中的单词个数,单词之间用空格分隔。请填空。 word_num(char str [ ]) { int i, num=0, word=0; for (i=0; str[i]!= ___; i++) if (____==32) word=0; else if (word==0) { word=1; _____; } return(num); } 74、以下函数用于找出一个 2×4 矩阵中的最大元素值 max_value(int arr[ ][4])

{ int i, j, max; max=arr[0][0]; for (i=0; _____; i++) for (j=0; _____; j++) if (arr[i][j]>max) max=_____; return(max); } 75、以下函数 f1 用于求两个整数 a 和 b 的最大公约数。 f1(int a, int b) { int i, j, m, n; if (a>b) { m=a; a=b; _____; } i=a; j=b; while ((n= _____)!=0) { j=i; i=_____; return(i); } 76、以下程序的功能是:从键盘输入若干字符后,可统计出主函数调用 count 函数的次数,用字符“!”作为输入结束的标志。请填空。 count(_____)
- 35 -

{ static int k=0; k++; if (ch2=='!') printf("count=%d\n",_____); } main( ) { char ch1; while (1) { scanf("%c", &ch1); count(ch1); if (ch1=='!') break; } } 77、以下程序的功能是完成下面数学函数 A(x, y)的计算。请填空。 }

{ int i=0, j=0; while (str1[i]!= _____) i++; while (str2[j]!= _____) str1[i++]=str2[j++]; #incude <stdio.h> #include <math.h> float fun(float ff) { float f2; f2=ff*ff+sqrt(1+_____+_____); return(f2); } main( ) { float x, y, f1; scanf("%f%f", &x, &y); f1=x*x/fun(exp(x-y)); printf("A=%f\n", f1); } 78、以下函数 conj 把两个字符串 str1 和 str2 连接起来。 conj(char str1[ ], char str2[ ]) } 80、以下程序的运行结果是_____ int y=2; f1(int x) { int y=3; y+=x++;
- 36 -

_____='\0'; } 79、以下函数 fmin 返回数组 arr 中最小元素的下标,数组中元素的个数由 x 传入。请填空。 fmin(int arr[ ], int x) { int min,q; for (q=1, min=0; q<x; q++) if (arr[q]<arr[min]) _____; return(min);

printf("%d", y); } main( ) { int i=2; f1(i); y+=i++; printf("%d\n", y); } 81、以下函数 invert 的功能是将一个字符串 str1 的内容倒置。请填空。 #include <string.h> void invert(char str1[ ]) { int a, b; _____; for (a=0, b=strlen(str1); _____; a++, b--) { c=str1[a]; str1[a]=str1[b-1]; str1[b-1]=c; } printf("%s\n", str1); } 82、以下程序的运行结果是_____ int fun1(int num) { int x; } }

if (num= =1) x=10; else x=fun(num-1)+2; return(x);

main( ) { int y; printf("%d\n", fun1(5));

- 37 -


相关文章:
信息学奥赛辅导C语言练习题(第3章精选)
信息学奥赛辅导C语言练习题(第3章精选)_学科竞赛_高中教育_教育专区。C 语言练习...一个函数调用 B、一个整型表达式 D、一个不合法的表达式 9、设 int 类型的...
怎样做好信息学奥赛培训辅导
怎样做好信息学奥赛培训辅导临邑洛北中学西校 摘要:...C、选中的学生在学校年级考试中数学成绩考到全年级前...第一章 开始编写 pascal 或 C++语言程序 第二章 ...
信息学奥赛辅导如何快速入手
总之,辅导学生参赛是一件苦差事,其中的酸甜苦辣只有我们真的投入进去了,才品味 出,而其中的欣慰与喜悦也只有我们自己才感觉和感受的到。信息学奥赛辅导工作任重而...
在信息学奥赛辅导中我的几点做法
首先感谢范老师给我这次机会, 在这里与大家一起交流关于信息学奥林匹克竞赛辅导...以天津师范大学计算机专业学生为 例,在大学一年级学完 C 语言后,组织一次相当于...
信息学奥赛(初赛)辅导教材
金华一中信息学(计算机)奥林匹克竞赛辅导教程 第一部分一、初赛的要求 试题的...(自然语言/伪码/NS 图/其他) ⑥程序设计语言(Pascal/C/C++,2003 年仍允许 ...
信息学奥赛辅导
作 为奋战在中学信息技术教学第一线的信息技术教师一提到辅导学生信息学奥赛的...如果按照传统的教学顺 序,讲完“Pascal 语言的发展历史、特点、”等内容就该...
(信息学奥赛辅导)排列与组合基础知识
(信息学奥赛辅导)排列与组合基础知识_学科竞赛_高中教育_教育专区。第1页 排列...答案为:C(2N,N)/(N+1) ) 19. 有一排格子排成一排,已知共有 8 个...
普通高中信息学奥赛辅导策略
龙源期刊网 http://www.qikan.com.cn 普通高中信息学奥赛辅导策略 作者:肖波...高一、高二两年时间学生要学的东西非常多,包括入门的基础语言 C、程序编写和调试...
信息学奥赛基础知识习题(答案版)
信息学奥赛基础知识习题(答案版) 一、选择题(下列各题仅有一个正确答案,请将...(A)高级程序设计语言(B)域名 (C)超文本传输协议(D)网址 24.Windows 应用...
更多相关标签:
信息学奥赛c语言 | 信息学奥赛 c语言讲义 | 信息学奥赛辅导 | 信息学奥赛辅导资料 | 信息学奥赛辅导教程 | 信息学奥赛辅导计划 | 信息学奥赛辅导书 | c语言考研辅导书 |