适合初学者的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
    评论
1. 请写1个支付宝接龙红包程序. 随机产生1-100的随机数,作为红包金额. 让用户不断的去猜,直到猜正确为止.最后发给用户的红包金额是 红包金额/猜得次数. 2. 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 3. 实现要求用户一直输入QQ号码和密码,只要不是123456、888888就一直提示要求重新输入,如果正确则提登录成功. 4. 1-100之间不能够被7整除的数的和. 5. 求1-200之间的所有的整数的累加和 6. 求1-100之间6的倍数的个数 7. 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩 8. 2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*** 9. 从键盘输入10个数,求出最大数 10. 1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5)), 并统计满足条件的整数有多少个。 11. 求1-100中 是7的倍数 的数值之和 12. 求1-1000之间的所有的奇数之和 13.猜数字游戏. 随机产生1个1-100之间的数 让用户猜 当用户输入的数比产生的随机数大 就输出 猜大了 并让用户继续输入新的数.。 当用户输入的比产生的随机数小的时候 就输出 猜小了 并且继续猜 当用户刚好输入的就是这个随机数的时候 提示成功 并显示用户猜了多少次. 14. 老师问学生,这题你会做了吗? 如果学生答"会了(y)",则可以放学. 如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学. 直到学生会或老师给他讲了10遍还不会,都要放学 15. 写1个程序. 随机的产生1个2位数的加法运算.让用户输入这个运算的结果 然后判断这个结果是否正确. 来10次. 每个人默认有10分. 产生10个加法运算.操作数的范围在0-100之间. 每产生1个加法运算 就让用户输入结果.判断是否正确. 当回答正确的时候就为用户加1分. 错误的时候就扣1分. 当10题目回答完毕之后 就显示用户得的分数. ***
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

追梦不止~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值