c语言机考题目例题.docx
《c语言机考题目例题.docx》由会员分享,可在线阅读,更多相关《c语言机考题目例题.docx(13页珍藏版)》请在冰豆网上搜索。
c语言机考题目例题
机考题目
1.根据以下题目编写一个程序。
设本金为x,存入银行1年,年利率为y,1年到期后将本金和利息再存入银行1年,如此存n年后,得到的总金额为z,要求从键盘输入本金x、年利率y、存款年数n的值,输入时要有提示,然后计算总金额z的值,输出本金x、年利率y、存款年数n和总金额z的值,浮点型数据输出时包含4位小数。
#include
#include
intmain()
{doublex,y,z;
intn;
printf("请输入本金、1年利率、累计存款年数,用空格分开:
\n");
scanf("%lf%lf%d",&x,&y,&n);
z=x*pow(1+y,n);
printf("本金:
%.4f\n",x);
printf("1年利率:
%.4f\n",y);
printf("累计存款年数:
%d\n",n);
printf("总金额:
%.4f\n",z);
return0;
}
2.百分制成绩与等级成绩的转换规则为:
90~100分为A等;80~89分为B等;70~79分为C等;60~69分为D等;0~59分为E等。
编写程序,要求如下:
1)输入一百分制成绩(0~100的整数),输出用A、B、C、D、E表示的成绩等级
2)如果输入的分数不在0~100内,输出“输入错误”。
使用if语句:
#include
intmain()
{
inta;
printf("请输入你的成绩:
\n");
scanf("%d",&a);
if(a>=90&&a<=100)
printf("A\n");
else
{if(a>=80&&a<=89)
printf("B\n");
else
{if(a>=70&&a<=79)
printf("C\n");
else
{if(a>=60&&a<=69)
printf("D\n");
elseprintf("E\n");
}}}
return0;
}
使用switch语句的程序:
#include
intmain()
{
intgrade;
printf("请输入你的成绩:
\n");
scanf("%d",&grade);
switch(grade/10)
{case0:
case1:
case2:
case3:
case4:
case5:
printf("E\n");break;
case6:
printf("D\n");break;
case7:
printf("C\n");break;
case8:
printf("B\n");break;
case9:
printf("A\n");break;
default:
printf("A\n");break;
}
return0;
3.}用公式
求
的近似值,直到发现某一项的绝对值小于10-6为止,该项不累计加(书本p131,例5.7)
#include
#include
intmain()
{intsign=1;
doublepi=0,n=1,term=1;
while(fabs(term)>=1e-6)
{pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return0;
}
4.编写程序输出所有的水仙花数,水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数,如:
407=4×4×4+0×0×0+7×7×7。
#include
intmain()
{inti,x,y,z;//i表示一个三位正整数,x、y、z表示其个、十、百位数
for(i=100;i<999;i++)//对所有的三位正整数判断是否是水仙花
{x=i/100;//求百位数
y=i/10%10;//求十位数
z=i%10;//求个位数
if(i==x*x*x+y*y*y+z*z*z)//判断水仙花数的条件
printf("%d\n",i);//输出水仙花数
}
return0;
}
5.求100~200间的全部素数(书本p137,例5.10)。
#include
#include
intmain()
{intn,i,k,m=0;
for(n=100;n<=200;n=n+1)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)
{printf(“%d,",n);
m=m+1;
}
if(m%10==0)printf(“\n”);
}
return0;
}
6.编写程序,完成输入任意10个整数给一个数组,然后使数组中的值按逆序存放,最后输出。
#include
intmain()
{inti,a[10];
for(i=0;i<=9;i++)
scanf(“%d”,&a[i]);
for(i=9;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return0;
}
7.输入任意10个整数,用冒泡法将它们从小到大排序后输出(书本p147,例6.3)。
#include
intmain()
{inta[6];
inti,j,t;
printf(“输入6个整数:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf(“从小到大排序后为:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return0;
}
8.有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号(书本p153,例6.5,数据要求从键盘输入)。
#include
intmain()
{
inti,j,row=0,colum=0,max;
inta[3][4];
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);
return0;
}
9.输入一个字符串,统计该字符串包含的字母、数字、空格和其它字符的个数并输出。
#include
intmain()
{charc;
inti=0,j=0,k=0,l=0;
while((c=getchar())!
='\n')
{if(c>='A'&&c<='Z')i++;
elseif(c>='a'&&c<='z')j++;
elseif(c=='')k++;
elsel++;
}
printf("大写字母数:
%d\n",i);
printf("小写字母数:
%d\n",j);
printf("空格数:
%d\n",k);
printf("其它字母数:
%d\n",l);
return0;
}
10.编写程序,完成以下要求:
1)首先定义2个字符数组c1、c2,长度自定;
2)输入一行字符赋给c1;
3)不使用测字符串长度函数strlen,测量c1中字符串的长度,并输出;
4)不使用字符串复制函数strcpy,将c1中字符串复制到c2中,并输出c2中的字符串。
#include
intmain()
{
charc1[5];
charc2[5];
inti=0;
printf("请输入一行字符:
\n");
gets(c1);
for(i=0;c1[i]!
='\0';i++);
printf("%d\n",i);
for(i=0;i<=4;i++)
c2[i]=c1[i];
puts(c2);
return0;
}
11.编写程序,完成以下要求:
(辅导书第7章习题3,p77)
1)定义一个函数,其功能为:
对于n,判断是否是素数,如果是,函数返回值为1,否则返回值为0(即用返回值1或0来表示是否是素数)。
2)编写主函数,先完成输入n,然后调用上面的函数,并根据获得的函数值判断n是否是素数,即如果得到的函数值为1,输出“是素数”,否则输出“不是素数”。
#include
intmain()
{
intprime(int);
intn;
printf("请输入一个数:
");
scanf("%d",&n);
if(prime(n))
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
return0;
}
intprime(intn)
{
inta=1,i;
for(i=2;iif(n%i==0)
a=0;
return(a);
}
12.编写程序,要求如下:
1)定义一个函数,求一个数组的最大值和最小值。
2)在主函数中完成从键盘输入一组整型数据(5个)赋给一个数组,调用上述函数求它们的最大值和最小值,获得结果后输出。
#include
intmain()
{
inta[5];
intmax(intx,inty);
intmin(intx,inty);
inti=0,m,n;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
m=a[0];
for(i=0;i<5;i++)
if(max(m,a[i])>m)
m=max(m,a[i]);
printf("最大值:
%d\n",m);
n=a[0];
for(i=0;i<5;i++)
if(min(n,a[i])n=min(n,a[i]);
printf("最小值:
%d\n",n);
return0;
}
intmax(intx,inty)
{
return(x>y?
x:
y);
}
intmin(intx,inty)
{
return(xx:
y);
}
13.编写程序,要求如下:
1)定义一个函数,函数原型为:
voidf(int*s1,int*s2,intn),用来交换两个整型数组所有对应元素的值,其中n表示要交换的元素个数。
2)在主函数中完成输入2组数(每组5个)分别赋给2个整型数组,调用上述函数交换这两个整型数组所有对应元素的值,然后分别输出。
#include
voidmain()
{voidf(int*s1,int*s2,intn);
inta[5],b[5],i,*s1,*s2;
printf("请输入5个整数给a[5]:
\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("请输入5个整数给b[5]:
\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
s1=a;
s2=b;
f(s1,s2,5);
printf("s1为:
\n");
for(i=0;i<5;i++)
printf("%d",*s1++);
printf("\n");
printf("s2为:
\n");
for(i=0;i<5;i++)
printf("%d",*s2++);
printf("\n");}
voidf(int*s1,int*s2,intn)
{inti,t;
for(i=0;i{t=*s1;*s1=*s2;*s2=t;*s1++;*s2++;
}
}
14.编写程序,要求如下:
(辅导书第8章习题1,p99)
1)定义一个函数,函数原型为:
voidswap(int*p1,int*p2,),用来交换两个整型变量的值。
2)在主函数中完成输入3个整数分别赋给3个整型变量n1、n2、n3,通过调用上述swap函数交换这3个整型变量的值,使得n1<=n2<=n3,最后依次输出n1、n2、n3。
#include
intmain()
{
voidswap(int*p1,int*p2);
intn1,n2,n3;
int*p1,*p2,*p3;
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2)swap(p1,p2);
if(n1>n3)swap(p1,p3);
if(n2>n3)swap(p2,p3);
printf("Now,theorderis:
%d,%d,%d\n",n1,n2,n3);
return0;
}
voidswap(int*p1,int*p2)
{
intp;
p=*p1;*p1=*p2;*p2=p;
}