C程序设计(谭浩强第四版)试卷7 试卷及答案

更新时间:2024-04-07 17:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、单项选择题(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 B.12a C.char D._int 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; C.int k=0; while (1) do {++k;

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

if (i>100) ─────────────── break; D.int s=3379; } │ while (s); ──────────┤ s++; B.for ( ; ;);

──────────┴─────────────── 11.在一个文件中定义的全局变量的作用域为 。 A.本程序的全部范围; B.本文件的全部范围;

C.函数内的全部范围; D.从定义该变量的位置开始到文件结束。 12.下面的程序执行后,文件test.t中的内容是 。 #include #include

void fun(char *fname,char *st) { FILE *myf; int i;

myf=fopen(fname,\); for(i=0;i

{ fun(\.t\,\world\); fun(\.t\,\,\); }

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(\stu[0].name); B. scanf(\p->age); C. scanf(\&(p->sex)); D. scanf(\&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 “stdio.h” main( ) { int i =2 ; float sum ; _______________; while ( i <=100)

{ sum = ____________ ; __________________ ; } printf ( “ sum = %f “ , sum); }

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

{ float x[1000], sum = 0.0, ave, a ; int n=0, i;

printf(“Enter mark:\\n”); scanf(“%f”,&a);

while(a>=0.0 && 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(\n”,x[i]); }

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

int score,temp; char grade;

scanf(\ 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 (\Grade=%c\\n\score, grade); }

三、程序阅读题(每题4分,共20分) 1、以下程序运行后,输出结果是_______。 #include \ main( )

{ char ch='A'; int x=8; while (ch<='H') { printf(\ ch+=2; }

printf(\ do { x--;

if (x%3==0) continue; printf(\ } 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(\ printf(\ } }

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(\ }

四、编程题(三题中任选两题,每题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 11.D 12. A 13. C 14. A 15. D 16. C 17.C 18. D 19. B 20. A 二、程序填空题(每空2分,共20分)

1、sum=1.0或sum=1; sum + 1.0 / i , i = i + 2; 2、a、&a、sum/n、x[i]

3、(score-score)/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(\输入正确 1分 t=fact(n); 调用语句正确 1分 printf(\ }

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(\

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

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(\SZ=%d, QT=%d\输出正确

2分

本文来源:https://www.bwwdw.com/article/rd8r.html

Top