max=c;
printf("Thelargestnumberis%d\n",max);
return0;
}
#include
intmain()
{
inta,b,c,max;
printf("pleaseinputa,b,c:
\n");
scanf("%d%d%d",&a,&b,&c);
max=a>b?
a:
b;
max=max>c?
max:
c;
printf("Thelargestnumberis%d\n",max);
return0;
}
第3章
1、假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。
计算公式为
P=(1+r)^n
r为年增长率,n为年数,p为与现在相比的倍数。
#include
#include
intmain()
{
floatp,r,n;
r=0.1;
n=10;
p=pow(1+r,n);
printf("p=%f\n",p);
return0;
}
2、存款利息计算。
有1000元,想存5年,可按以下5种办法存:
(1)一次存5年期。
(2)先存2年期,到期后将本息在存3年期。
(3)先存3年期,到期后将本息在存2年期。
(4)先存1年期,到期后将本息在存1年期,连续存5次。
(5)存活期存款。
活期利息每一季度结算一次。
2007年12月的银行存款利息如下:
1年定期存款利息为4.14%;
2年定期存款利息为4.68%;
3年定期存款利息为5.4%;
5年定期存款利息为5.85%;
活期存款利息为0.27%(活期利息每一季度结算一次。
)
如果r为年利率,n为存款年数,则计算本息和的公式为
1年期本息和:
P=1000*(1+r);
n年期本息和:
P=1000*(1+n*r);
存n次1年期的本息和:
P=1000*(1+r)^n;
存活期本息和:
P=1000*(1+r/4)^4n。
说明:
P=1000*(1+r/4)^4n。
是一个季度的本息和。
#include
#include
intmain()
{
floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;
r5=0.0585;
r3=0.054;
r2=0.0468;
r1=0.0414;
r0=0.0072;
p=1000;
p1=p*((1+r5)*5);//一次存5年期
p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期
p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期
p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次
p5=p*pow(1+r0/4,4*5);//存活期存款。
活期利息每一季度结算一次
printf("p1=%f\n",p1);//输出按第1方案得到的本息和
printf("p2=%f\n",p2);//输出按第2方案得到的本息和
printf("p3=%f\n",p3);//输出按第3方案得到的本息和
printf("p4=%f\n",p4);//输出按第4方案得到的本息和
printf("p5=%f\n",p5);//输出按第5方案得到的本息和
return0;
}
3、购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。
设d为300000元,p为6000元,r为1%。
对求得的月份取小数点后一位,对第2位按四舍五入处理。
提示:
计算还请月数m的公式如下:
m=[logp–log(p-d*r)]/log(1+r)
可以讲公式该写为
m={log[p/(p–d*r)]}/log(1+r)
C的库函数中有求对数的函数log10,是求以10为底的对数,log(p)表示logp。
#include
#include
intmain()
{
floatd=300000,p=6000,r=0.01,m;
m=log10(p/(p-d*r))/log10(1+r);
printf("m=%6.2f\n",m);
return0;
}
6、请编将“China”,编译成密码,密码规律是:
用原有的字母后面第4个字母代替原来的字母。
#include
intmain()
{
charc1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("passworis%c%c%c%c%c\n",c1,c2,c3,c4,c5);
return0;
}
7、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
#include
intmain()
{
floath,r,l,s,sq,vq,vz;
floatpi=3.141526;
printf("请输入圆半径r,圆柱高h∶");
scanf("%f,%f",&r,&h);//要求输入圆半径r和圆柱高h
l=2*pi*r;//计算圆周长l
s=r*r*pi;//计算圆面积s
sq=4*pi*r*r;//计算圆球表面积sq
vq=3.0/4.0*pi*r*r*r;//计算圆球体积vq
vz=pi*r*r*h;//计算圆柱体积vz
printf("圆周长为:
l=%6.2f\n",l);
printf("圆面积为:
s=%6.2f\n",s);
printf("圆球表面积为:
sq=%6.2f\n",sq);
printf("圆球体积为:
v=%6.2f\n",vq);
printf("圆柱体积为:
vz=%6.2f\n",vz);
return0;
}
第四章
4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。
#include
intmain()
{
inta,b,c;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(bprintf("max=%d\n",c);
else
printf("max=%d\n",b);
elseif(aprintf("max=%d\n",c);
else
printf("max=%d\n",a);
return0;
}
4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。
#include
intmain()
{
inta,b,c,temp,max;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a>b)?
a:
b;/*将a和b中的大者存入temp中*/
max=(temp>c)?
temp:
c;/*将a和b中的大者与c比较,取最大者*/
printf("三个整数的最大数是%d\n",max);
return0;
}
5、从键盘输入一个小于1000的正整数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。
要求在输入数据后先对其检查是否为小于1000的正数。
若不是,则要求从新输入。
#include
#include
#defineM1000
intmain()
{
inti,k;
printf("请输入一个小于%d的整数i:
",M);
scanf("%d",&i);
while(i>M)
{
printf("输入的数不符合要求,请重新输入一个小于%d的整数i:
",M);
scanf("%d",&i);
}
k=sqrt(i);
printf("%d的平方根的整数部分是:
%d\n",i,k);
return0;
}
6、有一个函数:
{
x(x<1)
y=2*x-1(1<=x<10)
3*x–11(x>=10)
写程序,输入x的值,输出y相应的值。
#include
intmain()
{
·intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)/*x<1*/
{
y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10)/*1={
y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else/*x>=10*/
{
y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
return0;
}
7、有一个函数:
{
-1(x<0)
Y=0(x=0)
1(x>0)
写程序,输入x的值,输出y相应的值。
#include
intmain()
{
intx,y;
printf("pleaseenterx:
");
scanf("%d",&x);
y=0;
if(x>=0)
if(x>0)y=1;
elsey=-1;
printf("x=%d,y=%d\n",x,y);
return0;
}
8、给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。
90分以上为‘A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。
#include
intmain()
{
floatscore;
chargrade;
printf("请输入学生成绩:
");
scanf("%f",&score);
while(score>100||score<0)
{
printf("\n输入有误,请重输");
scanf("%f",&score);
}
switch((int)(score/10))
{
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("成绩是%5.1f,相应的等级是%c\n",score,grade);
return0;
}
9、给出一个不多于5位数的正整数;
(1)求出它是几位数;
(2)分别输出每一位数字;
(3)按逆顺序输出各位数,例如原有数为123,应输出321.
#include
#include
intmain()
{
intnum,indiv,ten,hundred,thousand,ten_thousand,place;
//分别代表个位,十位,百位,千位,万位和位数
printf("请输入一个整数(0-99999):
");
scanf("%d",&num);
if(num>9999)
place=5;
elseif(num>999)
place=4;
elseif(num>99)
place=3;
elseif(num>9)
place=2;
elseplace=1;
printf("位数:
%d\n",place);
printf("每位数字为:
");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
printf("\n反序数字为:
");
switch(place)
{
case5:
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);break;
case4:
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);break;
case3:
printf("%d%d%d\n",indiv,ten,hundred);break;
case2:
printf("%d%d\n",indiv,ten);break;
case1:
printf("%d\n",indiv);break;
}
return0;
}
11、输入4个整数,要求按由小到大的顺序输出。
#include
intmain()
{
intt,a,b,c,d;
printf("请输入四个数:
");
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("排序结果如下:
\n");
printf("%d%d%d%d\n",a,b,c,d);
return0;
}
12、有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,这4个圆塔高位10cm,塔以外无建筑物。
求该点的建筑物高度(塔外的高度为零)。
#include
intmain()
{
inth=10;
floatx1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):
");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);/*求该点到各中心点距离*/
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if(d1>1&&d2>1&&d3>1&&d4>1)h=0;/*判断该点是否在塔外*/
printf("该点高度为%d\n",h);
return0;
}
第五章
例5.7用pi/4=1-1/3+1/5-1/7+……公式求pi近似值,直到发现某一项的绝对值小于10^6为止。
#include
#include//程序中用到数学函数fabs,应包含头文件math.n
intmain()
{
intsign=1,count=0;//sign用来表示数值的符号,count用来统计循环次数
doublepi=0.0,n=1.0,term=1.0;//pi开始代表多项式的值,最后代表π的值,n代表分母,term代表当前项的值
while(fabs(term)>=1e-8)//检查当前项term的绝对值是否大于或等于10的(-6)次方
{
pi=pi+term;//把当前项term累加到pi中
n=n+2;//n+2是下一项的分母
sign=-sign;//sign代表符号,下一项的符号与上一项符号相反
term=sign/n;//求出下一项的值term
count++;//count累加1
}
pi=pi*4;//多项式的和pi乘以4,才是π的近似值
printf("pi=%10.8f\n",pi);//输出π的近似值
printf("count=%d\n",count);//输出循环次数
return0;
}
3、输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
intmain()
{
intp,r,n,m,temp;
printf("请输入两个正整数n,m:
");
scanf("%d,%d,",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:
%d\n",n);
printf("它们的最小公约数为:
%d\n",p/n);
return0;
}
4、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include
intmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("字母数:
%d\n空格数:
%d\n数字数:
%d\n其它字符数:
%d\n",letters,space,digit,other);
return0;
}
5、求Sn=a+aa+aaa+……+aa……a之值,其中a是一个数字,n表示a的位数。
n由键盘输入。
#include
intmain()
{
inta,n,i=1,sn=0,tn=0;
printf("a,n=:
");
scanf("%d,%d",&a,&n);
while(i<=n)
{
tn=tn+a;/*赋值后的tn为i个a组成数的值*/
sn=sn+tn;/*赋值后的sn为多项式前i项之和*/
a=a*10;
++i;
}
printf("a+aa+aaa+...=%d\n",sn);
return0;
}
6、求和:
1!
+2!
+3!
+……+20!
。
#include
intmain()
{
doubles=0,t=1;
intn;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!
+2!
+...+20!
=%22.15e\n",s);
return0;
}
7、求1+2+3+……+100+1+2^2+3^2+4^2+……+50^2+1+1/2+1/3+1/4+……+1/10。
#include
intmain()
{
intn1=100,n2=50,n3=10;
doublek,s1=0,s2=0,s3=0;
for(k=1;k<=n1;k++)/*计算1到100的和*/
{s1=s1+k;}
for(k=1;k<=n2;k++)/*计算1到50各数的平方和*/
{s2=s2+k*k;}
for(k=1;k<=n3;k++)/*计算1到10的各倒数和*/
{s3=s3+1/k;}
printf("sum=%15.6f\n",s1+s2+s3);
return0;
}
8、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如153是一位水仙花数,因为153=13+53+33。
#include
intmain()
{
inti,j,k,n;
printf("parcissusnumbersare");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
return0;
}