C语言-阶乘-九九乘法口诀表-最大公约数-闰年

2023-05-12 20:57:08 浏览数 (1)

C语言-阶乘-九九乘法口诀表-最大公约数-闰年

几个循环的小练习

学习b战上张鹏伟老师的课C语言学习

(1)计算n的阶乘

在这里不考虑溢出的情况

代码语言:javascript复制
#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)的基础上,在外面再套一个循环

代码语言:javascript复制
#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)在屏幕上打印九九乘法口诀表

代码语言:javascript复制
//在屏幕上输出乘法口诀表
//分析: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)给定两个数计算最大公约数

使用辗转相除法

代码语言:javascript复制
#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("%dn", n);
	return 0;
}

(5)打印1000~2000之间的闰年

判断闰年的方法 能被4整除但是不能被100整除,或者能被400整除。

代码语言:javascript复制
#include<stdio.h>
int main(void)
{
	int year;
	for (int year = 1000; year <= 2000; year  )
	{
		if (year % 4 == 0 && year % 100 != 0)
		{
			printf("%dn", year);
		}
		else if (year % 400 == 0)
		{
			printf("%dn", year);
		}
	}
	return 0;
}

(5)打印100~200之间的质数(素数)

这里使用试除法 什么是质数(素数):如果一个数,除了1和它本身之外不能被其他数所整除,那么这个数就是质数(素数)。 例如:13,只能被1和13整除,所以13就是质数

代码语言:javascript复制
#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("%dn", num);
			count  ;
		}
	}
	printf("一共有%d个质数n", count);
	return 0;
}

0 人点赞