C语言34课问题求助
#include <stdio.h>//小甲鱼c语言第34课后所留问题,统计输入的字符个数,0-9各个数字个数,空格个数,其他字符个数
//程序编译没有问题,就是无法输出结果,输入字符后按回车没有任何反应,求解!!!实在没有办法了.
int main (void)
{
int number = {0}, blank = 0, other = 0, frequency;
char character;
printf ("请输入:");
character = getchar();
while(1)
{
if (character >= 48 && character <= 57)
{
number = number + 1;//计算各个数字个数
}
elseif (character == 32)
{
blank = blank + 1;
}
else if (character == 13)
{
break;
}
else
{
other = other + 1;
}
character = getchar();
}
for (frequency = 0; frequency < 10; frequency++)
{
printf ("数%d有%d个\n", frequency, number);
}
printf ("空格有%d个\n", blank);
printf ("其他字符有%d个", other);
return 0;
}
じO-联合 发表于 2014-2-22 23:37 static/image/common/back.gif
对哦 。。。。但是那个if(c==13)的时候好像就break了啊,退出啊啊
不好意思,昨晚没看清楚,我把它改了下,你看看行不行
#include <stdio.h>
//小甲鱼c语言第34课后所留问题,统计输入的字符个数,0-9各个数字个数,空格个数,其他字符个数
//程序编译没有问题,就是无法输出结果,输入字符后按回车没有任何反应,求解!!!实在没有办法了.
int main (void)
{
int number = {0}, blank = 0, other = 0, frequency;
char character,ch;
printf ("请输入:");
character = getchar();
getchar(); //吸收空格
while(1)
{
if (character >= 48 && character <= 57)
{
number = number + 1;//计算各个数字个数
}
elseif (character == 32)
{
blank = blank + 1;
}
/* else if (character == 13) //这里不要了
{
break;
}*/
else
{
other = other + 1;
}
if(ch=='\n')break; //判断ch是不是回车
character = getchar();
ch=getchar(); //吸收空格,把值赋给ch,
}
for (frequency = 0; frequency < 10; frequency++)
{
printf ("数%d有%d个\n", frequency, number);
}
printf ("空格有%d个\n", blank);
printf ("其他字符有%d个", other);
return 0;
} 本帖最后由 oggplay 于 2014-2-23 14:17 编辑
看清楚getchar的类型 修改完毕
//随便输入一行小于等于11个数据,回车后打印结果并立即结束程序返回shell!
//如果输入数据大于11个,程序将给出出错信息!
#include <stdio.h>
int main ()
{ int character,frequency,blank=0,other=0,number={0};
int i;
printf("请输入小于等于11个数据,按回车结束:");
for (i=0;(character = getchar())!= '\n';i++)
{
if (i>10) {printf("输入数据超过上限!\n");return 0;}
printf("%c\n",character);//回显输入的数据
if (character >= 48 && character <= 57)
{number = number + 1; }
elseif (character == 32)
{blank = blank + 1; }
else
{ other = other + 1; }
}
for (frequency = 0; frequency < 10; frequency++)
printf ("数%d有%d个\n", frequency, number);
printf ("空格有%d个\n", blank);
printf ("其他字符有%d个\n", other);
return 0; }
把你的 else if (character == 13); 这句改为else if (character == '\n') ;就可以啦! oggplay 发表于 2014-2-22 22:58 static/image/common/back.gif
看清楚getchar的类型
老兄你好热心,我要像你学习。。。 while(1)是无限循环,也就是意味着你要一直输入、、、、
getchar返回的貌似是int类型的吧。 夜朽 发表于 2014-2-22 23:28 static/image/common/back.gif
while(1)是无限循环,也就是意味着你要一直输入、、、、
改成有条件的结束就行。。。比如以回车符结束:while(character!='\n'){};
屏幕输入要连续输,每个字符之间空格,最后一个回车结束
夜朽 发表于 2014-2-22 23:34 static/image/common/back.gif
改成有条件的结束就行。。。比如以回车符结束:while(character!='\n'){};
屏幕输入要连续输,每个字符之 ...
对哦 。。。。但是那个if(c==13)的时候好像就break了啊,退出啊啊 本帖最后由 oggplay 于 2014-2-22 23:43 编辑
じO-联合 发表于 2014-2-22 23:32 static/image/common/back.gif
getchar返回的貌似是int类型的吧。
问题不是这个,主要是character很难用 太晚了,没法帮了 int main (void)
{
int number = {0}, blank = 0, other = 0, frequency;
char character;
printf ("请输入:");
character = getchar();
while(1)
{
if( character=='\n' ) break;//加上这句
if (character >= 48 && character <= 57)
{
number = number + 1;//计算各个数字个数
}
elseif (character == 32)
{
blank = blank + 1;
}
else if (character == 13)
{
break;
}
else
{
other = other + 1;
}
character = getchar();
}
for (frequency = 0; frequency < 10; frequency++)
{
printf ("数%d有%d个\n", frequency, number);
}
printf ("空格有%d个\n", blank);
printf ("其他字符有%d个", other);
return 0;
}
本帖最后由 oggplay 于 2014-2-23 15:20 编辑
升级版://随便输入一行小于等于11个数据,回车后打印结果!
//如果输入数据大于11个,程序将给出出错信息!
#include <stdio.h>
int main ()
{ int character,frequency,blank=0,other=0,number={0};
int i;
printf("按回车键继续,输入其它键退出程序:");
while(character = getchar())
{if (character!='\n') return 0;
printf("\n");
printf("请输入小于等于11个数据,按回车结束:");
for (i=0;(character = getchar())!= '\n';i++)
{
if (i>10) {printf("输入数据超过上限!\n");return 0;}
printf("%c\n",character);//回显输入的数据
if (character >= 48 && character <= 57)
{number = number + 1; }
else { if (character == 32)
{blank = blank + 1; }
else
{ other = other + 1; }}
}
for (frequency = 0; frequency < 10; frequency++)
{printf ("数%d有%d个\n", frequency, number);}
printf ("空格有%d个\n", blank);
printf ("其他字符有%d个\n", other);
blank=0;other=0;
for (i = 0; i< 10; i++)
{ number=0;}
printf("按回车键继续,输入其他任意键退出程序:");
}
return 0;}
上面oggplay的貌似正确
页:
[1]