【问题标题】:how come the program doesn't tell me if the numbers are in ascending or descending order?为什么程序不告诉我数字是升序还是降序?
【发布时间】:2020-10-29 10:44:15
【问题描述】:

所有其余的代码都可以工作,但说到最后一点,即数字的顺序,代码要么告诉我它是递增形式,要么两者都不是。你能帮我理解为什么吗?

#include <stdlib.h>
#include <stdio.h>

int main(){
int n;
int number;
int positive, negatives, null;
int even, odd;
int cont;
int rest;
int previous_number;
int increasing;
int decreasing;

increasing=1;
decreasing=1;
positive=0;
negative=0;
null=0;
even=0;
odd=0;

printf("insert a number\n");
scanf("%d",&n);

for(cont=1;cont<=n;cont++){
printf("insert a number\n");
scanf("%d",&number);

这里的代码通过检查数字是正数、负数还是空来工作

if(number>0){
  positive++;
}else if(number<0){
  negatives++;
}else{
  null++;
}

这里也看看它是偶数还是奇数 休息=数字%2;

if(rest==0){
  even=even+1;
}else{
  odd=odd+1;
}

这里的代码不起作用

if(number>previous_number){
  decreasing=0;
}else{
    if(number<previous_number){
  increasing=0;
}
  else{
    increasing=0;
    decreasing=0;
 }
 previous_number=number;
}

  

printf("the positive numbers are: %d \n",positive);
printf("the negative numbers are: %d \n",negative);
printf("the null numbers are: %d \n",null);
printf("the even numbers are: %d \n",even);
printf("the odd numbers are: %d \n",odd);
if (increasing==1){
  printf("the numbers are arranged in ascending order\n");
}else if(decrescente==1){
  printf("the numbers are arranged in descending order\n");
}else{
  printf("the numbers are arranged neither in increasing nor in decreasing order\n");
}
system("pause");
return 0;
}

【问题讨论】:

  • 请修正代码格式,以便其他人可以阅读和复制 - 将其全部放入一个代码块并正确缩进。此外,请给出准确的输入、预期结果和实际结果。
  • 如果你正确缩进你的代码,你会更容易看到 if/else 语句的错误嵌套。
  • 一个问题是previous_number 没有初始化,所以在第一次使用它时就会出现未定义的行为。

标签: c for-loop if-statement


【解决方案1】:

您有一个名为“negative”的变量和一个名为“negatives”的变量。我认为这是问题的根源。还有一个叫递减,另一个叫递减,我认为应该是一样的。

作为提示:许多整数变量最好作为布尔值。您正在使用 ++ 运算符将 int 设置为 1,您的意思是 true,这是不直观的。

【讨论】:

    【解决方案2】:

    您在第一次迭代中没有 previous_number 的值。我建议你改变这部分:

     for(cont=1;cont<=n;cont++){
         printf("insert a number\n");
         scanf("%d",&number);
         ...
         previous_number=number;
     }
    

    到这里:

     scanf("%d",&number); //read a first time before the loop
     for(cont=2;cont<=n;cont++){ //start the loop one number further so it will read one less
         previous_number=number; //start by saving the old number then reading the new one after.
         
         //do the rest as you did before.
         printf("insert a number\n");
         scanf("%d",&number);
         ...
         
     } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 2014-02-19
      • 2012-06-25
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多