c语言 输入一个数逆序显示

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:56:18
我用得字符串来做,但为什么我写这个程序执行完后始终有个问号呢。
#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int k,i,j;
printf("确定一个数组的长度");
scanf("%d",&k);
printf("输入一个%d位数组:",k);
getchar();
gets(a);
for(i=k-1,j=0;i>=0&&j<=k-1;i--,j++)
b[j]=a[i];
b[j+1]='\0';
puts(b);
}

#include<stdio.h>
#include<string.h>
void main()
{
char a[100],b[100];
int k,i,j;
printf("确定一个数组的长度");
scanf("%d",&k);
printf("输入一个%d位数组:",k);
getchar();
gets(a);
for(i=k-1,j=0;i>=0&&j<=k-1;i--,j++)
b[j]=a[i];
b[j]='\0'; /*这里把j+1改为j就好了,因为出循环时,j已经加了1*/
puts(b);
}

如果通过键盘输入了中文,每个中文由两个字符组成,而且超出了ASCII能表达和显示的范围,逆序之后,就可能变成不认识的字或问号。

我运行过了,没发现啊!