putchar用法的一个程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:19:57
#include <stdio.h>
void main()
{
int n;
printf("input a number:");
scanf("%d",&n);
do{
putchar(n%10);
n=n/10;
}while(n!=0);
}

这个是让输入数字倒序的程序,但是用putchar输出的话会输出一堆符号,怎么回事呢?

另外还得问一下,putchar是一定要配合getchar用的吗?它所输出的格式是什么决定的呢?
那我想用putchar像printf那样输出一个变量怎么办?

汗,你没看懂我的意思,我会用printf,我的意思是说假如想用putchar输出变量(printf可以很容易的表达这样的功能,但是putchar呢?)怎么办?

问题1:这个是让输入数字倒序的程序,但是用putchar输出的话会输出一堆符号,怎么回事呢?
回答:因为putchar的括号内放的应该是字符(串),所以当你写:
putchar('1')时,输出的才是1.因为'1'的外面套了一个单引号(字符串就套双引号)
而,输入putchar(1)时
输出的是ASCII码(是电脑中所认定的一种标准交换码,如果你不懂可以直接无视,因为这只是个常识而已,想要知道号码和相应的字符可以在网上查一下)为1的符号,也就是笑脸符号。
而真正需要输出0时,必须写putchar(48),
因为0的ASCII码是48,而1是49,2是50,等等,直到9是57。
所以你想要输出n%10时,括号内应该写n%10+48,而不是n%10。
电脑里很多时候ASCII码和字符是可以相互转换的,所以当出现很多符号的时候,可以多考虑是不是ASCII码的问题

问题2:putchar是一定要配合getchar用的吗?它所输出的格式是什么决定的呢?
回答:不一定。因为putchar的输出格式不太好控制,也比较单一,所以大部分时候都会用putchar,而是使用printf,getchar的输出格式就是括号里的字符串,字符串什么样,打出来就是什么样。

问题3:那我想用putchar像printf那样输出一个变量怎么办?
回答:很少有这样的用法(恕我见识短浅)……一般都用printf比较方便吧?
在这一题的具体过程中,可以改成putchar (N%10+48),但是其他的就没有这样的改法了。putchar的中文意思就是输出字符函数,很少有用来输出整型数值的用法。你可以具体问一问别人吧。不好意思不能帮你。

使用scanf("%d",&n);时,你输入的是字符串,得到的是数值
其中有一个字符串转换成数值的过程
而putchar要求的参数是字符的ASCII编码,它不会自动将数字转换成字符
如果你想输出0~9数值对应的字符,得先转换成ASCII编码
把你那句换成