1.输入一个数,计算是否是完美数
完美数:除本身约数和等于本身
6:1 2 3
1+2+3==6
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int num,i,sum=0;
printf("please enter number:");
scanf("%d",&num);//输入一个数
for(i=1;i<num;i++)//循环次数等于输入的数
{
if(num%i==0)//判断是否为约数
sum+=i;//将除本身的约数求和
}
if(sum==num)//判断和是否等于本身
printf("%d is perfect number\n",num);
else
printf("%d is not perfect number\n",num);
return 0;
}
2.课堂案例:
2.1 输入一个数,判断是否是素数
代码如下:
#include<stdio.h>
#include<math.h>
int main(int argc, const char *argv[])
{
int num,i;
printf("please enter number:");
scanf("%d",&num);//输入一个数
int count=0;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0)//判断是否能被i整除
{
count++;
}
}
if(count==0&&num!=1)//count等于0表示该数只能被1与本身整除且不包括1
printf("%d is prime\n",num);
else
printf("%d is not prime\n",num);
return 0;
}
测试结果:
2.2 实现图形打印(四个图片)
图片1:
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<=4;i++)//外表行
{
for(j=1;j<=i;j++)//内表列,j=i
{
printf("*");
}
printf("\n");
}
return 0;
}
结果如下:
图片2:
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=5-i;j++)//j=4+1-i
{
printf("*");
}
printf("\n");
}
return 0;
}
结果如下:
图片三:
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=5-i;j++)//空格的图案为倒三角
{
printf(" ");
}
for(j=1;j<=i;j++)//*的图案为正三角
{
printf("*");
}
printf("\n");
}
return 0;
}
结果如下:
图片四:
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=i;j++)//空格的图案为正三角
{
printf(" ");
}
for(j=1;j<=5-i;j++)//*的图案为倒三角
{
printf("*");
}
printf("\n");
}
return 0;
}
结果如下:
2.3 练习穷举算法:百钱买百鸡
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int x,y,z;
for(x=0;x<=20;x++)//公鸡最多为20个
{
for(y=0;y<=33;y++)//母鸡最多为33个
{
for(z=0;z<=100;z++)//雏鸡最多为100个
{
if(5*x+3*y+z/3==100&&x+y+z==100&&z%3==0)//总价为100,总数为100,且雏鸡的个数为3的倍数
printf("x=%d y=%d z=%d\n",x,y,z);
}
}
}
return 0;
}
测试结果:
2.4 输入一个数判断回文数
代码如下:
#include<stdio.h>
int main(int argc, const char *argv[])
{
int num,sum=0,a;
printf("please enter number:");
scanf("%d",&num);
a=num;
while(a!=0)//直到a=0时退出循环
{
sum=sum*10+a%10;//将各个位数倒序
a/=10;
}
if(sum==num)//判断是否为回文数
{
printf("Yes\n");
}
else
printf("No\n");
return 0;
}
测试结果:
2.5 输入一个数,计算各个数字之和
#include<stdio.h>
int main(int argc, const char *argv[])
{
int num,sum=0;
printf("please enter number:");
scanf("%d",&num);//输入一个数
while(num!=0)//直到该数为0时停止
{
sum+=num%10;//取出各个位数并求和
num/=10;
}
printf("sum=%d\n",sum);
return 0;
}
测试结果:
思维导图: