C程序设计试题及答案.docx
- 文档编号:11140201
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:11
- 大小:19.39KB
C程序设计试题及答案.docx
《C程序设计试题及答案.docx》由会员分享,可在线阅读,更多相关《C程序设计试题及答案.docx(11页珍藏版)》请在冰豆网上搜索。
C程序设计试题及答案
《计算机程序设计》课程考试试题
2006年7月
一、(30分)简答题
1.下列代码定义了函数append(),请说明该函数的功能
voidappend(char*s1,char*s2)
{
char*p=NULL,*q=NULL;
for(p=s1;*p!
=‘\0’;p++){;}
for(q=s2;*q!
=‘\0’;q++)
{*p=*q;
p++;
}
*p=‘\0’;
}
2.假设源文件包含下列程序代码。
说明其中的每个变量是全局变量还是局部变量,并指出其作用域。
(注:
语句左边的数字是语句编号)
1.#include
2.
3.floatarea(floatr);
4.floatr;
5.floatperimeter()
6.{floats;
7.s=2*PI*r;
8.returns;
9.}
10.voidMain()
11.{inta[5],b[5],i;
12.i=2;
13for(inti;i<5;i++)
14.{printf(“\n输入半径r:
”);
15.scanf(“%f”,&r);
16.b[i]=perimeter();
17.a[i]=r;
18.}
19.printf(“%f”,area(a[i])-area(a[i+1]));
20.}
21.floatarea(floatr)
22.{
23.returnPI*r*r;
24.}
(答题格式:
第x行说明的变量x是(全局/局部)变量,作用域为:
y1-y2,y3-y4,...。
其中y1、y2、y3、y4是语句行号)
3.举例说明给变量一个值的4类方法。
二、(20分)阅读下列程序,指出程序的输出。
1.下列程序计算数组c的各元素之值
#include
intbelong(intx,int*p,intn);
voidmain()
{inta[10],b[10],c[10];
inti,k,n,m;
FILE*fp;
if(fp=fopen(“”,“rt”))
{printf(“\n不能打开此文件,按任意键退出!
”);
getch();
exit
(1);
}
fscanf(fp,“%d”,&n);
for(i=0;i fscanf(fp,“%d”,&m); for(i=0;i fclose(fp); k=0; for(i=0;i { if(belong(a[i],b,m)) {c[k]=a[i]; k++; } } printf(“\n数组c的元素为: \n”); for(i=0,i } intbelong(inte,int*p,intn) {intj,flag=0; for(j=0;j if(e==*(p+j)){flag=1;break;} returnflag; } 文件data.txt的内容为: 6510481223 875234248912 2.下列程序产生并输出一个整数序列 #include voidfib(intn,int*p) { if(n==1){*p=1;return;} if(n==2){*(p-1)=1;*p=1;return;} fib(n-1,p-1); *p=*(p-1)+*(p-2); return; } voidmain() {inta[12],n,i,temp,*p; printf(“请输入序列中元素个数(至少1个,最多12个): ”); scanf(“%d”,&n); printf(“\n”); p=&a[n-1]; fib(n,p); for(i=0;i<=n/2;i++) {temp=a[i]; a[i]=a[n-i-1]; a[n-i-1]=temp; } for(i=0;i printf(“%d”,a[i]); printf(“\n”); } 运行时与用户的交互为: 请输入序列中元素个数(至少1个,最多12个): 5 三、(10分)下列程序递归求解阶乘函数n! 。 找出其中的错误,并改正之。 #include intmain() { printf("=%ld",fun(4)); } longfun(intn) {n=1; longlRet; if(n=0) { printf("1"); lRet=1; }; else { printf("%d*",n); lRet=n*fun(n-1); } returnlRet; } 四、(10分)用流程图或N-S图描述求解下列问题的算法: 输入n个整数,输出其中的最小者。 五、(30分)编程题 1.任输入三个浮点数,判断它们是否构成三角形的边。 若构成三角形的边,则输出三角形的面积,否则输出错误信息。 (三角形面积的计算机公式为 ,其中a、b、c分别为三条边的长度,s=(a+b+c)/2)。 2.给定结构体类型说明语句如下: structemployerInfo {charnam[10]; charsex; intage; }; 假设在main()中定义了结构体数组employer,并给它输入了值,其中name输入的是汉字: structemployerInfoemployer[20]; 1)编写一个函数,输出所有李姓雇员的信息。 要求该函数的原型为: voidLi-employer(structemployerInfo*p); 即,函数的形参是结构体指针。 2)编写另一个函数,按照年龄(age)从大到小对employer数组排序。 要求该函数的原型为: voidsorted(structemployerInfop[]); 即,其形参是结构体数组。 答案 一、 1、将字符串s2连接到字符串s1后面,形成新的字符串s1。 2、 第3行中的r是局部变量,作用域是3 第4行中的r是全局变量,作用域是4-21(挖掉22-25) 第6行中的s是局部变量,作用域是6-9 第11行中的a,b数组是局部变量,作用域是11-21 第12行中的i是局部变量,作用域是12-21 第12行中的k是局部变量,作用域是12-13,20-21(挖掉14-19) 第14行中的k是局部变量,作用域是14-19 第22行中的r是局部变量,作用域是22-25 3、初始化。 如,intk=0; 赋值操作(包括赋值表达式、赋值语句、自增、自减)。 如,s=0; 输入语句。 如,scanf(“%d”,&x); 形参和实参结合,intf(intx){returnx*x;} voidmain(){floaty=5.1234587;printf(“%f”,f(y));} 二、 1、 数组c的元素为: 5481223 2、 53211 三、 (1)函数没有声明;第一行后加longfun(intn); (2)longfun(intn)函数中多了n=1;语句,删除之; (3)longfun(intn)函数中if(n=0)改为if(n==0); (4)longfun(intn)函数中else前有分号,删除之; (5)主函数没有返回值,加上语句return0; 四、(可根据此程序转换成图) #include voidmain(void) { intn,i,d,k; printf("请输入一个整数n: "); scanf("%d",&n); printf("请输入一个整数: "); scanf("%d",&d); k=d; for(i=1;i { printf("请输入一个整数: "); scanf("%d",&d); if(k>d) k=d; } printf("最小的数是: %d\n",k); } 五、 #include #include voidmain(void) { floata,b,c; doubles,area; printf("请输入三个实数: "); scanf("%f%f%f",&a,&b,&c); if((a+b>c)&&(a+c>b)&&(b+c>a)&&a>0&&b>0&&c>0) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("面积等于: %lf\n",area); } else{ printf("您输入的三个实数不是三角形的边长! \n"); exit(0); } } (1) (2) #include structemployerInfo {charnam[10]; charsex; intage; }; voidLi_employer(structemployerInfo*p); voidsorted(structemployerInfop[]); voidmain(void) { structemployerInfoemployer[20],*p=employer; inti; for(i=0;i<=19;i++) { printf("\n请输入一个员工的记录: \n"); scanf("%s%c%d",employer[i].nam,&employer[i].sex,&employer[i].age); } Li_employer(p); sorted(p); } voidLi_employer(structemployerInfo*p) { inti; charn[3]="李"; for(i=0;i<=19;i++) { if((p+i)->nam[0]==n[0]&&(p+i)->nam[1]==n[1]) printf("%s%c%d\n",(p+i)->nam,(p+i)->sex,(p+i)->age); } } voidsorted(structemployerInfop[]) { inti,j; structemployerInfok; for(i=0;i<=18;i++) for(j=i+1;j<=19;j++) if(p[i].age { k=p[i]; p[i]=p[j]; p[j]=k; } for(i=0;i<=19;i++) { printf("%s%c%d\n",p[i].nam,p[i].sex,p[i].age); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 试题 答案