admin 管理员组

文章数量: 887019


2024年2月21日发(作者:实例方法在访问本类成员变量时)

C语言程序设计试题及参考答案

C语言程序设计试题及答案(一)

1. 若有定义"float x=1.5;int a=1,b=3,c=2;",则正确的switch语句是() (2分)

(x)

{

case 1.0: printf("__ ");

case 2.0 printf("____ ");

}

((int)x)

{

case 1.0: printf("__ ");

case 2.0 printf("____ ");

}

(a+b)

{

case 1: printf("__ ");

case 2+1: printf("____ ");

}

(a+b)

{

case 1: printf("__ ")

case c: printf("____ ");

}

标准答案:C

2. 若有宏定义如下:

#define X 5

#define Y X+1

#define Z Y__X/2

则执行以下printf语句后,输出的结果是( )

int a; a=Y;

printf("%d ",Z);

printf("%d",--a); (2分)

A.7,6 B.12,6 C.12,5 D.7,5

标准答案:D

3. 下面的.符号常量定义中,正确的是 ( ) (2分)

A.#define PI 3.14; B.#include PI 3.14;

C.#define PI=3.14 D.#define PI 3.14

标准答案:D

4. 以下程序的输出结果是( )

int a, b;

void fun()

{ a=100; b=200; }

main()

{ int a=5, b=7;

fun();

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

} (2分)

A.100200 B.57 C.00 D.75

标准答案:D

5. 若有以下调用语句,则不正确的fun函数的首部是( )

main()

{ …

int a[50],n;

fun(n, a[9]);

} (2分)

fun(int m, int x[])

fun(int s, int h[41])

fun(int p, int __s)

fun(int n, int a)

标准答案:D

6. 以下程序的输出结果是( )

fun(int x, int y, int z)

{ z=x__x+y__y; }

main()

{ int a=31;

fun(5,2,a);

printf("%d",a);

} (2分)

A.0 B.29 C.31 D.无定值

标准答案:C

7. 以下只有在使用时才为该类型变量分配内存的存储类说明是( ) (2 和static 和register

分)

er和static 和register

标准答案:B

8. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( ) (2分)

A.地址传递

B.单向值传递

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

D.传递方式由用户指定

标准答案:B

9. 以下函数值的类型是( )

fun ( float x )

{ float y;

y= 3__x-4;

return y;

} (2分)

B.不确定

标准答案:A

10. C语言规定函数的返回值的类型是由( ) (2 语句中表达式类型决定

B.调用该函数时的主调函数类型决定

分)

C.调用该函数时系统临时决定

D.在定义该函数时所指定的函数类型决定

标准答案:D

11. 若有说明:int i,j=7, __p=i; 则与i=j;等价的语句是( ) (2分)

A.i= __P; B.__p=__j; C.i=j; D.i=__ __p;

标准答案:B

12. 以下程序执行后a的值是( )

main()

{ int a,k=4,m=6,__p1=k,__p2=m;

a=p1==m;

printf("%d ",a);

} (2分)

A.4 B.1 C.0 D.a无定值

标准答案:D

13. 若有说明:long __p,a;则不能通过scanf语句正确给输入项读入数据的程序段是( ) (2分)

A.__p=a;scanf("%ld",p);

B.p=(long __)malloc(8);scanf("%ld",p);

("%ld",p=a);

("%ld",a);

标准答案:A

14. 以下程序的输出结果是( )

#include

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

main()

{p=(int __)malloc(sizeof(int));

f(p,a);

printf("%d ",__p);

}

f(int __s,int p[][3])

{__s=p[1][1];} (2分)

A.1 B.4 C.7 D.5

标准答案:D

15. 设已有定义: char __st="how are you"; 下列程序段中不正确的是( )

(2分)

a[12], __p; strcpy(p=a+1,st[4]);

a[12]; strcpy(++a, st);

a[12]; strcpy(a, st);

a[12], __p; strcpy(p=a[1],st+2);

标准答案:B

18. 以下程序的输出结果是_____ B___。

main()

{

char cf[3][5]={"AAAA","BBB","CC"};

printf(""%s" ",ch[1]);

} (2分)

A."AAAA" B. "BBB" C."BBBCC" D."CC"

标准答案:B

19. 以下程序的输出结果是_______。

main()

{

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

for(i=0;i for(j=i;j printf("%d ",t);

} (2分)

A.3 B.4 C.1 D.9

标准答案:B

20. 在下列变量中,()不是局部变量 (2分)

er类 B.外部static类

类 D.函数形参

标准答案:B

C语言程序设计试题及答案(二)

一、单项选择题(20分,每题2分)

1.以下叙述中错误的是。C

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行时,数组元素的下标越界时,系统给出“下标越界”的出错信息

D)可以通过赋初值的方式确定数组元素的个数

2.以下叙述中,正确的是:C

A)continue和break语句只能用于循环体内

B)continue和break语句只能用于分支语句中

C)continue语句只能用于循环体内

D)continue语句只能用于分支语句中

3.执行下列程序段后,正确的结果是 C

char x[8] = {8,7,6,5,0,0}, __s;

s = x+1;

printf(“%dn”, s[2]);

A) n B) 0 C) 5 D) 6

4.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A

A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式

5.变量的指针,其含义是指该变量的 B

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

6.执行下列程序段后,正确的结果是A

int i=5;

while(i=1)

i--;

printf(“%d”,i)

A) 5 B) 0 C) 1 D) 无限循环

(i=0;i10;i++) A

if(i〈=5) break;

则循环结束后i的值为

A)0 B)1 C)5 D)10

8.执行下列程序段后,正确的结果是C

char x[8] = {8,7,6,5,0,0}, __s;

s = x+1;

printf(“%dn”, s[2]);

A) n B) 0 C) 5 D) 6

9.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A

A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式

10.设有数组定义:char str[]=”China”;则下面的输出为B

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

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

二、填空题(30分,每空2分)

1.C语言提供的三种逻辑运算符是_____、__||___和__!__。

2.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33回车,则输出结果是 1 B 。

#include stdio.h

main()

{

char a,b;

a=getchar();

scanf("%d",b);

a=a-A+0;

b=b__2;

printf("%c %cn",a,b);

}

3.以下程序运行后的输出结果是 4 3 5 。

main()

{

int a=3,b=4,c=5,t=99;

if(ba ac) { t=a;a=c;c=t;}

if(ac bc) {t=b;b=a;a=t;}

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

}

4.下面程序将字符数组a复制到字符数组b中。

main()

{

char a[]="I am a boy.",b[20];

int i;

for(i=___0____;a[i]!=0;i++)

{

____ b[i]=a[i]____;

}

_____ b[i]= 0____;

}

5.若有定义:double x[3][5];

则x数组行下标的上限是__0___,列下标的下限是__4___。

6.以下程序运行后的输出结果是 101 。

#define S(x) 4__(x)__(x)+1

main()

{

int i=2,j=3;

printf("%dn",S(i+j));

}

7.若有定义:double x[3][5];

则x数组行下标的上限是_0____,列下标的下限是_4___。

8.已知宏定义#define s 2+3

printf(”%d”,s__4);的输出结果是__14_____。

9.若有int a[3][2] = {{1},{3,2},{4,5}};,则a[1][1]的值是 2 。

三、写出程序的运行结果(30分,每题10分)

1.写出程序运行后的输出结果。

int f(int b[][4])

{

int i,j,s=0;

for(j=0;j4;j++)

{

i=j;

if(i2)

i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{

int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

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

}

16

2.写出程序运行结果

#include stdio.h

main()

{

int i=10,j=0;

do

{

j=j+i;

i--;

}while(i2);

printf("%dn",j);

}

52

3.写出程序运行后的输出结果。

int f(int b[][4])

{

int i,j,s=0;

for(j=0;j4;j++)

{

i=j;

if(i2)

i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{

int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

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

}

16

四、编程(完形填空)(20分,每题10分)

1.打印所有水仙花数,所谓水仙花数是指一个三位数,其各位数的立方和等于其本身。

include stdio.h

main()

{

int i,j,k,m;

for(i=100; i1000; i++)

{

j=i/100;

k= i/10 ;

m=i;

if( j__100+k__10+m==m__m__m+j__j__j+k__k__k )

printf("%dn", i);

}

}

2.以下程序计算某年某月有几天,1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月为28天、闰年2月为29天。

main()

{

int yy,mm,day;

scanf(“%d%d”,yy,mm);

switch(_mm__)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12: day=__31_;

break;

case4:

case6:

case9:

case11: day=__30___;

break;

case2: if(((yy%4==0)_____(yy0!=0))__||__(yy@0==0))

day=29;

else

day=28;

break;

}

}


本文标签: 数组 语句 函数 变量 输出