以下程序教材基于 谭浩强C程序设计(第四版)
第1题 分别使用while、do…while、for三种循环结构计算并输出2+4+8+10+……+100的运算结果。
/*第1题 分别使用while、do…while、for三种循环结构计算并输出2+4+8+10+……+100的运算结果。*/
/*
# include<stdio.h>
int main(void)
{
int i=2,sum=0;
while(i<=100)
{
sum=sum+i;
i+=2;
}
printf("sum=%d\n",sum);
return 0;
}
*/
/*
# include<stdio.h>
int main(void)
{
int i=2,sum=0;
do
{
sum=sum+i;
i+=2;
}
while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
*/
# include<stdio.h>
int main(void)
{
int i,sum=0;
for(i=2;i<=100;i+=2)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
return 0;
}
第2题 教材习题P.140习题3,求两个正整数的最大公约数和最小公倍数。
/*此程序编写于2017年3月18日,目的:求两整数的最大公约数和最小公倍数*/
# include<stdio.h>
int main(void)
{
int a,b,n,m,t;
printf("请输入两个正整数n,m:");
scanf("%d,%d",&n,&m);
if(n<m) //先互换两个数
{
t=n;
n=m;
m=t;
}
a=n*m;
while(m!=0)
{
b=n%m;
n=m;
m=b;
}
printf("它们的最大公约数为:%d\n",n);
printf("它们的最小公倍数为:%d\n",a/n);
return 0;
}
第3题 教材习题P.140习题8,输出所有的水仙花数。
/*目的:求出所有的水仙花数*/
# include<stdio.h>
int main(void)
{
int a,b,c,d;
printf("水仙花数为以下数值\n");
for(d=100;d<1000;d++)
{
a=d/100;
b=d/10%10;
c=d%10;
if(d==a*a*a+b*b*b+c*c*c)
printf("%d\t",d);
}
printf("\n");
return 0;
}
第4题 教材习题P.141习题12,求解猴子吃桃问题。
/*猴子吃桃问题*/
# include<stdio.h>
int main(void)
{
int d,a,b; //d为天//
d=9;
b=1;
do
{
a=(b+1)*2;
b=a;
d--;
}
while(d>0);
printf("第一天一共摘了%d个桃子\n",a);
return 0;
}
# include<stdio.h>
int main()
{
int x,i,b; //第一天摘取x个,i为天//
for (x=1;x<10000;x++)
{
b=x;
for(i=1;i<10;i++)
{
b=b/2-1;
}
if(b==1) break;
}
printf("第一天一共摘了%d个桃子\n",x);
return 0;
}
第5题 完成例5.6,熟悉嵌套for循环的用法。
/*输出4*5矩阵*/
# include<stdio.h>
int main(void)
{
int i,j,n=0;
for(i=1;i<=4;i++)
for(j=1;j<=5;j++,n++)
{
if(n%5==0)
printf("\n");
printf("%d\t",i*j);
}
printf("\n");
return 0;
}
第6题 教材习题P.141习题9,输出1000之内所有的完数。
/*输出1000之内的所有完数*/
# include<stdio.h>
int main(void)
{
int n,m,sum;
for(n=1;n<=1000;n++)
{
sum=0;
for(m=1;m<=n/2;m++)
if(n%m==0)
sum+=m;
if(n==sum)
{
printf("%d 它的因子为", n);
for(m=1;m<=n/2;m++)
if(n%m==0)
printf("%d,",m);
printf("\b \n");
}
}
return 0;
}
第7题 输出九九乘法表。
/*输出九九乘法表*/
# include<stdio.h>
int main(void)
{
int x,y,z;
for(x=1;x<=9;x++)
{
for(y=1;y<=x;y++)
{
z=x*y;
printf("%d*%d=%d ",y,x,z);
}
printf("\n");
}
return 0;
}
第8题 完成例5.7,计算圆周率的近似值。
/*此程序编写于2017年3月17日,目的:计算pi的值*/
# include<stdio.h>
# include<math.h>
int main(void)
{
int sign=1;
double pi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-6)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}
/*此程序存在的问题:精度低,将循环判断改为1e-8后,精度会高一些*/
第9题 完成例5.8,求斐波那契数列的前40个数。
/*斐波那契数列前40个数*/
# include<stdio.h>
int main(void)
{
int f1=1,f2=1,f3;
int i;
printf("%-5d\n%-5d\n",f1,f2);
for(i=1;i<=38;i++)
{
f3=f1+f2;
printf("%-5d\n",f3);
f1=f2;
f2=f3;
}
return 0;
}
/*改进程序
# include<stdio.h>
int main(void)
{
int f1=1,f2=1;
int i;
for(i=1;i<=20;i++)
{
printf("%-5d %-5d",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
*/
第10题 完成例5.9,判断输入的整数是否为素数。
/*判断输入的整数是否为素数。*/
# include<stdio.h>
int main(void)
{
int n,i;
printf("请输入一个整数\n");
scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0)
break;
if(i<n)
printf("%d不是素数\n",n);
else
printf("%d是素数\n",n);
return 0;
}
/*改进程序如下:
# include<stdio.h>
# include<math.h>
int main(void)
{
int n,i,k;
printf("请输入一个整数\n");
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k,i++)
if(n%i==0)
break;
if(i<k)
printf("%d不是素数\n",n);
else
printf("%d是素数\n",n);
return 0;
}
*/
第11题 完成例5.10,求100-200之间所有的素数。
/*求100~200间的全部素数*/
# include<stdio.h>
# include<math.h>
int main(void)
{
int n,k,i,m=0;
for(n=101;n<=200;n=n+2)
{
k=(int)sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{
printf("%d\t",n);
m=m+1;
}
if(m%10==0)
printf("\n");
}
printf("\n");
return 0;
}