c语言运行程序结果出现类似中文的乱码

#include<stdio.h>#include<conio.h>#include<stdlib.h>voidmain(){chara[5];intn,i;printf... #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
char a[5];
int n,i;
printf("输入5个字符,按回车键结束:");
//fflush(stdin);
for(i=0;i<=5;i++)
scanf("%c",&a[i]);
i=0;
while(i<=5)
{
if(('A'<=a[i])&&(a[i]>='Z'))
{
a[i]+=32;
}
i++;
}
i=i-1;
while(i>=0)
{
printf("%c",a[i]);
i--;
}
printf("\n");
}
展开
 我来答
我爱分享生活知识
2013-08-30 · TA获得超过155个赞
知道答主
回答量:145
采纳率:100%
帮助的人:54.9万
展开全部

我的运行没有问题啊,

 

 由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。如果想在AppWizard生成的工程文件中使用中文,在在MFC
AppWizard的第1步中选择中文资源,选择Chinese(P.R.C),如果你在语言列表中没有找到有关中文的选项,说明你的VC++的中文支持模块没有安装。此时,应退出VC++,在VC++的光盘的DevStudioSharedIDEBinIDE目录下找到APPWZCHS.DLL文件,将其拷贝到硬盘的DevStudioSharedIDEBinIDE目录下即可,再启动VC++,就可以看到这一选项了。使用这一选项生成的工程文件中的所有资源都是中文的。VC++还提供了繁体中文(APPWZCHT.DLL)、日文(APPWZJPN.DLL)和韩文(APPWZKOR.DLL)的支持模块。

  方法1:
如果你的工程中的菜单、对话框、字符串等资源不是由AppWizard生成的,而是手工添加的,你必须保证该资源的Language选项为Chinese(P.R.C)。具体的做法是在资源列表中选择资源,然后在快捷菜单中选择Properties,在话框中设置Language下拉框。如果在Language中选择English,尽管在集成环境中可以正常显示中文,但编译后就变成了诸如"___.???"之类的乱码了。

  方法1: 有一个解决方案不必从头作起:找到rc文件(资源文件),把其中LANGUAGE 9,
1的地方改为4,2;codepage(1252)改为codepage(936);另外把#include "afxres.rc" 改成#include
"l.chsafxres.rc";把"afxres.rc" 改成"l.chs\afxres.rc"即可,其中的数据根据不同文字代码可能不同

希望对你有帮助

追问
appwizard是什么,mfc又是什么,可以详细点,具体在哪里可以找到你说的这些命令
光学院天才
推荐于2017-12-16
知道答主
回答量:17
采纳率:0%
帮助的人:10.4万
展开全部
//这样解决或许可以。

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void main()

{

char a[5];

int n,i;

printf("输入5个字符,按回车键结束:");

//fflush(stdin);

gets(a);

i=0;

while(i<5)

    {

if(('A'<=a[i])&&(a[i]<='Z'))

{

a[i]+=32;

}

else if(a[i]>='a'&&a[i]<='z'){}

else{

puts("输入异常");

break;

}

i++;

}

i=i-1;

    while(i>=0)

{

printf("%c",a[i]);

i--;

}

printf("\n");

}

更多追问追答
追问
谢谢,你的程序可以实现我的要求,但是我之前的代码为什么会出现我说的那种情况呢?是输入函数的问题,还是循环体的问题,还是两个都有问题?
追答
是把字符串输到了一个字符里;
就是把五个字母输到了一个c里面。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
应韵0jm
2013-08-30 · TA获得超过264个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:50.3万
展开全部
#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void main()

{

 char a[5];

 int n,i;

 printf("输入5个字符,按回车键结束:");

 //fflush(stdin);

 for(i=0;i<=5;i++)

  scanf("%c",&a[i]);

 i=0;

 while(i<5)///这里有错

    {

  if('A'<=a[i]&&a[i]>='Z')//这里你应该输入大写才符合

   {

    a[i]+=32;

   }

  i++;

 }

 i=i-1;

    while(i>=0)

 {

  printf("%c",a[i]);

  i--;

 }

 printf("\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-08-30 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:968万
展开全部
while(i<5) 只要5个字符,是从0~4,没有5这个字符

if(('A'<=a[i])&&(a[i]>='Z')) //这个逻辑上有问题,你仔细想想
if(('A'<=a[i])&&(a[i]<='Z'))

你的问题就是这个if,因为小写,所以还是加了32,就到了中文区域了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
揭忆辰2N
2013-08-30 · TA获得超过542个赞
知道小有建树答主
回答量:561
采纳率:50%
帮助的人:412万
展开全部
if(('A'<=a[i])&&(a[i]>='Z'))
{
a[i]+=32;
}
如果是考虑将大写字母转换为小写字母
判断条件应该为大于等于A且小于等于Z这个范围才对
而不是小于等于A和大于等于Z,这样的条件,只有AZ才符合
至于所谓的中文,乱码罢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式