还不够好 发表于 2021-2-2 21:42:41

一道统计字符的作业题

139443[/#include <stdio.h>

int main()
{
        int A = 0;
        char x;
       
        while(x != '\n')
        {
                scanf("%c",x);
                switch(x)
                {
                        case'a':
                        case'A':
                        A++;
                        break;
               
                }
        }
        printf("%d",A);
        return 0;               
}
attachimg]
我的一道作业题,上面这个程序是我写的,想先实现统计A,a的数量,但是程序出了问题,统计不出来,求大佬帮忙,如果不想看我的代码直接看图就行,图就是题目

小甲鱼的铁粉 发表于 2021-2-2 21:51:26

输出的0是什么意思

jackz007 发表于 2021-2-2 21:58:58

本帖最后由 jackz007 于 2021-2-2 22:00 编辑

#include <stdio.h>

int main(void)
{
      int d = {0} , i                               ;
      for(char c ; (c = getchar()) != '\n' ;) {
                if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {
                        if(c >= 'A' && c <= 'Z') c += ' ' ;
                        d ++                     ;
                }
      }
      printf("%d" , d)                               ;
      for(i = 1 ; i < 26 ; i ++) printf(" %d" , d)   ;
}
      编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
abcABCxyzZ
2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2
D:\00.Excise\C>

小甲鱼的铁粉 发表于 2021-2-2 21:59:42

本帖最后由 小甲鱼的铁粉 于 2021-2-3 09:14 编辑

{:10_297:}

李京 发表于 2021-2-2 22:33:26

本帖最后由 李京 于 2021-2-2 22:50 编辑

你的程序的问题,我给你写好了,你自己对比一下

#include <stdio.h>

int main()
{
      int A = 0;
      char x='a';//x未初始化 ,我随便给了个值
      
      while(x != '\n')
      {
                scanf("%c",&x);//没有用取地址符号
                switch(x)
                {
                        case 'a':A++;break;//为什么这里不A++呢
                        case 'A':A++;break;
                }
      }
      printf("%d",A);
      return 0;               
}


下面是我把你的题目写了,做好了注释,看你能不能看懂吧

#include <stdio.h>

int main(void)
{
        int a={0},i=0;//a用来存放对应字母的个数
        char str;//存放输入的字符串
       
        scanf("%s",str);//字符串不需要取地址符号
       
        while(str!= '\0')//判断是否到了字符串的末尾,'\0'是字符串的结束标志 从这里开始,我不知道str【i】为什么全都变成了str
        {
                if( str >= 'A' && str <= 'Z'])//判断是否是大写的字母
                {
                        a-'A']++;//字母对应的个数加1
               }
               if( str >='a'&& str <=' z')
               {
                       a-'a']++;
               }
               i++;
       }
       
       for(i=0;i<26;i++)
       {
               printf("%d ",a);//这里a【i】也是一样的
       }
       printf("\n");
       
       return 0;
}

人中仙 发表于 2021-2-3 10:23:03

本帖最后由 人中仙 于 2021-2-3 10:24 编辑

思路都差不多,我也来一个
#include <stdio.h>

int main(){
int charCounts = {0}; //存放字母个数
char temp = '\0';   //临时存放输入的字符
while((temp=getchar()) != '\n'){    //输入至换行符结束
    temp |= 32;   //将输入字符的第5位置1,将大小写字符全转换为小写
    if(temp<='z' && temp >= 'a'){   //判断是不是字母
      charCounts++;   //对应位置加1
    }
}
for (int i = 0; i < 26; ++i) {    //打印输出
    printf("%d ",charCounts);
}
putchar('\n');
return 0;
}
页: [1]
查看完整版本: 一道统计字符的作业题