y45djdj 2022-04-05 20:21 采纳率: 75%
浏览 47
已结题

getchar和while循环的问题

这个目的该怎么达到

#include<stdio.h>
int main()
{
char c; int x = 0; int ret;
int num = 0, other = 0, letter = 0, sum = 0;
printf("请输入一个字符\n");
scanf("%c\n", &c);
while ((c=getchar()) != '!')
{
if (c >= '0' && c <= '9')
{
num = x++;
ret = 'c' - 48;
sum = ret + sum; continue;
}
else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
{
letter++; continue;
}
else
{
other++; continue;
}
}
printf("数字字符个数:%d\n数字字符和为:%d\n字母字符个数为:%d\n其它字符个数为:%d\n", num, sum,letter,other);
return 0;
}

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

  • 写回答

1条回答 默认 最新

  • 任前 2022-04-05 21:27
    关注

    程序:
    #include<stdio.h>

    int main()
    {
    char c;int ret;
    int num=0,other=0,letter=0,sum=0;
    while(1)
    {
    printf("请输入一个字符\n");
    c=getchar();
    if(c=='\n')c=getchar();
    if('0'<=c && c<='9')
    {
    ret=c-48;
    sum=sum+ret;
    num++;
    continue;
    }
    else if('a'<=c && c<='z' || 'A'<=c && c<='Z' )
    {
    letter++;
    continue;
    }
    else if(c=='!')break;
    else
    {
    other++;continue;
    }
    }
    printf("数字字符个数%d\n数字字符对应数据累加之和%d\n英文字符个数%d\n其他字符个数%d\n",num,sum,letter,other);
    return 0;
    }
    运行效果:

    img


    如有疑问随时找我,望采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月5日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分