c语言中如何实现输入一个整数实现倒序输出
定义一个整数类型的输入,然后让它正序输出,倒序输出相信是很多C语言初学入门一定会遇到的经典题目,下面就是我对整数的正序和倒序输出一点小小的总结.
1. 反序(倒序)输出
反序输出常用的思路就是按位取余,把取出来的值进行循环保存。
int main()
{
int i=12345; //定义一个12345的整数
int temp=0;//temp作为存储的值
while(i!=0){
temp = temp*10 + i%10;
i/=10;
} //反序取出来
printf("%d",temp); //打印
return 0;
}
如图所示:
2, 正序输出
正序输出会用在整形变量正序输出转换成对应的字符数组,或者倒过来.常用思路就是定义一个函数,在函数内递归取余调用自身,实现功能。
输入 : 12345
输出 :"12345"
如下:
char str(int x)
{
char a[100];//存放整数转换过来的字符
int i; //计数
if(x/10!=0)
str(x/10);
if(x>=0)
a[i]='0'+x%10; //整数转换成字符存储,字符都是以整数形式存储
else
a[i]='0'+(-x)%10;//整形包括负数
printf("%c",a[i++]);
}
int main()
{
int i;
printf("请输入一个整数:\n");
scanf("%d",&i);
str(i);
return 0;
}
如图所示:
直接输入:
一、# include "stdio.h"
int invert(long m)
{ printf("%ld", m%10);
m = m/10;
if (m>0)
invert(m) ;}
如下图:
二、main()
{long n;
printf("Enter n: ");
scanf("%ld", &n);
invert(n);
printf("\n");}
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
推荐于2017-09-26 · 知道合伙人教育行家
思路:要想输出一个整数n的倒序,则先输出个位、十位、百位……,个位可以通过n%10得到,十位可以通过n/10%10得到,百位可以通过n%100%10得到……,所以可以通过先取余输出再除以10直到该数等于0为止。
参考代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n){
printf("%d",n%10);
n/=10;
}
printf("\n");
return 0;
}
/*
输出:
12345
54321
*/
注:本回答已涵盖下面的其它主要回答,为方便大家阅读,难点处已罗列注释
法1:适用于负数
#include<stdio.h>
int main()
{
int n,x;
int printn(int x); //函数原型
scanf("%d", &n);
if (n < 0)
{
n = -n;
putchar('-'); /*当输入的n<0,将之化为正数
同时用putchar('')语句加上负号*/
}
printn(n);
system("pause");
return 0;
} //以下是函数的定义
int printn(int x)
{
if (x >= 0 && x <= 9)
printf("%d", x);
else /*以下通过赋值运行以方便理解:
例如输入13
先输出余数3
再进行printn(1)的函数运算
即输出1
运行结束*/
{
printf("%d", x % 10);
printn(x / 10);
}
}
法二:仅适用正数
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
while (n)
{
printf("%d", n % 10);
n /= 10;
}
system("pause");
return 0;
}
/*VS2017调试结果参考:
输入10位数(>0),输出倒叙10位数;
输入>10位数,输出乱码;
1000--0001;
0--请按任意键继续;
0001--1;
+12--21*/