我使用在线GeeksforGeeks学习如何编码。我刚刚开始学习,但由于某种原因,当我的输入总和超过3616时,编译器会返回垃圾。任何专家都可以向我解释为什么以及如何改进我的代码?
EG。输入:1 2 3 4 5 0输出:递增顺序//输入和< 3616
输入:1 2 3614 0输出:不增加顺序//输入总和> 3616
这就是问题:
编写程序check_order.c以读入正整数列表。只要输入的整数按递增顺序,程序将继续询问下一个正整数。输入数据不按递增顺序或输入值为零时,输入结束。然后,程序应报告输入数据是否按顺序递增。 您可以假设将输入至少一个正整数。如果列表中只有一个正整数,我们将按顺序处理列表。 您可以在main()函数中编写所有代码。
#include <stdio.h>
int main(void){
int input, input2;
do{
input2 = input;
scanf("%d", &input);
printf("Enter positive integer: %d\n", input);
}
while(input> input2);
if(input< input2){
if(input == 0){
printf("Data are in increasing order.");
}
else{
printf("Data are not in increasing order.");
}
}
else{
printf("Data are in increasing order.");
}
return 0;
}
解决。谢谢大家! :)
答案 0 :(得分:0)
如果不初始化输入,则会获得垃圾值。它可以是正面的也可以是负面的 - 你永远无法知道哪个值。为避免这种情况,您必须提供初始值,这样您几乎总能完全控制变量。始终建议为变量设置初始值。
#include <stdio.h>
int main() {
int input = 0, input2;
do {
input2 = input;
scanf("%d", &input);
printf("Enter positive integer: %d\n", input);
}
while(input > input2);
if (input < input2) {
if(input == 0) {
printf("Data are in increasing order.");
}
else {
printf("Data are not in increasing order.");
}
}
else {
printf("Data are in increasing order.");
}
return 0;
}