重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
通过冒泡法排序进行处理,具体的看代码。
我们提供的服务有:做网站、成都做网站、微信公众号开发、网站优化、网站认证、陇县ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的陇县网站制作公司
/*
此程序能实现如下功能:
1)从键盘上输入n个整数(n的值由用户指定,n1000)存入一数组中,
将它们按照从小到大的顺序排列起来,输出排列后的数组值;
2)检查整数x(由用户指定)值是否在这些数字当中,若在,返回
其在数组中的位置(即下标值,可能不止一个),若不在则将x插
入到相应位置,插入后数组仍有序;
3)统计数组中大于a小于b的元素个数并输出,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)
{
/*
从已从小到大排序的数组中查找一个值,
并输出其所在的下标,若不在,即将其插入到相应的位置
返回值判断数组中是否插入了输入的值
*/
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存在于数组中,其下标为:",x);
while(i n)
{
printf("%d ",i++);
if(a[i] != x)
break;
}
putchar('\n');
return 0;
}
else{
printf("%d不存在于数组中\n",x);
tmp[j++] = a[i];
a[i++] = x;
/* 对后面的数组进行重新排序 */
while(i n + 1)
{
tmp[(j++)%2] = a[i];
a[i++] = tmp[j%2];
}
printf("插入%d后,重新排序后的数组为:",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)
{
/* 统计已排序数组中大于a,小于b的个数 */
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("数组中大于%d,小于%d的元素个数为0\n",a,b);
else
{
printf("数组中大于%d,小于%d的元素个数为%d\n",a,b,count);
printf("它们为:");
for(i -= count; count 0; count--)
printf("%d ",c[i++]);
putchar('\n');
}
}
int main()
{
int a[1000];
int n;
int x;
int i;
/* 以下指定输入的整数的个数,及完成数据的输入 */
printf("请输入要输入的整数的个数n(n1000):");
scanf("%d",n);
printf("请输入%d个整数值:",n);
for(i = 0 ; i n; i++)
scanf("%d",a[i]);
/* 对数组进行排序后,输出 */
bubble_sort(a,n);
printf("排序后的数组为:");
for(i = 0 ; i n; i++)
printf("%d ",a[i]);
printf("\n");
/* 在数组中查找或插入一个值 */
printf("请输入要查找或插入的数值:");
scanf("%d",x);
n += find(x,a,n);
/* 统计数组中大于a,小于b的个数并输出 */
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;
}
形参,可以是数组也可以是指针,形参变量名不需要和实参一样,所以可不使用a做变量名。但数组传参,传的地址,即使闭实参和形参名不一样,操作的地址都是一样的。
//排序
public void Sort(float[] a)
{
int len = sizeof(a) / sizeof(a[0]);
printf("原数组输出:");
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);
}
程序没问题,你想问什么,是什么地方不懂吗,不懂的地方标出来!