鱼C论坛

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

[已解决]S1E14动手1

[复制链接]
发表于 2021-7-1 16:30:12 | 显示全部楼层 |阅读模式

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

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

x


#include <stdio.h>
int main()
{
        int i,sum;
        sum=0;
        do
        {
                printf("请输入合法的数字:");
                i=getchar();
                sum=sum+i-'0';
        }
        while(i>='0'&&i<='9');
        putchar(sum);
       
        return 0;
}

这是我写的程序,到底错哪了啊,运行出来是这个样子的
最佳答案
2021-7-2 14:46:51
善用百度 https://zhuanlan.zhihu.com/p/161237789
你从puchar能看出来  putchar 的适用对象是字符数据  而且一个putchar只能输出一个字符  并且当你输入为介于0~127(包括0及127)之间的十进制整型数时,(此时没有单引号引起来)它会被视为对应字符的ASCII代码,输出该ASCII代码对应的字符  这就会导致你想输出
sum为33  它会转化为ASCII码对应的 ‘!’
我记得之前课上老师也是那它输出1,2,3.。。的啊   如果是用puchar输出1,2,3 。。  那它最多能输出数字0-9   对于两位数的整数  一个puchar根本不能显示出来  所以用了printf函数  这函数一学c就应该会接触到    不懂也可以自行百度  
YGRI@_B)`8DN1H3VLV0PA%V.png
YGRI@_B)`8DN1H3VLV0PA%V.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-1 17:08:51 | 显示全部楼层
小巧玲珑!
#include <stdio.h>

int main()
{
        int num = 0;
        int sum = 0; 
        int status;

        do
        {
                printf("请输入合法的数字:");
                sum = sum + num;   //计数 
                /*因为 scanf 函数会返回成功接收字符的个数,
                                只需检查每次调用 scanf 函数的返回值是否为 1 即可*/
                status = scanf("%d", &num);  
                
        } while(status == 1);  //如果为1跳出循环 

        printf("结果是:%d\n", sum);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-1 17:51:05 | 显示全部楼层

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

使用道具 举报

发表于 2021-7-1 18:11:47 | 显示全部楼层
#include <stdio.h>
int main()
{
        char i = '0';     //设置变量i类型为char  因为下面要用到getchar()函数范围类型为char
        int sum;
        sum = 0;
        do                 //如果用do  while的话  要调整顺序为下面代码
        {
                sum = sum + i - '0';
                printf("请输入合法的数字:");
                i = getchar();                   //获取输入的字符
                getchar();                       //获取输入字母后的   回车 
        } while (i >= '0'&&i <= '9');
        //putchar(sum);             //puchar()函数不适合输出整数  所以采用printf()作为显示
        printf("%d", sum);

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-2 10:02:46 | 显示全部楼层

putchar 和 printf有什么区别呢?为什么putchar不适合输出整数,我记得之前课上老师也是那它输出1,2,3.。。的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-2 14:46:51 | 显示全部楼层    本楼为最佳答案   
善用百度 https://zhuanlan.zhihu.com/p/161237789
你从puchar能看出来  putchar 的适用对象是字符数据  而且一个putchar只能输出一个字符  并且当你输入为介于0~127(包括0及127)之间的十进制整型数时,(此时没有单引号引起来)它会被视为对应字符的ASCII代码,输出该ASCII代码对应的字符  这就会导致你想输出
sum为33  它会转化为ASCII码对应的 ‘!’
我记得之前课上老师也是那它输出1,2,3.。。的啊   如果是用puchar输出1,2,3 。。  那它最多能输出数字0-9   对于两位数的整数  一个puchar根本不能显示出来  所以用了printf函数  这函数一学c就应该会接触到    不懂也可以自行百度  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 16:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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