C语言期末考试题库试题及答案.docx
- 文档编号:12753539
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:77
- 大小:39.22KB
C语言期末考试题库试题及答案.docx
《C语言期末考试题库试题及答案.docx》由会员分享,可在线阅读,更多相关《C语言期末考试题库试题及答案.docx(77页珍藏版)》请在冰豆网上搜索。
C语言期末考试题库试题及答案
1【程序填空】
-—-—--—-—————-——--------—--—----————--———-—————---—---—-—
题目:
下面函数为二分法查找key值。
数组中元素已递增排序,
若找到key则返回对应的下标,否则返回—1.
——---——-—--—---————--—--—--—-—--—--—---———-——-——-——-—-—*/
#include〈stdio.h>
fun(inta[],intn,intkey)
{
intlow,high,mid;
low=0;
high=n—1;
/***********SPACE***********/
while(【low〈=high】)
{
mid=(low+high)/2;
/***********SPACE***********/
if(key〈a[mid])【high=mid—1】;
/***********SPACE***********/
elseif(key〉a[mid])【low=mid+1】;
/***********SPACE***********/
else【return(mid)】;
}
return-1;
}
voidmain()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
intb,c;
b=4;
c=fun(a,10,b);
if(c==-1)printf("notfound");
elseprintf("position%d\n",c);
}
/*—---—--—-———————-————--—-—--——-—-—————--—-—----—-----——
2【程序填空】
-———-————---——----—-——-——-——-——--——----—---—---————-———-—
题目:
求n!
,n值由键盘输入.
—-—————-———-----—--———-—-—-—-—-—--——-----—-———-—----———*/
#include〈stdio.h>
voidmain()
{
intn,i;
floatt;
printf("pleaseinputn(n>=0):
");
/***********SPACE***********/
scanf("%d”,【&n】);
i=1;
t=1.0;
/***********SPACE***********/
while(【i<=n】)
/***********SPACE***********/
{【t*=i】
i++;
}
printf("%d!
=%f",n,t);
}
a/*————————-—---———--—--——---——-—-—--——-----—-———-——-—-———
3【程序填空】
----——---—--—--—-—-------———--—----——---——-—--——-——-—-———
题目:
以下程序的功能是统计一个字符串中的字母、数字、空格、
和其它字符的个数。
—-------——-----—-——--——---—-—-——----—————-—————---——---*/
#include”stdio.h”
main()
{
chars1[80];inta[4]={0};
intk;
/***********SPACE***********/
【voidfun(chars[],int[])】;
gets(s1);
/***********SPACE***********/
【fun(s1,a)】;
puts(s1);
for(k=0;k〈4;k++)
printf("%4d”,a[k]);
}
voidfun(chars[],intb[])
{
inti;
for(i=0;s[i]!
='\0';i++)
if('a’<=s[i]&&s[i]〈=’z'||'A'〈=s[i]&&s[i]〈=’Z’)b[0]++;
/***********SPACE***********/
elseif(【’0’〈=s[i]&&s[i]<=’9’】)b[1]++;
/***********SPACE***********/
elseif(【s[i]==32】)b[2]++;
elseb[3]++;
}
/*—----———-—--——-——-———-—--——--———-—-————--————--—----——-
4【程序填空】
-—-———--—-—————-—————-———-—--—---—---—--—-—-——————--——--—
题目:
判断一个给定的整数是否为素数.
—---—-———---—--—--—-—-—--—-——--————--——-—-———-————-----*/
#include〈stdio。
h〉
#include"math。
h"
voidmain()
{intm,i,k;
scanf(”%d",&m);
k=sqrt(m);
/***********SPACE***********/
for(i=2;【i〈=k】;i++)
/***********SPACE***********/
if(【m%i==0】)break;
/***********SPACE***********/
if(【i>k】)
printf(”Yes\n");
else
printf("No\n”);
}
/*-——-——-—-—--——---——-——-————----—--—-----—-—-———--——--—-
5【程序填空】
-———-——-—-—-—-—--——-—-————-——--—--—-----—---——---—--——-—-
题目:
以下程序的功能:
计算并输出500以内最大的10个能被
13或17整除的自然数之和.
—-————-——-———--——-—-——-—---———--———-—-------————-——-—-—*/
#include〈stdio。
h>
/***********SPACE***********/
intfun(【intk】)
{
intm=0,mc=0;
/***********SPACE***********/
while(k>=2&&【mc〈10】)
{
/***********SPACE***********/
if(k%13==0||【k%17==0】)
{m=m+k;mc++;}
k—-;
}
/***********SPACE***********/
【return(m)】;
}
voidmain()
{
printf("%d\n",fun(500));
}
/*-—-————---———-———-—---—----——---—————--—----——-———--—--
6【程序填空】
---—-—-————----—--—-—-——-—--—-—-——--—-—--——-----————--—-—
题目:
输入N个数据存入数组中,将其倒置存放,并打印输出。
————-—-—-—-—————-—------——---—--——-—----—---—---—-—-———*/
#include〈stdio.h>
#defineN10
voidmain()
{inti,t,a[N];
printf(”Enter%dNumbers:
\n",N);
for(i=0;i /***********SPACE***********/ scanf(”%d”,【&a[i]】); /***********SPACE***********/ for(i=0;i<【n/2】;i++) {t=a[i]; /***********SPACE***********/ a[i]=【a[n-i—1]】; a[N—i-1]=t; } for(i=0;i printf("%d",a[i]); } /*-—-—-————-——-——-——-—-—------—-——--——-——---———-—-—----—— 7【程序填空】 —-------------—-———---———---———————-————------—-—----——-- 题目: 输出Fibonacci数列的前15项,要求每行输出5项. Fibonacci数列: 1,1,2,3,5,8,13.。 .。 ....。 .. --———-—--—-—---—-——--—--—-——----—-—————-—-——---——--——-—*/ #include〈stdio。 h〉 voidmain() { /***********SPACE***********/ int【fib】[15],i; fib[0]=1;fib[1]=1; for(i=2;i〈15;i++) /***********SPACE***********/ fib[i]=【fib[i—2]+fib[i—1]】; for(i=0;i〈15;i++) { printf(”%d\t”,fib[i]); /***********SPACE***********/ if(【i%5==4】)printf("\n"); } } /*-———--————-—-—--—-——-————-——--—-——-——------———--—-—-—-- 8【程序填空】 -—-—--—-———-—-————--—-———-—-———-—-—-—-—--—-——-—---—-—-—-— 题目: 以下程序的功能是求100-999之间的水仙花数(水仙花数 是指一个三位数的各个位数字的立方和是这个数本身, 如: 153=1^3+5^3+3^3)。 -------—--——————-—--—----—-————-——---———--—-———-—---—-—*/ #include h〉 intfun(intn) {inti,j,k,m; m=n; /***********SPACE***********/ 【k=0】 for(i=1;i〈4;i++) { /***********SPACE***********/ 【j=m%10】 m=(m—j)/10; k=k+j*j*j; } /***********SPACE***********/ if(k==n)【return (1)】 elsereturn(0);} voidmain() { inti; for(i=100;i<1000;i++) /***********SPACE***********/ if(【fun(i)】==1)printf(”%disok! \n”,i); } /*-—----——---—----—--——————-—-———-———-----—-——-———-—-—-—— 9【程序填空】 -—-—--—-———-—--————--———-—--——————-———--—-—-—--—-—-—---—— 题目: 某次大奖赛,有10个评委打分,下面的程序是对一名参赛者评分,输入10个评 委的打分分数,去掉一个最高分,一个最低分后,求出平均分即为该参赛者的得分. —-——-——-——----————--—-———-——-——----——-———--—-——--—----—*/ #include h> voidmain() { floatmark,max,min,aver=0.0,sum=0。 0; inti; for(i=1;i〈=10;i++) {printf(”输入第%d位评委的打分\n”,i); scanf("%f",&mark); if(i==1) {max=mark; /***********SPACE***********/ 【min=mark】; } elseif(mark min=mark; /***********SPACE***********/ elseif(【mark〉max】) max=mark; /***********SPACE***********/ 【sum+=mark】; } aver=(sum-max-min)/8; printf(”TheAveragescoreis%f\n",aver); } /*-—————--—-——--—-——-————-—-—--——---—-—--———————--———---— 10【程序填空】 —-————----—---———-—-----—--——--——----——--—-—-—--—-———-——- 题目: 输出9*9口诀。 —-——--——-———-—-------——----——--------———-——--—-—--—---—*/ #include〈stdio。 h> voidmain() {inti,j,result; printf(”\n”); /***********SPACE***********/ for(i=1;【i<10】;i++) /***********SPACE***********/ {for(j=1;j<10;【j++】) { result=i*j; /***********SPACE***********/ printf(”%d*%d=%-3d",i,j,【result】); } printf("\n"); } } /*---—--—--——-————-———-—-—---—-——---———---————-—-——-————— 11【程序填空】 -—-—-—-------——---———--——---——--—----———---————-————————- 题目: 用辗转相除法求两个整数的最大公约数、最小公倍数。 —--————-————------———---——————--—-——-———-——-—--——-——--—*/ #include〈stdio。 h> voidmain() {intn,m,nm,r,t; printf(”Enterm,n=? "); scanf(”%d%d”,&m,&n); nm=n*m; if(m〈n) {t=m;m=n;n=t;} r=m%n; /***********SPACE***********/ while(【r! =0】) {m=n; /***********SPACE***********/ 【n=r】 /***********SPACE***********/ 【r=m%n】 } printf(”ThemaxGyshu=%d\n”,n); /***********SPACE***********/ printf("TheminGbshu=%d\n”,【nm/n】); } /*-——-————————-——-——---—-——---——---——-—-—----——-—-——-———— 12【程序填空】 ----——--——------—--—--—-----—---————-——-—--———-——-——---—- 题目: 以下程序的功能是将一个数组中的元素按逆序存放。 ---——--——---—-——-———--—---—————-—-—————-—--—-———--——-—-*/ #defineN7 #include〈stdio。 h〉 voidmain() { staticinta[N]={12,9,16,5,7,2,1},k,s; printf("\ntheoriganalarray: \n"); for(k=0;k〈N;k++) printf("%4d”,a[k]); /***********SPACE***********/ for(k=0;k<【N/2】;k++) { s=a[k]; /***********SPACE***********/ 【a[k]=a[N-k-1]】; /***********SPACE***********/ 【a[N—k—1]=s】; } printf(”\nthechangedarray: \n”); for(k=0;k〈N;k++) /***********SPACE***********/ 【printf】(”%4d”,a[k]); } /*-—-——---—---—--—-—————--—-—--—--—--———-———-——-————--——- 13【程序填空】 --——-----——---—------—-——--—--—----——-—-—---—-———————-—-— 题目: 输入3个整数,输出最大数. --—-----—--——-—-—————--—--—---——-—————--—---—---—----—-*/ #include voidmain() {inta,b,c,max; printf(”inputthreenumbers: ”); scanf(”%d%d%d",&a,&b,&c); /***********SPACE***********/ if(【a>b】) max=a; /***********SPACE***********/ 【else】 max=b; if(max〈c) /***********SPACE***********/ 【max=c】 printf(”max=%d\n”,max); } /*-————---——--—--———-----—-———-——---—-—---————-------——-— 14【程序填空】 ---——-—--——-—--—-—--——--——--————---———---——--—-———--——-—— 题目: 输入三个整数x,y,z,请把这三个数由小到大输出。 -————-——-——----—-----—-—--—----——--—————-—-——--———-—-—-*/ #include h> voidmain() {intx,y,z,t; scanf(”%d%d%d",&x,&y,&z); if(x〉y) /***********SPACE***********/ {【t=x;x=y;y=t;】} if(x>z) /***********SPACE***********/ {【t=z;z=x;x=t;】} if(y>z) /***********SPACE***********/ {【t=y;y=z;z=t;】} printf(”smalltobig: %d%d%d\n",x,y,z); } /*-——-—-——-—-——-——----—------——-——-———--—--——————————--—- 15【程序填空】 —-——--——----——--——-—-——-----——-—--—-—---————-—-——-—----—— 题目: 打印出如下图案(菱形) * *** ***** ******* ***** *** * -----——-——-----——--————--—---——--—-----—-——-————--—————*/ #include voidmain() { inti,j,k; /***********SPACE***********/ for(i=0;【i〈4】;i++) { for(j=0;j〈=4-i;j++) printf(""); /***********SPACE***********/ for(k=1;k<=【2*i+1】;k++) printf(”*”); printf(”\n”); } /***********SPACE***********/ for(【j=0】;j<3;j++) { for(k=0;k printf("”); /***********SPACE***********/ for(k=0;k<【5-2*j】;k++) printf("*”); printf("\n”); } } /*—-------————-—-—-—-—--———--——-—-——-—---——--————-——--——- 16【程序填空】 -———-————-——--——————-—--——-—-——-————-—-———--——--——-—————- 题目: 以下程序的功能: 计算并输出high以内最大的10个素数 之和,high由主函数传给fun函数,若high的值为100, 则函数的值为732. -———-———---—-—----————-—-———----——-----———-——-————---—-*/ #include〈stdio。 h〉 #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试 题库 试题 答案