C语言-阶乘-九九乘法口诀表-最大公约数-闰年
几个循环的小练习
(1)计算n的阶乘
在这里不考虑溢出的情况
#include<stdio.h>
int main(void)
{
int i = 0;
int n = 0;
int ret = 1;
printf("请输入一个整数:");
scanf("%d",&n);
for(i = 1;i <= n ;i++)
{
ret = ret * i;
}
printf("ret = %d",ret);
return 0;
}
(2)计算1~10的阶乘之和
在(1)的基础上,在外面再套一个循环
#include<stdio.h>
int main(void)
{
int i = 0;
int n = 0;
int ret = 1;
int sum = 0;
printf("请输入10计算1~10的阶乘之和:");
scanf_s("%d", &n);
for (n = 1; n <= 10; n++)
{
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
sum = sum + ret;
}
printf("sum = %d", sum);
return 0;
}
(3)在屏幕上打印九九乘法口诀表
//在屏幕上输出乘法口诀表
//分析:9行,多上行行号就是多少,先确定行,再确定列
#include <stdio.h>
int main(void)
{
int i = 0;//行
//确定打印9行
for (i = 1; i <= 9; i++)
{
//打印1行
int j = 1;
for (j = 1; j <= i; j++)
{
// %-2d向左对齐 两个字符位置 不够的用空格来补充
printf(" %d * %d = %-2d ", i, j, i*j);
}
//输出回车换行
printf("\n");
}
return 0;
}
(4)给定两个数计算最大公约数
使用辗转相除法
#include<stdio.h>
int main(void)
{
int n,r,m;
printf("请输入两个大于零的整数:");
scanf("%d %d", &m, &n);
while (r = m%n)
{
m = n;
n = r;
}
printf("%d\n", n);
return 0;
}
(5)打印1000~2000之间的闰年
判断闰年的方法
能被4整除但是不能被100整除,或者能被400整除。
#include<stdio.h>
int main(void)
{
int year;
for (int year = 1000; year <= 2000; year++)
{
if (year % 4 == 0 && year % 100 != 0)
{
printf("%d\n", year);
}
else if (year % 400 == 0)
{
printf("%d\n", year);
}
}
return 0;
}
(5)打印100~200之间的质数(素数)
这里使用试除法
什么是质数(素数):如果一个数,除了1和它本身之外不能被其他数所整除,那么这个数就是质数(素数)。
例如:13,只能被1和13整除,所以13就是质数
#include<stdio.h>
int main(void)
{
//定义整型并初始化
int num = 0;
int i = 0;
int count = 0;
//理解
//让i从2开始
//num开始被i除一直除到num-1
//如果其中有num被i整除了,循环就终止,break
//因为素数是除了1和他本身之外不能被其他数所整除
//在这里只要i和Num不相等,num被其他说所整除,说明,num不是个属于素数,什么也不输出,1是默认的,可以将任意的num整除,在这里i从2开始,所以是素数的数只能被其本身所整除,即i = num,
for (int num = 100; num <= 200; num++)
{
//i <num
//筛选——输出
//有其他可以将num整除的数也将终止循环
for (i = 2; i < num; i++)
{
if (num%i == 0)
{
break;
}
}
//跳出来
//就是i把num-1的数字都试过了,都不能将num整除
//那么就是剩下i = num的情况了,此时这个数肯定为素数
// i =num
if (num == i)
{
printf("%d\n", num);
count++;
}
}
printf("一共有%d个质数\n", count);
return 0;
}