c - 用于 check_order 的 C 程序无法正常工作
问题描述
我使用在线 GeeksforGeeks 来学习如何编码。我刚开始学习,但由于某种原因,当我的输入总和超过 3616 时,编译器会返回垃圾。请任何专业人士向我解释为什么以及如何改进我的代码?
例如。输入: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;
}
解决。谢谢大家!!!:)
解决方案
当您不初始化输入时,它会得到一个垃圾值。它可以是积极的或消极的——你永远不知道哪个值。为了避免这种情况,您必须提供一个初始化值,这样您几乎总是可以完全控制您的变量。始终建议为您的变量设置一个初始化值。
#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;
}
推荐阅读
- loops - JMeter while循环(使用自己的索引停止循环)
- automated-tests - Gitlab 和 Katalon Studio - 源 Git 存储库为空
- ios - 在 Swift 4 中为 iOS 相机手动设置曝光
- c++ - GetMessage 从任务栏关闭时未收到 WM_QUIT
- python - Pythonunit test:测试执行后的输出应该显示在日志中
- javascript - react: onClick - 只获取被点击的元素,而不是子元素
- google-bigquery - 如何在 BigQuery 上提取字符串类型的 postgres hstore
- ionic-framework - Ionic Native Camera 未在 Android 设备上调用 getPicture() 回调
- android - 如何在 android studio 中集成 google-play-services
- amazon-web-services - AWS CLI S3 CP 性能非常缓慢