C语言期末考试题库试题及答案.docx
《C语言期末考试题库试题及答案.docx》由会员分享,可在线阅读,更多相关《C语言期末考试题库试题及答案.docx(77页珍藏版)》请在冰豆网上搜索。
![C语言期末考试题库试题及答案.docx](https://file1.bdocx.com/fileroot1/2023-4/19/20e0394a-13b8-4615-8b09-ade2edc3890e/20e0394a-13b8-4615-8b09-ade2edc3890e1.gif)
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;iprintf("%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)。
-------—--——————-—--—----—-————-——---———--—-———-—---—-—*/
#includeh〉
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个评
委的打分分数,去掉一个最高分,一个最低分后,求出平均分即为该参赛者的得分.
—-——-——-——----————--—-———-——-——----——-———--—-——--—----—*/
#includeh>
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(markmin=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,请把这三个数由小到大输出。
-————-——-——----—-----—-—--—----——--—————-—-——--———-—-—-*/
#includeh>
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;kprintf("”);
/***********SPACE***********/
for(k=0;k<【5-2*j】;k++)
printf("*”);
printf("\n”);
}
}
/*—-------————-—-—-—-—--———--——-—-——-—---——--————-——--——-
16【程序填空】
-———-————-——--——————-—--——-—-——-————-—-———--——--——-—————-
题目:
以下程序的功能:
计算并输出high以内最大的10个素数
之和,high由主函数传给fun函数,若high的值为100,
则函数的值为732.
-———-———---—-—----————-—-———----——-----———-——-————---—-*/
#include〈stdio。
h〉
#include