通過冒泡法排序進行處理,具體的看代碼。
我們提供的服務(wù)有:做網(wǎng)站、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、隴縣ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的隴縣網(wǎng)站制作公司
/*
此程序能實現(xiàn)如下功能:
1)從鍵盤上輸入n個整數(shù)(n的值由用戶指定,n1000)存入一數(shù)組中,
將它們按照從小到大的順序排列起來,輸出排列后的數(shù)組值;
2)檢查整數(shù)x(由用戶指定)值是否在這些數(shù)字當中,若在,返回
其在數(shù)組中的位置(即下標值,可能不止一個),若不在則將x插
入到相應位置,插入后數(shù)組仍有序;
3)統(tǒng)計數(shù)組中大于a小于b的元素個數(shù)并輸出,a、b值由用戶指定
*/
#include?stdio.h
void?bubble_sort(int?a[],?int?n)
{
/*?
冒泡法排序
*/
int?i,?j,?temp;
for?(j?=?0;?j??n?-?1;?j++)
for?(i?=?0;?i??n?-?1?-?j;?i++)
{
if(a[i]??a[i?+?1])
{
temp?=?a[i];
a[i]?=?a[i?+?1];
a[i?+?1]?=?temp;
}
}
}
int?find(int?x,?int?a[],?int?n)
{
/*?
從已從小到大排序的數(shù)組中查找一個值,
并輸出其所在的下標,若不在,即將其插入到相應的位置
返回值判斷數(shù)組中是否插入了輸入的值
*/
int?i;
int?flag?=?0;
int?tmp[2];
int?j?=?0;
for(i?=?0;?i??n;?i++)
{
if(a[i]?==?x)
{
flag?=?1;
break;
}
else?if(a[i]??x)
break;
}
if(?flag?==?1)
{
printf("%d存在于數(shù)組中,其下標為:",x);
while(i??n)
{
printf("%d?",i++);
if(a[i]?!=?x)
break;
}
putchar('\n');
return?0;
}
else{
printf("%d不存在于數(shù)組中\(zhòng)n",x);
tmp[j++]?=?a[i];
a[i++]?=?x;
/*?對后面的數(shù)組進行重新排序?*/
while(i??n?+?1)
{
tmp[(j++)%2]?=?a[i];
a[i++]?=?tmp[j%2];
}
printf("插入%d后,重新排序后的數(shù)組為:",x);
for(i?=?0;?i??n?+?1;?i++)
printf("%d?",a[i]);
putchar('\n');
return?1;
}
}
void?find_a_b(int?a,?int?b,?int?c[],?int?n)
{
/*?統(tǒng)計已排序數(shù)組中大于a,小于b的個數(shù)?*/
int?i;
int count;
for(i?=?0,count?=?0;?i??n;?i++)
{
if(c[i]??a)
if(c[i]??b)
count++;
else
break;
}
if(count?==?0)
printf("數(shù)組中大于%d,小于%d的元素個數(shù)為0\n",a,b);
else
{
printf("數(shù)組中大于%d,小于%d的元素個數(shù)為%d\n",a,b,count);
printf("它們?yōu)椋?);
for(i?-=?count;?count??0;?count--)
printf("%d?",c[i++]);
putchar('\n');
}
}
int?main()
{
int a[1000];
int n;
int x;
int i;
/*?以下指定輸入的整數(shù)的個數(shù),及完成數(shù)據(jù)的輸入?*/
printf("請輸入要輸入的整數(shù)的個數(shù)n(n1000):");
scanf("%d",n);
printf("請輸入%d個整數(shù)值:",n);
for(i?=?0?;?i??n;?i++)
scanf("%d",a[i]);
/*?對數(shù)組進行排序后,輸出?*/
bubble_sort(a,n);
printf("排序后的數(shù)組為:");
for(i?=?0?;?i??n;?i++)
printf("%d?",a[i]);
printf("\n");
/*?在數(shù)組中查找或插入一個值?*/
printf("請輸入要查找或插入的數(shù)值:");
scanf("%d",x);
n?+=?find(x,a,n);
/*?統(tǒng)計數(shù)組中大于a,小于b的個數(shù)并輸出?*/
int?a1,b;
printf("請依次輸入a,b的值(ab):");
scanf("%d%d",a1,b);
find_a_b(a1,b,a,n);
}
#include?stdio.h
#include?stdlib.h
#include?string.h
int?Input(long?number[],?int?score[][3])?{
int?i=0;
printf("Input?Score:?Number?Grad1?Grad2?Grad3\n");
while?(i30)?{
scanf("%ld?%d?%d?%d",?number[i],?score[i][0],?score[i][1],?score[i][2]);
if?(number[i]0)?break;
i++;
}
return?i;
}
void?Total1(int?score[][3],?float?sum[],?float?aver[],?int?n)?{
int?i;
for?(i=0;in;i++)?{
sum[i]?=?score[i][0]?+?score[i][1]?+?score[i][2];
aver[i]?=?sum[i]/3;
}
}
void?Total2(int?score[][3],?float?sum[],?float?aver[],?int?n)?{
int?i;
sum[0]?=?sum[1]?=?sum[2]?=?0.0f;
for?(i=0;in;i++)?{
sum[0]?+=?score[i][0];
sum[1]?+=?score[i][1];
sum[2]?+=?score[i][2];
}
for?(i=0;i3;i++)
aver[i]?=?sum[i]/3;
}
void?Total3(long?num[],int?score[][3],float?sum[],float?aver[],int?n)?{
int?i,?j;
long?_n;
int?_s;
float?_sum,?_ave;
Total1(score,?sum,?aver,?n);
for?(i=0;in-1;i++)?{
for?(j=n;ji;j--)?{
if?(sum[i]sum[j])?{
//swap?(i,?j)
_n?=?num[i];?num[i]?=?num[j];?num[j]?=?_n;
_s?=?score[i][0];score[i][0]?=?score[j][0];?score[j][0]?=?_s;
_s?=?score[i][1];score[i][1]?=?score[j][1];?score[j][1]?=?_s;
_s?=?score[i][2];score[i][2]?=?score[j][2];?score[j][2]?=?_s;
_sum?=?sum[i];?sum[i]?=?sum[j];?sum[j]?=?_sum;
_ave?=?aver[i];?aver[i]?=?aver[j];?aver[j]?=?_ave;
}
}
}
}
void?Print(long?num[],int?score[][3],float?sum1[],float?aver1[],float?sum2[],float?aver2[],int?n)?{
int?i;
printf("Pos\tNumber\tGrad1\tGrad2\tGrad3\tSum1\tAver1\n");
for?(i=0;in;i++)?{
printf("%d\t%ld\t%d\t%d\t%d\t%.1f\t%.1f\n",?(i+1),?num[i],?score[i][0],?score[i][1],?score[i][2],?sum1[i],?aver1[i]);
}
printf("No\tSum2\tAver2\n");
for?(i=0;i3;i++)?{
printf("%d\t%.1f\t%.1f\n",?(i+1),?sum2[i],?aver2[i]);
}
}
int?main()?{
long?number[30];
int?score[30][3];
float?sum1[30],?aver1[30];
float?sum2[30],?aver2[30];
float?sum3[3],?aver3[3];
int?n;
n?=?Input(number,?score);
Total1(score,?sum1,?aver1,?n);
Total2(score,?sum3,?aver3,?n);
Print(number,?score,?sum1,?aver1,?sum3,?aver3,?n);
Total3(number,?score,?sum2,?aver2,?n);
Print(number,?score,?sum2,?aver2,?sum3,?aver3,?n);
return?0;
}
形參,可以是數(shù)組也可以是指針,形參變量名不需要和實參一樣,所以可不使用a做變量名。但數(shù)組傳參,傳的地址,即使閉實參和形參名不一樣,操作的地址都是一樣的。
//排序
public void Sort(float[] a)
{
int len = sizeof(a) / sizeof(a[0]);
printf("原數(shù)組輸出:");
for (int i = 0; i len; i++)
{
printf("%d ", a[i]);
}
for (int j = 0; j len; j++)
{
for (int i = len; ji; i--)
{
if (a[i]a[i - 1])
{
int temp = 0;
temp = a[i];
a[i] = a[i - 1];
a[i - 1] = temp;
}
}
}
printf("\n大到小排序輸出:\n");
for (int i = 0; i 5; i++)
{
printf("%d ", a[i]);
}
}
//求最大值,最小值,平均值
public void getValue(float[] a)
{
int len = sizeof(a) / sizeof(a[0]);
float max = a[0];
float min = a[0];
float avg = 0;
float sum = 0;
for (int i = 0; i len; i++)
{
if (max a[i])
{
max = a[i];
}
if (min a[i])
{
min = a[i];
}
sum += a[i];
}
avg = sum / len;
printf("最大值:%d,最小值:%d,平均分:%d\n", max, min, avg);
}
程序沒問題,你想問什么,是什么地方不懂嗎,不懂的地方標出來!