栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【ONE·C || 关于数字输出的问题】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【ONE·C || 关于数字输出的问题】

总言

  思路汇聚,对初学者的我来说值得学习。
  会慢慢学习和补充。

文章目录
  • 总言
  • 一、反向输出四位数
    • 一)、法一
    • 二)、法一的改编版
    • 三)、法二

一、反向输出四位数
  • 题目:
       输入一个四位数,反向输出对应四位数。
      
一)、法一
  • 类似题: 输出二进制位数、八进制位数、十六进制位数

   笔者需要学习的一种写法。这种写法强调用“除10余10”的思维来完成数位转换过程。

#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符
#include 

int main(void)
{
//输入四位整数:
	int a;
	printf("输入四位数:");
	scanf("%d", &a);
//对该整数进行一个循环,使数位反向。	
	int rem,i;
	for (i = 0; i < 4; i++)
	{
		rem=a% 10;
		a /= 10;
		printf("%d", rem);
	}
	
	return 0;
}

  由于上述代码采用了for循环,因其条件判断表达式的限制,只针对四位数有效,因此有改进空间,比如:考虑while循环等。
  如下:这样写的好处在于减少了变量的使用,且比较简洁,通用性也强。

#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符
#include 

int main(void)
{
	int a;
	printf("输入四位数:");
	scanf("%d", &a);
	while(a)//a为真会一直循环,直至a=0为假跳出循环。
	{
		printf("%d", a % 10);
		a /= 10;
	}
	return 0;
}

  

二)、法一的改编版

  对法一再进行逻辑优化,使其更符合数学运算规则。
  ps:加入定义函数纯属练习,也可以直接在main函数里完成。但考虑到当程序繁杂时,通常情况下不是所有代码都往main函数里抛,于是采取了定义函数的方法。

#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符
#include 

//创建一个输入正整数的函数。
int post(void)
{
	printf("输入一个正整数:");
	scanf("%d", &num);
	return num;
}

//创建一个计算反向数值的函数。
int rev(int num)
{
	int i = 0;
	do{
		i = i*10 + num %10;
		num /= 10;
	}while(num);
	return num;
}

int main(void)
{
	printf("反向数值为:%d",rev(post()));
	return 0;
}

  
  

三)、法二

  一种比较神奇的写法(个人想过这种写法,但做题时考虑到代码不能只停留在比较简单的层面,就换了种思路)

#define _CRT_SECURE_NO_WARNINGS //预处理命令与标识符
#include 

int main(void)
{
	int a, b, c, d;
	printf("输入四位数:");
	scanf("%1d%1d%1d%1d", &a, &b, &c, &d);
	printf("%d%d%d%d",d,c,b,a);
	return 0;
}

  

  • 法三
在这里插入代码片

  
  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/512229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号