佐佐人登山 2021-10-27 22:30 采纳率: 66.7%
浏览 192
已结题

C语言编程代码的问题

循环输入字符,累加所输入的数字字符个数、英语字符个数及其它字符个数,如果是数字字符,则将所有的数字字符对应的数据累加起来,输出数字字符个数、数字字符对应数据累加和、英语字符个数、其它字符个数。当输入的是半角(英文)叹号“!”时终止循环。

要求:用while设计一个无穷循环,每次从键盘读入一个字符,如果这个字符是数字字符(0~9),则将所有输入的数字字符对应的数据(如数字字符’9’对应的数据是9,而不是ASCII码值57。)累加起来,并且数字字符个数增加1,如果输入的字符是英语字符,则对应的英语字符个数增加1,否则其它字符个数增加1,如果输入的字符是半角(英文)叹号“!”,则使用break语句终止整个循环。要求用自增运算符实现字符个数增加1。程序运行后至少输入两个个数字字符、一个大写英语字符和一个小写英语字符、一个其它字符,以便验证程序是否正确。
循环结束后输出数字字符个数、数字字符对应数据累加和、英语字符个数、其它字符个数。

(提示:查ASCII码表,用数字字符减去某个字符或一个固定数字,得到该数字字符对应的数值(如: 9=’9’ – 48, 其它字符转换类似!),使用if语句判断输入字符的类型,分别用不同整型变量记录字符的个数。一次只输入一个字符,注意回车符,即每次在scanf(“%c”)后面用 getchar( ) 语句读走回车符号!!)。

  • 写回答

2条回答 默认 最新

  • 关注

    代码如下:

    #include<stdio.h>
    int main()
    {
        char c;
        int nb = 0,zm = 0,ot = 0;
        int sum = 0;
        while(1)
        {
            scanf("%c",&c);
            getchar();
            if(c == '!')
                break;
            else if(c>='0' && c<='9')
            {
                nb++;
                sum += (c - '0');
            }
            else if( (c>='a' && c<='z') || (c>='A' && c<='Z'))
                zm++;
            else
                ot++;
        }
        printf("数字字符个数%d、数字字符对应数据累加和%d、英语字符个数%d、其它字符个数%d",nb,sum,zm,ot);
        return 0;
    } 
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错