C语言实验.doc
- 文档编号:1219953
- 上传时间:2023-04-30
- 格式:DOC
- 页数:40
- 大小:126KB
C语言实验.doc
《C语言实验.doc》由会员分享,可在线阅读,更多相关《C语言实验.doc(40页珍藏版)》请在冰点文库上搜索。
扬州大学信息工程学院
实验报告
课程名称C语言程序设计
学生姓名
班级
学号
指导老师
2012年5月18日
自己写的程序
4.8设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
#include"stdio.h"
voidmain()
{
floatr,h,C,s,S,v,V;
floatp=3.141592;
scanf("%f,%f",&r,&h);
C=2*p*r;
s=p*r*r;
S=4*p*r*r;
v=4.0/3.0*p*r*r*r;
V=p*r*r*h;
printf("圆周长为:
%6.2f\n",C);
printf("圆面积为:
%6.2f\n",s);
printf("圆球表面积为:
%6.2f\n",S);
printf("圆球体积为:
%6.2f\n",v);
printf("圆柱体积为:
%6.2f\n",V);
getch();
}
运行结果:
3,4,
圆周长为:
18.85
圆面积为:
28.27
圆球表面积为:
113.10
圆球体积为:
113.10
圆柱体积为:
113.10
4.9输入一个华氏温度,要求输出摄氏温度。
公式为C=5/9(F-32),输出要有文字说明,取两位小数。
#include"stdio.h"
voidmain()
{
floatc,F;
scanf("%f",&F);
c=5.0/9.0*(F-32);
printf("华氏温度为:
%6.2f",c);
getch();
}
运行结果:
华氏温度为:
15.56
6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
#include
voidmain()
{
intm,n,i,j;
printf("输入两个正整数:
");
scanf("%d,%d",&m,&n);
for(i=n;;i--)
{
if((m%i==0)&&(n%i==0))
{printf("其最大公约数为:
%d\n",i);break;}
}
for(j=m;;j=j+m)
{
if(j%n==0)
{printf("m和n的最小公倍数为:
%d\n",j);break;}
}
getch();
}
运行结果:
输入两个正整数:
15,66
其最大公约数为:
3
m和n的最小公倍数为:
330
6.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include"stdio.h"
#include"conio.h"
voidmain()
{
charc;
inti=0,j=0,k=0,m=0;
printf("输入一行字符:
");
while((c=getchar())!
='\n')
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
i++;
elseif(c=='')
j++;
elseif((c>='0')&&(c<='9'))
k++;
elsej++;}
printf("其中英文字母%d个\n空格%d个\n数字%d个\n其他字符%d个\n",i,j,k,m);
getch();
}
未能运行,原因:
15行j++错误。
修改后
运行结果:
6.3求S=a+aa+aaa+…+aaa…a之值,其中a是一个数字,n表示a的位数。
#include"stdio.h"
#include"conio.h"
voidmain()
{inta,n,i,sum;
printf("输入a,n:
");
scanf("%d,%d",&a,&n);
for(i=1,sum=0;n>0;n--)
{sum=sum+n*a*i;
i=i*10;}
printf("a+aa+aaa+…=%d\n",sum);
getch();
}
运行结果:
输入a,n:
2,5
a+aa+aaa+…=24690
6.4求1!
+2!
+3!
+…+20!
。
#include"stdio.h"
#include"conio.h"
voidmain()
{
inti;
floatsum,t;
for(i=1,sum=0,t=1;i<=20;i++)
{t=t*i;
sum=sum+t;}
printf("1!
+2!
+3!
+…+20!
=%e\n",sum);
getch();
}
运行结果:
2.56133e+18
6.5求和1+2+3…+100+1^2+2^2+3^2+…50^2+1/1+1/2+1/3+…1/10。
#include
voidmain()
{
floatk,i,j,n,sum;
for(k=1,i=0;k<=100;k++)
i=i+k;
for(k=1,j=0;k<=50;k++)
j=j+k*k;
for(k=1,n=0;k<=10;k++)
n=n+1/k;
sum=i+j+n;
printf("其值为:
%8.2f\n",sum);
getch();
}
运行结果:
其值为:
47977.93
6.7一个数如果恰好等于它的因子之和,这个数就称为“完数”。
编程找出1000之内的所有完数,并按下面格式输出其因子:
6itsfactorsare1,2,3.
#include
voidmain()
{intn,i,j;
for(n=2;n<1000;n++)
{
for(i=1,j=0;i if(n%i==0) j=j+i; if(n==j) {printf("%ditsfactorsare",n); for(i=1;i if(n%i==0) printf("%d,",i); printf("\n");} } getch(); } 运行结果: 6.8有一分数序列2/1,3/2,5/3,,8/5,13/8,21/13…求这个数列的前20项之和。 #include voidmain() { inti; floatsum=0,m=1,n=2; for(i=1;i<21;i++) {sum=sum+n/m; n=m+n; m=n-m; } printf("这个数列的前20项之和为%8.3f\n",sum); getch(); } 运行结果: 这个数列的前20项之和为 6.9一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。 求它在第十次落地时,共经过多少米? 第十次反弹多高? #include voidmain() { inti;floats,l,h; s=100;l=100;h=100; for(i=2;i<11;i++) s=s+l; l=l/2; printf("第10次落地时共经过%f米\n",s); for(i=1;i<10;i++) h=h/2; printf("第10次反弹高度为%f米",h); getch(); } 运行结果: 6.15两个兵乓球队进行比赛,各出3人。 甲队为A,B,C三人,乙队为X,Y,Z三人。 已抽签决定比赛名单。 有人向队员打听比赛名单,A说他不和X比,C说他不和X,Z比,请编程序找出三队赛手的名单。 #include"stdio.h" #include"conio.h" voidmain() { chari,j,k; for(i='X';i<='Z';i++) for(j='X';j<='Z';j++) for(k='X';k<='Z';k++) if(i! =j&&i! =k&&j! =k) if(i! ='X'&&k! ='X'&&k! ='Z') printf("A--%c\nB--%c\nC--%c\n",i,j,k); getch(); } 运行结果: 7.1用筛选法求100之内的素数。 #include"stdio.h" #include"math.h" voidmain() {inta[101],i,j,n; for(i=1;i<=100;i++) a[i]=i; for(i=2;i {for(j=i+1;j<=99;j++) {if(a[i]! =0&&a[j]! =0) if(a[j]%a[i]==0) a[j]=0;}} for(i=0,n=0;i<=99;i++) if(a[i]! =0) {printf("%d,",a[i]); n++; if(n%5==0) printf("\n");} getch(); } 运行结果: 7.2用选择法对10个整数排序。 #include"stdio.h" #include"math.h" voidmain() { inti,j,t=0,min,a[11]; for(i=1;i<=10;i++) scanf("%d,",&a[i]); printf("原数据为: \n"); for(i=1;i<=10;i++) printf("%d,",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j]) min=j; t=a[i]; a[i]=a[min]; a[min]=t;} printf("按从小到大的顺序排列为: \n"); for(i=1;i<=10;i++) printf("%d,",a[i]); getch(); } 运行结果: 8.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。 两个整数由键盘输入。 #include"stdio.h" #include"conio.h" intf1(intn,intm) {inti; for(i=n;i>0;i--) if(n%i==0&&m%i==0) {return(i); break;} } intf2(intn,intm) {inti; for(i=n;i<=m*n;i++) if(i%n==0&&i%m==0) {return(i); break;} } voidmain() {intn,m; printf("inputn,m: "); scanf("%d,%d",&n,&m); printf("\noutput: %d,%d",f1(n,m),f2(n,m)); getch(); } 运行结果: 8.2求方程ax^2+bx+c=0的根用3个函数分别求当b^2-4ac大于0、等于0和小于0时的根并输出结果。 从主函数输入a、b、c的值。 #include"stdio.h" #include"math.h" #defineP1-b/(2*a) #defineP2sqrt(disc)/(2*a) #defineP3sqrt(-disc)/(2*a) floatx1,x2,disc; voidf1(floata,floatb) { x1=P1+P2; x2=P1-P2; } voidf2(floata,floatb) {floatx; x1=x2=P1+P2; } voidf3(floata,floatb) {floatp,q; x1=P1; x2=P3; } voidmain() {floata,b,c; printf("输入a,b,c: "); scanf("%f,%f,%f",&a,&b,&c); disc=b*b-4*a*c; if(disc>0) {f1(a,b); printf("有两个根分别为: %f,%f",x1,x2);} if(disc==0) {f2(a,b); printf("只有一个根为: %f",x1);} if(disc<0) {f3(a,b); printf("有两个虚根分别为%f+%fi,%f-%fi",x1,x2,x1,x2);} getch(); } 运行结果: 8.3写一个判素数的函数,在主函数中输入一个整数,输出是否素数的信息。 #include #include intf(intn) { inti,flag=0; for(i=1;i<=sqrt(n);i++) { if(n%i==0) {flag=1;break;} } return(flag); } voidmain() { intn; printf("inputaninteger: "); scanf("%d",&n); if(f(n)) printf("\n%disnotaprime.",n); else printf("\n%disaprime.",n); getch(); } 未能运行,原因: 第六行写成了i=1,应该为i=2 修改之后 运行结果: 8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出以上结果。 #include"stdio.h" #include"conio.h" intletter=0,digit=0,space=0,others=0; voidmain() {voidf(charstr[]); charstr[100]; printf("inputstring: "); gets(str); f(str); printf("letter: %d\ndigit: %d\nspace: %d\nothers: %d\n",letter,digit,space,others); getch();} voidf(charstr[]) {inti; for(i=0;str[i]! ='\0';i++) if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) letter++; elseif(str[i]>='0'&&str[i]<='9') digit++; elseif(str[i]=='') space++; elseothers++; } 运行结果: 8.13用递归的方法求n阶勒让德多项式的值,递归公式为: pn(x)={1n=0xn=1((2n-1)*x-p(n-1)(x)-(n-1)*p(n-2)(x))/nn>=1} #include"stdio.h" #include"conio.h" floatp(intn,intx) {if(n==0) return (1); if(n==1) return(x); else return((2*n-1)*x-p((n-1),x)-(n-1)*p((n-2),x))/n;} voidmain() {intn,x; printf("inputn,x: "); scanf("%d,%d",&n,&x); printf("p%d(%d)=%f\n",n,x,p(n,x)); getch(); } 运行结果: 8.16写一个函数,输入一个十六进制数,输出相应的十进制数。 #include"stdio.h" #include"conio.h" intf(charstr[]) { inti,n=0; for(i=0;str[i]! ='\0';i++) { if(str[i]>='0'&&str[i]<='9') n=n*16+str[i]-'0'; if(str[i]>='a'&&str[i]<='f') n=n*16+str[i]-'a'+10; if(str[i]>='A'&&str[i]<='F') n=n*16+str[i]-'A'+10; } return(n); } voidmain() {charstr[100]; printf("inputaHEXnumber: "); gets(str); printf("decimalnumber: %d",f(str)); getch(); } 运行结果: 8.17用递归法将一个整数n转换成字符串。 例如,输入483,应输出字符“483”。 n的位数不确定,可以是任意位数的整数。 #include"stdio.h" #include"conio.h" voidmain() { voidf(intn); intnumber; printf("inputnumber: "); scanf("%d",&number); if(number<0) { putchar('-'); number=-number; } printf("output: "); f(number); getch(); } voidf(intn) {inti; if((i=n/10)! =0) f(i); putchar(n%10+'0'); } 运行结果: 10.1输入3个整数,按由小到大的顺序输出。 #include voidmain() {voidswap(int*p1,int*p2); intn1,n2,n3; int*p1,*p2,*p3; p1=&n1;p2=&n2;p3=&n3; printf("inputthreeinteger: \n"); scanf("%d,%d,%d",p1,p2,p3); 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); getch();} voidswap(int*p1,int*p2) {intt; t=*p2;*p2=*p1;*p1=t;} 运行结果: 例1.3求2个数中的较大者。 #include voidmain() { intmax(intx,inty); inta,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max=%d\n",c); getch(); } intmax(intx,inty) { intz; if(x>y)z=x; elsez=y; return(z); } 运行结果: 例2.21求1-1/2+1/3-1/4+…+1/99-1/100 #include voidmain() { intsign=1; floatdeno=2.0,sum=1.0,term; while(deno<=100) { sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1; } printf("%f\n",sum); getch(); } 运行结果: 用0`5之间的三个数构成一个三位数(各位数上的数字不同)统计出共有多少种方法,并输出各种情况。 #include voidmain() {inti,j,k,sum,count=0; {for(i=1;i<=5;i++) for(j=0;j<=5;j++) for(k=0;k<=5;k++) if(i! =j&&j! =k&&i! =k) {count++; sum=100*i+10*j+k; printf("%d,",sum); if(count%5==0) printf("\n"); } printf("共有%d种方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验