鱼C论坛

 找回密码
 立即注册
查看: 936|回复: 5

[已解决]一道统计字符的作业题

[复制链接]
发表于 2021-2-2 21:42:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
字符统计.jpg [attachimg]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:58:58
本帖最后由 jackz007 于 2021-2-2 22:00 编辑
#include <stdio.h>

int main(void)
{
        int d[26] = {0} , i                               ;
        for(char c ; (c = getchar()) != '\n' ;) {
                if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {
                        if(c >= 'A' && c <= 'Z') c += ' ' ;
                        d[c - 'a'] ++                     ;
                }
        }
        printf("%d" , d[0])                               ;
        for(i = 1 ; i < 26 ; i ++) printf(" %d" , d[i])   ;
}
        编译、运行实况
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>
啊啊.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-2 21:51:26 | 显示全部楼层
输出的0是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-2 21:58:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-2-2 22:00 编辑
#include <stdio.h>

int main(void)
{
        int d[26] = {0} , i                               ;
        for(char c ; (c = getchar()) != '\n' ;) {
                if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') {
                        if(c >= 'A' && c <= 'Z') c += ' ' ;
                        d[c - 'a'] ++                     ;
                }
        }
        printf("%d" , d[0])                               ;
        for(i = 1 ; i < 26 ; i ++) printf(" %d" , d[i])   ;
}
        编译、运行实况
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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-2 21:59:42 | 显示全部楼层
本帖最后由 小甲鱼的铁粉 于 2021-2-3 09:14 编辑

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

使用道具 举报

发表于 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[26]={0},i=0;//a用来存放对应字母的个数
        char str[100];//存放输入的字符串
       
        scanf("%s",str);//字符串不需要取地址符号
       
        while(str[i]  != '\0')//判断是否到了字符串的末尾,'\0'是字符串的结束标志 从这里开始,我不知道str【i】为什么全都变成了str
        {
                if( str[i] >= 'A' && str[i] <= 'Z'])//判断是否是大写的字母
                {
                        a[str[i]-'A']++;//字母对应的个数加1
                 }
                 if( str[i] >='a'&& str[i] <=' z')
                 {
                         a[str[i]-'a']++;
                 }
                 i++;
         }
         
         for(i=0;i<26;i++)
         {
                 printf("%d ",a[i]);//这里a【i】也是一样的
         }
         printf("\n");
         
         return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-3 10:23:03 | 显示全部楼层
本帖最后由 人中仙 于 2021-2-3 10:24 编辑

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

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

输出结果

输出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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