20学年第二学期c语言期末考题及答案.docx
- 文档编号:17096879
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:11
- 大小:22.64KB
20学年第二学期c语言期末考题及答案.docx
《20学年第二学期c语言期末考题及答案.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及答案.docx(11页珍藏版)》请在冰点文库上搜索。
20学年第二学期c语言期末考题及答案
xxx大学
xxxx学年第一学期期末
《C程序设计》
考试A卷
班级______________学号_________
姓名______________成绩_________
班号学号姓名成绩
《C程序设计》期末考试卷
注意事项:
1、此卷为闭卷考试,120分钟完成;
2、笔试成绩为卷面成绩*0.7。
题目:
一、阅读下列程序并回答问题(20分,每题5分)
1、若有以下程序
#include
voidmain()
{
chara[20];
scanf(“%s”,a);
printf(“%s\n”,a);
}
从键盘上输入19个字符:
oneworldonedream,则输出为D。
A.oneworldonedreamB.oneworldoneC.oneworldD.one
2、有一函数关系如下:
x-1x<0
y=xx=0
x+1x>0
下列程序能够正确表示上述关系的________________C_________。
A.y=x+1;B.y=x-1;
if(x>=0)if(x!
=0)
if(x==0)y=x;if(x>0)y=x+1;
elsey=x-1;elsey=x;
C.if(x<=0)D.y=x;
if(x<0)y=x-1;if(x<=0)
elsey=x;if(x<0)y=x-1;
elsey=x+1;elsey=x+1;
3、请写出以下程序的输出结果:
____a=12,b=9,c=3_____________。
#include
voidswap(int*ptr1,int*ptr2)
{
inti;
i=*ptr1;
*ptr1=*ptr2;
*ptr2=i;
}
voidexchange(int*q1,int*q2,int*q3)
{
if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
}
voidmain()
{
inta,b,c;
a=9,b=3,c=12;
exchange(&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
4、若有以下程序
#include
intsum(intk);
voidmain()
{
ints,i;
for(i=1;i<=10;i++)s=sum(i);
printf(“s=%d\n”,s);
}
intsum(intk)
{
staticintx=0;
x+=k;
return(x);
}
(1)上述程序的功能是什么?
运行结果是什么?
(2)若将sum()函数中的变量说明语句staticintx=0;改为intx=0;,程序的运行结果是又什么?
为什么?
(1).计算1+2+……+10的值
s=55
(2)
s=10
二、程序填空题(20分,每题5分)
1、下面程序是整元换零钱问题。
把1元兑换成1角、2角和5角的零钱,打印所有的不同的换法。
#include
voidmain()
{
intx,y,z,n;
_n=0_____;
for(x=0;x<=10;x++)
for(y=0;y<=5;y++)
for(z=0;z<=2;z++)
if(_x+y*2+z*5==10__________)
{
n++;
printf("换法%2d:
1角%2d张+2角%d张+5角%d张\n",n,x,y,z);
}
}
2、以下函数利用插入排序方法对含有n个元素的数组x[]进行排序。
voidinsert(intx[],intn)
{
inti,j;
inttemp;
for(i=1;i { temp=x[i]; j=i-1; while(j>=0&&temp { x[j+1]=x[j]; j--; } x[j+1]=temp; } } 3、下面程序显示从3起小于100的所有双素数(双素数: 如果p和q都是素数且q=p+2,则p/q称为双素数,例如3/5,5/7都是双素数)。 #include"stdio.h" intprime(intm); intmain(intargc,char*argv[]) { intp,q; for(p=3;p<100;p+=2) { q=p+2; if(prime(p)&&prime(q))printf("%d/%d\n",p,q); } return0; } intprime(intm) { inti; for(i=2;i<=m/2;i++) if(m%i==0)break; if(i>m/2)return1; elsereturn0; } 4、下面的函数strcat()实现将字符串str2连接到字符串str1的功能。 请在程序的空白处填入一条语句或一个表达式。 char*strcat(char*str1,char*str2)//此函数类型为字符指针型,函数名为srrcat { char*t=str1; while(*str1)str1++; while(*str2) { *str1=*str2; str1++; str2++; } *str1=‘\0’; return(t); } 三、编程题(60分) 1、输入一个正整数n(1 10分 a[i][j]=i*n+j+1(0≤i≤n-1,0≤j≤n-1) 例如n=3时: 123147 A=456转置成B=258 789369 #include voidmain() { intn; printf(“请输入一个正整数\n”); scanf(“%d”,&n); inta[6][6],b[6][6],i,j; for(i=0;i for(j=0;j a[i][j]=i*n+j+1; for(i=0;i for(j=0;j b[i][j]=a[j][i]; printf(“得到的方阵为\n”); for(i=0;i { for(j=0;j printf(“%-5d”,b[i][j]); printf(“\n”); } } 2、请设计函数doubleexp(doublex),利用e =1+x+x2/2! +x3/3! +x4/4! +…,计算ex的近似值,要求误差小于10-6。 20分 #include #include doubleexp(doublex); voidmain() { doublex; printf(“请输入未知数x的值\n”); scanf(“%lf”,&x); printf(“近似值为%lf\n”,exp(x)); } doubleexp(doublex) { inti,t=1; doublesum=1,y=1; for(i=1;y>=0.000006;i++) { t=t*i; y=pow(x,i)/t; sum=sum+y; } returnsum; } 3、Fibonacci数列A={1,1,2,3,5,8,…}有如下性质: 30分 a0=a1=1 ai=ai-1+ai-2i>1 对于给定的n,另外有一个由n个元素组成的数列X={x0,x1,…,xn-1},该数列中各元素的值为: xi=ai/ai+1i=0,1,2,…,n-1,请将X中的元素按由小到大排序,排序用选择法或冒泡法,排序后的数列X输出到文本文件x.txt中,X中的各元素仍以分数形式表示。 例如,当n=5时,排序前的X={1/1,1/2,2/3,3/5,5/8},排序后X={1/2,3/5,5/8,2/3,1/1}。 #include #include #definen10 structfenshu { intm1; intm2; }; voidmain() { inti,j,k,a[n+1]={1,1}; for(i=2;i a[i]=a[i-1]+a[i-2]; floatx[n]; fenshuy[n],temp; for(i=0;i { x[i]=a[i]/a[i+1]; y[i].m1=a[i]; y[i].m2=a[i+1]; } floatt; for(i=0;i { k=i; for(j=i+1;j if(x[j] k=j; if(k! =i) {t=x[i];x[i]=x[k];x[k]=t; temp=y[i];y[i]=y[k];y[k]=temp;} } FILE*fp; if((fp=fopen(“x.txt”,”w”))==NULL) { printf(“打开文件出错\n”); exit(0); } for(i=0;i fprintf(fp,”%d/%d,”,y[i].m1,y[i].m2); fclose(fp); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20 学年 第二 学期 语言 期末 考题 答案