《C程序设计》期末考试卷A

  • 格式:doc
  • 大小:52.50 KB
  • 文档页数:21

浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师《C程序设计》期末考试卷A一、语言基础(每题2分,共26分)1.C程序的基本组成单位是什么?2.若x的当前值为5,执行语句“if(x=3) x=x+5后,x的值是多少?3.计算表达式“4/5*(float)3+(float)3*4/5”的值。

4.函数f定义如下,则执行语句“m=f(5);”后,m的值应为。

int f(int k){If(k==0||k==1) return 1;Else return f(k-1)+f(k-2);}5.写出下列程序段的输出结果。

char c,k;c='b';k=4;页脚内容1switch(c){case 'a':k=1;case 'b':k=2;case 'c':k=3;}6.定义int x,y,z;x=y=z;执行语句z=--x&&y++;后,x,y,z的值分别是多少?7.符号“a”和’a’的区别是。

8.在C语言程序设计中,正确的标识符是由组成的。

9.若fp 已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen( );。

浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师10.在循环中,continue 语句与break 语句的区别是:continue 语句是,break 语句是。

11.若在程序中用到“putchar”,应在程序开头写上包含命令,若在程序中用到“strlen()”函数时,应在程序开头写上包含命令。

页脚内容212.设y为int型变量,请写出描述“y是奇数”的表达式。

13.若int x=5;while (x>0)printf(“%d”,x--);的循环次数为。

二、程序填空(每空2分,共22分)程序1:[程序说明]输入三角形的三条边a,b,c,求三角形的面积。

已知三角形面积计算公式为:t=05*(a+b+c),s=sqrt(t*(t-a)*(t-b)*(t-c))[程序]#include"math.h"#include"stdio.h"main(){float a,b,c,d,t,s;printf("请输入三角形的三条边:");scanf("%f,%f,%f",&a,&b,&c);if _____________________________页脚内容3页脚内容4printf("%f%f%f 不能构成三角形!",a,b,c);else { t=(a+b+c)/2;s=_______________________________printf("a=%7.2f,b=%7.2f,c=%7.2f,area=%7.2f\n",a,b,c,s); } }程序2:[程序说明]输入x 、n 后输出下列算式的值。

12342!3!4!!(1)n n n x x x x x ||||--+-+⋯+-浙江理工大学 20 /20 学年 第 学期 试卷考试时间 年 月 日 专业班级 学号 姓名 成绩 阅卷老师[程序]void main(){float s,t,x;int i,n;scanf("%f%d",&x,&n);___________________________for(i=1;i<=n;i++){___________________ s+=t;}_______________________}程序3:[程序说明]运行时输入1个文本文件的文件名,删除该文件中所有空格符后,存入到文件temp.dat 中。

[程序]#include<stdio.h>#include<stdlib.h>void main(){FILE *f1,*f2;char ch,filename[46];_______________________________if((f1=fopen(filename,"r"))==NULL)页脚内容5{ printf("%s不能打开!\n",filename);exit(0); }f2=fopen("temp.dat","w");while((ch=fgetc(f1))!=EOF)if(ch!=' ')_______________________________fclose(f1);fclose(f2);}程序4:#include<stdio.h>int p ( int k, int a[ ]);{int m,i,c=0;浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师页脚内容6for(m=2;m<=k;m++){for(i=2;i<=m;i++)if(!(m%i))break;if(i==m)a[c++]=m;}return c;}#define MAXN 15main(){int i,m,s[MAXN];m=p(11,s);for(i=0;i<m;i++)printf("%4d\t",s[i]);页脚内容7printf("\n");}该程序的输出结果是;函数int p(int k,int a[])的功能是。

程序5;[程序说明]该程序完成的功能是求1+2+3+……+10 的累加和,并进行累加和的输出打印。

变量sum 是存放累加值的。

#include <stdio.h>main()浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师{i=1,sum=0;for(;i<=10;){sum+=i;页脚内容8}printf("%d\n",sum);}三、程序阅读(每题6分,共24分)程序1:int d=1;fun(int p){static int d=5;d+=p;printf("%d",d);return (d);}main(){页脚内容9int a=3;printf("%d\n",fun(a+fun(d)));}浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师程序2:main(){int a[]={2,4,6,8,10};int y=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}页脚内容10程序3:main(){static int a[][3]={9,7,5,3,1,2,4,6,8};int i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j)s1=s1+a[i][j];if(i+j==2)s2=s2+a[i][j];}printf("%d\n%d\n",s1,s2);}页脚内容11浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师程序4:struct node{int num;struct node *next;};int fun(struct node *h){int k=0;struct node *h,*q=NULL;p=p->next;while(p){if ((q!=NULL)&&(p->next))k+=p->num;q=p;p=p->next;}页脚内容12return k;}写出执行语句"printf("%d\n",fun(head));"的输出结果。

其中,head为node类型的全程量;在执行上述printf语句前,以head为指针的链表各节点的当前值如下所示:Head-->9__-->7__-->5__-->6__->3NULL四、程序设计1.输入m和n(m>=n>=0)后,计算下列表达式的值并输出。

m !/(n!(m-n)!)要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。

(本题8分)页脚内容13浙江理工大学20 /20 学年第学期试卷考试时间年月日专业班级学号姓名成绩阅卷老师2、由命令行输入两个正整数,找出其间所有的素数,并顺序将每一个素数用语句“printf(p,”%6d”,n)”,写入到新建的文件result.dat,要求文件名result.dat由命令行输入。

编写程序xuprime.c实现上述功能。

程序编译后产生的可执行文件名为xuprime,则运行命令行,例如:c>xuprime 2 100 result.dat就能找出其间的所有素数2,3,5,7,11……97,并顺序保存在文件result.dat。

(本题10分)3、输入n个学生的姓名和3门课成绩,计算每个学生3门课的平均成绩,然后按学生3门课的平均成绩从高分到低分输出每个学生的姓名、3门课成绩几平均成绩。

(10分)提示:可定义学生数据类型为struct student{ char name[9];int a[3];float v;}temp, *s;要求:根据输入的n,动态申请内存(开堆),保存学生数据。

页脚内容14《C程序设计A》期末考试卷参考答案一、语言基础1.函数2.83. 2.44.85.36.0,1,07.“a”是字符串常量,‘a’是字符常量8.英文字母,下划线,数字9.“d1.dat”, “rb”10.结束本次循环,结束循环11.#include <stdio.h> #include <string.h>12.y%2==113.5二、程序填空1.(a+b<=c||a+c<=b||b+c<=a)页脚内容152.sqrt(t*(t-a)*(t-b)*(t-c));3.s=0;t=-1;4.t=-t*x/i;5.printf(“%f”,s);6.gets(filename);7.fputc(f2,ch);8. 2 3 5 7 119.该函数的功能是找出2~k(包括k)之间的所有素数,存放于a所指的数组,返回值为素数的个数。