《c语言程序设计》谭浩强浙师大练习题.docx
- 文档编号:2076980
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:8
- 大小:14.88KB
《c语言程序设计》谭浩强浙师大练习题.docx
《《c语言程序设计》谭浩强浙师大练习题.docx》由会员分享,可在线阅读,更多相关《《c语言程序设计》谭浩强浙师大练习题.docx(8页珍藏版)》请在冰点文库上搜索。
浙江师范大学《C语言程序设计》考试卷
考试形式 笔试(闭卷) 使用学生全校08级理科(非行知)专业
考试时间 120 分钟 出卷时间2009年 5 月 31 日
【说明】
考生应将全部答案都写在答题纸上,否则作无效处理。
试题1~7为程序选择填空题,为每个空格挑选出一个正确答案写在答题纸上。
试题8~9为程序设计题。
试题1(每小题2分,共10分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,选择一个正确答案.
【程序说明】
求多项式的值,直到最后一项的绝对值小于10-4.
【运行示例】
sum = 0.785448
【程序】
#include
#include<
(1) >
void main()
{
int i=1,flag=1;
double item,
(2);
do{
item= (3);
sum=sum+item;
flag=(4);
}while( (5));
printf("sum=%.2f\n",sum);
}
【供选择的答案】
(1) A. math.h B. string.h
C. ctype.h D. stdlib.h
(2) A. s B. sum
C. sum=0 D. sum=1
(3) A. 1/2*i-1 B. 1/(2*i-1)
C. flag/(2*i-1) D. (double)flag/(2*i-1)
(4) A. 0 B. 1
C. -1 D. -flag
(5) A.item>=0.0001 B.fabs(item)>=0.0001
C.item<0.0001 D.fabs(item)<0.0001
试题2(每小题2分,共10分)
阅读下列程序说明和程序,在每小题提供的若干可选答案中,选择一个正确答案.
【程序说明】
输入一个正整数n,然后输入n个单精度实数,用冒泡法将这些实数从低到高排序后输出。
【运行示例】
Entern:
5
Enter5floats:
75.27389.567.342-985.41
Aftersorted:
-98.005.4167.3475.2889.50
【程序】
#include
void main()
{ int n,i,j;
floattemp,a[100];
printf("Entern(n>0):
");
while(scanf("%d",&n),(6));//输入正整数n
printf("Enter%dfloats:
",n);
for(i=0;i scanf("%f",(7)); for(i=0;i for(____(8);(9);j--) if((10)){ temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } printf("Afersorted: "); for(i=0;i printf("%.2f",a[i]); printf("\n"); } 【供选择的答案】 (6) A. n>0 B. n<0 C. n>=0 D. n<=0 (7) A. a B. a[i] C. &a[i] D. &a (8) A. j=0 B. j=i C. j=n-1 D. j=n-i (9) A. j>i B. j>0 C. j (10)A.a[i]>a[j] B.a[j-1]>a[j] C.a[j]>a[j+1] D.a[j-1]>a[j+1] 试题3(每小题2分,共8分) 阅读下列程序说明和程序,在每小题提供的若干可选答案中,选择一个正确答案. 【程序说明】 输入十六进制整数形式的字符串,调用函数htod将它转换成十进制整数,然后输出该整数. 【运行示例】 Enterhexadecimalstring: 4f Deciamalintegeris: 79 【程序】 #include intctoi(charc) { if(c>='0'&&c<='9') returnc-‘0’; elseif(c>='A'&&c<='Z') return____(11); elseif(c>='a'&&c<='z') return(12); elsereturn0; } inthtod(char*h) { inti,d=0; for(i=0;h[i]! ='\0';i++) d=____(13); returnd; } void main() { intdec; charhex[10]; printf("Enterhexadecimalstring: "); ______(14)__ ___; dec=htod(hex); printf("Decimalintegeris: %d\n",dec); } 【供选择的答案】 (11)A. c-'A’ B. c+10 C. c-'F’ D. c–'A’+10 (12)A. c–'a’ B. c+10 C. c–'f’ D. c–'a’+10 (13)A.d+ctoi(h[i]) B.d*16+ctoi(h[i]) C.d*10+ctoi(h[i]) D.d+ctoi(h[i])*16 (14)A. hex=getchar() B. scanf("%c",hex) C. scanf("%s",hex) D. scanf("%s",&hex) 试题4(每小题2分,共8分) 【程序说明】 数组x[7]的初值为{1,2,3,4,5,6,7},经调用函数f后,数组x的元素被循环左移3位,输出移位后数组x的各元素,屏幕上的输出结果为: 4567123 【程序】 #include voidf(inta[],intn,intk) { inti,j,t; for(i=0;i (15) ; for((16)) a[j-1]=a[j]; (17); } } voidmain() { inti,x[7]={1,2,3,4,5,6,7}; (18); for(i=0;i<7;i++) printf("%4d",x[i]); printf("\n"); } 【供选择的答案】 (15)[A]t=a[i] [B]t=a[k] [C]t=a[j] [D]t=a[0] (16)[A]j=i;j [C]j=1;j (17)[A]a[n]=t [B]a[n-1]=a[i] [C]a[n-1]=t [D]a[n]=a[i] (18)[A]f(x,7,3) [B]f(x,7,5) [C]f(x,3,7) [D]f(x,5,7) 试题5(每小题2分,共8分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include voidf1(intx,inty); voidf2(int*x,inty); voidf3(intx,int*y); voidf4(int*x,int*y); voidmain() { inta=1,b=2; f1(a,b); printf(“a=%d,b=%d\n”,a,b); a=1, b=2; f2(&a,b); printf(“a=%d,b=%d\n”,a,b); a=1, b=2; f3(a,&b); printf(“a=%d,b=%d\n”,a,b); a=1, b=2; f4(&a,&b); printf(“a=%d,b=%d\n”,a,b); } voidf1(intx,inty) { intt; t=x; x=y; y=t; } voidf2(int*x,inty) { intt; t=*x; *x=y; y=t; } voidf3(intx,int*y) { intt; t=x; x=*y; *y=t; } voidf4(int*x,int*y) { intt; t=*x;*x=*y;*y=t; } (19)程序运行时,第一行输出 。 A.a=1,b=2 B.a=2,b=1 C.a=1,b=1 D.a=2,b=2 (20)程序运行时,第二行输出 。 A.a=1,b=2 B.a=2,b=1 C.a=1,b=1 D.a=2,b=2 (21)程序运行时,第三行输出 。 A.a=1,b=2 B.a=2,b=1 C.a=1,b=1 D.a=2,b=2 (22)程序运行时,第四行输出 。 A.a=1,b=2 B.a=2,b=1 C.a=1,b=1 D.a=2,b=2 试题6(每小题2分,共8分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include inta=0; voidfun() { inta=1;//第4行 printf("%d,",a++); } voidmain() { inti; for(i=1;i<=2;i++) fun(); printf("%d",a); } (23)程序运行结果是 。 A.1,2,3 B.1,2,0 C.1,1,0 D.0,1,2 (24)其它代码不变,将源程序第4行改为“staticinta=1;”,程序运行结果是 。 A.1,2,3 B.1,2,0 C.1,1,0 D.0,1,2 (25)其它代码不变,将源程序第4行改为“a=1;”,程序运行结果是 。 A.1,1,2 B.1,2,0 C.1,1,0 D.0,1,2 (26)其它代码不变,将源程序第4行改为“;”,程序运行结果是 。 A.1,1,2 B.1,2,0 C.1,1,0 D.0,1,2 试题7(每小题2分,共8分) 阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。 【程序】 #include #include structstudent{ intnum; charname[20]; charsex; }; voidmain() { structstudents[4],*p; char*sname[]={"Zhao","Qian","Sun","Li"}; charcsex[]={'M','F'}; inti; for(i=0;i<4;i++){ s[i].num=i+1; strcpy(s[i].name,sname[i]); s[i].sex=csex[s[i].num%2]; } p=s; //第18行 printf("(%s,%c)\n",p->name,p->sex); } (27)运行程序,输出 。 A.(Zhao,F) B.(Qian,M) C.(Zhao,M) D.(Qian,M) (28)为得到与(27)题相同的运行结果,程序的第18行可改写为 。 A.*p=s B.p=&s C.p=s[0] D.p=&s[0] (29)将程序的第18行改为“p=&s[1]”,运行程序,输出 。 A.(Zhao,M) B.(Qian,M) C.(Zhao,F) D.(Qian,F) (30)将程序的第18行改为“p=s+2”,运行程序,输出 。 A.(Qian,M) B.(Sun,M) C.(Qian,F) D.(Sun,F) 试题8程序设计(12分) 【编程要求】 输入一个整数n,计算并输出它的各位数字之和。 如输入3427,则它的各位数字之和为3+4+2+7,即16. 试题9程序设计(28分) 【编程要求】 (1)用递归方式定义函数fib(n),功能是计算菲波那契数列1,1,2,3,5,8,13,…的第n项,其中,数列第1项和第2项均等于1,从第三项开始的各项等于前两项之和。 函数返回值类型是int。 (8分) (2)定义函数fact(n),其功能是计算整数n的阶乘,即n! =1*2*3*……*n,函数返回值类型是double。 (8分) (3)定义主函数main(),要求输入整数n、计算下列算式的值,并将计算结果按”%.2f”的格式写入当前文件夹下的文件”result.dat”中: 其中,该算式的第i项,分子是菲波那契数列的第i项为分子,分母是阶乘i! 。 要求分别调用在 (1)和 (2)所定义的递归函数fib()和fact()计算分子和分母。 (12分)) 2008-2009学年第二学期 浙江师范大学计算机基础(C语言)期末考试A卷 答案与评分标准 第一部分: 选择题(2*30=60分) ACDDB DCCAB DDBC DBCA ADCB CBAD ADBD 第二部分: 编程题(12+28分) 7.(12) #include voidmain() { intn,s=0; --1分 printf("Entern: "); scanf("%d",&n); --1分 if(n<0)n=-n; --2分//或#include while(n! =0){ --2分 s+=n%10; --2分 n/=10; --2分 } printf("s=%d\n",s); --1分 } 8.(28) intfib(intn)--1分 { if(n==1||n==2)return1; --3分 elsereturnfib(n-1)+fib(n-2); --4分 } doublefact(intn) --1分 {if(n==1)return1; --3分 elsereturnn*fact(n-1); --4分 } 或者 doublefact(intn) --1分 { doubler=1; --1分 inti; --1分 for(i=1;i<=n;i++) --2分 r=r*i; --2分 returnr; --1分 } (3)#include voidmain() { FILE*fp; --1分 inti,n; --1分 doubles=0; --1分 fp=fopen(“result.dat”,”w”);--1分 scanf(“%d”,&n); --1分 for(i=1;i<=n;i++) --1分 s=s+fib(i)/fact(i);--调用函数2分,累加1分 fprintf(fp,“%.2f”,s); --1分 fclose(fp); --1分 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序设计 语言程序设计 谭浩强浙 师大 练习题