第七十三题→输入一个整数n(1000<=n<=9999)

116 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP创作者(创作新人榜No.38)~[CSDN]周榜102﹣总榜1024 ⇿ 全网访问量35w+🏅

🆔本文由 謓泽 原创 发布在 JueJin 如需转载还请通知⚠

📝个人主页-謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝

📣系列专栏-【C语言】Topic - 謓泽的专栏 - 掘金 (juejin.cn)🎓

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩\

🍅第七十三题→输入一个整数n(1000<=n<=9999)🍅

🍻本⑦③题解思路如下✔

⒈题目的本质。

说明⇢输入一个整数为n的数字范围是「1000<=n<=9999」

假设-我们输入的数字是1234,那么最终输出的结果是4321的数字。这就是本道题目的要求了,其实也就是把输入的每一位最终倒着输出每一位。

⒉题目的思路。

说明⇢首先我们要输入一个数字,那么就要用到输入scanf函数。接着我们需要进行判断如果输入的n不为(1000<=n<=9999)这个范围之内的数字的话就重新输入数字,那么我们到底怎么才能去实现输入结果1234,输出结果4321呢。实际上很容易,如下步骤👇

1234 % 10 = 4 (打印)
1234 / 10 = 123
123 % 10 = 3 (打印)
123 / 10 = 12 
12 % 10 = 2 (打印)
12 / 10 = 1 
1 % 10 = 1 (打印)
1 / 10 = 0 

说明⇢以上的思路我们都可以使用while(表达式)循环来进行实现,表达式就为n即可。

⒊注意的小细节。

说明⇢当我们取模10的时候会得到取模之后的数字,但是并不会删除取模之后的数字,就拿上面的来举例。我们1234%10 = 123 ... 4 得到了④,有些初始这个取模的小伙伴可能就会认为是④被去掉了得到了123,但是并不是这样。

拓展⇢取模的优先级比除号操作符低也就是除号的优先级比取模的优先级高。
示例代码如下👇

#pragma warning(disable:6031)
#define _CRT_SECURE_NO_WARNINGS 1
#pragma message("第七十三题→输入一个整数n(1000<=n<=9999)")
#include<stdio.h>
#define BINARY 1
int main(void)
{	
#if BINARY
	int arr[4] = { 0 };
	int n = 0;
	int i = 0;
	back:
	scanf("%d", &n);
	if (n >= 1000 && n <= 9999)
	{
		arr[0] = n % 10;
		arr[1] = n / 10 % 10;//"/"优先级>"%"优先级
		arr[2] = n / 100 % 10;
		arr[3] = n / 1000 % 10;
		for (i = 0; i < 4; i++)
		{
			printf("%d", arr[i]);
		}
	}
	else
	{
		goto back;//返回到back
	}
#else
	int n = 0;
	while (1)
	{
		printf("请输入n(1000<=n<=9999):");
		scanf("%d", &n);
		if (n >= 1000 && n <= 9999)
		{
			while (n)
			{
				printf("%d", n % 10);
				n = n / 10;
			}
			break;
		}
		else
		{
			printf("你输入的是%d不符合题目要求,重新输入~\n", n);
		}
	}
#endif
	return 0;
}

运行结果🖊 (输入正确情况下)

请输入n(1000<=n<=9999):1234

4321