还是C语言问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:24:28
#include "stdio.h"
#define N 10
void nud(char h[]);
main()
{
char a[N]={0};
printf("请输入一行字符:");
gets(a);
nud(a);
return 0;}
void nud(char h[])
{int i=0,a=0,b=0,d=0,e=0;
for(i=0;h[i]!=0,i<N;i++)
{
if((h[i]>='a'&&h[i]<='z')||(h[i]>='A'&&h[i]<='Z'))
a++;
else if(h[i]>='0'&&h[i]<='9')
b++;
else if(h[i]==' ')
d++;
else
e++;

}
printf("字母有%d\n",a);
printf("数字有%d\n",b);
printf("空格有%d\n",d);
printf("其他%d\n",e);
}

请问为什么运行后我输入1其他那会显示9?我错在哪?请用FOR循环,题目要求统计字符空格字幕的个数,谢谢!

将for循环改成这样:
for(i=0;h[i]!=0&&i<N;i++)

晕,这种情况不适合用for循环,例如a[10],你只输入2个数,程序就只能循环两次.用for循环也不是不可以
把你条件改成for(i=0;(h[i]!=0)&&(i<N);i++) .最好用while循环就可以,刚才我给你的程序里面不是有了吗?那个i不就是总字符数?:
while(h[i])//数组不为空时
{
if((h[i]>='a'&&h[i]<='z')||(h[i]>='A'&&h[i]<='Z'))
a++;
else if(h[i]>='0'&&h[i]<='9')
b++;
else if(h[i]==' ')
d++;
else
e++;
i++;//这就是总字符数
}

MarGanis ,你能看懂中国字吗,你看完我写的字吗?
不会就不要来扯淡.

:pujia12345 ,请问==0和=='\0'有区别吗,真是菜鸟一堆,害人不浅啊

确实是一个 比较奇怪的问题
问题是出在你的for循环里面只有一个if语句
我也不知道为什么,导致了奇怪的错误
解决的办法 在 for循环里面加一个空语句 “;”
就好了,我试过了

另外个人认为 楼上的 虽然不错 但是你说的问题并不存在吧

你看你的for(i=0;h[i]!=0,i<N;i++)
h[i]!='\0';
你写错了

建议:
你在每个if后加个break;最后一个就不回加9次了

明月隐丹心
的对,其他的都有很多的问题
你测试一下
输入的时候,显示有错的,而且每次错的不一样

我运行了,你的错了