mooc c语言第八周编程

第八周编程题相关:


2
统计用户输入 (4分)

题目内容:

从键盘读取用户输入直到遇到#字符,编写程序统计读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。(要求用getchar()输入字符)

程序运行结果示例1:

Please input a string end by #:

abc def↙

jklm op↙

zkm #↙

space: 3,newline: 2,others: 15

程序运行结果示例2:

Please input a string end by #:

hello friend!#↙

space: 1,newline: 0,others: 12


输入提示信息:"Please input a string end by #:\n"

输入格式: getchar()

输出格式: "space: %d,newline: %d,others: %d\n"

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

时间限制:500ms 内存限制:32000kb
(1)第一次尝试:存在问题,无法正确读入‘#’以结束程序,计数上也有问题

#include<stdio.h>
int main()
{
    int others=0, space=0, newline=0;
    printf("Please input a string end by #:\n");
    do
    {
        if ((getchar() != ' ')&& (getchar() != '\n'))
            others++;
        else if (getchar() == '\n')
            newline++;
        else
            space++;
    }while(getchar() != '#');
    printf("space: %d,newline: %d,others: %d\n",space, newline, others);
    return 0;
}

(2)修改后:不能在if语句里再插getchar()。关于理由:...

每一次调用getchar它都会读取字符,所以两次调用getchar是在读取不同的字符?

#include<stdio.h>
int main()
{
    int others=0, space=0, newline=0;
    char ch;
    printf("Please input a string end by #:\n");
    while((ch = getchar()) != '#')
    {
        if (ch != ' '&& ch != '\n')
            others++;
        else if (ch != ' ')
            newline++;
        else
            space++;
    }
    printf("space: %d,newline: %d,others: %d\n",space, newline, others);
    return 0;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值