【问题标题】:My Program has a couple of bugs and I dont know how to fix them我的程序有几个错误,我不知道如何修复它们
【发布时间】:2016-10-23 01:35:38
【问题描述】:

我必须按升序对数组中的三个用户输入的数字进行排序。有几个错误。

A) 我将它设置为只要求三个数字,但即使程序只对前三个数字进行排序,我也必须输入 4。

B) 我收到警告说我的变量 temp 未使用,即使它显然是。

C) 程序对前两个数字进行排序,然后再次打印第二高的数字而不是最大的数字。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>

int main(){

    int numbers = 3;
    int NUM_ARRAY[numbers];
    int counter = 0;
    int sort = 0;
    int temp = 0;

                printf("Please enter three integers\n");
            for(counter = 0; counter < numbers; counter++){
                scanf("%d ", &NUM_ARRAY[counter]);
            }
                printf("Original Numbers\n");
            for(counter = 0; counter < numbers; counter++){
                printf("%d\n", NUM_ARRAY[counter]);
            }

            while(1){
                sort = 0;
                for(counter = 0; counter < numbers-1; counter++){
                    if(NUM_ARRAY[counter] > NUM_ARRAY[counter+1]){
                        int temp = NUM_ARRAY[counter];
                        NUM_ARRAY[counter] = NUM_ARRAY[counter+1];
                        NUM_ARRAY[counter+1] = NUM_ARRAY[counter];
                        sort = 1;

                    }
            }
            if(sort == 0){
                break;
            }

        }
            printf("Sorted Numbers\n");
                for(counter = 0; counter < numbers; counter++){
                   printf("%d\n", NUM_ARRAY[counter]);
                }

    return 0;
}

【问题讨论】:

  • 您是否尝试过先通过调试器?

标签: c arrays loops


【解决方案1】:

您应该将 temp 设置为 NUM_ARRAY[counter+1] 而不是 NUM_ARRAY[counter]

试试这个:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <time.h>

int main(){

    int numbers = 3;
    int NUM_ARRAY[numbers];
    int counter = 0;
    int sort = 0;
    int temp = 0;

                printf("Please enter three integers\n");
            for(counter = 0; counter < numbers; counter++){
                scanf(" %d", &NUM_ARRAY[counter]); // changed spacing on %d
            }
                printf("Original Numbers\n");
            for(counter = 0; counter < numbers; counter++){
                printf("%d\n", NUM_ARRAY[counter]);
            }

            while(1){
                sort = 0;
                for(counter = 0; counter < numbers-1; counter++){
                    if(NUM_ARRAY[counter] > NUM_ARRAY[counter+1]){
                        int temp = NUM_ARRAY[counter];
                        NUM_ARRAY[counter] = NUM_ARRAY[counter+1];
                        NUM_ARRAY[counter+1] = temp;  <--- /* Since NUM_ARRAY[counter] will be set to next value in the previous step */
                        sort = 1;

                    }
            }
            if(sort == 0){
                break;
            }

        }
            printf("Sorted Numbers\n");
                for(counter = 0; counter < numbers; counter++){
                   printf("%d\n", NUM_ARRAY[counter]);
                }

    return 0;
}

【讨论】:

  • 谢谢,我没有意识到添加了一个不必要的步骤
  • @Muhammed 将其标记为正确且有帮助,以便其他人也将受益。
  • 我是这个网站的新手,你是怎么做到的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
相关资源
最近更新 更多