C语言复习资料编程.docx
《C语言复习资料编程.docx》由会员分享,可在线阅读,更多相关《C语言复习资料编程.docx(49页珍藏版)》请在冰豆网上搜索。
C语言复习资料编程
顺序结构:
1.将华氏温度转换为摄氏温度和绝对温度的公式分别为:
c=
(f-32)(摄氏温度)
k=273.16+c(绝对温度)
请编程序:
当给出f时,求其相应摄氏温度和绝对温度。
#include
voidmain()
{
floatff,fk,fc;
scanf("%f",&ff);
fc=5.0/9*(ff-32);
fk=273.16+fc;
printf("c=%f,k=%f\n",fc,fk);
}_
2.输入3个实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值。
#include
#include
voidmain()
{
floatfa,fb,fc,fsum,fave,fqsum,fq;
scanf("%f%f%f",&fa,&fb,&fc);
fsum=fa+fb+fc;
fave=fsum/3;
fqsum=fa*fa+fb*fb+fc*fc;
fq=sqrt(fqsum);
printf("sum=%f,average=%f,quadrticsum=%f,squareroot=%f\n",fsum,fave,fqsum,fq);
}
3.输入一个3位整数,求出该数每个位上的数字之和。
如123,每个位上的数字和就是1+2+3=6。
#include
voidmain()
{
intia,ib,ic,in,isum;
scanf("%d",&in);
ia=in/100;
ib=in%100/10;
ic=in%10;
isum=ia+ib+ic;
printf("sum=%d\n",isum);
}
4.编写一个程序,实现:
用户输入一个长方体的长、宽、高,程序计算输出它的体积及正、侧、顶三个面的面积。
#include
voidmain()
{
intilength,iwidth,iheight,ivolume,iarea1,iarea2,iarea3;
scanf("%d,%d,%d",&ilength,&iwidth,&iheight);
ivolume=ilength*iwidth*iheight;
iarea1=ilength*iheight;
iarea2=iwidth*iheight;
iarea3=ilength*iwidth;
printf("volume=%d,area=%d,%d,%d\n",ivolume,iarea1,iarea2,iarea3);
}_
课本:
p52五
实验指导书:
p144-7
4.
#include
voidmain()
{
charc1='D';
intx=6;
floaty=2.5132;
unsignedz=45678;
printf("c1=%c,x=%d,y=%f,z=%u\n",c1,x,y,z);
printf("c1=%4d,x=%-3d,y=%7.2f,z=%8d\n",c1,x,y,z);
printf("x=%-#5o,%#5x\n",x,x);
printf("c1=%-3c%-3c%d\n",c1,c1+32,c1+32);
}
5.
#include
voidmain()
{
intix,iy;
charcx;
scanf("%o,%x,%c",&ix,&iy,&cx);
printf("%d,%d,%d",ix,iy,cx);
}_
6.
#include
#definePI3.1415926
voidmain()
{
floatfr,fcir,fvolume;
scanf("%f",&fr);
fcir=2*PI*fr;
fvolume=4.0/3*PI*fr*fr*fr;
printf("perimeter=%.2f,volume=%.2f\n",fcir,fvolume);
}_
7.
#include
voidmain()
{
intim,in,isum,idif,ipro,iquo,irem;
scanf("%d%d",&im,&in);
isum=im+in;
idif=im-in;
ipro=im*in;
iquo=im/in;
irem=im%in;printf("%d+%d=%d,%d-%d=%d,%d*%d=%d,%d/%d=%d,%d%%%d=%d",im,in,isum,im,in,idif,im,in,ipro,im,in,iquo,im,in,irem);
}_
选择结构:
1.输入一个字符,判断它如果是小写字母输出其对应大写字母;如果是大写字母输出其对应小写字母;如果是数字输出数字本身;如果是空格,输出“space”;如果不是上述情况,输出“other”。
#include
voidmain()
{
charc;
scanf("%c",&c);
if(c>='a'&&c<='z')
printf("%c",c-32);
elseif(c>='A'&&c<='Z')
printf("%c",c+32);
elseif(c>='0'&&c<='9')
printf("%c",c);
elseif(c=='')
printf("space");
else
printf("other");
}_
2.有三个数a、b、c,由键盘输入,输出其中最大的数。
(1)
#include
voidmain()
{
intia,ib,ic,imax;
scanf("%d%d%d",&ia,&ib,&ic);
imax=ia;
if(ib>imax)
imax=ib;
if(ic>imax)
imax=ic;
printf("max=%d\n",imax);
}_
(2)
#include
voidmain()
{
intia,ib,ic,id,imax;
scanf("%d%d%d",&ia,&ib,&ic);
id=(ia>ib)?
ia:
ib;
imax=(id>ic)?
id:
ic;
printf("max=%d\n",imax);
}_
3.输入一个数,判断它能否被3或者被5整除,如至少能被这两个数中的一个整除则将此数打印出来,否则不打印,编出程序。
include
voidmain()
{
intia;
scanf("%d",&ia);
if(ia%3==0||ia%5==0)
printf("%d\n",ia);
}_
4.读入1到7之间的某个数,输出表示一星期中相应的某一天的单词:
Monday、Tuesday等等,用switch语句做。
P67
5.给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
(1)#include
voidmain()
{intigrade;
scanf("%d",&igrade);
if(igrade>=0&&igrade<=100)
{
if(igrade>=90)
printf("A");
elseif(igrade>=80)
printf("B");
elseif(igrade>=70)
printf("C");
elseif(igrade>=60)
printf("D");
else
printf("E");
}
else
printf("error");
}
(2)
#include
voidmain()
{intigrade;
scanf("%d",&igrade);
if(igrade>=0&&igrade<=100)
{
switch(igrade/10)
{
case10:
case9:
printf("A");break;
case8:
printf("B");break;
case7:
printf("C");break;
case6:
printf("D");break;
default:
printf("E");
}
}
else
printf("error");
}
6.有一函数
请编程序计算y的值(x的值由键盘输入)。
#include
voidmain()
{intix;
floatfy;
scanf("%d",&ix);
if(ix>=0&&ix<15)
fy=40.0/15*ix+10;
elseif(ix>=15&&ix<30)
fy=50;
elseif(ix>=30&&ix<45)
fy=50-10.0/15*(ix-30);
elseif(ix>=45&&ix<75)
fy=40+20.0/30*(ix-45);
elseif(ix>=75&&ix<90)
fy=60-10.0/15*(ix-75);
else
fy=-1;
if(fy==-1)
printf("meaningless");
else
printf("y=%f",fy);
}
7.给出一个不多于5位的正整数,要求:
①求出它是几位数②分别打印出每一位数字③按逆序打印出各位数字。
#include
voidmain()
{longix;
intia,ib,ic,id,ie;
scanf("%ld",&ix);
if(ix>=0&&ix<100000)
{
ia=ix/10000;
ib=ix%10000/1000;
ic=ix%1000/100;
id=ix%100/10;
ie=ix%10;
if(ia!
=0)
{
printf("5\n");
printf("%d,%d,%d,%d,%d\n",ia,ib,ic,id,ie);
printf("%d%d%d%d%d\n",ie,id,ic,ib,ia);
}
elseif(ib!
=0)
{
printf("4\n");
printf("%d,%d,%d,%d\n",ib,ic,id,ie);
printf("%d%d%d%d\n",ie,id,ic,ib);
}
elseif(ic!
=0)
{
printf("3\n");
printf("%d,%d,%d\n",ic,id,ie);
printf("%d%d%d\n",ie,id,ic);
}
elseif(id!
=0)
{
printf("2\n");
printf("%d,%d\n",id,ie);
printf("%d%d\n",ie,id);
}
else
{printf("1\n");
printf("%d\n",ie);
printf("%d",ie);
}
}
else
printf("error");
}
8.输入三个整数,按由小到大的顺序输出。
参考课本p56例3.2
9.给一个不多于5位的正整数,要求求出它是几位数,并输出所求出的位数。
参考第7题
10.编写程序,判断某年是否为闰年。
闰年的条件:
(1).如果年份可以被100整除,又能被400整除时为闰年。
(2).如果年份不能被100整除,但可以被4整除时为闰年。
参考课本p66例3.9
11.编写一程序计算如下函数值,
F(x)=-2x(x<0)
0(x=0)
5x+9(x>0)
#include
voidmain()
{floatfx,fy;
scanf("%f",&fx);
if(fx<0)
fy=-2*fx;
elseif(fx==0)
fy=0;
else
fy=5*fx+9;
printf("f(x)=%f",fy);
}
课本:
p891,2
实验指导书:
p204
#include
voidmain()
{longix;
intia,ib,ic,id,ie;
scanf("%ld",&ix);
ia=ix/10000;
ib=ix%10000/1000;
ic=ix%1000/100;
id=ix%100/10;
ie=ix%10;
if(ia==ie&&ib==id)
printf("yes");
else
printf("no");
}
循环结构
1.编写程序,输入一个整数x,按下式输出对应的y值。
#include
voidmain()
{intix,ii,iy=0;
scanf("%d",&ix);
if(ix%2!
=0)
{
for(ii=1;ii<=ix;ii=ii+2)
iy=iy+ii;
}
else
{
for(ii=2;ii<=ix;ii=ii+2)
iy=iy+ii;
}
printf("y=%d\n",iy);
}
2.计算n的阶乘
#include
voidmain()
{
intii,in;
longls=1;
printf("n=");
scanf("%d",&in);
for(ii=1;ii<=in;ii++)
ls=ls*ii;
printf("%d!
=%ld\n",in,ls);
}
3.求1到100之间的奇数之和、偶数之积。
#include
voidmain()
{
intii,isum1=0,isum2=0;
for(ii=1;ii<=99;ii=ii+2)
isum1=isum1+ii;
for(ii=2;ii<=100;ii=ii+2)
isum2=isum2+ii;
printf("sum1=%d,sum2=%d\n",isum1,isum2);
}
4.用循环语句编写求
的程序。
#include
voidmain()
{
intii;
longlf=1,sum=1;
for(ii=1;ii<=20;ii++)
{
lf=lf*2;
sum=sum+lf;
}
printf("sum=%ld\n",sum);
}
5求
(即求1!
+2!
+3!
+...+20!
)。
#include
voidmain()
{intii,ij;
longlsum=0,ls;
for(ii=1;ii<=20;ii++)
{
ls=1;
for(ij=1;ij<=ii;ij++)
ls=ls*ij;
lsum=lsum+ls;
}
printf("Sum=%ld\n",lsum);
}
6.有一分数序列
求出这个数列的前n项之和,保留两位小数。
#include
voidmain()
{intii,ij,in;
floatfsum=0,fa=2,fb=1,fc;
scanf("%d",&in);
for(ii=1;ii<=in;ii++)
{
fsum=fsum+fa/fb;
fc=fa;
fa=fa+fb;
fb=fc;
}
printf("Sum=%.2f\n",fsum);
}
7.判断一个数是否是素数
参考课本p81例3.25
8.打印1-100之间所有素数
#include
voidmain()
{
intim,ii,in=0;
for(im=2;im<=100;im++)
{
for(ii=2;iiif(im%ii==0)break;
if(ii>=im)
{
printf("%d",im);
in=in+1;
}
if(in%10==0)printf("\n");
}
printf("\n");
}
9.求1-100之间所有非素数的和
#include
voidmain()
{
intim,ii,isum=0;
for(im=2;im<=100;im++)
{
for(ii=2;iiif(im%ii==0)
{
isum=isum+im;
break;
}
}
printf("sum=%d\n",isum);
}
10.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如153是一个水仙花数,因为153=
#include
voidmain()
{
intii,ia,ib,ic;
for(ii=100;ii<1000;ii++)
{
ia=ii/100;
ib=ii%100/10;
ic=ii%10;
if(ia*ia*ia+ib*ib*ib+ic*ic*ic==ii)
printf("%d,",ii);
}
}
11.分别输出半径等于1,2,3…的圆面积,当面积大于100时停止。
#include
#definePI3.1415
voidmain()
{
intir;
floatfarea;
for(ir=1;;ir++)
{
farea=PI*ir*ir;
if(farea>100)
break;
else
printf("area=%f\n",farea);
}
}
12.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000之内的所有完数。
#include
voidmain()
{
intii,ij,isum;
for(ii=2;ii<1000;ii++)
{
isum=0;
for(ij=1;ijif(ii%ij==0)
isum=isum+ij;
if(isum==ii)
printf("%d",ii);
}
}
13.有一个四位正整数,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。
原四位数为新四位数的4倍,请找出一个这样的四位数。
#include
voidmain()
{
intii,ia,ib,ic,id;
for(ii=1000;ii<10000;ii++)
{
ia=ii/1000;
ib=ii%1000/100;
ic=ii%100/10;
id=ii%10;
if(ii==4*(id*1000+ic*100+ib*10+ia))
printf("%d",ii);
}
}
14.编程序求5X+2Y+Z=50的所有非负整数解。
#include
voidmain()
{
intix,iy,iz;
for(ix=0;ix<=10;ix++)
for(iy=0;iy<=25;iy++)
for(iz=0;iz<=50;iz++)
if(5*ix+2*iy+iz==50)
printf("x=%d,y=%d,z=%d\n",ix,iy,iz);
}
15.编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。
用零作为终止标记。
#include
voidmain()
{
intii,im=0,in=0,ia;
floatisum1=0,isum2=0,iave1,iave2;
for(ii=1;;ii++)
{
scanf("%d",&ia);
if(ia==0)
break;
if(ia%2==0)
{
isum1=isum1+ia;
im++;
}
else
{
isum2=isum2+ia;
in++;}
}
printf("averageofevenis%f,averageofoddis%f\n",isum1/im,isum2/in);
}
16.某单位排队形,开始排成3路纵队,末尾多出了2人。
后改成5路纵队,末尾又多出了3人,最后改成7路纵队,正好没有余数。
编程序求出该单位至少有多少人。
#include
voidmain()
{
intii;
for(ii=7;;ii++)
{
if(ii%7==0&&ii%3==2&&ii%5==3)
{
printf("numberis%d\n",ii);
break;
}
}
}
17.个位数是6,且能被3整除的五位数共有多少个。
#include
voidmain()
{
longintii;
intia,in=0;
for(ii=10000;ii<100000;ii++)
{
ia=ii%10;
if(ia==6&&ii%3==0)
{
printf("%ld",ii);
in++;
}
}
printf("numberis%d\n",in);
}
18.求100至200之间能同时被6和8整除的数,把这些数打印出来,并且打印这些数的和。
#include
voidmain()
{
intii,isum=0;
for(ii=100;ii<=200;ii++)
{
if(ii%6==0&&ii%8==0)
{
printf("%d",ii);
isum=isum+ii;
}
}
printf("sum=%d\n",isum);
}
19.打印200到300之间所有的素数。
#include
voidmain()
{
intim,i