文档库 最新最全的文档下载
当前位置:文档库 › C程序设计试卷7 试卷及答案

C程序设计试卷7 试卷及答案

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

1.一个C语言程序是由组成的。

A.主程序 B.子程序 C.函数 D.过程

2.判断char型变量c1是否为小写字母的最简单且正确的表达式为。

A. 'a'<=c1<='z'

B. (c1>=a)&& (c1<=z)

C. ('a'<=c1)||('z'>=c1)

D. (c1>='a')&&(c1<='z')

3.为了判断两个字符串s1和s2是否相等,应当使用。

A. if (s1==s2)

B. if (s1=s2)

C. if (strcpy(s1,s2))

D. if( strcmp(s1,s2) == 0 )

4. 设a,b都是int型变量,则表达式:(a=2,b=5,a>b? a++ : b++ ,a+b)的值为。

A. 7

B. 8

C.

9 D. 2

5. 设x、y和t均为int型变量,则以下语句:t=x; x=y; y=t;的功能是。

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

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

C. 无确定结果

D. 交换x和y中的值

6. 下面标识符中,合法的用户标识符为。

A. P#Ad

7. 循环语句while(!E);中的表达式!E等价于。

A. E!=0

B. E!=1

C. E==

0 D. E==1

8. 设有以下语句,则不是对a数组元素的正确引用,其中0≤i<10。

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

int *p = a;

供选择的答案是:

A. a[p-5]

B. *(&a[i])

C. p[i]

D. *(a+i)

9. 若用数组名作为函数调用的实参,传递给形参的是。

A.数组的首地址

B.数组第一个元素的值

C.数组中全部元素的值

D.数组元素的个数

10.下面四段程序中,不是死循环的程序段是。

──────—───┬───────────────

A.int i=100; k=0;

while (1) do {++k;

{ i=i%100+1;} while (k>=0);

if (i>100) ───────────────

break; s=3379;

} │ while (s);

──────────┤ s++;

( ;;);

──────────┴───────────────

11.在一个文件中定义的全局变量的作用域为。

A.本程序的全部范围;

B.本文件的全部范围;

C.函数内的全部范围;

D.从定义该变量的位置开始到文件结束。

12.下面的程序执行后,文件test.t中的内容是。

#include <>

#include

void fun(char *fname,char *st)

{ FILE *myf;

int i;

myf=fopen(fname,"w");

for(i=0;i

fputc(st[i],myf);

fclose(myf);

}

main()

{ fun("test.t","new world");

fun("test.t","hello,");

}

A)hello, B)new worldhello, C)new world D)hello,world

13.若有以下定义和语句

int a=3,b=4, *q,*w,*p;

p=&a; q=&b; w=q; q=NULL;

则以下选项中错误的语句是。

A *p=a;

B w=p;

C *q=0;

D *p=*w;

14.以下语句中,指针s所指字符串的长度为。

char *s=”\\Hello\tWorld\n”;

A.13 B.12

C.14 D.10

15.若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数。A.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值

16.有以下程序

main()

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

int i,j,k=2;

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

printf(“%d”,m[k][i]);

}

执行后输出结果是

A. 4 5 6

B. 2 5 8

C. 3 6 9

D. 7 8 9

17.下列程序的输出结果为。

#define SQR(x) x*x

main()

{ int a=10, k=2, m=1;

a/=SQR(k+m);

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

}

A. 1

B. 8

C.

2 D. 9

18. 设有以下程序段:

char a[ ]=”study”,*p;

p=a;

printf(“%d”,*(p+5));

执行后的结果为:

A、111

B、0

C、104

D、不确定

19.设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为。

struct student

{ char name[20];

int age;

char sex;

}stu[5], *p;

p=stu;

A. scanf("%s", stu[0].name);

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

C. scanf("%c", &(p->sex));

D. scanf("%d", &stu[0].age);

20.已知static int a[ ]={5,4,3,2,1},*p[ ]={a+3,a+2,a+1,a},**q=p;则表达式:*(p[0]+1) + **(q +2 ) 的值是。

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

二、程序填空题(每空2分,共20分)

1、求1 + 1/2 +1/4 + 1/6 + ··· + 1/100 的值。

#include “”

main( )

{ int i =2 ;

float sum ;

_______________;

while ( i <=100)

{ sum = ____________ ;

__________________ ; }

printf ( “ sum = %f “ , sum);

}

2、以下程序的功能是:从键盘输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

main( )

{ float x[1000], sum = , ave, a ;

int n=0, i;

printf(“Enter mark:\n”);

scanf(“%f”,&a);

while(a>= && n<1000)

{

sum =sum+a;

x[n]=______;

n++;

scanf(" % f ",_______);

}

ave= ________ ;

printf(“Output: \n”);

printf(“ave=%f\n”,ave);

for(i=0; i

if(_________) printf("%f\n”,x[i]);

}

4、将输入的百分制成绩转换成相应的等级。100—90分为A,89—80分为B …… 60分以下为E。main()

{

int score,temp;

char grade;

scanf("%d",&score);

if(score ==100)

temp=9;

else

temp= __________;

switch( ______ )

{

case 9:grade='A'; break;

case 8:grade='B'; break;

case 7:grade='C'; break;

case 6:grade='D'; break;

______________

}

printf ("Score=%d Grade=%c\n", score, grade);

}

三、程序阅读题(每题4分,共20分)

1、以下程序运行后,输出结果是_______。#include ""

main( )

{ char ch='A';

int x=8;

while (ch<='H')

{ printf("%c,",ch);

ch+=2;

}

printf("\n");

do

{ x--;

if (x%3==0) continue;

printf("%d,",x);

} while (x>0);

}

2、以下程序运行后,输出结果是_______。int func(int a, int b)

{ static int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{ int k=4,m=1,n;

n=func(k, m);

printf(“%d,”, n);

n=func(k, m);

printf(“%d ”, n);

}

3、下面程序的运行结果是:。

void swap(int *a,int *b)

{ int *t;

t=a; a=b; b=t;

}

main()

{ int x=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d,%d\n”,*p,*q);

}

4、下面程序的运行结果是:。

#include ""

main()

{ int i,j;

char ch;

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

{ for(j=1;j<20-i;j++) printf(" ");

ch='A';

for(j=1;j<=2*i;j++) printf("%2c",ch++);

printf("\n");

}

}

5、以下程序运行后的输出结果是。int func(int a,int b)

{ return (a+b);

}

main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf("%d\n",r);

}

四、编程题(三题中任选两题,每题10分,共20分,)

1、用递归方法求n!。

2、从键盘输入十个数,按升序排列后输出排序的结果,请按以下要求完成,

要求:1)、必须用主、子函数调用完成程序。

2)、其中十个数的输入及排序后的结果输出在主函数中实现。

3)、排序功能在子函数中实现。

3、从键盘输入一串字符,对其中的的字母,数字及其他字符的数目进行统计,并输出统计结果,方法不限。

A卷参考答案

一.单项选择题(20题,每题2分,共40分)

1. C

2. D

3. D

4. B

5. D

6. D

7. C

8. A

9. A 10. C

12. A 13. C 14. A 15. D 16. C 18. D 19. B 20. A

二、程序填空题(每空2分,共20分)

1、sum=或sum=1; sum + / i , i = i + 2;

2、a、&a、sum/n、x[i]

3、(score-score%10)/10;或score/10 , temp , default: grade='E';

三、程序阅读题(每空2分,共20分)

1、 A,C,E,G,

7,5,4,2,1,

2、8,17

3、3,5

4、 A B

A B C D

A B C D E F

A B C D E F G H

5、15

四、编程题(20分,任选2题,每题10分)

1、main() 结构正确 1分{ int n,t; 变量及函数说明正确 2分

long fact(int);

scanf("%d",&n); 输入正

确 1分

t=fact(n); 调用语句正确 1分printf("\n%d",t);

}

long fact(int n) 函数类型及形参正确 1分

{ long s;

if (n==1)

s=1; 递归公式1正确 1分

else

s=n*fact(n-1); 递归公式2正确2分return s; 返值正确 1分

}

2、main() 结构正确 1分

{ int a[10], i ; 变量定义及函数说明正确 2分

void sort(int b[]);

for(i=0;i<10;i++) 输入正确 1分

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

sort(a); 函数调用及参数传递正确1分printf("\n");

for(i=0;i<10;i++) 输出正确 1分

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

}

void sort( int b[] ) 结构正确 1分

{ int i,j

for(i=0;i<9;i++) 排序正确 3分 for(j=9;j>i;j--)

if(a[j]

t=a[j],a[j]=a[j-1],a[j-1]=t;

}

3、 #include ""

main() 结构正

确 1分

{

char str[100],*st;

int d,x,s,q;

zm=sz=qt=0; 变量定义及初始值正确 1分

gets(str); 输入正

确 1分

for(st=str;*st!='\0';st++) 循环参数参数设置正确 2分

if(*st>='a'&&*st<='z'||*st>='A'&&*st<='Z')

zm=zm+1;

else if(*st>='0'&&*st<='9')

sz++;

else ++qt; 统计正确 3分

printf("ZM=%d, SZ=%d, QT=%d",zm,sz,qt) 输出正确 2分

相关文档
相关文档 最新文档