鱼C论坛

 找回密码
 立即注册
查看: 2099|回复: 12

C语言34课问题求助

[复制链接]
发表于 2014-2-22 22:34:34 From FishC Mobile | 显示全部楼层 |阅读模式
50鱼币
#include <stdio.h>
//小甲鱼c语言第34课后所留问题,统计输入的字符个数,0-9各个数字个数,空格个数,其他字符个数
//程序编译没有问题,就是无法输出结果,输入字符后按回车没有任何反应,求解!!!实在没有办法了.
int main (void)
{
    int number[10] = {0}, blank = 0, other = 0, frequency;
    char character;
    printf ("请输入:");
    character = getchar();
  
   
    while(1)
    {
        if (character >= 48 && character <= 57)
        {
            number[character - 48] = number[character - 48] + 1;  //计算各个数字个数
        }
       else  if (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[frequency]);
    }

    printf ("空格有%d个\n", blank);
    printf ("其他字符有%d个", other);
    return 0;
}

最佳答案

查看完整内容

不好意思,昨晚没看清楚,我把它改了下,你看看行不行 #include //小甲鱼c语言第34课后所留问题,统计输入的字符个数,0-9各个数字个数,空格个数,其他字符个数 //程序编译没有问题,就是无法输出结果,输入字符后按回车没有任何反应,求解!!!实在没有办法了. int main (void) { int number[10] = {0}, blank = 0, other = 0, frequency; char character,ch; printf ("请输入:"); character = getchar(); ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 22:34:35 | 显示全部楼层

不好意思,昨晚没看清楚,我把它改了下,你看看行不行
#include <stdio.h>
//小甲鱼c语言第34课后所留问题,统计输入的字符个数,0-9各个数字个数,空格个数,其他字符个数
//程序编译没有问题,就是无法输出结果,输入字符后按回车没有任何反应,求解!!!实在没有办法了.
int main (void)
{
    int number[10] = {0}, blank = 0, other = 0, frequency;
    char character,ch;
    printf ("请输入:");
    character = getchar();
    getchar();     //吸收空格
   
    while(1)
    {
        if (character >= 48 && character <= 57)
        {
            number[character - 48] = number[character - 48] + 1;  //计算各个数字个数
        }
       else  if (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[frequency]);
    }

    printf ("空格有%d个\n", blank);
    printf ("其他字符有%d个", other);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 22:58:40 | 显示全部楼层
本帖最后由 oggplay 于 2014-2-23 14:17 编辑

看清楚getchar的类型 修改完毕
  1. //随便输入一行小于等于11个数据,回车后打印结果并立即结束程序返回shell!
  2. //如果输入数据大于11个,程序将给出出错信息!
  3. #include <stdio.h>
  4. int main ()
  5. {   int character,frequency,blank=0,other=0,number[10]={0};
  6.     int i;
  7.     printf("请输入小于等于11个数据,按回车结束:");
  8.      
  9.     for (i=0;(character = getchar())!= '\n';i++)
  10.      {   
  11.             if (i>10) {printf("输入数据超过上限!\n");return 0;}  
  12.             printf("%c\n",character);//回显输入的数据
  13.                        
  14.               if (character >= 48 && character <= 57)
  15.                {number[character - 48] = number[character - 48] + 1; }
  16.                else  if (character == 32)
  17.                      {blank = blank + 1; }
  18.                       else
  19.                       { other = other + 1; }
  20.               }
  21.            
  22.     for (frequency = 0; frequency < 10; frequency++)
  23.        printf ("数%d有%d个\n", frequency, number[frequency]);
  24.    

  25.     printf ("空格有%d个\n", blank);
  26.     printf ("其他字符有%d个\n", other);
  27.     return 0;   }
复制代码


2014-02-22 22:55:16 的屏幕截图.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:21:28 | 显示全部楼层
把你的 else if (character == 13); 这句改为  else if (character == '\n') ;  就可以啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:25:15 | 显示全部楼层
oggplay 发表于 2014-2-22 22:58
看清楚getchar的类型

老兄你好热心,我要像你学习。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:28:48 | 显示全部楼层
while(1)是无限循环,也就是意味着你要一直输入、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:32:43 | 显示全部楼层
getchar返回的貌似是int类型的吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:34:27 | 显示全部楼层
夜朽 发表于 2014-2-22 23:28
while(1)是无限循环,也就是意味着你要一直输入、、、、

改成有条件的结束就行。。。比如以回车符结束:while(character!='\n'){};
屏幕输入要连续输,每个字符之间空格,最后一个回车结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:37:15 | 显示全部楼层
夜朽 发表于 2014-2-22 23:34
改成有条件的结束就行。。。比如以回车符结束:while(character!='\n'){};
屏幕输入要连续输,每个字符之 ...

对哦 。。。。但是那个if(c==13)的时候好像就break了啊,退出啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-22 23:39:57 | 显示全部楼层
本帖最后由 oggplay 于 2014-2-22 23:43 编辑
じO-联合 发表于 2014-2-22 23:32
getchar返回的貌似是int类型的吧。

问题不是这个,主要是character很难用 太晚了,没法帮了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-23 00:40:41 | 显示全部楼层
  1. int main (void)
  2. {
  3.         int number[10] = {0}, blank = 0, other = 0, frequency;
  4.         char character;
  5.         printf ("请输入:");
  6.         character = getchar();       
  7.     while(1)
  8.         {
  9.                 if( character=='\n' ) break;//加上这句
  10.                 if (character >= 48 && character <= 57)
  11.                 {
  12.                         number[character - 48] = number[character - 48] + 1;  //计算各个数字个数
  13.                 }
  14.         else  if (character == 32)
  15.                 {
  16.                         blank = blank + 1;
  17.                 }
  18.                 else if (character == 13)
  19.         {
  20.             break;
  21.                 }
  22.                 else
  23.                 {
  24.                         other = other + 1;
  25.                 }       
  26.                 character = getchar();               
  27.     }       
  28.     for (frequency = 0; frequency < 10; frequency++)
  29.         {
  30.                 printf ("数%d有%d个\n", frequency, number[frequency]);
  31.         }
  32.     printf ("空格有%d个\n", blank);
  33.         printf ("其他字符有%d个", other);
  34.         return 0;
  35. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-23 13:12:33 | 显示全部楼层
本帖最后由 oggplay 于 2014-2-23 15:20 编辑

升级版:
  1. //随便输入一行小于等于11个数据,回车后打印结果!
  2. //如果输入数据大于11个,程序将给出出错信息!
  3. #include <stdio.h>
  4. int main ()
  5. {   int character,frequency,blank=0,other=0,number[10]={0};
  6.     int i;
  7.     printf("按回车键继续,输入其它键退出程序:");
  8.     while(character = getchar())

  9.       {if (character!='\n') return 0;

  10.         printf("\n");
  11.         printf("请输入小于等于11个数据,按回车结束:");
  12.          for (i=0;(character = getchar())!= '\n';i++)
  13.        {   
  14.             if (i>10) {printf("输入数据超过上限!\n");return 0;}  
  15.             printf("%c\n",character);//回显输入的数据
  16.                        
  17.               if (character >= 48 && character <= 57)
  18.                {number[character - 48] = number[character - 48] + 1; }
  19.               else { if (character == 32)
  20.                      {blank = blank + 1; }
  21.                       else
  22.                         { other = other + 1; }}
  23.        }
  24.            
  25.     for (frequency = 0; frequency < 10; frequency++)
  26.       {printf ("数%d有%d个\n", frequency, number[frequency]);}
  27.    

  28.     printf ("空格有%d个\n", blank);
  29.     printf ("其他字符有%d个\n", other);
  30.     blank=0;other=0;
  31.      for (i = 0; i< 10; i++)
  32.       { number[i]=0;}
  33.     printf("按回车键继续,输入其他任意键退出程序:");
  34.       }
  35.     return 0;}
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-26 21:00:57 | 显示全部楼层
上面oggplay的貌似正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 12:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表