首页 新闻 会员 周边 捐助

不解的死循环

0
[已解决问题] 解决于 2008-11-03 21:52

#include <stdio.h>

void main()
{
  int letter[26];
  int value;
  int i;
 
  for(i = 0; i < 26; i++)
  {
    letter[i]=0;
  }
  scanf("%d", &value); 

  while(1)
  {
    if (value == '.') break;
    letter[value - 'A'] = letter[value - 'A'] + 1; 
    scanf("%d", &value);  
  }
 
  for(i = 'A'; i <= 'Z'; i++)
  {
    printf("%c\t%d\n",i,letter[i-'A']);
  }
 
  getch();
}

-------------------------------------------------------------------------------

本程序用于计算大写字母出现的频率,可是当我输入第二个字母的时候就再也无法输入了。不知道是什么原因。

iPeterRex的主页 iPeterRex | 初学一级 | 园豆:190
提问于:2008-11-01 12:33
< >
分享
最佳答案
0

你是输入字符,不能用%d,应该用 %c

另外value 应定义为char 而不是 int.

下面是我改过的,可以走通了。

  int letter[26];
    char value;
    int i;

    for(i = 0; i < 26; i++)
    {
        letter[i]=0;
    }
    scanf("%c", &value);

    while(1)
    {
        if (value == '.') break;
        letter[value - 'A'] = letter[value - 'A'] + 1;
        scanf("%c", &value); 
    }

    for(i = 'A'; i <= 'Z'; i++)
    {
        printf("%c\t%d\n",i,letter[i-'A']);
    }

eaglet | 专家六级 |园豆:17139 | 2008-11-01 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册