佐佐人登山 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 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊