风雨之后 发表于 2015-12-29 10:20:59

C语言基础问题

#include<stdio.h>
#include<math.h>
void main()
{
int a,i=0,j=0,k=0,t;
char c;
while((c=getchar())!='\n')
{
if(c==' ')
{
++i;
}
else if(c>='0'&&c<='9')
{
        a=c;
    ++j;
}
else
{
++k;
}
}
printf("空白符有%d个\n其他字符有%d个\n数字有%d个\n",i,k,j);
for(t=0;t<j;t++)
printf("%d",a);
}

上面是035讲的第三道题,编译时显示没问题,为什么就是运行不了呢?
求指点

atmo 发表于 2015-12-29 16:06:00

return 0;

dean_deng 发表于 2015-12-29 16:56:06

#include<stdio.h>
int main()
{
    int a ,i=0,j=0,k=0,t;
    char c;
    while((c=getchar())!='\n')
    {
      if(c==' ')
      {
            ++i;
      }
      else if(c>='0'&&c<='9')
      {
            a=c;
            ++j;
      }
      else
      {
            ++k;
      }
    }
    printf("空白符有%d个\n其他字符有%d个\n数字有%d个\n",i,k,j);
    for(t=0;t<j;t++)
    {
      printf("%c",a);
    }
    return 0;
}
修改了 main方法的返回值,还修改了输出a数组的形式,以字符形式输出,因为存入a是0~9的ASCII编码值,以十进制输出会显示48~57之间的数值,并不会显示0~9

风雨之后 发表于 2015-12-29 20:44:39

我用的是void main(),不用ruturn的,我刚刚换台电脑试了一下,又可以了

babyrui 发表于 2016-1-10 15:23:01

是不是电脑的环境变量没有设置好

!~!~! 发表于 2016-4-2 15:40:31

本帖最后由 !~!~! 于 2016-4-2 18:18 编辑

#include<stdio.h>
#include<stdlib.h>
void main()
{
        int a, i = 0, j = 0, k = 0, t;
        char c;
        while ((c = getchar()) != '\n')
        {
                if (c == ' ')
                {
                        ++i;
                }
                else if (c >= '0'&&c <= '9')
                {
                        a = atoi(&c);
                        ++j;
                }
                else
                {
                        ++k;
                }
        }
        printf("空白符有%d个\n其他字符有%d个\n数字有%d个\n", i, k, j);
        for (t = 0; t < j; t++)
                printf("%d", a);
}字符转数字
#include<stdlib.h>
a = atoi(&c);
页: [1]
查看完整版本: C语言基础问题