关于分支循环的一些练习(含答案)

本文通过C语言展示了如何实现9*9乘法表的打印、计算某日是当年的第几天(考虑闰年)以及分解质因数的功能。代码中包含了嵌套循环、条件判断等基本编程概念,适合初学者巩固基础知识。

关于分支循环的一些练习(含答案)

  1. 9*9乘法表
  2. 某日是那年的第几天
  3. 分解质因数

一、9*9乘法表

​ 我们小学应该都背过99乘法表,用循环很方便做,但是怎么打印成乘法表的样子呢?

​ 我们就要结合制表符与回车的应用啦!

/*
	功能:打印9*9乘法表
	参数:x行y列
*/
#include<stdio.h>
int main()
{
    int x,y;
    for(x = 1;x < 10;x++)								//1~9循环
    {
        for(y = 1;y <= x;y++)							//内嵌循环,使y每次不大于x
        {
            printf("%d * %d = %d\t",y,x,x*y);			//使用制表符
        }
        printf("\n");									//打印一行后记得回车
    }
    return 0;
}

二、某日是那年的第几天

​ 键盘输入年月日,判断该日是那年的第几天。

​ 利用switch可以很好的进行分类计算,但我们需要重视的一个点是,那年是否是闰年?该从哪里加1呢?

/*
	功能:求天数
	参数:@day:日;@month:月;@year:年;@t:天数变量
	返回值:第多少天
*/
#include<stdio.h>
int main()
{
    int day,month,year;											//定义日,月,年三个变量
    int t = 0;													//初始化天数为0
    printf("请输入年月日:\n");
    scanf("%d%d%d",&year,&month,&day);
    switch(month)												//判断月份
    {
        case 12:	t += 30;									//加上前一个月的天数
        case 11:	t += 31;
        case 10:	t += 30;
        case 9:		t += 31;
        case 8:		t += 31;
        case 7:		t += 30;
        case 6:		t += 31;
        case 5:		t += 30;
        case 4:		t += 31;
        case 3:		t += 28;
        case 2:		t += 31;
        case 1:		t += day;									//加上当月的天数
    }
    if((year%4==0&&year%100!=0||year%400==0)&&month>=3)			//判断是否是闰年且是否大于2月
    {
        t += 1;
    }
    printf("该日是那年的第%d天:\n",t);
    return 0;
}

三、分解质因数

​ 键盘输入一个数,输出成质因数相乘的形式,例:

​ 输入:90

​ 输出:90 = 2 * 3 * 3 * 5

/*
	功能:将一个整数变成质因数相乘的形式
	参数:@n:要分解的数;@i:n的因数
	返回值:90 = 2 * 3 * 3 * 5
*/
#include<stdio.h>
int main()
{
    //1.找个地方保存
    int n,i;
    //2.输入数
    printf("请输入一个正整数:\n");
    scanf("%d",&n)printf("%d = ",n);
    //3.开始分解
    for(i = 2;i <= n;i++)					//最小的质数为2
    {
        while(n % i == 0)					//当i整除n时
        {
            printf("%d",i);					//先打印一个质因数
            n /= i;							//n就更新为商
            if(n != 1)						//如果n不等于1时,便输出*号,如果等于1了则不能再分了
            {
                printf("* ");
            }
        }
    }
    printf("\n");
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值