C程序设计(谭浩强第四版)试卷7试卷及答案[1]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C程序设计(谭浩强第四版)试卷7试卷及答案(word版可编辑修改) 编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C程序设计(谭浩强第四版)试卷7试卷及答案(word版可编辑修改))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为C程序设计(谭浩强第四版)试卷7试卷及答案(word版可编辑修改)的全部内容。
一、单项选择题(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。
cha
r 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=i%100+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 <stdio.h>
#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.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 “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〈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;
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 "stdio.h”
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 "stdio。
h"
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
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]〈ave
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分
pri ntf(”\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分prin tf(”\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]<a[j—1])
t=a[j],a[j]=a[j-1],a[j—1]=t;
}
3、#include ”stdio.h"
main() 结构正
确 1分
{
char str[100],*st;
int d,x,s,q;
zm=sz=qt=0; 变量定义及初始值正确 1分
gets(str);输入正
确 1分
C程序设计(谭浩强第四版)试卷7试卷及答案(word版可编辑修改) 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分。