我正在编写一个简单的排序程序但是scanf()
似乎被卡住了并且继续接受无限输入。我知道如果输入无效输入,就会发生这种情况。但是,即使我输入int
,也会发生这种情况。
以下是代码:
#include <stdio.h>
int main() {
int arr[5],temp,pos,i=0;
printf("Enter the elements\n");
while(i<5){
scanf("%d ",&arr[i]);
++i;
}
printf("Sorted Array:");
for(int i=0;i<4;++i){
pos = i;
for(int j=i+1;j<5;++i){
if(arr[pos]>arr[j])
pos = j;
}
temp = arr[i];
arr[i] = arr[pos];
arr[pos] = temp;
}
for(int i=0;i<5;++i){
printf("%d",arr[i]);
}
return 0;
}
答案 0 :(得分:4)
您的代码问题与scanf()
无关。这是由于不正确的循环约束。
for(int i=0;i<4;++i){
pos = i;
for(int j=i+1;j<5;++i){
if(arr[pos]>arr[j])
pos = j;
}
temp = arr[i];
arr[i] = arr[pos];
arr[pos] = temp;
}
上述排序循环是您遇到问题的原因。您必须将内循环中的++i
更改为++j
才能解决您的问题。!!
for(int i=0;i<4;++i){
pos = i;
for(int j=i+1;j<5;++j){
if(arr[pos]>arr[j])
pos = j;
}
temp = arr[i];
arr[i] = arr[pos];
arr[pos] = temp;
}
您可以像这样更正代码。希望这会有所帮助。!!
答案 1 :(得分:0)
看来你有轻微的拼写错误, 在排序内循环中将++ i更改为++ j将解决问题。