什么';这个C程序有什么问题;s总是出现一个我们没有输入的新数字?用Dev-C++;
此程序用于将数字从最小值排序到最大值 当我输入什么';这个C程序有什么问题;s总是出现一个我们没有输入的新数字?用Dev-C++;,c,dev-c++,C,Dev C++,此程序用于将数字从最小值排序到最大值 当我输入5137968204 结果是01234345678 9消失,出现了另一个我们没有输入的3。 当我输入9988776655443322110 结果是031112234455667788 99消失,出现了一个我们没有输入的3。怎么了 #include<stdio.h> void sort(int b[]){ for(int i = 0;i<10;i++){ for(int j = 0;j<10-i;j++
5137968204
结果是
01234345678
9
消失,出现了另一个我们没有输入的3
。当我输入
9988776655443322110
结果是
031112234455667788
99
消失,出现了一个我们没有输入的3
。怎么了
#include<stdio.h>
void sort(int b[]){
for(int i = 0;i<10;i++){
for(int j = 0;j<10-i;j++){
if(b[j+1]<b[j]){
int temp = 0;
temp = b[j+1];
b[j+1] = b[j];
b[j] = temp;
}
}
}
}
void main(){
int a[10];
printf("please enter numbers you want to sort:\n");
for(int i = 0;i<10;i++){
scanf("%d",&a[i]);
}
printf("The number you have input were:");
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
sort(a);
printf("The sorted numbers are:");
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
}
#包括
无效排序(int b[]){
for(int i=0;i在某些情况下,b[j+1]
将被计算为j=9
(这发生在i
为0时),因此您将访问数组边界之外的元素
您所做的程序行为未定义。(您观察到的“新元素”可能是由于您通过越界访问引入的)。在某些情况下,b[j+1]
将针对j=9
(当i
为0时发生这种情况)因此,您将访问数组边界之外的元素
你所做的程序行为是未定义的。(你观察到的“新元素”可能是由于你通过越界访问引入了它。)这里有一些未定义的行为:b[j+1]
对于j=9
你在越界访问的事件(实际上b[10]
是数组中b
的第11个元素,但它只包含10个元素)
当你有这样的行为时,会发生完全不可预测的事情。它可能会起作用。它可能会产生垃圾值(就像它为你做的那样)。在另一次尝试中,你的程序可能会因segfault而崩溃。你这里有一些未定义的行为:b[j+1]
对于j=9
你在边界之外访问的事件(实际上是b[10]
,它是b
的第11个元素,但它只包含10个元素)
当你有这样的行为时,将会发生的事情是完全不可预测的。它可能会工作。它可能会产生垃圾值(就像它为你做的那样)。在另一次尝试中,你的程序可能会因segfault而崩溃。只需删除-i中的for(int j=0;j只需删除-i中的for(int j=0;js已解决。按反向/正向顺序排序数字。
#包括
无效排序(int b[]){
内部温度=0;
对于(int i=0;已隔离。按反向/正向顺序对数字进行排序。
#包括
无效排序(int b[]){
内部温度=0;
对于(int i=0;值得注意的是,如果OP再次尝试,可能会发生很多事情,包括程序只是通过segfault.Yup退出。编译器还保留吃掉你的猫的权利。编译器不会做任何有趣的事情,它甚至不会检测到。不过,操作系统可能会决定吃掉你的猫:值得注意的是,如果OP再试一次,可能会发生很多事情,包括程序只是通过segfault.Yup退出。编译器也保留吃掉你的猫的权利。编译器不会做任何有趣的事情,甚至不会检测到。不过,操作系统可能只是决定吃掉你的猫:p
#include<stdio.h>
void sort(int b[]){
for(int i = 0;i<10;i++){
for(int j = 0;j<10-i;j++){
if(b[j+1]<b[j]){
int temp = 0;
temp = b[j+1];
b[j+1] = b[j];
b[j] = temp;
}
}
}
}
#include<stdio.h>
void sort(int b[]){
for(int i = 0;i<10;i++){
for(int j = 0;j<9;j++){ //just remove the i because it is useless.
//change the maximum iteration to 10 to prevent out of bounds exception
if(b[j+1]<b[j]){
int temp = 0;
temp = b[j+1];
b[j+1] = b[j];
b[j] = temp;
}
}
}
}
#include<stdio.h>
void sort(int b[]){
int temp = 0;
for(int i = 0;i<10;i++){
for(int j = 0;j<10-i-1;j++){
if(b[j+1] > b[j]){
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
}
}
int main(){
int a[10];
printf("\nplease enter numbers you want to sort:\n");
for(int i = 0;i<10;i++){
scanf("%d ",&a[i]);
}
printf("\nThe number you have input were:");
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
sort(a);
printf("\nThe sorted numbers are:");
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
b[j+1] > b[j] to b[j+1] < b[j]