适合初学者的5道循环题目

1.九九乘法表

双循环即可完成,第一层循环打印行数,第二层循环打印列数,最后依靠循环变量打印出乘法表。

#include <stdio.h>
int main()
{
	int i, j;
	for (i = 1; i <= 9; i++)//行数
	{
		for (j = 1; j <= i; j++)列数
		{
			printf("%d*%d = %-2d ", i, j, i * j);//打印乘法口诀
		}
		printf("\n");//每一行打印结束进行换行
	}
}

这是打印出来的效果e061d9137c3949cc8b31b41634ee65c1.png

 1.1 九九乘法表还有进阶版本,也就是可以打印任意行的乘法表实现如下:

实现效果大同小异,只是可以自由控制打印的行数

#include <stdio.h>
int main()
{
	int i, j, n;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%2d*%d = %-3d ", i, j, i * j);
		}
		printf("\n");
	}
}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5q-U54m544CC44CC,size_20,color_FFFFFF,t_70,g_se,x_16

 2.打印素数

我们最常见的判断素数的方法是:除1和它本身之外的数字无法进行整除

实现如下:

#include <stdio.h>
int main()
{
	int i, j, n;
	scanf("%d", &n);
	if (n == 1)//1不是素数
	{
		printf("不是素数\n");
	}
	for (i = 2; i < n; i++)//判断从2到它本身是否可以被整除
	{
		if (n % i == 0)
		{
			printf("不是素数\n");
			break;
		}
	}
	if (n == i)//都不可以整除,是素数
	{
		printf("是素数\n");
	}
	return 0;
}

接下来我们打印100~200之间的素数,代码如下:

#include <stdio.h>
int main()
{
	int i, j;
	for (i = 100; i <= 200; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
		}
		if (j == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

打印出来的效果如下:80d1e02c7c7a42239bc59404a65a323c.png

 除此之外我们还有更简单的方法。

比如:除2之外的数字一定不为素数;从2到sqrt(n)中没有可以整除的数则是素数。

#include <stdio.h>
#include <math.h>
int main()
{
	int i, j, k = 0;
	for (i = 101; i <= 200; i+=2)
	{
		for (j = 2; j <= sqrt(i); j++)
		{
			k = 0;
			if (i % j == 0)
			{
				k = 1;
				break;
			}
		}
		if (k == 0)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

打印出来的结果也是一样的。

3.打印闰年

可以被4整除不能被100整除并且可以被400整除的年份为闰年。

下面是代码的实现。

#include <stdio.h>
int main()
{
	int i, j;
	for (i = 1000; i <= 2000; i++)//打印1000到2000之间的闰年
	{
		if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)//判断
		{
			printf("%d ", i);
		}
	}
	return 0;
}

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5q-U54m544CC44CC,size_20,color_FFFFFF,t_70,g_se,x_16

 4.打印n的阶乘以及n个阶乘的累加

#include <stdio.h>
int main()
{
	int i, n, m = 1;//m要初始化为1
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		m *= i;//让m累乘i, i = 1,2,3,4,5
	}
	printf("%d\n", m);
	return 0;
}

69814a31e0f04dff87a90c8d5023d9d0.png

 如果是n个阶乘的累加也很简单 思路如下:

n = 5,m = 1!+2!+3!+4!+5!;

将每一次循环进行的累乘加在一起即可实现,如下:

#include <stdio.h>
int main()
{
	int i, n, m = 1, k = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		m *= i;//累乘
		k += m;//累加
	}
	printf("%d\n", k);
	return 0;
}

 

 

a9282b1d5f8446da85c0bc89fd1568eb.png

 5.猜数字游戏

猜数字游戏的具体实现在我以前的文章里,这里只给出代码

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

void menu()
{
    printf("****************************\n");
    printf("****  1.Play    0.exit  ****\n");
    printf("******    1.1.1版本   ******\n");
    printf("****************************\n");
}

void game()
{
    int a = 0,len = 100,len1 = 0;//len为大值初始为100,len1为小值初始为0
    printf("游戏开始\n");
    int ret = 0;
    ret = rand() % 100 + 1;
    //printf("(Plug-in --> The number is %d)\n",ret);//这是外挂
    for (a = 1; a <= 5; a++)
    {
        int b = 0,count = 0;
        printf("请输入你猜的数字:");
        scanf("%d", &b);
        if (b > ret)
        {
            len = b;//当玩家猜大的时候,将玩家输入的猜大的的数值  作为游戏的最大值,并存到len里
            if (a != 5)
            {
                printf("猜大了,范围是%d - %d\n",len1,len);
            }
            
        }
        else if (b < ret)
        {
            len1 = b;//当玩家猜小的时候,将玩家输入的猜小的的数值  作为游戏的最小值,并存到len1里
            if (a != 5)
            {
                printf("猜小了,范围是%d - %d\n", len1, len);
            }
            
        }
        else
        {
            printf("猜对了,数字是:%d\n", b);
        }

    }
    printf("答案是:%d\n", ret);
    system("pause");
    Sleep(1000);
    system("cls");
}
int main()
{
    srand((unsigned int)time(NULL));
    int input = 0;
    system("cls");
    Sleep(1000);
    do
    {
        menu();
        printf("请开始游戏,输入1或0:(1/0)\n");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            system("cls");
            Sleep(1000);
            game();
            break;
        case 0:
            printf("游戏结束\n");
            break;
        default:
            system("cls");
            printf("输入错误,请在输入一次\n");
            break;
        }
        Sleep(1000);
    } while (input);
    return 0;
}

 

希望我的文章可以对你有帮助,期待老铁们的三连哦。

 

 

  • 36
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追梦不止~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值