C程序设计谭浩强第四版试卷试卷及答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-一、单项选择题(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. 7B. 8C. 9D. 25. 设x、y和t均为int型变量,则以下语句:t=x; x=y; y=t;的功能是。
A. 把x和y按从大到小排列B. 把x和y按从小到大排列C. 无确定结果D. 交换x和y中的值6. 下面标识符中,合法的用户标识符为。
A. P#Ad7. 循环语句while(!E);中的表达式!E等价于。
A. E!=0B. E!=1C. E==0D. E==18. 设有以下语句,则不是对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<string.h>void fun(char *fname,char *st){ FILE *myf;int i;myf=fopen(fname,"w");for(i=0;i<strlen(st);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.12C.14 D.1015.若调用一个函数,且此函数中没有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 6B. 2 5 8C. 3 6 9D. 7 8 917.下列程序的输出结果为。
#define SQR(x) x*xmain(){ int a=10, k=2, m=1;a/=SQR(k+m);printf(“%d\n”, a);}A. 1B. 8C. 2D. 918. 设有以下程序段:char a[ ]=”study”,*p;p=a;printf(“%d”,*(p+5));执行后的结果为:A、111B、0C、104D、不确定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<n; 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;elsetemp= __________;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)、必须用主、子函数调用完成程序。