c语言一些机试题.docx
《c语言一些机试题.docx》由会员分享,可在线阅读,更多相关《c语言一些机试题.docx(69页珍藏版)》请在冰点文库上搜索。
![c语言一些机试题.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/6e7213e7-09de-491a-9d9b-f4f042e3f440/6e7213e7-09de-491a-9d9b-f4f042e3f4401.gif)
c语言一些机试题
C语言上机考试题(第一套)
1.编写函数fun,它的功能是:
计算并输出下列级数和:
例如,当n=10时,函数值为:
0.909091
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
doublefun(intn)
{
float
…………
}
main()/*主函数*/
{clrscr();
printf(″%f\n″,fun(10));
}
解答:
#include
#include
doublefun(intn)
{
doubles=0;
inti;
for(i=1;is+=1.0/(i*(i+1));
returns;
}
main()/*主函数*/
{
system("cls");
printf("%f\n",fun(10));
}
说明:
主函数中的clrscr()函数为TC下使用的清屏函数,在VC中不能使用,在本题中可以直接删除或改为
system("cls")
2.在[10000,20000]范围内考察个位数字是7的素数,问:
(1)这样的素数有多少个?
(2)其中最大的一个等于几?
解答:
#include
intmain(void)
{
intmax,num=0;
inti,j;
for(i=10000;i<20001;i++)
{
for(j=2;j
if(i%j==0)
break;
if(j==i&&i%10==7)
{
num++;
max=i;
}
}
printf("num=%d,max=%d\n",num,max);
return0;
}
3.编写程序,从键盘输入一年份,判断该年份是否为闰年。
解答:
#include
intmain(void)
{
intyear;
printf("pleaseinputtheyear:
\n");
scanf("%d",&year);
if((year%400==0)||(year%4==0&&year%100!
=0))
printf("%disaleapyear!
",year);
else
printf("%disnotaleapyear!
",year);
return0;
}
C语言上机考试题(第二套)
1.编写函数fun,它的功能是:
计算并输出下列级数和:
例如,当n=10时,函数值为:
0.909091
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
doublefun(intn)
{
…………
}
main()/*主函数*/
{clrscr();
printf(″%f\n″,fun(10));
}
解答:
略(见第一套试题1)
2.回文数是指正读和反读都一样的自然数。
例如,8,121,5445这三个数都是回文数。
求:
(1)[1,1000]之内既是回文数,又是素数的最大整数。
(2)[1,1000]以内既是回文数,又是素数的整数有多少个。
解答:
#include
inthuiwen(intn)
{
intp,m,flag=0;
ints=0;
m=n;
do
{
p=m%10;
s=s*10+p;
m=m/10;
}while(m);
if(s==n)
flag=1;
returnflag;
}
intsushu(intn)
{
inti,flag=0;
for(i=2;iif(n%i==0)
break;
if(i==n)
flag=1;
returnflag;
}
intmain(void)
{
inti,max,num=0;
for(i=1;i<1001;i++)
{
if(huiwen(i)&&sushu(i))
{
max=i;
num++;
}
}
printf("num=%d,max=%d\n",num,max);
return0;
}
3.编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。
比如输入:
”Howareyou”,有3
个单词和2个空格。
解答:
#include
intmain(void)
{
charline[81];
intword=0,blank=0,flag=0;
inti=0;
gets(line);
while(line[i]!
='\0')
{
if(line[i]=='')
{
blank++;
if(flag)
flag=0;
}
else
if(!
flag)
{
word++;
flag=1;
}
i++;
}
printf("word=%d,blank=%d\n",word,blank);
return0;
}
C语言上机考试题(第三套)
1.编写函数fun,它的功能是:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中
Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如:
当t=1000时,函数值为:
1597。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
intfun(intt)
{
…………
}
main()/*主函数*/
{intn;
clrscr();
n=1000;
printf(″n=%d,f=%d\n″,n,fun(n));
}
解答:
#include
#include
#include
intfun(intt)
{
intf1=0,f2=1,temp;
while(f2{
temp=f1;
f1=f2;
f2=temp+f1;
}
returnf2;
}
main()/*主函数*/
{
intn;
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
说明:
主函数中的clrscr()应删除,或者改为sys(“cls”)
2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和.
解答:
#include
intmain(void)
{
intarray[3][3];
inti,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf("%d",&array[i][j]);
if(i==j)
sum+=array[i][j]*array[i][j];
}
printf("sum=%d\n",sum);
return0;
}
3.编程:
删除字符串中的数字字符。
解答:
#include
intmain(void)
{
charstring[81];
inti=0,j;
gets(string);
while(string[i]!
='\0')
{
if(string[i]>='0'&&string[i]<='9')
{
j=i;
do
{
string[j]=string[j+1];
j++;
}while(string[j]!
='\0');
}
else
i++;
}
printf("%s\n",string);
return0;
}
C语言上机考试题(第四套)
1.编写函数fun,它的功能是:
求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作
为函数值返回。
例如若n为1000时,函数值应为:
s=153.909064。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
doublefun(intn)
{
}
main()/*主函数*/
{clrscr();
printf(″s=%f\n″,fun(1000));
}
解答:
#include
#include
#include
doublefun(intn)
{
inti;
doubles,sum=0;
for(i=1;i<1000;i++)
{
if(i%3==0&&i%7==0)
sum+=i;
}
s=sqrt(sum);
returns;
}
main()/*主函数*/
{
printf("s=%f\n",fun(1000));
}
2.编程求出两个非零正整数的最大公约数.
解答:
#include
intmain(void)
{
intm,n,t;
printf("pleaseinputtwopositiveinteger:
\n");
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m{
t=m;m=n;n=t;
}
do{
t=m%n;
m=n;
n=t;
}while(t);
printf("themaxcommondivisoris%d\n",m);
}
else
printf("Error!
\n");
return0;
}
3.请编写程序:
根据以下公式求π(要求满足精度0.0005)的近似值:
π/2=1+1/3+(1*2)/(3*5)+
(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))
解答:
#include
intmain(void)
{
doublesum=1;
doublep=1,q=1;
intn=1;
while(p/q>5e-4)
{
p*=n;
q*=(2*n+1);
sum+=p/q;
n++;
}
printf("pi=%f",2*sum);
return0;
}
C语言上机考试题(第五套)
1.现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
intfun(intarray[3][3])
{
…………
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};
clrscr();
for(i=0;i<3;j++)
{for(j=0;j<3;j++)
printf(″%7d″,array[i][j]);
printf(″\n″);
}
fun(array);
printf(“convertedarray:
\n”);
for(I=0;I<3;I++)
{for(j=0;j<3;j++)
printf(“%7d”,array[I][j]);
printf(“\n”);
}
}
解答:
#include
#include
intfun(intarray[3][3])
{
inttemp,i,j;
for(i=0;i<3;i++)
{
for(j=0;j
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("convertedarray:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
2.编写程序,计算s=1-+-+……+-
解答:
#include
intmain(void)
{
doubles=0;
inti,flag=1;
for(i=1;i<101;i++)
{
s+=1.0/i*flag;
flag=-flag;
}
printf("s=%f\n",s);
return0;
}
3.编写程序,求2~100中的所有的亲密素数对的个数。
亲密素数:
如果x是素数,则x+2也是素数。
解答:
#include
intsushu(intn)
{
inti,flag=0;
for(i=2;iif(n%i==0)
break;
if(i==n)
flag=1;
returnflag;
}
intmain(void)
{
inti,num=0;
for(i=2;i<101;i++)
if(sushu(i)&&sushu(i+2))
{
printf("%d,%d\n",i,i+2);
num++;
}
printf("num=%d\n",num);
return0;
}
C语言上机考试题(第六套)
1.从键盘入一个整数k(2≦k≦10000),输出它的所有质因子(即所有为素数的因子)。
例如,若
输入整数:
2310,则应输出:
2、3、5、7、11。
解答:
#include
intsushu(intn)
{
inti,flag=0;
for(i=2;iif(n%i==0)
break;
if(i==n)
flag=1;
returnflag;
}
intmain(void)
{
inti,k;
printf("pleaseinputainteger:
(2<=k<=10000)\n");
scanf("%d",&k);
for(i=2;i{
if(k%i==0&&sushu(i))
printf("%d\t",i);
}
return0;
}
2.编写函数fun,它的功能是:
计算正整数n所有因子(1和n除外)之和作为函数值返回。
例如:
n=120时,函数值为239
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
intfun(intn)
{
……………
}
main()/*主函数*/
{clrscr();
printf(″%d\n″,fun(120));
}
解答:
#include
#include
intfun(intn)
{
inti,sum=0;
for(i=2;iif(n%i==0)
sum+=i;
returnsum;
}
main()/*主函数*/
{
printf("%d\n",fun(120));
}
3.编写程序,求s=1/(1*2)+1/(2*3)+……+1/(n*(n+1)
解答:
#include
intmain(void)
{
intn,i;
doubles=0;
printf("pleaseinputainteger:
\n");
scanf("%d",&n);
for(i=1;is+=1.0/(i*(i+1));
printf("s=%f\n",s);
return0;
}
C语言上机考试题(第七套)
1.编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
doublefun(doublex,intn)
{
……………
}
main()
{clrscr();
printf(″%f\n″,fun(0.3,10));
}
解答:
#include
#include
#include
doublefun(doublex,intn)
{
doubles=1,p=1;
inti;
for(i=1;i{
p*=x/i;
s+=p;
}
returns;
}
main()
{
printf("%f\n",fun(0.3,10));
}
2.编写程序,求出并输出所有的“水仙花数”。
所谓水仙花数,是指一个三位数,其各位数字的立方之
和等于该数。
解答:
#include
intmain(void)
{
inta,b,c,i;
for(i=100;i<1000;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\t",i);
}
return0;
}
3.给出三角形的三边a,b,c,求三角形的面积。
解答:
#include
#include
intmain(void)
{
doublea,b,c,p,s;
printf("pleaseinputthreenumbers:
(a,b,c)\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("a=%.2f,b=%.2f,c=%.2fs=%.2f\n",a,b,c,s);
}
else
printf("Error!
\n");
return0;
}
C语言上机考试题(第八套)
1.编写函数fun,函数的功能是:
根据以下公式计算s,计算结果作为函数值返回:
n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+…+N)
例如:
若n的值为11时,则函数的值为:
1.833333
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
floatfun(intn)
{
…………
}
main()
{intn;
floats;
clrscr()
printf(″\nPleaseenterN:
″);
scanf(″%d″,&n);
s=fun(n);
printf(″theresultis:
%f\n″,s);
}
解答:
#include
#include
#include
floatfun(intn)
{
inti;
floats=0,p=0;
for(i=1;i{
p+=i;
s+=1.0/p;
}
returns;
}
main()
{
intn;
floats;
printf("\nPleaseenterN:
");
scanf("%d",&n);
s=fun(n);
printf("theresultis:
%f\n",s);
}
2.编程求:
一球从100米高