#include<stdio.h>
void main()
{
int a[10];
int i,j,min,t;
printf("input a array :\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
min=i;
for(j=i;j<10;j++)
//{
if(a[min]>a[j])
min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
//}
}
printf("the exchanged array is:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
問題:
就是打了//的那兩個花括號,為什么不能有
如果有了的話,比如,
input 32 11 7 66 90 72 45 6 10 178
出來的結果就是
6 7 11 32 45 66 72 90 178
uj5u.com熱心網友回復:
不是很明白你的問題,還是把題目要求說一下吧,這段代碼要實作什么效果?uj5u.com熱心網友回復:
選擇排序嗎加了括號的話
最后兩個數10 178
for(j=8;j<10;j++)
{
if(a[8]>a[8])//不滿足
min=j;//不執行
交換a[8]和a[8]的值
之后if(a[8]>a[9])//還是不滿足
min=j//還是不執行
還是交換a[8]和a[8]的值
所以a[8]沒變
uj5u.com熱心網友回復:
for(j=i;j<10;j++)j=i沒有意義
改成j=i+1
uj5u.com熱心網友回復:
為的是實作選擇排序。
不知道自己出來的答案為什么不對。現在解決啦,謝謝你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134415.html
標籤:C語言
上一篇:時間頻度和時間復雜度怎么算
下一篇:結構體指標用錯了嗎?求大佬指點
