回 帖 发 新 帖 刷新版面

主题:[讨论]请教高手,给我解决一下。谢谢

#include <stdio.h>
#include <string.h>
#define N 100
int main()
{    int big,small,digita,space,els,i;
    char a[N],*p;
    p=a;
    scanf("%s",p);
    big=0;small=0;digita=0;space=0;els=0;
    for(i=0;a[i]!='\0';i++)
     {
       if (a[i]>='A'&& a[i]<='Z')
          big=big+1;
       else if((a[i]>='a')&&(a[i]<='z'))
         small=small+1;
       else if((a[i]>='0')&&(a[i]<='9'))
         digita++;
       else if a[i]=' '
        space++;
       else els++;  
       }
      printf("big=%d\n",big);           
      printf("small=%d\n",small); 
      printf("digita=%d\n",digita); 
      printf("space=%d\n",space); 
      printf("els=%d\n",els); 
        system("pause");
}统计输入字符串中的大写字母、小写字母、空格及其它字符个数

回复列表 (共3个回复)

沙发

#include <stdio.h>
#include <string.h>
#define N 100
int main()
{    int big,small,digita,space,els,i;
    char a[N],*p;
    p=a;
    scanf("%s",p);
    big=0;small=0;digita=0;space=0;els=0;
    for(i=0;a[i]!='\0';i++)
     {
       if (a[i]>='A'&& a[i]<='Z')
          big=big+1;
       else if((a[i]>='a')&&(a[i]<='z'))
         small=small+1;
       else if((a[i]>='0')&&(a[i]<='9'))
         digita++;
       else if (a[i]==' ')
        space++;
       else els++;  
       }
      printf("big=%d\n",big);           
      printf("small=%d\n",small); 
      printf("digita=%d\n",digita); 
      printf("space=%d\n",space); 
      printf("els=%d\n",els); 
      system("pause");
}

板凳


scanf函数中的格式字符串的转换字符“s”输入的是“无空白字符的字符串”,所以一碰到空格就出问题了。我试了一下,把scanf换成字符串输入函数gets的话就好了,你看一下吧。

3 楼

嗯,对于程序最后的一个语句要预处理命令,即:
#include<stdlib.h>
另外,需要把scanf("%s",p);改为gets(p);即可。

我来回复

您尚未登录,请登录后再回复。点此登录或注册