c语言考试笔试卷,c语言六月笔试考试模拟及答案

2015-08-23 06:30:01

阅读( 130 )

一、选择题

1. 以下叙述正确的是_C____。

A. 在C程序中main函数必须位于程序的最前面

B. C程序的每行中只能写一条语句

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

D. 在对一个C程序进行编译的过程中,可发现注释中的错误

2. 下列四组字符串中都可以用作C语言程序标识符的一组是( A ) 。

A. print _3d oodb aBc

B. i\am one_half start$it 3pai

C. Pxq My->book line# His.age

D. str_l Cpp pow while

3. 逗号表达式”(a=3*5,a*4),a+15″的值是__C__。

A. 15

B. 60

C. 30

D. 不确定

4. 语句 printf(“%d”,(a=2)&&(b= -2);的输出结果是___D____

A. 无输出

B. 结果不确定

C. 0

D. 1

5. 若变量已正确说明为float类型,要通过语句scanf(“%f%f %f “,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是B

A. 10 22 33

B. 10.0,22.0,33.0

C. 10.0 22.0 33.0

D. 10 22 33

6. 下列程序的运行结果是:C

main()

{int y=-5;

while (y++) ;

printf(“y=%d\n”,y);

}

A. y=0

B. y= -1

C. y=1

D. while构成无限循环

7. 以下函数调用语句不正确的是:D

A. x=(int) power(b);

B. x=power (a+b);

C. x=power(a);

D. x=float power( a );

8. 以下不正确定义一维数组的选项是( D )

A. int num[3];

B. #define N 100 int num[N];

C. int num[2*3];

D. int N=100; int num[N];

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

main( )

{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,j,s=0;

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

for(j=0;j

printf (“%d\n”,s);

}

A. 18

B. 19

C. 20

D. 21

10. 有下面的程序段

char a[3],b[]=”china”;

a=b;

printf(“%s”,a);

则( D )

A. 运行后将输出china

B. 运行后将输出ch

C. 运行后将输出chi

D. 编译出错

11. 在C语言中,以下说法正确的是:A

A. 普通实参和与其对应的形参各占用独立的存储单元

B. 实参和与其对应的形参共占用一个存储单元

C. 只有当实参和与其对应的形参同名时才共占用存储单元

D. 形参在函数调用前它就占用存储单元

12. 以下叙述中不正确的是__D____

A. 在不同的函数中可以使用相同名字的变量

B. 函数中的形式参数是局部变量

C. 在一个函数内定义的变量只在本函数范围内有效

D. 在一个函数内的复合语句中定义的变量在本函数范围内有效

13. 以下程序的输出结果是 A

main()

{int a=10,b=20;

int *p=&a;

*p=100;

printf(“a=%d”,*p+1);

}

A. 101

B. 11

C. 20

D. 无 结果

14. 以下程序运行后的输出结果是: A

main()

{ char s[ ]=”9876″,*p;

for ( p=s ; p

printf(“%s “, p);

}

A. 9876 876

B. 9876

C. 876

D. 无 结果

15. 下列关于C语言的叙述错误的是_A___

A. 大写字母和小写字母的意义相同

B. 不同类型的变量可以在一个表达式中

C. 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D. 同一个运算符号在不同的场合可以有不同的含义

16. 以下选项中不属于C语言的类型的是__D____

A. signed short int

B. unsigned long int

C. unsigned int

D. long short

17. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( B )

A. 不定值

B. 4

C. 3

D. 1

18. 设 int x=1, y= 1; 表达式(!x||y–)的值是 B

A. 0

B. 1

C. 2

D. -1

19. 以下程序的运行结果是:B

main()

{int m=6;

if(m–>5) printf(“%d\n”,m);

else printf(“%d\n”,m–);

}

A. 4

B. 5

C. 6

D. 7

20. 下面程序段的运行结果是:B

int n=2;

while(n>=0)

n=n-1;

printf(“%d”,n);

A. -2

B. -1

C. 0

D. 有语法错误

21. 有函数int max(int a,int b),则以下调用语句正确的是:C

A. int max(a,b);

B. int max(3,4);

C. max(a,b);

D. max( );

22. 有以下程序:

main( )

{ intaa[4]={0,2,3,4};

int i,s=1;

for(i=1;i<4;i++) s*=aa;

printf(“%d\n”,s);

}

程序运行后的输出结果是( D )

A. 0

B. 6

C. 12

D. 24

23. 以下不能正确定义二维数组的是( D )

A. int a[2][3];

B. int a[2][3]={1,2,3,4,5,6};

C. int a[ ][3]={1,2,3};

D. int a[2][3]={{1},{2},{3,4}};

24. 把字串b连接到字串a后面,应当使用( C )

A. strcpy(a,b);

B. strcpy(b,a);

C. strcat(a,b);

D. strcat(b,a);

25. 若调用一个函数,且此函数中没有return语句,则关于该函数正确的说法是 A

A. 没有返回值

B. 返回若干个系统默认值

C. 能返回一个用户所希望的函数值

D. 返回一个不确定的值

26. 如果使用一个宏 tri(x+y+z) 来表示算式(x+y+z)*(x+y+z)*(x+y+z),则应如何定义 C

A. #define tri(x) x*x*x

B. #define tri(x) (x*x*x)

C. #define tri(x) (x)*(x)*(x)

D. #define tri(x) (x+y+z)*(x+y+z)*(x+y+z)

27. 以下程序的输出结果是 C

main()

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

int *p=a;

printf(“a=%d”,*(p+3));

}

A. 2

B. 3

C. 4

D. 5

28. 以下程序的输出结果为( A )

main( )

{ void sub (int *, int *);

int x=100, y=200;

sub (&x, &y);

printf(“ %d , %d \n ” , x , y);

}

void sub( int *px , int *py)

{ *px=10; *py=20; }

A. 10,20

B. 20,10

C. 100,200

D. 200,100

二、操作题

1. 将1–1000中所有21的倍数存到一个一维数组中,并输出该数组的所有数据。要求将该程序以文件名test1.c或test1.cpp保存到K盘根目录。

参考答案:

#include

#define N 1000

main()

{

int i,j=0,n,sz[N]={0};

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

{

if(i%21==0)

sz[j++]=i;

}

n=j;

for(j=0;j

printf(“%d\t”,sz[j]);

printf(“\n”);

}

2. 写一个函数判断一个正整数是否为偶数,在主函数中用scanf输入正整数m,调用函数后,根据函数返回值判断这个正整数是否为偶数,若是则输出“yes”,否则输出“no” 。要求将该程序以文件名test2.c或test2.cpp保存到K盘根目录。

参考答案:

#include

main()

{

int m,flag;

printf(“请输入一个正整数m\n”);

scanf(“%d”,&m);

int ifou(int);

flag=ifou(m);

if(flag) printf(“yes\n”);

else printf(“no\n”);

}

int ifou(int k)

{if(k%2==0) return 1;

else return 0;

}

3. 输入一个M*N二维数组,求该二维数组所有靠外侧的元素之和。要求M和N用#define 进行定义。要求将该程序以文件名test1.c或test1.cpp保存到K盘根目录。

参考答案:

#define M 4

#define N 3

#include

main()

{

int i,j;

int aa[N],sum=0;

for(i=0;i

for(j=0;j

{scanf(“%d”,&aa[j]);

if(i==0||i==(M-1)||j==1||j==(N-1))

sum=sum+aa[j];

}

for(i=0;i

{

for(j=0;j

printf(“%d\t”,aa[j]);

printf(“\n”);

}

printf(“外侧元素之和为%d\n”,sum);

}

4. 写一个函数计算两个正整数的最小公倍数,在主函数中用scanf输入m,n两个正整数,调用函数后,打印这两个正整数的最小公倍数。要求将该程序以文件名test2.c或test2.cpp保存到K盘根目录。

参考答案:

#include

void main()

{

int m,n;

int zxgbs;

int mmin(int,int);

scanf(“%d%d”,&m,&n);

zxgbs=mmin(m,n);

printf(“%d和%d的最小公倍数为%d\n”,m,n,zxgbs);

}

int mmin(int m,int n)

{int i;

for(i=(m>n?m:n);i>=1;i–)

if(m%i==0&&n%i==0)break;

returnm*n/i;

}

分享给朋友:

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息:

面试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值