c语言习题及参考答案

更新时间:2024-04-01 22:50:04 阅读: 评论:0

2024年4月1日发(作者:江淑娜)

第1章 C语言概述

(一)选择题

1. 一个C程序的执行是从 A 。 答案A

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C) 本程序文件的第一个函数开始,到本程序main函数结束

D) 本程序的main函数开始,到本程序文件的最后一个函数结束

2. 以下叙述不正确的是 D 。

A) 一个C源程序必须包含一个main函数

B) 一个C源程序可由一个或多个函数组成

C) C程序的基本组成单位是函数

D) 在C程序中,注释说明只能位于一条语句的后面

3. 以下叙述正确的是 C 。

A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误

B) 在C程序中,main函数必须位于程序的最前面

C) C语言本身没有输入输出语句

D) C程序的每行中只能写一条语句

4. 一个C语言程序是由 B 。

A)一个主程序和若干个子程序组成

B) 函数组成

C) 若干过程组成

D) 若干子程序组成

5. C语言程序编译时,程序中的注释部分 ______D______.

A) 参加编译,并会出现在目标程序中

B) 参加编译,但不会出现在目标程序中

C) 不参加编译,但会出现在目标程序中

D) 不参加编译,也不会出现在目标程序中

(二)填空题

1、C语句结束符为____;_____________.

2、C语句注释符号为:_/* */______________.

3、一个C程序总是从____main函数______________开始执行的。

第3章 数据类型、运算符与表达式

(一)选择题

1. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( C )。

x=(i=4,j=16,k=32)

A) 4 B) 16 C) 32 D) 52

2.下列四组选项中,均不是C语言关键字的选项是( A )。

A) define IF type

B) getc char printf

C) include ca scanf

D) while go pow

3. 下列四组选项中,均是不合法的用户标识符的选项是( B )。

A) W P_0 do

B) b-a goto int

C) float la0 _A

D) -123 abc TEMP

4. 下列四组选项中,均是合法转义字符的选项是( A )。

A) ‘”’ ‘’ ‘n’

B) ‘’ ‘017’ ‘”’

C) ‘018’ ‘f’ ‘xab’

D) ‘0’ ‘101’ ‘xlf’

5 . 下面正确的字符常量是( D )。

A) “c” B) ‘’’ C) a D) ‘K’

6 .以下叙述不正确的是( D )。

A) 在C程序中,逗号运算符的优先级最低

B) 在C程序中,MAX和max是两个不同的变量

C) 若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,b中的值不变

D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

7. 以下叙述正确的是( C )。

A) 在C程序中,每行只能写一条语句

B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C) 在C程序中,%是只能用于整数运算的运算符

D) 在C程序中,无论是整数还是实数,都能被准确无误地表示

8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为( A )。

A) D B) 68 C) 不确定的值 D) C

9 . sizeof(float)是( B ) 。

A) 一个双精度型表达式 B) 一个整型表达式

C) 一种函数表达式 D) 一个不合法的表达式

10 .设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为( C )。

A) 0 ~255 B) 0~32767 C) 0~65535 D) 0~2147483647

11 .设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为( D )。

A) float B) char C) int D) double

12 .设以下变量均为int类型,则值不等于7的表达式是( C )。

A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)

C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)

13.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( A)。

A) 0 B) 1 C) 2 D) 3

14.设n=3;则n++的结果是( B )。

A)2 B) 3 C) 4 D) 5

15.以下不正确的C语言标识符是( D )。

A) ABC B) abc C) a_bc D)ab.c

16.C程序是由( B )构成的。

A)主程序与子程序 B) 主函数与若干子函数

C) 一个主函数与一个其它函数 D) 主函数与子函数

17.在C语言中,不正确的int类型的常数是:( A )

A) 32768 B)0 C) 037 D) 0xaf

18.下面关于运算符优先顺序的描述中正确的是:( C )

A)关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符

B)逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符

C)赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符

D)算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符

19.设x为一数字字符,则其所对应的十进制数值为 B 。

A)x B)x-‘0’ C)*x D)&x

20.说明语句char s=‘t’,使s包含了几个字符? A 。

A)1 B)2 C)3 D)说明有错

21.设a=6,b=4,则表达式b*=a+3的值为 D 。

A)3 B)18 C)27 D)36

22.正确的C语言自定义标识符是 A 。

A)file_bak B)abc(10) C)continue D)class+3

23.设int x=8,y,z; 执行y=z=x++;x=y==z后,变量x的值是 B 。

A)0 B)1 C)8 D)9

24.下列数据类型中不属于构造类型的是 D 。

A)数组型 B)结构型 C)共用型 D)枚举型

25. 表达式7/3的值是_D___。

A. 2.33 B. 2.333 C. 2.3333 D. 2

26. Char型数据在内存中以_A__形式存放。

A. ASCII码形式 B. 字符形式 C. 字符串形式 D. BCD码形式

27. C语言的字符串以_A___结束。

A. NULL B. 整数 C. ASCII码 D. 长度

28. 假设i的初值为2,赋值语句j=i++执行后,j,i的值分别是_B___。

A. 3 , 3 B. 2 , 3 C. 3 , 2 D. 2 , 2

29. 下列表达式的值为0的是 (C )

A. 3﹪5 B. 3/5.0 C. 3/5 D. 3<5

30. 正确的C语言用户自定义标识符是 ( A )

A. print B. float C. when? D. random﹪2

31.设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是 ( B )

A. 0和2 B. 0和3 C. 1和2 D. 1和3

32.下列运算符中优先级别最高的是____B__________。

A)< B)+ C)&& D)!=

33、已知字母A的ASCII码为十进制数65,且c2为字符型,

则执行语句c2=‘A’+‘6’-‘3’后c2的值为______A_______。

A)D B)68 C)不确定的值 D)C

34.以下非法的赋值语句是_C___。

A. n=(i=2,++i); B.j++; C.(a+b)++; D.x=j>0;

35.如果关系表达式a>b的值为0,关系表达式cb)&&(c

A. 0 B. 1 C. –1 D. 2

36.设有定义:long x=123456L;,则以下能够正确输出变量x值的语句是__B__。

A.printf(“x=%dn”,x); B.printf(“x=%ldn”,x);

C.printf(“x=%8dLn”,x); D.printf(“x=%LDn”,x);

(二)填空题

1 . 若有以下定义,则计算表达式y+=y-=m*=y后的y值是______-1_________。

int m=5,y=2;

2. 在C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为_-32768~32767或-215~215-1_________。

3 . 若s是int型变量,且s=6,则下面表达式的值为____1___________。

s%2+(s+1)%2

4. 若a是int型变量,则下面表达式的值为_____26__________。

(a=4*5,a*2),a+6

5 . 若x和a均是int型变量,则计算表达式(1)后的x值为____12___________,计算表达式(2)后的x 值为______4_________。

(1) x=(a=4,6*2)

(2) x=a=4,6*2

6. 若a是int型变量,则计算下面表达式后a的值为_______2________。

A=25/3%3

7 . 若x和n均是int型变量,且x和n的初值均为5,则计算表达式:x+=n++ ;

后x的值为____10___________,n的值为_______6________。

8. 若有定义:char c=‘010’;则变量c中包含的字符个数为_________1______。

9 . 若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为_______1________.

(x+y)%2+(int)a/(int)b

10. 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式

ch=’a’+’8’-‘3’的值为____’f’___________。

11. 初始化值是0.618的双精度(double)变量a的定义形式为___double a=0.618_____。

12. 若有定义 int m=5,y=2,则执行表达式 y+=y-=m*=y 后,y 的值为 ____-16_______。

13. 执行语句“a=4+(c=5);”后,变量a的值为___9__、c的值为____5____。

14.C语句“x*=y+2;”还可以写作___x=x*(y+2)_____

15.计算x、y之和的立方根,C 语言表达式应写作______。

16.执行语句“a=5+(c=6);”后,变量a、c的值依次为______。

17.判断变量a、b的值均不为0的C语言表达式为______。

(三)阅读下列程序,写出运行结果(共18分,每题3分)

1.

#include

void main( )

{ int a=1,b=4,c=2; 运行结果:

a=(a+b)/c;

printf(“%d n”,--a);

}

2.以下程序的输出结果是___________。

#include “stdio.h”

main()

{ int i,j,k,a=3,b=2;

i=(--a = = b+ + )? --a:+ +b;

j=a+ +;k=b;

printf(“i=%d,j=%d,k=%dn”,i,j,k);

}

A)i=2,j=1,k=3 B)i=1,j=1,k=2

C)i=4,j=2,k=4 D)i=1,j=1,k=3

3、若输入12345、abc,下列程序的输出结果为___________。

main()

{ int a;

char ch;

scanf(“%3d,%3d”,&a,&b);

printf(“%d,%c”,a,ch);

}

A)123,abc B)123,4 C)123,a D)12345,abc

4、以下程序的输出结果是____________。

main()

{ int a=12,b=12;

printf(“%d %d n”,--a,+ +b);

}

A)10 10 B)12 12 C)11 10 D)11 13

第4章 最简单的C程序设计——顺序程序设计

(一)选择题

1. putchar函数可以向终端输出一个 _______________。

A) 整型变量表达式 B) 实型变量值

C) 字符串 D) 字符或字符型变量值

2. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式_________;如果字符串长度小于5,则输出按方式____________。

A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出

C) 右对齐输出该字符串,左补空格 D) 输出错误信息

3. 阅读以下程序,当输入数据的形式为:25,13,10(注:表示回车),则正确的输出结果为 。

main()

{ int x,y,z;

scanf(“%d%d%d”,&x,&y,&z);

printf(“x+y+z=%dn”,x+y+z);

}

A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值

4. 根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为________。

main()

{ char ch1,ch2,ch3;

输入语句

printf(“%c%c%c”,ch1,ch2,ch3);

}

输入形式:A B C

输出形式:A BC

A) scanf(“%c%c%c”,&ch1,&ch2,&ch3);

B) scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);

C) scanf(“%c %c %c”,&ch1,&ch2,&ch3);

D) scanf(“%c%c”,&ch1,&ch2,&ch3);

5. 已知ch是字符型变量,下面不符合C语法的赋值语句是______________。

A) ch=‘a+b’; B) ch=‘0’; C) ch=‘7’+‘9’; D) ch=5+9;

6.有下列程序段落:

int i,a[5];

for(i=0;i<5;i++)

scanf(“%d”,&a[i]);

若要使数组元素的值分别为1,2,3,4,5,应从键盘输入( )。

A)1,2,3,4,5↙ B) 1 2 3 4 5↙

C)12345↙ D) 1;2;3;4;5↙

(二)填空题

1. 以下的输出结果是【1】。

main()

{ short i;

i=-4;

printf(“ni:dec=%d,oct=%o,hex=%x,unsigned=%un”,i,i,i,i);

}

2. 以下的输出结果是【2】。

main()

{ char c=‘x’;

printf(“c:dec=%d,oct=%o,hex=%x,ASCII=%cn”,c,c,c,c);

}

3. 以下的输出结果是【3】。

main()

{ int x=1,y=2;

printf(“x=%d y=%d * sum * =%dn”,x,y,x+y);

printf(“10 Squared is : %dn”,10*10);

}

4. 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=【4】; b=a-【5】; a-=【6】;

5. 若x为int型变量,则执行以下语句后的x 值为【7】。

x=7; x+=x-=x+x;

z=m=0xFFFF

6. 有一输入语句scanf(“%d”,k);则不能使float类型变量k得到正确数值的原因是【8】和【9】。

第5章 选择结构程序设计

(一)选择题

1. 逻辑运算符两侧运算对象三数据类型_________。

A) 只能是0和1 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何类型的数据

2. 判断char型变量ch是否为大写字母的正确表达式是_________。

A) 'A'<=ch<='Z' B) (ch>='A')&(ch<='Z')

C) (ch>='A')&&(ch<='Z') D) ('A'<= ch)AND('Z'>= ch)

3. 若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假"。则以下不能满足要求的表达式是_________。

A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2

4. 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为_________。

A) 1 B) 2 C) 3 D) 4

5. 以下程序的运行结果是 。

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

6. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是_________。

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

7. 以下程序的运行结果是_________ 。

main()

{

int m=5;

if(m++>5)

printf("%dn",m);

el;

printf("%dn",m--);

}

A) 4 B) 5 C) 6 D) 7

8. 若运行时给变量x输入12,则以下程序的运行结果是_________。

main()

{

int x,y;

scanf("%d",&x);

y=x>12 ? x+10 : x-12;

printf("%dn",y);

}

A) 4 B) 3 C) 2 D) 1

(二)编程题

1. 编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。

2. 编程判断输入的正整数是是否既是5又是7的整倍数。若是,则输出yes;否则输出no。

3. 用if--el if 编程实现:

-1 (x<0)

y = 0 (x=0)

1 (X>0)

4. 用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'

第6章 循环控制

(一)选择题

1.设有程序段

int k=10;

while(k=0)k=k-1;

这下面描述中正确的是_________.

a)while循环执行10次 b)循环是无限循环

c)循环体语句以此也不执行 d)循环体语句执行一次

2.语句while(!E);中的表达式!E等价于________.

a)E==0 b)E!=1 c)E!=0 d)E==1

3.下面程序段的运行结果是__________.

int n=0;

while(n++<=2);printf("%d",n);

a)2 b)3 c)4 d)有语法错

4.下面程序的运行结果是____.

#include

main()

{

int num=0;

while(num<=2)

{

num++;

printf("%dn",num);

}

}

a)1 b)1 c)1 d)1

2 2 2

3 3

4

5.以下程序段________.

x=-1;

do{

x=x*x;

} while(!x);

a)是死循环 b)循环执行二次

c)循环执行一次 d)有语法错误

6.若有如下语句

int x=3;

do{printf(""%dn",x-=2);}while(!(--x));

则上面程序段______.

a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环

7.下面程序的运行结果是______.

#include

main()

{

int y=10;

do

{y--;}

while(--y);

printf("%dn",y--);

}

a)-1 b)1 c)8 d)0

8.若i为整型变量,则以下循环执行次数是_____.

for(i=2;i==0;)printf("%d",i--);

a)无限次 b)0次 c)1次 d)2次

9.执行语句for(i=1;i++<4; );后变量i的值是______.

a)3 b)4 c)5 d)不定

10.以下正确的描述是_______.

a)continue语句的作用是结束整个循环的执行

b)只能在循环体内和switch语句体内使用break语句

c)在循环体内使用break语句或continue语句的作用相同

d)从多层循环嵌套中退出时,只能使用goto语句

(二)填空题

1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束

循环。请填空。

int n=0,c;

c=getchar();

while(____)

{

if(_____)n++;

c=getchar();

}

2.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。请填空。

#include

main()

{int r,m,n;

scanf("%d%d",&m,&n);

if(m

r=m%n;

while(r){m=n;n=r;r=______;}

printf("%dn",n);

}

3.下面程序的运行结果是_________.

#include

main()

{

int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7){n=n*a;s=s+n;++count;}

printf("s=%d",s);

}

4.下面程序段的运行结果是_________.

i=1;a=0;s=1;

do{a=a+s*i;s=-s;i++;}while(i<=10);

printf("a=%d",a);

5.下面程序段的运行结果是_______.

i=1;s=3;

do{s+=i++;

if(s%7==0)continue;

el ++i;

}while(s<15);

printf("%d",i);

第7章 数组

1.以下为一维整型数组a的正确说明是_________.

a)int a(10); b)int n=10,a[n];

c)int n; d)#define SIZE 10;

scanf("%d",&n); int a[SIZE];

int a[n];

2.以下对二维数组a的正确说明是________.

a)int a[3][]; b)float a(3,4);

c)double a[1][4] d)float a(3)(4);

3.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.

(假设a[0][0]位于数组的第一个位置上。)

a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+1

4.若二维数组a有m列,则在a[i][j]前的元素个数为________.

a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+1

5.若有以下程序段:

int a[]={4,0,2,3,1},i,j,t;

for(i=1;i<5;i++)

{t=a[i];j=i-1;

while(j>=0&&t>a[j])

{a[j+1]=a[j];j--;}

a[j+1]=t;}

... ...

则该程序段的功能是_________.

a)对数组a进行插入排序(升序)

b)对数组a进行插入排序(降序)

c)对数组a进行选择排序(升序)

d)对数组a进行选择排序(降序)

6.有两个字符数组a、b,则以下正确的输入语句是_______.

a)gets(a,b); b)scanf("%s%s",a,b);

c)scanf("%s%s",&a,&b); d)gets("a"),gets("b");

7.下面程序段的运行结果是_________.

char a[7]="abcdef";

char b[4]="ABC";

strcpy(a,b);

printf("%c",a[5]);

a)空格 b)0 c)e d)f

8.判断字符串s1是否大于字符串s2,应当使用_______.

a)if(s1>s2) b)if(strcmp(s1,s2))

c)if(strcmp(s2,s1)>0) d)if(strcmp(s1,s2)>0)

9.下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用

空格分隔,请选择填空。

#include

main()

{

char s[80],c1,c2='';

int i=0,num=0;

gets(s);

while(s[i]!='0')

{c1=s[i];

if(i==0)c2=' ';

el c2=s[i-1];

if(___)num++

i++;

}

printf("There are %d words.n",num);

}

a)c1==' '&&c2==' ' b)c1!=' '&&c2==' '

c)c1==' '&&c2!=' ' d)c1!=' '&&c2!=' '

10.下面程序的运行结果是________.

#include

main()

{char str[]="SSSWLIA",c;

int k;

for(k=2;(c=str[k])!='0';k++)

{switch(c)

{ca 'I':++k;break;

ca 'L':continue;

default:putchar(c);continue;

}

putchar('*');

}

}

a)SSW* b)SW* c)SW*A d)SW

二、填空题

1. 若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的上限为_________.

2.下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20

main()

{int a[N],i;

for(i=0;i

for(i=0i

{if (_____________) _____________

printf("%3d",a[i]);

}

printf("n");

}

3. 下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main()

{

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(_____)

sum=sum+_______;

printf("sum=%dn",sum);

}

4. 当从键盘输入18并回车后,下面程序的运行结果是________.

main()

{int x,y,i,a[8],j,u,v;

scanf("%d",&x);

y=x;i=0;

do

{u=y/2;

a[i]=y%2;

i++;y=u;

}while(y>=1)

for(j=i-1;j>=0;j--)

printf("%d",a[j]);

}

5. 下面程序用插入法对数组a进行降序排序。请填空。

main()

{int a[5]={4,7,2,5,1};

int i,j,m;

for(i=1;i<5;i++)

{m=a[i];

j=____;

while(j>=0&&m>a[j])

{_______;

j--;

}

_______=m;

}

for(i=0;i<5;i++)

printf("%d",a[i]);

printf("n");

}

6. 下面程序的功能是在三个字符串中找出最小的,请填空。

#include

#include

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("%sn",_______);

}

7. 下面程序的运行结果是________.

#include

main()

{char s[]="ABCCDA";

int k;char c;

for(k=1;(c=s[k])!='0';k++)

{switch(c)

{ca 'A':putchar('%');continue;

ca 'B':++k;break;

default:putchar('*');

ca 'C':putchar('&');continue;

}

putchar('#');

}

}

8.用冒泡法对10个数按从大到小的顺序排序。(思路:将相邻的两个数比较,将大的调到前头)

#include

void main(void)

{

int i, j, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;

for(i=0; i<9 ;i++)

for( j=0;__ (8)____;j++)

if(___(9)____)

{

iTemp=a[ j];

a[ j ]=a[ j+1];

____(10)______;

}

for(i=0;i<10; i++)

printf(”%4d”,a[i]);

}

第8章 函数

一、选择题

1.以下正确的说法是_________.

建立函数的目的之一是 a)提高程序的执行效率

b)提高程序的可读性

c)减少程序的篇幅

d)减少程序文件所占内存

2.以下正确的函数定义形式是________.

a)double fun(int x,int y)

b)double fun(int x; int y)

c)double fun(int x, int y);

d)double fun(int x,y);

3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.

A)地址传递

B)单向值传递

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

D)由用户指定传递方式

4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.

a)float

b)int

c)long

d)double

5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array

的错误定义方式为________.

int a[3][4];

f(a);

a)f(int array[][6])

b)f(int array[3][])

c)f(int array[][4])

d)f(int array[2][5])

6.以下程序的正确运行结果是_________.

#include

void num()

{

extern int x,y;int a=15,b=10;

x=a-b;

y=a+b;

}

int x,y;

main()

{

int a=7,b=5;

x=a+b;

y=a-b;

num();

printf("%d,%dn",x,y);

}

a)12,2 b)不确定 c)5,25 d)1,12

二、填空题

1.以下程序的运行结果是_____.

#include

main()

{int a=1,b=2,c;

c=max(a,b);

printf("max is %dn",c);

}

max(int x,int y)

{int x;

z=(x>y)?x:y;

return(z);

}

2.函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。

gongyu(int num1,int num2)

{int temp,a,b;

if(num1(_____) num2)

{temp=num1;num1=num2;num2=temp;}

a=num1;b=num2;

while(____)

{temp=a%b;a=b;b=temp;}

return(a);

}

3.以下程序的运行结果是________.

int a=5;int b=7;

main()

{ int a=4,b=5,c;

c=plus(a,b);

printf("A+B=%dn",c);

}

plus(int x,int y)

{int z;

z=x+y;

return(x);

}

4.以下程序的运行结果是_______.

main()

{incx();

incy();

incx();

incy();

incx();

incy();

}

incx()

{

int x=0;

printf("x=%dt",++x);

}

incy()

{static int y=0;

printf("ny=%dn",++y);

}

5. 调用函数,求a,b两个数中的最大值。

#include

void main(void )

{

int a,b,c;

_________________;

scanf ( “%d,%d” , &a, &b) ;

___________;

printf (“%d” ,c) ;

}

int max(int x ,int y)

{ int z ;

z=______________;

return ( z) ;

}

6. 有5只猴子摘桃子,已知第5只比第4只多摘2个,第4只比第3只多摘2个,第3只比第2只多摘2个,第2只比第1只多摘2个,第1只猴子摘了5个,问第5只猴子摘了多少个(用递归实现)

int pea(int n)

{int c;

if(______________)

c=5;

el

c=_______________________;

return( c );

}

/*用主函数调用pea函数,求得第5只猴子摘的数量。*/

main()

{printf(“%dn”,pea(5));}

7. 对两个整数按从小到大顺序输出

void swap(int *x,int *y)

{int temp;

____________;__________;________________;

}

void main()

{int a=3,b=5;

if(a>b)swap(&a,&b);

printf(“%d %dn”,a,b);

}

三、编程题

1. 已有变量定义和函数调用语句:int x=57 ; isprime(x); 函数isprime( ) 用来判断一个整形数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。

isprime(int a)

{ }

2. a是一个2X4的整型数组,且各元素均已赋值。函数max_value可求出其中的最大的元素值max,并将此值返回主调函数。今有函数调用语句max=max_value(a),请编写max_value函数。

max_value(int arr[ ][4])

{ }

第9章 编译预处理

一、选择题

1.以下叙述中正确的是________.

a)在程序的一行上可以出现多个有效的预处理命令行

b)使用带参的宏时,参数的类型应与宏定义时的一致

c)宏替换不占用运行时间,只占用编译时间

d)在以下定义中C R是称为"宏名"的标识符

#define C R 045

2.以下程序的运行结果是________.

#define MIN(x,y) (x)<(y)?(x):(y)

main()

{int i=10,j=15,k;

k=10*MIN(i,j);

printf("%dn",k);

}

a)10 b)15 c)100 d)150

3.若有宏定义如下:

#define X 5

#define Y X+1

#define Z Y*X/2

则执行以下printf语句后,输出结果是_______.

int a;a=Y;

printf("%dn",Z);

printf("%dn",--a);

a)7 b)12 c)12 d)7

6 6 5 5

4.请读程序:

#include

#define MUL(x,y) (x)*y

main()

{

int a=3,b=4,c;

c=MUL(a++,b++);

printf("%dn",c);

}

上面程序的输出结果是__________.

a)12 b)15 c)20 d) 16

5.对下面程序段:

#define A 3

#define B(a) ((A+1)*a)

...

x=3*(A+B(7));

正确的判断是_________.

a)程序错误,不许嵌套宏定义

b)x=93

c)x=21

d)程序错误,宏定义不许有参数

6.以下正确的描述是____________.

a)C语言的预处理功能是指完成宏替换和包含文件的调用

b)预处理指令只能位于C源程序文件的首部

c)凡是C源程序中行首以"#"标识的控制行都是预处理指令

d)C语言的编译预处理就是对源程序进行初步的语法检查

7.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______.

a)仅仅搜索当前目录

b)仅仅搜索源程序所在目录

c)直接按系统设定的标准方式搜索目录

d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索

第10章 指针

一、选择题

1.变量的指针,其含义是指该变量的_________.

a)值 b)地址

c)名 d)一个标志

2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____.

a)a,point,*&a b)&*a,&a,*point

c)*&point,*point,&a d)&a,&*point ,point

3.若有说明;int *p,m=5,n;以下正确的程序段的是________.

a)p=&n; b)p=&n;

scanf("%d",&p); scanf("%d",*p);

c)scanf("%d",&n); d)p=&n;

*p=n; *p=m;

4.下面程序段的运行结果是_________.

char *s="abcde";

s+=2;printf("%d",s);

a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果

5.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确

执行的赋值语句是________.

a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);

6.以下正确的程序段是_________.

a)char str[20]; b)char *p;

scanf("%s",&str); scanf("%s",p);

c)char str[20]; d)char str[20],*p=str;

scanf("%s",&str[2]); scanf("%s",p[2]);

7.若有说明语句

char a[]="It is mine";

char *p="It is mine";

则以下不正确的叙述是________.

a)a+1表示的是字符t的地址

b)p指向另外的字符串时,字符串的长度不受限制

c)p变量中存放的地址值可以改变

d)a中只能存放10个字符

8.下面程序的运行结果是_______.

#include

#include

main()

{

char *s1="AbDeG";

char *s2="AbdEg";

s1+=2;s2+=2;

printf("%dn",strcmp(s1,s2));

}

a)正数 b)负数 c)零 d)不确定的值

9.下面程序的运行结果是_______.

#include

#include

fun(char *w,int n)

{char t,*s1,*s2;

s1=w;s2=w+n-1;

while(s1

}

main()

{char *p;

p="1234567";

fun(p,strlen(p));

puts(p);

}

a)7654321 b)1714171 c)1711717 d)7177171

10.若有以下定义,则对a数组元素的正确引用是_________.

int a[5],*p=a;

a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)

11.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.

a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j

12.若有以下定义,则p+5表示_______.

int a[10],*p=a;

a)元素a[5]的地址 b)元素a[5]的值

c)元素a[6]的地址 d)元素a[6]的值

二、填空题

1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。

请填空。

#include "stdlib.h"

main()

{int *a,*b,*c,num,x,y,z;

a=&x;b=&y;c=&z;

printf("输入3个整数:");

scanf("%d%d%d",a,b,c);

printf("%d,%d,%dn",*a,*b,*c);

num=*a;

if(*a>*b)______;

if(num>*c)______;

printf("输出最小整数:%dn",num);

}

2.下面程序段的运行结果是________.

char s[80],*sp="HELLO!";

sp=strcpy(s,sp);

s[0]='h';

puts(sp);

3.下面程序段的运行结果是________.

char str[]="abc0def0ghi",*p=str;

printf("%s",p+5);

4.下面程序的功能是将两个字符串s1和s2连接起来。请填空。

#include

main()

{char s1[80],s2[80];

gets(s1); gets(s2);

conj(s1,s2);

puts(s1);

}

conj(char *p1,char *p2)

{char *p=p1;

while(*p1)______;

while(*p2){*p1=______;p1++;p2++;}

*p1='0';

__________;

}

5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______. *(a+5)的值是_________.

6.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. *(*(a+1)+0))的值是________.

7.以下程序将数组a中的数据按逆序存放,请填空。

#define M 8

main()

{int a[M],i,j,t;

for(i=0;i

i=0;j=M-1;

while(i

{

t=*(a+i);________;*(_______)=t;

i++;j--;

}

for(i=0;i

}

8.若有定义:int a[3][5],i,j;(且0<=i<3,0<=j<5),则a数组中任一元素可用

五种形式引用。它们是:

(1)a[i][j]

(2)*(a[i]+j)

(3)*(*______);

(4)(*(a+i))[j]

(5)*(____+5*i+j)

9.下面程序的运行结果是_________.

main()

{char *a[]={"Pascal","C language","dBa","Coble"};

char (**p)[];

int j;

p=a+3;

for(j=3;j>=0;j--)printf("%sn",*(p--));

}

10. 对两个整数按从小到大顺序输出

void swap(int *x,int *y)

{int temp;

____________;__________;________________;

}

void main()

{int a=3,b=5;

if(a>b)swap(&a,&b);

printf(“%d %dn”,a,b);

}

第11章 结构体与共用体

一、选择题

1.C语言结构体类型变量在程序执行期间_________.

a)所有成员一直驻留在内存中

b)只有一个成员驻留在内存中

c)部分成员驻留在内存中

d)没有成员驻留在内存中

2.下面程序的运行结果是___________.

main()

{

struct cmplx{int x;

int y;

}cnum[2]={1,3,2,7};

printf("%dn",cnum[0].y/cnum[0].x*cnum[1].x);

}

a)0 b)1 c)3 d)6

3.设有如下定义:

struct sk

{int n;

float x;

}data ,*p;

若要使p指向data中的n域,正确的赋值语句是_______.

a)p=&data.n;

b)*p=data.n;

c)p=(struct sk *)&data.n;

d)p=(struct sk *)data.n;

4.以下对结构体变量stu1中成员age的非法引用是________.

struct student

{int age;

int num;

}stu1,*p;

p=&stu1;

a) b)

c)p->age d)(*p).age

5.下面对typedef的叙述中不正确的是______.

a)用typedef可以定义各种类型名,但不能用来定义变量

b)用typedef可以增加新类型

c)用typedef只是将已存在的类型用一个新的标识符来代表

d)使用typedef有利于程序的通用和移植

6.以下scanf函数调用语句中对结构体变量成员的不正确引用是________.

struct pupil

{char name[20];

int age;

int x;

}pup[5],*p;

p=pup;

a)scanf("%s",pup[0].name);

b)scanf("%d",&pup[0].age);

c)scanf("%d",&(p->x));

d)scanf("%d",p->age);

一、填空题

1.以下程序的运行结果是________.

struct n{

int x;

char c;

};

main()

{struct n a={10,'x'};

func(a);

printf("%d,%c",a.x,a.c);

}

func(struct n b)

{

b.x=20;

b.c='y';

}

2.若有定义:

struct num

{int a;

int b;

float f;

}n={1,3,5.0};

struct num *pn=&n;

则表达式pn->b/n.a*++pn->b的值是________,表达式(*pn).a+pn->f的值是________.

3. 以下程序的运行结果是________.

struct ks

{int a;

int *b;

}s[4],*p;

main()

{

int n=1;

printf("n");

for(i=0;i<4;i++)

{

s[i].a=n;

s[i].b=&s[i].a;

n=n+2;

}

p=&s[0];

p++;

printf("%d,%dn",(++p)->a,(p++)->a);

}

4.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名

和年龄。请在_______内填入正确内容。

stati struct man{

char name[20];

int age;

}person[]={"li=ming",18,

"wang-hua",19,

"zhang-ping",20

};

main()

{struct man *p,*q;

int old=0

p=person;

for( ;p_____;p++)

if(oldage)

{q=p;______;}

printf("%s %d",______);

}

5. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点

的指针(链表不带头结点)。请在______内填入正确内容。

struct link

{char data ;

struct link *next;

};

....

struct link *p,*first;

int c=0;

p=first;

while(_____)

{_______;

p=_______;

}

6. 设有以下说明,则变量qq在内存中所占的字节数是_______________。

union student

{ char name[10];

int nl;

float ave;

} qq;

union改成struct后,则变量qq在内存中所占的字节数是_______________。

第13章 文件

一、 填空题

1.系统的标准数入文件是指_________.

a)键盘 b)显示器 c)软盘 d)硬盘

2.若执行fopen函数时发生错误,则函数的返回值是_______.

a)地址值 b)0 c)1 d)EOF

3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件

方式字符串应是______.

a)"ab+" b)"wb+" c)"rb+" d)"ab"

4.fscanf函数的正确调用形式是_________.

a)fscanf(fp,格式字符串,输出表列)

b)fscanf(格式字符串,输出表列,fp);

c)fscanf(格式字符串,文件指针,输出表列);

d)fscanf(文件指针,格式字符串,输入表列);

函数的作用是从指定文件读入一个字符,该文件的打开方式必须是____.

a)只写 b)追加 c)读或读写 d)答案b和c都正确

6.函数调用语句:fek(fp,-20L,2);的含义是_______.

a)将文件位置指针移到距离文件头20个字节处

b)将文件位置指针从当前位置向后移动20个字节

c)将文件位置指针从文件末尾处后退20个字节

d)将文件位置指针移到离当前位置20个字节处

7.利用fek函数可实现的操作_________.

a)fek(文件类型指针,起始点,位移量);

b)fek(fp,位移量,起始点);

c)fek(位移量,起始点,fp);

d)fek(起始点,位移量,文件类型指针);

8.在执行fopen函数时,ferror函数的初值是_______.

a)TURE b)-1 c)1 d)0

第1章 C语言概述

(一)选择题

1 2 3 4 5 6 7 8 9 10

A D C B D

(二)填空题

1、 ; 2、 /*……*/ 3、main函数

第3章 数据类型、运算符与表达式

(一)选择题

1 2 3 4 5 6 7 8 9 10

C A B A D D C A B C

11 12 13 14 15 16 17 18 19 20

D C A B D B A C B A

21 22 23 24 25 26 27 28 29 30

D A B D D A A B C A

31 32 33 34 35 36

B B A C A B

(二)填空题

1 -1 2 -32768~32767或-215~215-1

3 1 4 26

5 12 、 4 6 2

7 10 、6 8 1

9 1 10 ‘f’

11 double a=0.618 12 -16

13 9 、 5 14 x=x*(y+2)

15 pow((x+y),1/3.0) 16 a=11,c=6

17 a!=0 && b!=0 或 a*b!=0

(三)阅读程序写结果、

1 1 2 D

3 此题有错 4 D

第4章 顺序结构程序设计

(一)选择题

1 2 3 4 5 6 7 8 9 10

D B、C D C A B

(二)填空题

1 i:dec=-4,oct=177774,hex=fffc,unsigned=65532 2 c:dec=120,oct=170,hex=78,ASCII=x

3 x=1 y=2*sum*=3 4 a+=b;b=a-b;a-=b

10 Squared is :100

5 -14 6 1)%d错,应为%f。2)k错,应改为&k

第5章选择结构程序设计

(一)选择题

1 2 3 4 5 6 7 8 9 10

C C C B B B C

第6章循环控制

(一)选择题

1 2 3 4 5 6 7 8 9 10

C A C C C B C C C B

(二)填空题

1 c!=’n’ c>=’0’ && c<=’9’ 2 {m=m+n;n=m-n;m=m-n}m%n

即交换m,n使得m>n

3 254 4 -5

5 8 6

第7章数组

(一)选择题

1 2 3 4 5 6 7 8 9 10

D C D B B B D D B B

(二)填空题

1 0

3 i==j

5 i-1

4

a[i][j]

a[j+1]=a[j]

2

4

6

&a[i] i%4==0 printf(“n”)

10010(完成了十进制转二进制功能)

str[0] s

在第一空的下一行加一条语句:if(strcmp(str[1],s)<0)strcpy(s,str[1]

j<9-i a[j]

a[j+1]

7 #&*&%

第8章函数

(一)选择题

1 2

B A

(二)填空题

1 max is 2

3 A+B=9

8

3

B

4

B

5

C

2

4

6

C

<

x=1

y=1

x=1

y=2

x=1

y=3

n==1

7

a%b!=0

8

9

10

5 int max(int x,int y)

c=max(a,b)

x>y?x:y

6 pea(n-1)+2

7 temp=*x *x=*y *y=temp

第9章

1 2 3 4

C C D A

第10章指针

一、选择题

1 2 3 4

B D D C

11 12

D A

二、填空题

1 num=*b num=*c

3 ef

5 4 12

7 *(a+i)=*(a+j) (a+j)

9 Coble

dBa

C language

Pascal

第11章结构体与共用体

一、选择题

1 2 3 4

A D C B

二、填空题

1 10,x

3 7,3

5 p!=NULL

C=C+1

p->next

第13章 文件

一、选择题

1 2

A B

8

5

B

6

C

7

C

8

9

10

5

B

2

4

6

8

10

6

C

hELLO

!=’0’

8

(a+i)+j

temp=*x

7

D

8

B

9

C

10

D

*p2

8

a

*x=*y

p1=p

*y =temp

5

B

2

4

6

6

D

12

10

7

6.0

old=q->age

16

8

9

10

q->name,q->age

3

C

4

D

5

C

6

C

7

A

8

D

9

10

附部分等级考试题一

二、程序设计语言部分(25分)

1、以下叙述不正确的一项是( )。

A)一个C语言源程序可由一个或多个函数组成

B)一个C语言源程序必须包含一个main函数

C)C语言源程序的基本组成单位是函数

D)在C程序中,main函数必须位于程序的最前面

2、以下有4组用户标识符,其中合法的一组是( )。

A)for,-sub,Ca B)IF,f2_G3,abc C)WORD,void,define D)4d,DO,Size

3、请选出合法的C语言赋值语句( )。

A)m=1,n=1; B)i--; C)m=n=1 D)a=int(m-n);

4、下面正确的字符串常量是( )。

A)”c” B)’w’ C)’hello’ D)’x41’

5、假设x、i、j和k均为int型变量,则计算下面表达式后,x的值为( )。

x=(i=3,j=6,k=9)

A)3 B)6 C)9 D)18

6、下列表达式中,不属于逗号表达式的是( )。

A)m,(n-1) B)m=(m,n) C)m,n=1 D)m=1,n

7、假定int 类型变量占用两个字节,其有定义:int a[5]={0,1,2};,则数组a在内存中所占字节数是( )。

A)3 B)6 C)8 D)10

8、当n=1时,在下列选项中能正确将n的值赋给变量a、b的是( )。

A)(a=n)&&(b=n); B)(a=n)||(b=n); C)a=n=b; D)n=b=a;

9、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。

A)静态(static) B)外部(extern) C)寄存器(register) D)自动(auto)

10、用C语言编写的代码程序( )。

A)是一个源程序 B)可立即执行 C)经过编译即可执行 D)经过编译解释才能执行

11、设P1和P2是指向同一个int型一维数组的指针变量,M为int型变量,则不能正确执行的语句是( )。

A)P1=&M; B)*P1=M; C)P2=*M; D)M=*P2;

12、在以下关于函数调用的叙述中,错误的是( )。

A)函数调用可以作为独立的语句存在

B)函数调用可以作为一个函数的实参

C)函数调用可以作为一个函数的形参

D)函数调用可以出现在表达式中

13、设有以下说明语句

struct stu

{

int a;

float b;

}Datatype;

则下面的叙述不正确的是( )。

A)a和b都是结构体成员名 B)struct stu是用户定义的结构体类型

C)struct是结构体类型的关键字 D)Datatype是用户定义的结构体类型名

14、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( )。

A)for(i=1,p=1;i<=5;i++)p*=i; B)for(i=1;i<=5;i++){p=1;p*=i;}

C)i=1;p=1;while(i<=5){p*=i;i++;} D)i=1;p=1;do{p*=i;i++;}while(i<=5);

15、设有以下宏定义:

#define A 2

#define B(n) ((A+1)*n)

则执行语句:C=2*(B(4+1));后,C的值为( )。

A)30 B)26 C)14 D)9

16、若程序中定义了以下函数

double add(double a,double b)

{return(a+b);}

并将其放在调函数之后,则在调用之前应该对函数进行声明,以下选项中错误的声明是( )。

A)double add(double,double); B)double add(double a,b)

C) double add(double b ,double a); D) double add(doduble x,double y);

17、执行语句 “char a[10]=”abcd”;*p=a;”后, *(p+4)的值是( )。

A)”bcd” B)’d’ C)’0’ D)不能确定

18、下面程序段的运行结果是( )。

char c[]=”tb0willn”;

printf(“%d”,strlen(c));

A)14 B)3 C)9 D)1

19、已知定义 int x=10,y=20,z=30;,以下语句执行后x,y,z的值为( )。

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

20、下面程序段的运行结果是( )。

int n=0;

while(n++<=2)

{

printf(“%d”,n);

}

A)1 B)12 C)123 D)1234

21、下列程序的运行结果是( )。

#include

void main()

{

printf(“%f”,2.5+1*7%2/4);

}

A)2.500000 B)2.750000 C)3.375000

22、下面程序的运行结果是( )

#include

void main()

{static char a[]=”Language”,b[]=”programe”;

char *p1,*p2;

int k;

p1=a;

p2=b;

for(k=1;k<=7;k++)

{

if(*(p1+k)==*(p2+k))

printf(“%c”,*(p1+k));

}

}

A)gae B)ga C)Language D)有语法错

23、下面程序的运行结果是( )。

#include

void main()

{

struct cmplx

{

int x;

int y;

}cnum[2]={1,3,2,7};

printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);

}

A)0 B)1 C)3 D)6

24、下面程序运行结果是( )。

#include

int fun(int x1,int x2)

{

int x;

x1>x2?(x=3):(x=4);

return(x+x1);

}

void main()

{

printf(“%dn”,fun(7,8));

}

D)3.000000

A)9 B)10 C)11 D)12

25、下面程序的运行结果是( )。

#include

void main()

{i

char str[]=”SSSWLIA”,c;

for(k=2;(c=str[k])!=’0’;k++)

{

switch(c)

{

ca ‘I’:++k;break;

ca ‘L’:continue;

default:putchar(c);continue;

}

putchar(‘*’);

}

}

A)SSW* B)SW* C)SW*A D)SW

三、程序阅读选择题(30分)

1、下面程序的功能是:求出存放在一维数组score中的10个学生成绩的平均值。请在________处选择正确的答案将程序补充完整。

#include

void main()

{

float score[10]={98,88,75,94,86,80,92,91,84,77};

float aver,sum=______(1)_______________;

int i;

printf(“10 scores”);

for(i=0;i<10,i++)

printf(“%f”,score[i]);

printf(“n”);

for(i=1;_______(2)____________;i++)

_______(3)___________=score[i];

aver=______(4)_____________;

printf(“average score is %5.2f”,aver);

}

(1)A)score B)score[0] C)0 D)1

(2)A)i<10 B)i<=10 C)i<11 D)i<9

(3)A)score+ B)sum+= C)sum D)sum+

(4)A)sum B)sum+10 C)sum/10 D)sum%10

2、下面程序的功能是:选出能被3整除且数位上至少有一位是5的两位数,输出所有这样的数及其个数。请在____________处选择正确的答案将程序补充完整。

#include

void main()

{

int k,num=0;

int a1,a2;

for(k=10;k<=99;k++)

{

a2=______(5)_________;

a1=______(6)_________;

if((k%3==0&&a2==5)____(7)___________(k%3==0&&a1==5))

{

printf(“%3d”,k);

num++;

}

}

printf(“nnum=%d”,num);

}

(5)A)k*10 B)k%10 C)k/10 D)k*10%10

(6)A)k-a2*10 B)k-a2 C)k-a2/10 D)k-a2%10

(7)A)&& B)|| C)& D)|

3、下面程序的功能是:主函数调用了Max函数,实现在N行M列的二维数组中,找出所有元素中的最大值。请在_________处选择正确的答案将程序补充完整。

#include

#define N 3

#define M 4

int Max(int x[N][M])

{

int i,j,p;

p=x[0][0];

for(i=0;i

for(j=0;j

if(x[i][j]>p) ___(8)____________;

return( ____(9)____ );

}

void main()

{

int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

printf(“%d”,_______(10)__________);

}

(8)A)x[i][j]=x[i][p] B)p=x[i][j] C)p=j D)j=p

(9)A)x[i][j] B)x[i][p] C)x D)p

(10)A)Max(x) B)Max(int x[N][M]) C)Max(x[N][M]) D)Max(&x)

4、下面程序的功能是:确定输入的日期是一年中的第几天(1~366)。其中sum_day函数用来计算输入日期的天数,leap函数返回是否闰年的信息。请在_______-处选正确答案将程序补充完整。程序运行效果如下:

Input date(year,month,day):2000,10,1

2000/10/1 is the 275th day in 2000.

#include

void main()

{

int sum_day(int month,int day);

int leap(int year);

int year,month,day,days;

printf(“nInput date(year,month,day):”);

___________(11)________________________;

printf(“n%d/%d/%d” ,year,month,day);

days=sum_day(month,day);

if(____(12)_____________&&_____(13)________________)

days=days+1;

printf("is the %dth day in %d.n”,days,year);

}

int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int sum_day(int month,int day)

{

int i;

for(i=1;i

________(14)___________________;

return(day);

}

int leap(int year)

{

int leap;

leap=________(15)___________________;

return (leap);

}

(11)A)scanf(“%d%d%d”,year,month,day) B) scanf(“%d,%d,%d”,year,month,day)

C) scanf(“%d%d%d”,&year,&month,&day) D) scanf(“%d,%d,%d”,&year,&month,&day)

(12)A)year B)!leap(year) C)leap(year) D)year=leap(year)

(13)A)month>=2 B)month>=3 C)month==2 D)month!=2

(14)A)day+=day_tab[i] B) day+=day_tab[i-1]

C) day+=day_tab[i+1] D) day=day_tab[i]

(15)A)year%4==0||year%100!=0||year%400==0

B) (year%4==0&&year%100==0)||year%400!=0

C)(year%4==0&&year%100!=0)||year%400!=0

D)(year%4==0&&year%100!=0)||year%400==0

试题四、综合应用题(15)

编程实现输入一行字符,统计该行字符中字母、数字、空格和其他字符的个数。要求:在主函数中输入字符串以及输出上述结果。

(二)

试题二、语言基础选择题

1.在TurboC语言环境中,无符号整型(unsigned int)数据类型的取值范围是( )。

A)-32768至32767 B)0至32767 C)0至65535 D)0至65536

2.下面不可以作为C语言程序中标识符的是( )。

A)_total B)3day C)BASIC D)Class

3.能正确表示逻辑关系“x>=10或x<=0的C语言表达式是( )。

A)x>=10 or x<=0 B)x>=0|x<=10

C) x>=10 && x<=0 D) x>=10 || x<=0

4.运行程序段:int a=12;double b=3.141592;printf(“%d%7.5f”,a,b);的输出结果是( )。

A)123.14159 B)12 3.14159 C)123.141590 D)123.141592

5.在C语言中能代表逻辑“真”的是( )。

A)YES B)NOT C)非0的数 D)等于0的数

6.若函数中有定义语句:int i;,则( )。

A)系统将自动给i赋初值0 B)系统将自动给i赋初值1

C)此时i中无任何值 D)此时i中值无意义

7.以下错误的变量定义语句是( )。

A)float floatint B)float int_ C)float float D)float intfloat

8.设有定义:int a=2;,以下表达式中,值不是6的是( )。

A)a=2*a,a+=2 B)a*a+1 C)a*=(1+a) D)a++,a*2

9.若有说明:int a[2][4];,则对a数组元素的正确引用是( )。

A)a[1+1][0] B)a[1][3] C)a(1)(3) D)a[1,3]

10、以下程序段中的变量已正确定义

for(i=0;i<4;i++)

for(j=1;j<3;j++);

printf(“*”);

程序段的输出结果是( )。

A)******** B)**** C)** D)*

11.设变量已经正确定义,以下不能统计出一行中输入字符个数(不包括回车符)的程序段是( )。

A)n=0;while((ch=getchar())!=’n’)n++;

B)n=0;for(ch=getchar();ch!=’n’;n++);

C)n=0;while(getchar()!=’n’)n++;

A)for(n=0;getchar()!=’n’;n++);

12.设有定义,int x,y;,以下语句:x+=y;y=x-y;x-=y;的功能是( )。

A)把x和y按从小到大排列 B) 把x和y按从大到小排列

C)无确定结果 D)交换x和y中的值

13.下列叙述中,正确的是( )。

A)C语言的函数可以嵌套调用 B) C语言的函数可以嵌套定义

C)C语言的子程序有过程和函数两种 D)C语言函数编译时不检查语法

14.变量的指针,其含义是指该变量的( )。

A)值 B)名 C)一个标志 D)地址

15.以下是if 语句的基本形式:if(表达式)语句;,其中表达式( )。

A)必须是逻辑表达式 B)必须是关系表达式

C)必须是逻辑表达式或是关系表达式 D)可以是任何合法的表达式

16.下面不能正确把字符串“welcome”赋值给数组s的是( )。

A)char s[10]={‘w’,’e’,’l’,’c’,’o’,’m’,’e’};

B)char s[10]=”welcome”;

C) char s[10];s=” welcome”;

D) char s[10];strcpy(s,”welcome”);

17.一个C语言程序可以包括多个函数,程序总是按照如下( )所描述的方式执行当前的程序。

A)从本程序的main()函数开始,到本程序文件的最后一个函数结束

B)从本程序的第一个函数开始,到本程序文件的最后一个函数结束

C)从main()函数开始,到main()函数结束位置结束

D)从本程序的第一个函数开始,到本程序main()函数结束

18.执行语句int a=5,b=6;a=(b=10,b++);后,a、b的值分别为( )。

A)11,11 B)6,10 C)10,11 D)7,10

19.下面程序段不是死循环的是( )。

A)for(int i=1;i;i++){} B)int a=10;

while(a)a--;

C)int k=0; D)int k=0;

while(k>=0){k++;} do{k++;}while(k);

20.下面对数组S的声明和初始化语句正确的是( )。

A)int S[][3]={1,2,3,4,5,6,7,8}; B) int S[][]={{1,2,3},{4,5,6},{7,8,9}};

C)int S[2][3]={{1,2},{3,4},{4,5}} D)int S[3][]={{1,2,3},{4,5,6},{7,8,9}};

21.下面( )语句可以正确地声明整型变量a,b,c并给它们分别赋初值3。

A)int a,b,c=3 ; B)int a=b=c=3; C)int a=3,int b=3,int c=3 D)int a,b,c;a=b=c=3;

22.下面常数中不能作为C的常量的是( )。

A)oxA5 B)2.3e-3 C)3e2 D)0582

23.若有int型变量i=1和s=0,有如下语句段:

while(1)

{if(i>100)break;

s+=i;

i++;

}

与该语句段功能相同的是( )。

A)for(;i<100;i++)s+=i; B)for(;i<100;i++;s+=i);

C)for(;i<=100;i++)s+=i; D)for(;i>=100;i++,s+=i);

24.运行下面程序,当从键盘输入“2345”回车后程序的运行结果是(

#include

int s(int n)

{

return(n/10+n%10);

}

main()

{

int i,j;

scanf(“%d”,&i);

j=s(s(s(i)));

printf(“%dn”,j);

}

A)2 B)45 C)5 D)23

25.运行下面程序,当从键盘输入“357”回车后程序的运行结果是(

#include

main()

{int c;

while((c=getchar())!=’n’)

switch(c-‘3’)

{ ca 0:

ca 1:putchar(c+4);

ca 2:putchar(c+4);break;

ca 3:putchar(c+3);

default:putchar(c+2);break;

}

printf(“n”);

}

A)7799 B)99 C)356 D)77659879

三、阅读程序题

1、下面程序运行后,输出的结果是( )。

#include

void f(int i)

{

if(i>0)f(i-1);

printf(“%d ”,i);

}

)。 )

void main()

{

f(5);

}

A)1 2 3 4 5 B)5 4 3 2 1 C)0 1 2 3 4 5 D)5 4 3 2 1 0

2、下面程序运行后,输出结果是( )

#define T(x,y) (x)<(y)?(x):(y)

main()

{int i,j,k;

i=10,j=15,k=10*T(i,j);

printf(“%dn”,k);

}

A) 10 B)15 C)100 D)150

3、下面程序运行后,输出的结果是( )。

#include

main()

{char *s[]={“Tom”,”Jack”,”Mike”},*p;

p=s[1];

printf(“%c,%sn”,*(p+1),s[0]);

A)o,Jack B)J,Jack C)a,Tom D)o,Tom

4、下面程序运行后,输出的结果是( )。

#include

int f(char *s)

{

char *p=s;

int n=0;

while(*p!=’0’)

{if (*p>=’0’ &&*p<=’9’) n++;

p++;

}

return n;

}

main()

{

char *p=”good 56789”;

printf(“%dn”,f(p));

}

A)9 B)35 C)0 D)5

5、下面程序的功能是:函数void f(char *s,int m)将字符串s逆序后仍然存放在其中,参数m为s的长度;在主函数中任意输入一个长度不超过50个字符的字符串,调用函数f后将其逆序输出,请在________处选择正确的答案将程序补充完整。

#include

#include

void f(char *s,int m)

{

char c,*p1,*p2;

p1=s;

p2=______(1)__________;

while (p1

{

c=*p1;

_____(2)________;

*p2=c;

______(3)_________;

*p2--;

}

}

main()

{

char str[50];

gets(str);

_______(4)_____________;

printf(“%sn”,str);

}

(1)A)s B)s+m-1 C)s[m] D)s+m

(2)A)p2=p1 B)*p2=*p1 C)p1=p2 D)*p1=*p2

(3)A)p1++ B)p1- - C)p1+=m D)p1-=m

(4)A)f(&str,strlen(str)) B)f(*str,50)

C)f(str,strlen(str)) D)f(*str,strlen(str))

6、下面程序的功能是:将数组a中的数据用冒泡法按从小到大顺序排列,并将排序的结果以每行5个数据的格式输出。请在____________处选择正确的答案将程序补充完整。

#include

#define N 10

main()

{

int a[N]={2,6,2,5,7,9,7,8,7,3};

int i,j,k,n,t;

/*用冒泡法将数组a中的元素按从小到大排序*/

for(i=0;i

for(j=0;j

if_____(5)______

{

t=a[j];a[j]=a[j+1];a[j+1]=t;

}

/*以每行5个数据的格式输出数组a*/

for(k=0;k<=N-1;k++)

{printf(“%3d”,_______(6)______________);

if(______(7)_________)

printf(“n”);

}

printf(“n”);

}

(5)A)a[j]a[j+1] C)a[j-1]a[j]

(6)A)*(a+k) B)*(a+k-1) C)*a D)*a+k

(7)A)k%5 B)k/5 C)k%5==0 D)k/5==0

7、下面程序的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为”ABCD”时,t所指数组中的内容为”DCBAABCD”。请在——处选择正确的答案将程序补充完整。

#include “stdio.h”

#include “string.h”

void sub(char *s,char *t)

{

int i,d;

d=strlen(s);

for_____(8)______;i

t[i]=s[d-1-i];

for(i=0;i

t[d+i]=______(9)___________;

______(10)_________=’0’;

}

main()

{

char s[100],t[100];

printf(“n Plea enter string s:”);

scanf(“%s”,s);

________(11)_____________;

printf(“n The result is:%sn”,t);

}

(8)A)i=1 B)i=d-1 C)i=0 D)i=d-i-1

(9)A)s[i] B)t[i] C)s[d-1-i] D)t[i-1]

(10)A)t[d] B)t[2*d] C)t[d+i] D)t[i]

(11)A)sub(s,t) B)sub(s[],t[]) C)sub(*s,*t) D)sub(s,t);

试题三、编程题

已知一个2*3的矩阵存储在二维数组a中,请编写一个C程序完成将其转置后存储在数组b中。要求:输出转置前后的数组a和b。

(三)

一、语言基础选择题

1、在C语言程序中,包括的函数最多有( )个。

A)0 B)1 C)2 D)不限

2、下面叙述中,错误的是( )。

A)C语言程序第一行必须是main()函数

B)一个C程序必须且只能有一个main()函数

C)main()函数是程序执行时的唯一入口

D)一个C程序可以由一个或多个函数构成

3、C语言规定,在一个源程序中,main()函数的位置( )。

A)必须在最后 B)可以任意 C)必须在最开始

D)必须在系统调用的库函数的后面

4、C语言中最简单的数据类型包括( )。

A)整型、字符型、逻辑型 B)整型、实型、字符型

C)字符型、实型、逻辑型 D)整型、实型、逻辑型

5、C语言中用于结构化程序设计的3种基本结构是( )。

A)if,for,continue B)for,while,do-while

C)if,switch,break D)顺序结构、选择结构、循环结构

6、下面( )是正确的变量定义语句。

A)int int_; B)int float ; C)int_ int; D)float int;

7、下面四个选项中,均是合法整型常量的选项是( )。

A)160,0xff,011 B)-0xcd,01a,0xe C)-01986,0120668 D)-0x48a,2e50x

8、代表“水平制表”转义字符常量是( )。

A)’b’ B)’f’ C)’t’ D)’n’

9、下面能够正确表示字符串常量的表达式是( )。

A)’student’ B)student C)”student” D)’student0’

10、表达式(int)1.7*2+8/3-3%2的值是( )。

A)2 B)3 C)4 D)5

11、若有代数式3AB÷CD,则不正确的C语言表达式是( )。

A)A/D/C*B*3 B)3*A*B/D/C C)3*A*B/C*D D)A*B/C/D*3

12、C语言允许函数值类型缺省定义,此时函数值隐含的类型是( )。

A)float型 B)int

型 C)long型 D)double型

13、执行语句int i=5,j=6;i=(j=2*3,j*5);后,i的值为( ).

A)6 B)12 C)30 D)36

14、有int 型变量a和b,若a=12,b=12345,执行语句printf(“%4d%4d”,a,b)的输出结果是( )。

A)12 123 B) 1212345 C)12 1234 D)12 2345

15、Turbo C语言环境中,若有int x=-1;,则语句printf(“%d%u”,x,x)的输出结果是( )。

A)-1 -1 B)-1 32767 C)-1 32768 D)-1 65535

16、下面叙述中,不正确的是( )。

A)函数中的形式参数是局部变量 B)在一个函数内定义的变量只在本函数范围内有效

C)在一个函数内的复合语句中定义的变量在本函数范围内有效

D)在不同的函数中可以使用相同名字的变量

17、函数中有整型变量x,为保证其在未赋初的情况下初值为0,应选择的存储类别( )。

A)static B)auto C)register D)auto 或 register

18、给出以下定义:

char a[]=”123456”;

char b[]={‘1’,’2’,’3’,’4’,’5’,’6’};

则正确的叙述为( )。

A)数组a的长度小于数组b的长度 B)数组a

的长度大于数组b的长度

C)数组a的长度等于数组b的长度 D) 数组a 和数组b等价

19、下面语句中与k=n++;等价的语句是( )。

A)k=n;n=n+1; B)n=n+1;k=n; C)k=++n; D)k+=n+1;

20、运行下面程序后,输出的结果是( )。

#include

void main()

{char s[]={‘a’,’b’,’0’,’c’,’0’};

printf(“%s”,s);

}

A)’a’’b’ B)ab C)ab c D)abc

21、下列条件语句中,功能与其他语句不同的是( )。

A)if(a) printf(“%dn”,x);el printf(“%dn”,y);

B)if(a==0)printf(“%dn”,y);el printf(“%dn”,x);

C)if(a) printf(“%dn”,x);el printf(“%dn”,y);

D) if(a==0) printf(“%dn”,x);el printf(“%dn”,y);

22、已知有数组定义语句 int a[10]; ,则对数组a的正确使用是( )。

A)a[10] B)a[1,2] C)a(3) D)a[10-10]

23、已知有数组定义语句int a[2][3]={{1,2},{3,4}}; ,则a[1][2]的值是( )。

A)3 B)4 C)0 D)2

24、运行下面程序后,输出的结果是( )。

#define T(x,y) (x)<(y)?(x):(y)

#include

void main()

{int i,j,k;

i=2,j=3,k=10*T(i,j);

printf(“%dn”,k);

}

A)2 B)3 C)20 D)30

25、有程序如下:

#include

void main()

{int s=0,a=1,n;

scanf(“%d”,&n);

do

{s+=1;

a=a-2;

}while(a!=n);

printf(“%dn”,s);

}

若要使程序输出值为2,则应从键盘输入n值为(

A)0 B)-5 C)-3 D)-1

(四)

一、程序阅读选择题

(1)有以下程序

#include(stdio.h>

main()

{int a=l;b=2;

for(;a<8;a++) {b+=a;a+=2;}

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是

A)9,18 B)8,11 C)7,11

D)10,14

(2)有以下程序,其中k的初值为八进制数

#include

main()

{int k=011;

printf("%d\n",k++);

程序运行后的输出结果是

A)12 B)11 C)10

D)9

(3)有以下程序

#include<stdio.h>

main()

{in i,j,m=1;

for(i=1;i<3;i++)

{for(j=3;j>O;j--)

{if(i*j>3)break;

}

m=i*j;

}

。 )

printf("m=%d\n",m);

程序运行后的输出结果是_______

A)m=6 B)m=2 C)m=4 D)m=5

(4)有以下程序

#include(stdio.h>

main()

{int a=l,b=2;

for(;a<8;a++) {b+=a;a+=2;}

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是

A)9,18 B)8,11 C)7,11

D)10,14

(5)以下关于return语句的叙述中正确的是( )

A)一个自定义函数中必须有一条return语句

B)一个自定义函数中可以根据不同情况设置多条return语句

C)定义成void类型的函数中可以有带返回值的return语句

D)没有return语句的自定义函数在执行结束时不能返回到调用处

(6)下列选项中,能正确定义数组的语句是

A)int num[0..2008]; B)int num[]; C)int N=2008; int num[N];

D)#define N 2008

int num[N];

(7)若有定义int(*Pt)[3];,则下列说法正确的是( )

A)定义了基类型为int的三个指针变量

B)定义了基类型为int的具有三个元素的指针数组pt

C)定义了一个名为*pt、具有三个元素的整型数组

D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

(8)设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是( )

A)(*s)[3]

B)*(s+3) C)*s[3] D)*s+3

(9)有以下程序

#include(stdio.h)

main()

{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;

for(i=0;i<5;i++) s=s+a[b[i]]);

printf("%d\n", s);

}

程序运行后的输出结果是

A)6 B)10

C)11 D)15

10若有以下定义和语句

char s1[10]="abcd!",*s2="n123";

printf("%d %dn", strlen(s1),strlen(s2));

则输出结果是

A)5 5 B)10 5 C)10 7 D)5 8

11)#include

#define SUB(a) (a)-(a)

main()

{ int a=2,b=3,c=5,d;

d=SUB(a+b)*c;

printf("%d\n",d);

}

程序运行后的输出结果是

A)0 B)-12

C)-20

D)10

12)有以下程序

#include

int fun()

{ static int x=1;

x=x*2; return x;

}

main()

{int i,s=1;

for(i=1;i<=2;i++)s=fun();

printf("%dn",s);

}

运行程序的结果是:( )

A)O B)1

C)4

D)8

二、程序填空题

(1)有以下程序

#include

main()

{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)

{for(j=i;j<3;j++) printf(“%d ”,a[i][j]);

printf("n");

1 2 3

}

}

5 6

程序运行后的输出结果是 ____________________。

9

(2)#include

#include

void fun(char *str)

{char temp;int n,i;

n=strlen(str);

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1];

str[0]=temp;

}

main()

{char s[50];

scanf("%s",s); fun(s); printf("%sn",s);}

程序运行后输入:abcdef<回车>,则输出结果是 fabcde___________ 。

(3)以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。

#include

main()

{ int x=256;

printf("%d-%d-%dn", _x%10_______ ,x/10%10,x/100);

第一套

二选择题

三、

1

B

2

A

3

D

4

C

5

C

6

A

7

B

8

B

9

D

10

A

11

D

12

C

13

B

14

A

15

D

第二套

二选择题

1

C

1

D

16

B

16

A

1

C

2

B

2

B

17

C

17

C

三、

2

B

3

C

4

D

5

1

B

2

D

3

A

4

C

6

5

B

6

A

7

C

7

8

C

9

A

10

C

11

D

3

D

3

D

18

B

18

C

4

A

4

B

19

B

19

B

5

C

5

C

20

C

20

A

6

D

6

B

21

A

21

D

7

C

7

D

22

A

22

D

8

B

8

A

23

D

23

C

9

B

9

D

24

C

24

C

10

B

10

A

25

B

25

A

11

B

11

C

12

D

12

C

13

A

13

D

14

D

14

B

15

D

15

B

(三)

1

D

16

C

2

A

17

A

3

B

18

B

4

B

19

A

5

D

20

B

6

A

21

D

7

A

22

D

8

C

23

C

9

C

24

B

10

B

25

C

11

C

12

B

13

C

14

B

15

D

(四)

一、选择题

1

D

2

D

3

A

4

D

5

B

6

D

7

D

8

B

9

C

10

A

11

C

12

C

13

14

15

二、程序填空题

(1)1 2 3

5 6

9

(2)fabcde

(3)x%10

本文发布于:2024-04-01 22:50:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1241405.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   函数   语句   变量   数组   结果   输出   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图