我的問題在最后,可以直接拉到最后,這啰里啰嗦的話就當成某種吐槽吧!
事情的開始是這樣的,我老師布置作業讓寫“陣列的基本操作"的代碼,由于上學期老師并沒有講到,本小白決定百度,找到了一份”插入元素“的代碼,我研究之后又寫出了”洗掉元素“的代碼,”元素定位“上學期老師已講,所以用時四個小時終于完成(當然中間出現無數的錯誤,數次崩潰,在此要感謝某師父的幫助),然而在我感慨終于完成時我靈機一動,如果我洗掉的或定位的不是陣列中的元素呢?于是,很快我完成了”插入元素“代碼的修改,然后修改”洗掉元素“和”定位元素“,然后多次修改,多次失敗。
代碼是這樣的(當然現在是錯的)
#include<stdio.h>
#define N 6
void bubble_sort(int a[],int n,int k)
{
int i,t;
if(k>a[n-2])
a[n-1]=k;
else {
for(i=0;i<n;i++)
if(a[i]>k)
{
t=i;
break;
}
for(i=n-1;i>=t;i--)
{
a[i+1]=a[i];
}
a[t]=k;
}
}
void delete_sort(int a[],int n,int k)
{
int i,t;
for(i=0;i<n;i++)
if(a[i]==k)
{
{
t=i;
break;
}
for(i=t+1;i<n;i++)
{
a[i-1]=a[i];
}
a[n-1]=0;
}else {
printf("找不到元素\n");
break;
}
}
int locate_sort(int a[],int n,int k)
{
int i,t;
for(i=0;i<n;i++)
if(a[i]==k)
{
{
t=i;
break;
}
return t;
}
else if(a[i]!=k)
{continue;
return 10;
}
}
void print(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%-3d",a[i]);
printf("\n");
}
void main()
{
int a[6]={1,3,5,7,9};
int i;
int n,j,w;
int s=N;
int z;
printf("操作前陣列資料為:");
print(a,s);
printf("請輸入需要插入的元素:");
scanf("%d",&n);
bubble_sort(a,s,n);
printf("插入%d后陣列為:",n);
print(a,s);
printf("請輸入需要洗掉的元素:");
scanf("%d",&j);
delete_sort(a,s,j);
printf("洗掉%d后陣列為:",j);
print(a,s);
printf("請輸入需要定位的元素:");
scanf("%d",&w);
z=locate_sort(a,s,w);
if(z=10)
printf("找不到元素");
else
printf("元素%d的下標為:%d",w,z);
}
運行截圖:

我就想知道怎樣寫“元素洗掉”和“元素定位”部分的代碼,可以實作若洗掉的或定位的不是陣列中的元素,列印“找不到元素”;若是陣列中的元素則列印相應陣列或者下標!
或許本人的問題很簡單,要請大佬們博愛一點,解答一下!萬分感謝!
uj5u.com熱心網友回復:
local_sort函式if(a[i]==k)
{
{
t=i;
break;
}
return t;
}
這么寫, 找到了之后break退出了回圈, return t到后年馬月都執行不到;
洗掉break陳述句吧
uj5u.com熱心網友回復:
樓上正解,都break了,return t不起作用。直接:for(i=0; i<n; i++){
if(a[i] == k){
return i;
}
}
return -1; //表示找不到
洗掉元素的話,你洗掉了,還得把后面的元素往前移一個位置。
uj5u.com熱心網友回復:
謝謝!定位元素部分的問題已解決我洗掉元素部分的代碼問題怎樣解決呢?各位大佬
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134388.html
標籤:C語言
上一篇:求解!!!謝謝大佬們了!
下一篇:C++這樣怎么辦?
