C语言程序大学学习的程序均有.docx
《C语言程序大学学习的程序均有.docx》由会员分享,可在线阅读,更多相关《C语言程序大学学习的程序均有.docx(123页珍藏版)》请在冰豆网上搜索。
C语言程序大学学习的程序均有
一:
顺序结构
实验一顺序结构程序设计
4-1、求半径为10的圆面积。
#include"stdio.h"
main()
{
floatr,s;
printf("\nr:
");
scanf("%f",&r);
s=3.14*r*r;
printf("s=%.2f",s);
}
4-2、华氏温度和摄氏温度的转换(f=9/5*c+32)
[A]摄氏==>华氏
#include"stdio.h"
main()
{
floatc,h;
printf("\nHuaShi:
");
scanf("%f",&h);
c=(h-32)*5/9;
printf("SheShi:
%.2f",c);
}
[B]华氏==>摄氏
#include"stdio.h"
main()
{
floatc,f;
printf("\nHuaShi:
");
scanf("%f",&f);
c=(f-32)*5/9;
printf("SheShi:
%.2f",c);
}
4-3、已知并联电路的两个分电阻,求总电阻。
#include"stdio.h"
main()
{
floatr1,r2,r;
printf("\nr1,r2:
");
scanf("%f,%f",&r1,&r2);
r=r1*r2/(r1+r2);
printf("r=%.2f",r);
}
4-4、已知三角形两边及夹角的角度,求三角形的面积。
#include"stdio.h"
#include"math.h"
#definepi3.1415926
main()
{
floata,b,c,s;
printf("\na,b,c:
");
scanf("%f,%f,%f",&a,&b,&c);
s=a*b*sin(c*pi/180)/2;
printf("s=%.2f",s);
}
4-5、输入一个百位整数,反序输出。
#include"stdio.h"
main()
{
intx,y,gw,sw,bw;
printf("\nx:
");
scanf("%d",&x);
bw=x/100;
sw=(x/10)%10;
gw=x%10;
y=gw*100+sw*10+bw;
printf("%d",y);
}
4-6、交换两个变量中的值。
[?
方法1?
]
#include"stdio.h"
main()
{
inta=1,b=2,t;
t=a;a=b;b=t;
printf("\na=%d,b=%d",a,b);
}
[?
方法2?
]
#include"stdio.h"
main()
{
inta=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("\na=%d,b=%d",a,b);
}
二:
选择结构
实验二选择结构程序设计
5-1、求半径为10的圆面积。
(if结构)
#include"stdio.h"
main()
{
floatr,s;
printf("\nr:
");
scanf("%f",&r);
if(r>0)
{
s=3.14*r*r;
printf("s=%.2f",s);
}
else
printf("rwrong!
");
}
5-2、已知三角形的三边,求其面积。
(if结构)
#include"stdio.h"
#include"math.h"
main()
{
floata,b,c,t,s;
printf("\na,b,c:
");
scanf("%f,%f,%f",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b)
{
t=(a+b+c)/2;
s=sqrt(t*(t-a)*(t-b)*(t-c));
printf("s=%.2f",s);
}
else
printf("wrong!
");
}
5-3、求并联电路的总电阻。
要求可以判断0或负电阻的错误。
#include"stdio.h"
main()
{
floatr1,r2,r;
printf("\nr1,r2:
");
scanf("%f,%f",&r1,&r2);
if(r1>0&&r2>0)
{
r=r1*r2/(r1+r2);
printf("r=%.2f",r);
}
else
if(r1<0||r2<0)
printf("-error");
else
printf("0error");
}
5-4、输入一个三位整数,反序输出。
(if结构)
#include"stdio.h"
main()
{
intx,y,gw,sw,bw;
printf("\nx:
");
scanf("%d",&x);
if(x>=100&&x<1000)
{
if(x%10!
=0)
{
bw=x/100;
sw=(x/10)%10;
gw=x%10;
y=gw*100+sw*10+bw;
printf("%d",y);
}
else
printf("wrong0");
}
else
printf("outrange!
");
}
5-5、求两个数的大数。
[?
方法1?
]
#include"stdio.h"
main()
{
inta,b,c;
printf("\na,b:
");
scanf("%d,%d",&a,&b);
if(a>b)
c=a;
else
c=b;
printf("c=%d",c);
}
[?
方法2?
]
#include"stdio.h"
main()
{
inta,b,c;
printf("\na,b:
");
scanf("%d,%d",&a,&b);
c=a;
if(b>a)
c=b;
printf("c=%d",c);
}
5-6、输入三个数,降序输出。
#include"stdio.h"
main()
{
inta,b,c,t;
printf("\na,b,c:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(aif(bprintf("%d,%d,%d",a,b,c);
}
5-7、根据重量求运输费用(用三种方法)。
[?
方法1?
]并列单分支
#include"stdio.h"
main()
{
floatw,p;
printf("\nw:
");
scanf("%f",&w);
if(w<=0)
printf("weighterror");
if(w>0&&w<=20)
{p=2*w;printf("p=%f",p);}
if(w>20)
{p=2*20+(w-20)*3;printf("p=%f",p);}
}
[?
方法2?
]分支嵌套
#include"stdio.h"
main()
{
floatw,p;
printf("\nw:
");
scanf("%f",&w);
if(w<=0)
printf("weighterror");
else
{
if(w<=20)
p=2*w;
else
p=2*20+(w-20)*3;
printf("p=%f",p);
}
}
[?
方法3?
]阶梯分支
#include"stdio.h"
main()
{
floatw,p;
printf("\nw:
");
scanf("%f",&w);
if(w>20)
{
p=2*20+(w-20)*3;
printf("p=%f",p);
}
elseif(w>0)
{
p=2*w;
printf("p=%f",p);
}
else
printf("weighterror");
}
5-8、将百分制转化为五分制。
#include"stdio.h"
main()
{
floatfs,x;
printf("\nfs:
");
scanf("%f",&fs);
if(fs>=0&&fs<=100)
switch((int)(fs/10))
{
case10:
case9:
printf("A");break;
case8:
printf("B");break;
case7:
printf("C");break;
case6:
printf("D");break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("E");
}
else
printf("Outrange");
}
5-9、输入一个日期,判别该日期为当年的第几天。
#include"stdio.h"
main()
{
intyear,month,day,s;
printf("\nyear,month,day:
");
scanf("%d,%d,%d",&year,&month,&day);
s=day;
switch(month-1)
{
case11:
s=s+30;
case10:
s=s+31;
case9:
s=s+30;
case8:
s=s+31;
case7:
s=s+31;
case6:
s=s+30;
case5:
s=s+31;
case4:
s=s+30;
case3:
s=s+31;
case2:
if((year%4==0&&year%100!
=0)||year%400==0)
s=s+29;
else
s=s+28;
case1:
s=s+31;
}
printf("\ns=%d",s);
}
三:
循环结构
实验三、通项数列、图形、递推数列
1、求s=1+3+5+7+9+...+99的和。
?
方法1:
通项法
#include"stdio.h"
main()
{
inti,s;
s=0;
for(i=1;i<=50;i++)
s=s+(2*i-1);
printf("\ns=%d",s);
}
?
方法2:
递推法
#include"stdio.h"
main()
{
inti,s,t;
s=0;t=1;
for(i=1;i<=50;i++)
{
s=s+t;
t=t+2;
}
printf("\ns=%d",s);
}
2、求s=1-1/2+1/3-1/4+...,共50项的和。
?
方法1:
通项法
#include"stdio.h"
main()
{
inti;
floats,fh;
s=0;fh=1;
for(i=1;i<=50;i++)
{
s=s+fh/i;
fh=-fh;
}
printf("\ns=%f",s);
}
?
方法2:
递推法
#include"stdio.h"
main()
{
inti;
floats,fh,t;
s=0;fh=1;t=1;
for(i=1;i<=50;i++)
{
s=s+fh/t;
t=t+1;
fh=-fh;
}
printf("\ns=%f",s);
}
3、已知pi/4=1-1/3+1/5-1/7+...,当最后一项小于1E-6时求pi的近似值。
?
方法1:
通项法
#include"stdio.h"
main()
{
longinti;
floatfh,s;
i=1;s=0;fh=1;
while(1.0/(2*i-1)>1e-6)
{
s=s+fh/(2*i-1);
i++;fh=-fh;
}
printf("\npi=%f",4*s);
}
?
方法2:
递推法
#include"stdio.h"
main()
{
floatfh,s,t;
s=0;t=1;fh=1;
while(1/t>1e-6)
{
s=s+fh/t;
t=t+2;fh=-fh;
}
printf("\npi=%f",4*s);
}
4、求s=1+3+5+7+9+...,一直加到和大于2000时为止,求和在2000以内时的最大项。
?
方法1:
通项法
#include"stdio.h"
main()
{
ints,i;
s=0;i=1;
while(s<2000)
{
s=s+(2*i-1);
i++;
}
printf("\n%d",2*(i-2)-1);
}
?
方法2:
递推法
#include"stdio.h"
main()
{
ints,t;
s=0;t=1;
while(s<2000)
{
s=s+t;
t=t+2;
}
printf("\nt=%d",t-4);
}
5、设计程序求s=1!
+2!
+3!
+...+10!
的和。
?
方法1:
通项法
#include"stdio.h"
main()
{
inti,j;longs,t;
s=0;
for(i=1;i<=10;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
printf("\ns=%ld",s);
}
?
方法2:
递推法
#include"stdio.h"
main()
{
inti;longs,t;
s=0;t=1;
for(i=1;i<=10;i++)
{
t=t*i;
s=s+t;
}
printf("\ns=%ld",s);
}
6、求s=1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...前20项和。
#include"stdio.h"
main()
{
inti;
floats,t,t1=1,t2=3;
t=t1/t2;s=0;
for(i=1;i<=20;i++)
{
s=s+t;
t1=t1+1;t2=t2+2;
t=t*t1/t2;
}
printf("\ns=%f",s);
}
7、已知e=1+1/1!
+1/2!
+1/3!
+...+1/n!
(设有10项),求e的值。
#include"stdio.h"
main()
{
inti;floats,t;
s=1;t=1;
for(i=1;i<=10;i++)
{
s=s+1/t;
t=t*(i+1);
}
printf("\ns=%f",s);
}
8、已知sin(x)=x-x^3/3!
+x^5/5!
-x^7/7!
+...,求最后一项绝对值小于1e-6为止时的正弦值。
#include"stdio.h"
#include"math.h"
main()
{
inti;
floats,x,t1,t2;
printf("\nx:
");scanf("%f",&x);
i=1;s=0;t1=x;t2=1;
while(fabs(t1/t2)>=1E-6)
{
s=s+t1/t2;
i++;
t1=t1*x*x*(-1);
t2=t2*(2*i-1)*(2*i-2);
}
printf("\ns=%f",s);
}
9、求s=2+22+222+2222+22222+222222。
#include"stdio.h"
main()
{
longs,t;inti;
i=1;s=0;t=2;
while(i<=6)
{
s=s+t;
i++;
t=t*10+2;
}
printf("\ns=%ld",s);
}
10、求费波那契数列前20项的和,并输出该数列。
?
方法1:
平移双项
#include"stdio.h"
main()
{
inti,s,f1,f2;
i=1;f1=f2=1;s=0;
while(i<=10)
{
printf("\n%d\n%d",f1,f2);
s=s+f1+f2;
i++;
f1=f1+f2;
f2=f2+f1;
}
printf("\ns=%d",s);
}
?
方法2:
平移单项
#include"stdio.h"
main()
{
inti,s,t,f1,f2;
f1=f2=1;s=0;
for(i=1;i<=20;i++)
{
printf("\n%d",f1);
s=s+f1;
t=f1;
f1=f2;
f2=t+f1;
}
printf("\ns=%d",s);
}
11、求s=2+3/2+5/3+8/5+13/8+21/13+…共20项的和。
#include"stdio.h"
main()
{
inti,fz,fm;
floats,t;
s=0;fz=2;fm=1;
for(i=1;i<=20;i++)
{
printf("\n%d/%d",fz,fm);
s=s+(float)fz/fm;
t=fm;
fm=fz;
fz=t+fm;
}
printf("\ns=%f",s);
}
12、求小牛数列前18项和,并输出该数列。
?
方法1:
平移三项
#include"stdio.h"
main()
{
inti,f1,f2,f3,s;
s=0;f1=f2=f3=1;
for(i=1;i<=6;i++)
{
printf("\n%d\n%d\n%d",f1,f2,f3);
s=s+f1+f2+f3;
f1=f1+f3;
f2=f1+f2;
f3=f2+f3;
}
printf("\ns=%d",s);
}
?
方法2:
平移双项
#include"stdio.h"
main()
{
inti,f1,f2,f3,s,t;
s=0;f1=f2=f3=1;
for(i=1;i<=9;i++)
{
printf("\n%d\n%d",f1,f2);
s=s+f1+f2;
t=f2;
f2=f1+f3;
f1=f3;
f3=t+f2;
}
printf("\ns=%d",s);
}
?
方法3:
平移单项
#include"stdio.h"
main()
{
inti,f1,f2,f3,s,t;
s=0;f1=f2=f3=1;
for(i=1;i<=18;i++)
{
printf("\n%d",f1);
s=s+f1;
t=f2;
f2=f3;
f3=f1+f2;
f1=t;
}
printf("\ns=%d",s);
}
13、在屏幕上输出由“*”号组成的n行正三角形。
*
***
*****
*******
*********
***********
#include"stdio.h"
main()
{
inti,j,n;
printf("\nn=");scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n");
for(j=1;j<=(80-2*i-1)/2;j++)printf("");
for(j=1;j<=2*i-1;j++)printf("*");
}
}
14、在屏幕上输出由“*”号组成的8行倒三角形。
***************
**
**
**
**
**
**
*
#include"stdio.h"
main()
{
inti,j,n;
for(i=1;i<=8;i++)
{
printf("\n");
for(j=1;j<=10+i;j++)printf("");
for(j=1;j<=16-(2*i-1);j++)
if(i==1||j==1||j==16-(2*i-1))
printf("*");
else
printf("");
}
}
15、输出下面的平行四边形数字阵
12345
23456
34567
45678
56789
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=5;i++)
{
printf("\n");
for(j=1;j<=2*i;j++)printf("");
for(j=i;j<=i+4;j++)
printf("%2d",j);
}
}
16、输出下面的数字三角形。
1
23
345
4567
56789
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=5;i++)
{
printf("\n");
for(j=i;j<=2*i-1;j++)
printf("%d",j);
}
}
17、输出下面的数字正三角形。
1
121
12321
1234321
123454321
...
12345678987654321
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=9;i++)
{
printf("\n");
for(j=1;j<=10-i;j++)printf("");
for(j=1;j<=2*i-1;j++)
if(j<=i)
printf("%d",j);
else
printf("%d",2*i-j);
}
}
18、在屏幕正中输出n行的字母三角形。
A
BC
CDE
DEFG
EFGHI
FGHIJK
GHIJKLM
#include
main()
{
inti,k,m,n,j;
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=40-i;j++)printf("");
for(j=1;j<=i;j++)printf("%2c",64+i-1+j);
printf("\n");
}
}
第6章循环程序设计
(2)
1、九九乘法表
main()
{
inti,j;
for(i=1;i<=9;i++)
{
printf("\n");
for(j=1