注册 登录
编程论坛 C语言论坛

大一萌新求助

孔翎 发布于 2020-03-25 17:54, 1722 次点击
各位大佬,本人大一萌新,刚接触C语言,有个问题想求助
下面这段程序,为什么不能比较二位数及以上位数的大小,哪里出问题了吗,真看了一个小时,实在没办法,只能求助大佬了
求回复,多谢多谢
#include<stdio.h>
int main(void)
{
    float num1,num2=0.0f,num3;

    do {
        printf("Enter a number:");
        scanf_s("%f", &num1);
        num3 = num1 > num2 ? num1 : num2;
        num2 = num1;
    } while (num1 > 0.0f);
    printf("The largest number entered was:%f", num3);

    return 0;
}
7 回复
#2
孔翎2020-03-25 17:56
可能说的不清楚,就是一输入三位数和二位数比较,输出结果就是二位数
#3
hbccc2020-03-25 19:45
ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内在泄露。所以vc++2005/2008中提供了scanf_s(),在调用时,必须提供一个数字以表明最多读取多少位字符。   
#4
孔翎2020-03-25 20:41
回复 3楼 hbccc
这句话我知道,但还是不懂,所以大佬如果要求输入数中的最大值应该怎么该呢
#5
xianfajushi2020-03-25 20:49
这样试看
#include<stdio.h>
int main(void)
{
    float num1,num2=0.0f,num3;

    do {
        printf("Enter a number:");
        scanf_s("%f", &num1);
        num3 = num1 > num2 ? num1 : num2;printf("The largest number entered was:%f", num3);
        num2 = num1;
    } while (num1 > 0.0f);
    printf("The largest number entered was:%f", num3);

    return 0;
}
#6
孔翎2020-03-25 21:15
回复 5楼 xianfajushi
多谢回答,已试,但结果是输入一个数字就打印一句话,有没有可能在输入0之前不打印,直到输入非正数才打印最大值呢,再次感谢您的回答
#7
forever742020-03-25 23:14
你应该上来先说清程序需求是什么,不要让我找遍各层

num2=num3;
而不是
num2=num1;
#8
孔翎2020-03-25 23:35
回复 7楼 forever74
好的,下次发帖一定注意,毕竟第一次玩论坛,不太熟悉,麻烦多谅解,多谢大佬了
1