C语言实验教程题课本.docx
《C语言实验教程题课本.docx》由会员分享,可在线阅读,更多相关《C语言实验教程题课本.docx(27页珍藏版)》请在冰豆网上搜索。
C语言实验教程题课本
作业标题:
实验七、while和do...while循环结构的使用
作业内容:
编程题:
完成62页第7至第10题
#include
main()
{
long x,r,t=1,m=0;
printf("inputx:
");
scanf("%ld",&x);
do
{
r=x%10;
m=m+r*t;
t=t*8;
x=x/10;
}while(x!
=0);
printf("%d\n",m);
}
结果:
inputx:
124
84
#include
main()
{
longx,r;
printf("inputx:
");
scanf("%ld",&x);
do{
r=x%10;
printf("%d",r);
x=x/10;
}while(x!
=0);
}
inputx:
1358963421
1243698531
#include
#include
#define pi 3.14
main()
{
doublea=0.0,b=pi,s,h;
intn,i;;
do
{
printf("inputn:
");
scanf("%d",&n);
}while(n<100);
h=pi/n;
s=(sin(a)+sin(b))/2;
for(i=1;i<=n-1;i++)
s=s+sin(i*h);
s=s*h;
printf("s=%lf\n",s);
}
结果:
inputn:
14
inputn:
26
inputn:
34
inputn:
42
inputn:
58
inputn:
79
inputn:
85
inputn:
97
inputn:
100
s=1.999834
#include
main()
{
inta=1;
floatm;
do
{
if(a%2==1&&a%3==2&&a%4==3&&a%5==4)break;
a++;
}while
(1);
m=0.5*a;
printf("%.2f\n",m);
}
结果:
29.50
作业标题:
作业2、for循环结构的使用
作业内容:
完成第63页8、9、10题
#include
#include
main()
{
intm,k,i,n=0;
for(m=101;m<=600;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i=i+1)
if(m%i==0) break;
if(i>=k+1) n=n+1;
}
printf("%d\n",n);
}
结果:
84
#include
#include
main()
{
inta;
for(a=1; ;a++)
if((a%3==0)&&(a%5==0)&&(a%6==0))
{
printf("%d\n",a);
break;
}
}
结果:
30
#include
main()
{
inti,k,n=0;
for(i=5;i<=1000;i=i+5)
{
n++;
k=i/5;
while(k%5==0)
{
n++;
k=k/5;
}
}
printf("n=%d\n",n);
}
结果:
249
实验教程63页5,6,7题
#include
main()
{
intn;floats;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);
}
结果:
1.0000
1/n是取整运算其结果都是1
s=s+1/n应该为s=s+(float)1/n
有问题程序:
求“水仙花数”
#include"stdio.h"
main()
{
intn,sum,t,m;
sum=0;
for(n=100;n<=999;n++)
{
m=n;
while(n!
=0)
{
t=n%10;
sum=sum+t*t*t;
n=n/10;
}
if(sum==m)
printf("%d\n",m);
}
}
#include
main()
{
inti,a,b,c,sum;
sum=0;
for(i=100;i<=999;i++)
{
a=i%10;
b=i/10-i/100*10;
c=i/100;
sum=a*a*a+b*b*b+c*c*c;
if(i==sum)
printf("%4d\n",i);
}
}
结果:
153
370
371
407
#include
main()
{
inti,n;
n=0;
for(i=1000;i<=9999;i++)
if(i%4==0&&i%10==6)
n++;
printf("%d\n",n);
}
结果:
450
作业标题:
实验十、函数与编译预处理
作业内容:
第70页第六、七题
#include"stdio.h"
intgcd(intm,intn)
{
if(m%n==0)
returnn;
else
returngcd(n,m%n);
}
voidmain()
{
intm,n,t;
scanf("%d,%d",&m,&n);
if(m {t=m;m=n;n=t;}
t=gcd(m,n);
printf("gcd=%d\n",t);
}
结果:
6,94
gcd=2
同时求最大公约数和最小公倍数:
#include"stdio.h"
intgcd(intm,intn)
{
if(m%n==0)
returnn;
else
returngcd(n,m%n);
}
intfcd(intm,intn)
{
inta,b;
if(m%n==0)
returnm;
else
a=m/gcd(m,n);
b=n/gcd(m,n);
returngcd(m,n)*a*b;
}
voidmain()
{
intm,n,t,s;
scanf("%d,%d",&m,&n);
if(m {t=m;m=n;n=t;}
t=gcd(m,n);
s=fcd(m,n);
printf("gcd=%d,fcd=%d\n",t,s);
}
结果:
12,8
gcd=4,fcd=48
#include"stdio.h"
main()
{
inti,j,n;
intc(intx,inty);
printf("Inputn=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<=n-i;j++)
printf("");
for(j=1;j<=i;j++)
printf("%3d",c(i,j));
printf("\n");
}
}
intc(intx,inty)
{
intz;
if(y==1||y==x)return1;
else
{z=c(x-1,y-1)+c(x-1,y);
returnz;
}
}
结果:
Inputn=6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 51010 5 1
实验教程73页第4题
此程序是输入立方体的长宽高l/w/h,球立方体的体积及三个面x*y、x*z,y*z的面积。
注解:
由于C语言规定函数返回值只有一个,本程序中定义了三个外部变量s1,s2,s3,来存放三个面积,其作用域为整个程序,增加了函数返回值数据。
#include"stdio.h"
ints1,s2,s3;
intvs(inta,intb,intc)
{
intv;
v=a*b*c;
s1=a*b;
s2=b*c;
s3=a*c;
returnv;
}
main()
{
intv,l,w,h;
printf("\ninputlength,widthandheight\n");
scanf("%d%d%d",&l,&w,&h);
v=vs(l,w,h);
printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3);
}
结果:
inputlength,widthandheight
4
3
6
v=72s1=12s2=18s3=24
作业标题:
实验十一、数组的基本定义与应用
作业内容:
第76页至78页
#include"stdio.h"
main()
{
ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)
c[s[i]]++;
for(i=1;i<5;i++)
printf("%2d",c[i]);
printf("\n");
}
结果:
4332
#include"stdio.h"
main()
{
inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)
if(a[i][i] {t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}
for(i=0;i<4;i++)
printf("%d,",a[0][i]);
}
结果:
6,4,3,2
#include"stdio.h"
main()
{
inti,a[20],s,count;
s=count=0;
for(i=0;i<20;i++)
scanf("%d",a[i]);
for(i=0;i<20;i++)
{
if(a[i]<0)
continue;
s+=a[i];
count++;
}
printf("s=%d\tcount=%d\n",s,count);
}
结果:
2
4
6
7
-7
-4
87
65
-83
-76
234
75
-45
86
4
68
-64
-23
56
78
s=772 count=13
Pressanykeytocontinue
#include"stdio.h"
main()
{
intx[10],a[9],i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=1;i<10;i++)
a[i-1]=x[i]+x[i-1];
printf("\n");
for(i=0;i<9;i++)
printf("%d",a[i]);
}
结果:
2642686535
8106814141188
#include"stdio.h"
main()
{
intx,y,z,a[8],m,i=0;
for(m=100;m<=999;m++)
{
x=m/100;
y=m/10-x*10;
z=m%10;
if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)
{a[i]=m;i++;}
}
for(m=0;m
printf("%6d",a[m]);
}
结果:
153 370 371 407
#include"stdio.h"
main()
{
floatx[1000],sum=0,ave,a;
intn=0,i;
printf("Entermark:
");scanf("%f",&a);
while(a>0&&n<1000)
{sum+=a;
x[n]=a;
n++;
scanf("%f",&a);
}ave=sum/n;
printf("Output:
\n");
printf("ave=%f\n",ave);
for(i=0;i if(x[i]}
结果:
Entermark:
86847894976769-1
Output:
ave=82.142860
78.000000
67.000000
69.000000
作业标题:
作业四、教材第158页编程题4、5、6题
作业内容:
编程题第4、5、6题
#include"stdio.h"
main()
{
inta[700],i,max,num=0,k;
for(i=0;i<700;i++)
{
a[i]=i+1;
k=a[i]*a[i];
if(k%100000==a[i]||k%10000==a[i]||k%1000==a[i]||k%
100==a[i]||k%10==a[i]||k==a[i])
{
num++;
max=a[i];
printf("%d,%d\n",max,num);
}
}
}
结果:
1,1
5,2
6,3
25,4
76,5
376,6
625,7
#include"stdio.h"
main()
{
intn;
doublef[181],max=0;
f[0]=f[1]=1;f[2]=0;
for(n=3;n<=50;n++)
{
f[n]=f[n-1]-2*f[n-2]+f[n-3];
if(max }
printf("\nmax=%.01f",max);
}
结果:
max=598325.0
#include"stdio.h"
main()
{
inta[1001],i,s=0,n=1;
for(i=1;i<=1000;i++)a[i]=i;
a[1]=0;
for(i=1;i<=1000;i++)
{
if(a[i]!
=0)
{
s+=1;
if(s==50)
{
n++;
if(n==1000)
{printf("\na[%d]=%d",i,a[i]);
break;
}
a[i]=0;s=0;
}
}
if(i==1000)i=0;
}
}
结果:
a[630]=630
作业标题:
实验十二、字符数组、数组与函数
作业内容:
第78页至第81页。
#include"stdio.h"
main()
{
charstr1[100],str2[100],c;
inti,s;
printf("Enterstring1:
");gets(str1);
printf("Enterstring2:
");gets(str2);
i=0;
while((str1[i]==str2[i]&&str1[i]!
='\0'))
i++;
s=str1[i]-str2[i];
printf("%d\n",s);
}
结果:
Enterstring1:
bdghekg
Enterstring2:
bdghjetk
-5
#include"stdio.h"
#include"string.h"
main()
{
chara[]="acegikm";
charb[]="bdfhjlnpq";
charc[80],*p;
inti=0,j=0,k=0;
while(a[i]!
='\0'&&b[j]!
='\n')
{if(a[i]
else{c[k]=b[j];j++;}
k++;
}
c[k]='\0';
if(b[j]!
='\0')p=b+j;
elsep=a+i;
strcat(c,p);
puts(c);
}
结果:
abcdefghijklmnpq
#include"stdio.h"
strle(chara[],charb[])
{
intnum=0,n=0;
while(a[num]!
='\0')num++;
while(b[n])
{a[num]=b[n];
num++;n++;
}
return(num);
}
main()
{
charstr1[81],str2[81];
gets(str1);
gets(str2);
printf("%d\n",strle(str1,str2));
}
结果:
qwerty
abcd
10
#include"stdio.h"
main()
{
chars[80],c1,c2='';
inti=0,num=0;
gets(s);
while(s[i]!
='\0')
{
c1=s[i];
if(i==0)c2='';
elsec2=s[i-1];
if(c2=='')num++;
i++;
}
printf("Thereare%dwords.\n",num);
}
结果:
Iamastudent
Thereare4words.
#include"stdio.h"
#include"string.h"
voidreverse(chars[])
{
inttemp,i,j;
for(i=0,j=strlen(s)-1;i {
temp=s[i];s[i]=s[j];s[j]=temp;
}
}
main()
{
charbin[20];unsignedn,i=0;
printf("Inputadata");scanf("%d",&n);
do
{
bin[i++]=n%2+'0';
}while((n/=2)!
=0);
bin[i]='\0';
reverse(bin);
puts(bin);
}
结果:
8
1000
#include"stdio.h"
main()
{
floata[11],x;
inti,j;
printf("Input10numbersplease\n");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
printf("\n");
for(i=1;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
printf("Thesorted10numbers;\n");
for(i=0;i<10;i++)
{
if(i==5)
printf("\n");
printf("%f\t",a[i]);
}
printf("\n");
}
结果:
Input10numbersplease
4.35.27.068.24.479.13.36.2
Thesorted10numbers;
3.300000 4.300000 4.400000 5.200000 6.000000
6.200000 7.000000 7.000000 8.200000 9.100000
#include"stdio.h"
#include"string.h"
main()
{
chara[20]="cehiknqtw";
chars[]="fbla";
inti,j,k;
for(k=0;s[k]!
='\0';k++)
{
j=0;
while(s[k]>=a[j]&&a[j]!
='\0')
j++;
for(i=j+1;a[i]!
='\0';i++)
a[i]=a[i-1];
a[j]=s[k];
}
puts(a);
}
#include"stdio.h"
main()
{
intm[16],n,i,t,count=0;
longa,k;
printf("Resultis:
\n");
for(n=10;n<200;n++)
{
k=0;
t=1;
a=n*n;
for(i=1;a!
=0;i++)
{
m[i]=a%10;
a/=10;
}
for(;i>1;i--)
{
k+=m[i-1]*t;
t*=10;
}
if(k==n*n)
printf("%2d:
%10d%10d\n",++count,n,n*n);
}
}
结果:
Resultis:
1:
11 121
2:
22 484
3:
26 676
4:
101 10201
5:
111