鱼C论坛

 找回密码
 立即注册
查看: 808|回复: 4

[已解决]关于打印的问题

[复制链接]
发表于 2020-9-9 15:24:52 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
#define pai 3.14

int main()
{
            int r;
            printf("请输入半径:");
            scanf("%d", &r);
            
            printf("正在输出结果------------\n");
               
                float c,s;
               
                c = 2*pai*r;
                s = pai*r*r;
               
                printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
               
                return 0;
}


我知道这里上面用的是int 而打印用的是float类型 那为什么 半径这里打印错误会导致后面的面积和周长也打印错误呢
#include <stdio.h>
#define pai 3.14

int main()
{
            int r;
            printf("请输入半径:");
            scanf("%d", &r);
            
            printf("正在输出结果------------\n");
                
                float c,s;
                
                c = 2*pai*r;
                s = pai*r*r;
                
                printf("半径为%d的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
                
                return 0; 
}

改成int 类型 半径 正确打印 后面的面积和周长也正确打印了 ,那到底是为什么会有这样的影响.....


最佳答案
2020-9-9 15:39:35
若把%d错写成%f,那么参数就会找错
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
格式化字符有三个%f,需要三个浮点数,但是后面有三个参数,第一个是int,会被跳过,把 s 赋值给第一个%f,然后把 c 赋给 %.2f ,最后一个 %.2f ,就没有值了,那么他输出的就可能是一个随机的数值,或者是0.00,这与编译器有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-9 15:39:35 | 显示全部楼层    本楼为最佳答案   
若把%d错写成%f,那么参数就会找错
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
格式化字符有三个%f,需要三个浮点数,但是后面有三个参数,第一个是int,会被跳过,把 s 赋值给第一个%f,然后把 c 赋给 %.2f ,最后一个 %.2f ,就没有值了,那么他输出的就可能是一个随机的数值,或者是0.00,这与编译器有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-9 15:51:09 | 显示全部楼层
sunrise085 发表于 2020-9-9 15:39
若把%d错写成%f,那么参数就会找错
printf("半径为%f的圆的面积是:%.2f, 周长是;%.2f\n", r, s, c);
格 ...

那为什么打印出来的 半径并不是对应面积的值 面积也不是对应 周长的值.....
比如我输入5 那么说的话 输出的半径应该对应面积的值是78.5 面积是对应周长的值31.4
但是现在 输入5 输出的半径是0.00000 面积是一大串数字 周长 是0.00
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-9 16:01:36 | 显示全部楼层
zhangjunxian 发表于 2020-9-9 15:51
那为什么打印出来的 半径并不是对应面积的值 面积也不是对应 周长的值.....
比如我输入5 那么说的话 输 ...

与编译器有关。总之,格式化字符与变量的数据类型不匹配的话,就会出现错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-9 16:12:22 | 显示全部楼层
sunrise085 发表于 2020-9-9 16:01
与编译器有关。总之,格式化字符与变量的数据类型不匹配的话,就会出现错误

好吧,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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