c上机答案.docx
《c上机答案.docx》由会员分享,可在线阅读,更多相关《c上机答案.docx(17页珍藏版)》请在冰豆网上搜索。
c上机答案
部分参考答案
2.5选择结构
1程序的编写与调试
(2)
#include
main()
{
intx,y;
scanf("%d",&x);
if(x<0&&x>-5)y=x;
elseif(x==0)y=x-1;
elseif(x<10&&x>0)y=x+1;
elsey=100;
printf("y=%d",y);
}
(3)
#include
main()
{
intc,t,sum;
scanf("%d%d",&c,&t);
if(c==t){
if(c>=100)sum=c*80;
elsesum=c*90;
}
else{
if(c>t){
if(t>=100)sum=t*80+(c-t)*60;
elsesum=t*90+(c-t)*60;
}
else{
if(c>=100)sum=c*80+(t-c)*60;
elsesum=c*90+(t-c)*60;
}
}
printf("需要付的金额是%d\n",sum);
}
(4)
#include
main()
{
intage;
scanf("%d",&age);
switch(age){
case2:
case3:
printf("age:
%d,enterLowerclass.",age);break;
case4:
printf("age:
%d,enterMiddleclass.",age);break;
case5:
case6:
printf("age:
%d,enterHigherclass.",age);break;
default:
printf("error");
}
}
三、选做题
(1)
#include
main()
{
intx,y;
scanf("%d",&x);
y=x*x;
if(y%100==x)printf("%dyes%d*%d=%d",x,x,x,y);
elseprintf("%dno%d*%d=%d",x,x,x,y);
}
(2)
#include
main()
{
intx;
printf("----------------------------------------------\n");
printf("主菜单\n");
printf("1.添加记录2.显示记录\n");
printf("3.读取记录4.保存记录\n");
printf("----------------------------------------------\n");
printf("请选择1-4,0退出:
");
scanf("%d",&x);
switch(x){
case1:
printf("你选择了1\n");break;
case2:
printf("你选择了2\n");break;
case3:
printf("你选择了3\n");break;
case4:
printf("你选择了4\n");break;
case0:
break;
default:
printf("你选择了有误!
\n");break;
}
}
(3)
#include
main()
{
intcock,hen,chick;
for(cock=0;cock<=20;cock++)
for(hen=0;hen<=33;hen++){
chick=100-cock-hen;
if(cock*5+hen*3+chick/3==100&&chick%3==0)
printf("cock=%dhen=%dchick=%d\n",cock,hen,chick);
}
}
2.6循环结构程序设计
1程序的编写与调试
(1)#include
main()
{
inti,n;
floatt,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{t=1.0/i;
s=s+t;}
printf("s=%f\n",s);
}
(3)#include
main()
{
intt=1,n;
inti;
printf("PleaseinputN:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
t=t*2;
printf("2^%d=%d",n,t);
}
(4)
#include
main()
{
intn,i,j;
printf("PleaseinputN:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)printf("");
for(j=1;j<=i;j++)printf("%d",j);
for(j=i-1;j>=1;j--)printf("%d",j);
printf("\n");
}
for(i=n-1;i>=1;i--)
{
for(j=1;j<=n-i;j++)printf("");
for(j=1;j<=i;j++)printf("%d",j);
for(j=i-1;j>=1;j--)printf("%d",j);
printf("\n");
}
}
三、选做题
(1)
#include
hcf(intm,intn){
intr;
if(mr=m%n;
while(r!
=0){
m=n;
n=r;
r=m%n;}
returnn;
}
main(){
printf("%d",hcf(15,25));}
(3)
#include
main(){
intx;
for(x=1;x<=36;x++)
if((x+x+1+x+3+x+6+x+10+x+15+x+21)==105)
printf("这7个号码分别是:
%d,%d,%d,%d,%d,%d,%d\n",x,x+1,x+3,x+6,x+10,x+15,x+21);
}
(5)
程序1:
#include
#include
#include
main(){
intmagic;
intguess;
srand(time(NULL));
magic=rand()%100+1;
printf("Pleaseguessamagicnumber:
");
scanf("%d",&guess);
if(guess>magic){printf("Wrong!
Toohigh!
\n");}
elseif(guessToolow!
\n");}
else{
printf("Right!
\n");
printf("Thenumberis:
%d\n",magic);}
}
程序2:
#include
#include
#include
main(){
intmagic;
intguess;
intn=0;
srand(time(NULL));
magic=rand()%100+1;
do{
printf("Pleaseguessamagicnumber:
");
scanf("%d",&guess);
if(guess>magic){printf("Wrong!
Toohigh!
\n");}
if(guessToolow!
\n");}
n++;
}while(guess!
=magic);
printf("Right!
你猜了%d次\n",n);
printf("Thenumberis:
%d\n",magic);
}
程序3:
#include
#include
#include
main(){
intmagic;
intguess;
inti;
srand(time(NULL));
magic=rand()%100+1;
for(i=1;i<=10;i++){
printf("Pleaseguessamagicnumber:
");
scanf("%d",&guess);
if(guess>magic){printf("Wrong!
Toohigh!
\n");}
elseif(guessToolow!
\n");}
else{
printf("Right!
\n");
printf("Thenumberis:
%d\n",magic);
break;}
}
printf("游戏结束!
你已经猜了10次了!
");
}
2.7数组
(一)
(1)
#include
main()
{
inti,n=10,a[10],av=0;
for(i=0;iscanf("%d",&a[i]);
for(i=0;iprintf("%d",a[i]);
if((i+1)%3==0)printf("\n");
}
for(i=0;i!
=n;i++)
av+=a[i];
printf("av=%f\n",av/10.0);
}
三、选做题
#defineN50
#include
main()
{
inti,a[N],n[7];
for(i=0;ifor(i=0;i<7;i++)n[i]=0;
for(i=0;iswitch(a[i]/10){
case0:
case1:
case2:
case3:
n[0]++;break;
case4:
n[1]++;break;
case5:
n[2]++;break;
case6:
n[3]++;break;
case7:
n[4]++;break;
case8:
n[5]++;break;
case9:
case10:
n[6]++;break;
}
}
printf("0--39%d\n",n[0]);
printf("40--49%d\n",n[1]);
printf("50--59%d\n",n[2]);
printf("60--69%d\n",n[3]);
printf("70--79%d\n",n[4]);
printf("80--89%d\n",n[5]);
printf("90--100%d\n",n[6]);
}
2.8数组
(二)
2编程
(2)
#include
#defineN4
#defineM5
main()
{
inti,j,k,a[N][M],max,maxj,flag;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{max=a[i][0];
maxj=0;
for(j=0;jif(a[i][j]>max){max=a[i][j];maxj=j;}
flag=1;
for(k=0;kif(max>a[k][maxj]){flag=0;continue;}
if(flag==1)
{printf("该数组的鞍点是a[%d][%d]=%d\n",i,maxj,max);
break;}
}
if(!
flag)printf("不存在鞍点");
}
(3)
#include
voidmain()
{
inta[16][16],i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++){
i=i-1;
j=j+1;
if((i<1)&&(j>n)){
i=i+2;j=j-1;}
else{
if(i<1)i=n;
if(j>n)j=1;
}
if(a[i][j]==0)a[i][j]=k;
else{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");}
}
(4)
#defineN4
#defineM5
#include
main()
{
inta[N][M],i,j,k,t;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
printf("每行排序,保证右边的元素大于左边的元素\n");
for(i=0;ifor(j=0;jfor(k=0;kif(a[i][k]>a[i][k+1]){
t=a[i][k];
a[i][k]=a[i][k+1];
a[i][k+1]=t;
}
for(i=0;ifor(j=0;jprintf("\n");
}
printf("每列排序,保证下边的元素大于上边的元素\n");
for(i=0;ifor(j=0;jfor(k=0;kif(a[k][i]>a[k+1][i]){
t=a[k][i];
a[k][i]=a[k+1][i];
a[k+1][i]=t;
}
for(i=0;ifor(j=0;jprintf("\n");
}
(5)
#defineN4
#include
main()
{
intscore[N],count[10],i,j;
for(i=0;i<10;i++)count[i]=0;
for(i=0;ifor(i=0;iswitch(score[i]){
case1:
count[0]++;break;
case2:
count[1]++;break;
case3:
count[2]++;break;
case4:
count[3]++;break;
case5:
count[4]++;break;
case6:
count[5]++;break;
case7:
count[6]++;break;
case8:
count[7]++;break;
case9:
count[8]++;break;
case10:
count[9]++;break;
}
}
printf("GradeCountHistogram\n");
for(i=1;i<=10;i++){
printf("%2d%2d",i,count[i-1]);
for(j=1;j<=count[i-1];j++)printf("*");
printf("\n");
}
}
2.9函数
(一)
二
1
(1)
#include
#include
main()
{
inta=0,k;
floatav,n=0;
for(k=2;k<=10;k++)
if(fun(k)){a+=k;n++;}
av=a/n;
printf("av=%f\n",av);
}
intfun(intn)
{
inti,y=1;
for(i=2;iif(n%i==0){y=0;break;}
returny;
}
(2)
#include
intf(intn)
{
inta,b,c;
a=n/100;
b=n/10%10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)return1;
elsereturn0;
}
main()
{
intx,num=0;
for(x=999;x>=100;x--)
{
if(f(x))num++;
if(num==2)printf("%d\n",x);
}
}
(3)
#include
intf(intk)
{
inti;
printf("%d=",k);
while(k!
=1)
{
for(i=2;iif(k%i==0){printf("%d*",i);break;}
if(i==k)printf("%d",i);
k=k/i;
}
}
main()
{
f(126);
}
2.10函数
(二)
二
2.
doublep(intn,doublex)
{
doublez;
if(n==0)z=1;
elseif(n==1)z=x;
elsez=((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x)/n;
returnz;
}
三、
1.
①&n
②m%10
③m/10
④m!
=0
⑤r(m)
2.
inta(intm,intn)
{
intz;
if(n==0)z=n+1;
if(m==0)z=a(m-1,1);
elseif(n!
=0)z=a(m-1,a(m,n-1));
returnz;
}