【1】打印1~100之间,3的倍数
【2】给定两个数,求这两个数的最大公约数
【3】打印闰年(1000~2000年)
【4】编写程序数一下1~100的所有整数中出现多少个9.
【5】打印100~200之间的素数。
【6】 计算1/1-1/2+1/3-1/4+1/5.....+1/99-1/100的值。
【7】 在屏幕上输出9*9乘法口诀表。
【1】打印1~100之间,3的倍数。
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=100;i++)
{
if(i%3==0)
printf("%d ",i);
}
return 0;
}
【2】给定两个数,求这两个数的最大公约数。
#include<stdio.h>
int main()
{
int a=24 ;
int b=18;
while(r=a%b) //当a%b的值不为零时,执行while 循环,而非零为真
{
r=a;
a=b;
r=b;
}
printf("%d",b);
return 0;
}
【3】打印闰年(1000~2000年)
#include<stdio.h>
int main()
{
int year,count;
for(year=1000;year<=2000;year++)
{
if((year%4==0&&year%100!=0)||year%400==0) /*判断闰年的两个条件,满足一个就可以:1、能
count++; 能被4整除但不能被100整除;2、能被400整除;*/
printf("%d ",year);
}
printf("\n 共有:%d\n",count);
return 0;
}
【4】编写程序数一下1~100的所有整数中出现多少个9.
#include<stdio.h>
int mian()
{
int i,count;
for(i=1;i<=100;i++)
{
if(i%10==9||i/10==9)
printf("%d ",i);
count++;
}
printf("\n count=%d\n",count+1); //count=19 ,由于99特殊,导致少加一次
return 0; //建议换算法
}
//运行结果20
优化后:
#include<stdio.h>
#include<windows.h>
int main()
{
int i;
int count = 0;
for (i = 1; i <= 100; i++)
{
if(i%10==9)
{
count++;
}
if(i/10==9) //不要用else if,因为会导致少算一次(if与else-if 不会同时执行)
{
count++;
}
}
printf("\n 9的个数count=%d \n",count);
return 0;
}
注意:99这个数字特殊,而if(i%10==9||i/10==9) 与if-else-if都会导致99少算一次。
这个题的正确答案是20,因为99中含两个9,不能少算。
【5】打印100~200之间的素数。 (两种)
#include<stdio.h>
int main()
{
int i=0;
int j=0;
int count=0;
for(i=100;i<=200;i++) //或for(i=101;i<=200;i+=2),因为偶数一定不是素数
{
for(j=2;j<i;j++) //若能被除1和它本身整除则不是素数
{
if(i%j==0)
break;
} //1、不是素数,2、内循环完了
if(j==i)
{
count++;
printf("%d ",i);
}
}
printf("\n count=%d\n",count);
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
int i=0;
int j=0;
int count=0;
for(i=100;i<=200;i++)
{
/*若i不是素数,则必定能在[ 2~sqrt(i) ]找到两个因子能被i整除,且必定有一个小于或等于
sqrt(i),另一个大于或等于sqrt(i) */
for(j=2;j<=sqrt(i);j++) // 判断i是否为素数
{
if(i%j==0)
break;
}
if(j>sqrt(i)) //若没在[ 2~sqrt(i) ]之间找到一个因子能被i整除,说明该数是素数
{
count++;
printf("%d ",i);
}
}
printf("\n count=%d\n",count);
return 0;
}
【6】 计算1/1-1/2+1/3-1/4+1/5.....+1/99-1/100的值。
#include<stdio.h>
int main()
{
double sum1,sum2,sum; //会有小数
int i=0;
for(i=1;i<=100;i++)
{
if(i%2==1) //判断奇数
{
sum1+=1/i;
}
if(i%2==0) //判断偶数
{
sum2-=1/i;
}
}
sum=sum1+sum2;
printf("%f\n",sum);
return 0;
}
【7】 在屏幕上输出9*9乘法口诀表。
#include<stdio.h>
int main()
{
int i=0;
for(i=1;i<=9;i++) //确定打印9行
{
int j=0;
for(j=1;j<=i;j++) //i控制行,j控制列
{
printf("%d*%d=%-2d ",i,j,i*j);
}
printf("\n");
}
return 0;
}