} }
3. 以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。 递归公式如下: age(1)=10
age(n)=age(n-1)+2 (n>1) #include
int c;
if (n==1) c=10; else c= (5) ; return c; }
4. 以下程序的功能是判断输入的年份是否是闰年。 void main(void) {
int year,yes;
scanf(\
if (year@0==0) yes=1; else if ( (6) ) yes=1; else (7) ; if(yes) printf(\ else printf(\ printf(\ }
5. 以下程序实现函数调用。 # include
{ **s= b[ 1][ 1]; } main ( )
{ int a[ ][3]={1,3,5,7,9,11},(9); p =( int *) malloc (sizeof ( int )); fut ((10));
printf( \}
三、改错题(共1题,每题10分,共10分)
说明:程序有错误的地方已经用下划线”_______”标出,只要把正确的答案写在相应的位置即可。 【含有错误的源程序】
《C语言程序设计》试卷 第 13 页 共 25 页
#include
#include
int search_or(char str[][80],int n[],char substr[],int loc[]) /* (1) */ { char s1[],s2[],comp[]; /* (2) */ int i,j,k=0,t,len_s1,len_s2; for(i=0;substr[i]!=? ?;i++); substr[i]=?\\0?;
strcpy(s1,substr); strcpy(s2,substr+i+1); len_s1=strlen(s1);len_s2=strlen(s2); for(i=0;i for(j=0;str[i][j]!=?\\0?;j++) { strncpy(comp,&str[i][j],len_s1); comp[len_s1]=?\\0?; if(strcmp(s1,comp)= =0){t=1;break;} strncpy(comp,&str[i][j],len_s2); comp[len_s2]=?\\0?; if(strcmp(s2,comp)= =0){t=1;break;} } if(t)loc[++k]=i; /* (3) */ } return k; } main() { char lines[4][80]={“Missing Idaho boy”,” Missing soldier rescued”, ” Teachers union pushers for $40K starting pay”, ” Poverty killing Niger?s boy” }; char cond[80]={Missing boy}; /* (4) */ int result[4],i=0,n; n=search_or(lines,4,cond,result); for(i=0;i 五、编程题(共2题,第1题10分,第2题20分,共30分) 1.用?选择法?对任意数组排序。 2. 有一磁盘文件emp.dat, 存放职工记录,记录结构如下: struct emp{char no[6]; //工号 char name[8];//姓名 char gender;//性别 (?0?:女,?1?:男) } 编写程序,统计男女人数及百分比。 《C语言程序设计》试卷 第 14 页 共 25 页 C语言程序设计试卷(4) 一、选择题(共10题,每题2分,共计20分) 1. 一个C语言程序是由( ① )。 A. 一个主程序和若干子程序组成 B. 若干函数组成 C. 若干过程组成 D. 若干子程序组成 2. 已知:char *s=\则s所指的字符串的长度为( ① ). A. 18 B. 16 C. 13 D. 14 3. 若有条件表达林(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是( ① )。 A. (exp==0) B. (exp!=0) C. exp==1 D. (exp!=1) 4. 已知有语句 scanf(“%d%d”, &a, &b); 要使整型变量 a=6, b=8 运行时,屏幕上应看到输入: A. a=6,b=8 B. a=6 b=8 C. 6,8 D. 6 8 5. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( ① )。 A. 地址传递 B. 单向值传递 C. 双向值传递。即由实参传给形参,再由形参传回给实参 D. 由用户指定传递方式 6. 以下正确的函数形式是( ① )。 A. double fun1(int x,int y) { z=x+y; return z; } B. fun1(int x, y) { int z; return z; } C. fun1(x,y) { int x,y; double z; z=x+y; 《C语言程序设计》试卷 第 15 页 共 25 页 return z; } D. double fun1(int x, int y) { double z; z=x+y; return z; } 7. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( ① )。 A. float型 B. int型 C. long型 D. double型 8. 以下程序有语法性错误,有关错误原因的正确说法是( ① )。 void main(void) { int k; void prt_char(); …… k=prt_char(G); …… } A. 语句void prt_char();有错,它是函数调用语句,不能用void说明。 B. 变量名不能使用大写字母。 C. 函数原型说明和函数调用语句之间有矛盾。 D. 函数名不能使用下划线。 9. 执行以下程序段后,变量x和y的值是( ① )。 #define EXCH(a,b) {int t; t=a;a=b;b=t;} void main(void) { float x=5.2 y=9.6; EXCH(x,y); ... } A. 10和5 B. 9.6和5.2 C. 出错 D. 9和5 10. 若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确是( ① )。 struct pupil { char name[20]; int age; int sex; }pup[5],*p; A. scanf(\ 《C语言程序设计》试卷 第 16 页 共 25 页
相关推荐: