高分悬赏:一个简单C语言程序,相信大神们只需一刻钟就能搞定。需要完整代码,必要的注释,完全符合可加分

设计一个程序,用一维数组描述一个数据集合(包含10个整数),采用指针方式完成数组元素的三种操作:(1)求数组中各元素的平均值;(2)按升序排列数组中的各元素;(3)将一维... 设计一个程序,用一维数组描述一个数据集合(包含10个整数),采用指针方式完成数组元素的三种操作:(1)求数组中各元素的平均值;(2)按升序排列数组中的各元素;(3)将一维数组升序排列的数据元素,一维数组原数据元素保存到一个新的2行10列二维数组中,并分行输出该二维数组元素值。具体实现要求:(1)编制出相应程序,用子函数调用形式(分别定义计算平均值、升序排列和二维数组数据处理三个功能子函数)实现每一功能。

需符合以上条件,不符合的就不要来了。不要怕分不够多,就怕你写不出来!在线等~
展开
 我来答
瀚漠
2012-05-29 · 专注C语言发开,Linux系统相关
瀚漠
采纳数:309 获赞数:1289

向TA提问 私信TA
展开全部
#include<stdio.h>

void average(int *num,int n)
{
int i;
int sum = 0;
float aver;

for(i=0; i<n; i++)
{
sum += *(num++);
}

aver = (float)sum/(float)n;
printf("the average of the array is %.2f\n",aver);

return ;
}

void sort(int *num,int *p,int n)
{
int i,j;
int *q = p;
int *w = p;
int swap;

for(i=0; i<n; i++)
{
*p++ = *num++;
}

p = q;
printf("before sort:\n");
for(i=0; i<n; i++)
{
printf("%d ",*p++);
}
printf("\n");

for(i=0; i<(n); i++)
{
q = p = w;
for(j=0; j<(n-i); j++)
{
if(*q > *p)
{
swap = *p;
*p = *q;
*q = swap;
}
q = p++;
}
}

printf("after sort:\n");
for(i=0; i<n; i++)
{
printf("%d ",*w++);
}
printf("\n");
return ;
}

void merge(int *num,int *num2,int *p,int *q,int n)
{
int i,j;
int *ps = p;
int *qs = q;

for(i=0; i<n; i++)
{
*p++ = *num++;
*q++ = *num2++;
}

printf("after merge:\n");
for(i=0; i<n; i++)
{
printf("%d ",*ps++);
}
printf("\n");

for(i=0; i<n; i++)
{
printf("%d ",*qs++);
}
printf("\n");

return ;
}

void main()
{
int num[10] = {10,8,7,14,-9,-3,78,37,19,23};
int sortdata[10];
int newdata[2][10];

average(num,10);
sort(num,sortdata,10);
merge(num,sortdata,newdata[0],newdata[1],10);

return;
}

用3个子函数实现3个子功能。。。。
chengbenyifeng
2012-05-29 · TA获得超过304个赞
知道答主
回答量:139
采纳率:0%
帮助的人:113万
展开全部
#include <stdio.h>

double aver(int a[10]);
void sort(int a[10]);
void hebing(int a[10],int b[2][10]);

void main()
{
int i,c[10],d[2][10];
int x[10]={1,-2,4,5,8,9,0,6,7,11};
printf("\n验证升序函数的数组元素:\n");
for(i=0;i<10;i++)
printf("%d ",x[i]);
sort(x);
printf("\n升序后的数组:\n");
for(i=0;i<10;i++)
printf("%d ",x[i]);
printf("\n\n下面请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&c[i]);

printf("\n这十个数的平均数是:%lf\n",aver(c));
printf("\n合并后两个数组:\n");
hebing(c,d);

}

double aver(int a[10])
{
int i,sum=0;
for(i=0;i<10;i++)
sum+=*(a+i);
return (sum/10.0);
}

void sort(int a[10])
{
int i,j,k,t;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(*(a+j)<=*(a+k)) k=j;
if(k!=i)
{
t=*(a+i);
*(a+i)=*(a+k);
*(a+k)=t;
}
}

}

void hebing(int a[10],int b[2][10])
{
int i,j;
for(i=0;i<10;i++)
*(*(b+1)+i)=*(a+i);

sort(a); //调用sort函数 可以看到升序排列效果
for(i=0;i<10;i++)
*(*b+i)=*(a+i);

for(i=0;i<2;i++)
for(j=0;j<10;j++)
{

printf("%d ",*(*(b+i)+j));
if(j==9) printf("\n");
}
}
追问
其实挺喜欢这位朋友的风格的~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Emerson_Home
2012-05-29 · 超过20用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:65.9万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void avg(int *a)
{
int *p,sum=0;
for(p=a;p<a+10;p++)
sum+=*p;
printf("%lf\n",sum/10.0);
}
void sort(int *a)
{
int *p,*q,t;
for(p=a;p<a+10;p++)
for(q=p+1;q<a+10;q++)
if(*p>*q)
{
t=*p;
*p=*q;
*q=t;
}
for(p=a;p<a+10;p++)
printf("%d ",*p);
printf("\n");
}
void comb(int *a,int *b)
{
int *p,*q;
for(p=b,q=a;p<b+10;q++,p++)
*p=*q;
}
int main()
{
int a[30],b[2][10],*p,*q;
for(p=a,q=b[0];p<a+10;q++,p++)
{
scanf("%d",p);
*q=*p;
}
avg(a);
sort(a);
comb(a,b[1]);
for(p=b[0];p<b[0]+10;p++)
printf("%d ",*p);
printf("\n");
for(p=b[1];p<b[1]+10;p++)
printf("%d ",*p);
printf("\n");
return 0;
}
追问
两位都写的很好,但是我只能选择一个。。。这个我也纠结了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w_zhangwei_1
2012-05-29 · TA获得超过181个赞
知道答主
回答量:214
采纳率:0%
帮助的人:150万
展开全部
擦!这问题值200分,亏老~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陶醉886
2012-05-29
知道答主
回答量:3
采纳率:0%
帮助的人:4468
展开全部
那我明天给你行吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式