当前位置: 代码迷 >> C语言 >> [讨论]4个函数调用实在想不出来了
  详细解决方案

[讨论]4个函数调用实在想不出来了

热度:227   发布时间:2006-10-04 13:39:09.0
if(arr[0]==0)
A(arr);


这个在这里是。。。。。。。。什么意思!
----------------解决方案--------------------------------------------------------
如果没有输入序列当然不能排序或者求平局值了,要返回去输入序列的
----------------解决方案--------------------------------------------------------
o  理解 理解!!!!
----------------解决方案--------------------------------------------------------
那样不好 如果数组第一个元素是0就不行了
最好在主函数外面加一个标志变量全局变量来记录A()的调用情况,int flag=0;
然后在void A(int *num)的函数体里加flag=1;
然后在排序和平均数函数中判断if(flag==0) A(arr); 就可以了
----------------解决方案--------------------------------------------------------
那你全部列出来我看看吧!!!!

指针啊
----------------解决方案--------------------------------------------------------

程序代码:
#include<stdio.h>
#define N 10
void A(int*);
void B(int*);
void C(int*);
int flag=0;

void main()
{
int select;
int num[N];
do
{
//printf(\" 调用4个函数(作业题2) \");
printf(\"\n0.退出\n1.输入10个数\n2.进行排序\n3.求平均值\n\");
printf(\"功能选择:\");
scanf(\"%d\",&select);
if(select==0)
break;
switch(select)
{
case 1:A(num);break;
case 2:B(num);break;
case 3:C(num);break;
//case 4:D(num);break;
default:printf(\"输入有误,请在0--3之间选择.\n\");
}
}while(1);
}
void A(int *num)//输入10个数
{
int i;
flag=1;
printf(\"\n请输入%d个数字:\",N);
for(i=0;i<N;i++)
scanf(\"%d\",&num[i]);
printf(\"\n您输入的%d个数为:\",N);
for(i=0;i<N;i++)
printf(\"%d \",num[i]);
printf(\"\n\");
}
void B(int* grade)//进行排序

{
if(flag==0)
A(grade);
int i,j;
int temp;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if(grade[j]<grade[j+1])
{
/*交换元素*/
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf(\"\n这10个数字排序后为:\n\");
for(i=0;i<N;i++)
{
printf(\"%d \",grade[i]);
}
putchar('\n');
}
void C(int *arr)//求平均值
{
if(flag==0)
A(arr);
int i;
float ping=0.0;
for(i=0;i<N;i++)
{
ping+=arr[i];
}

printf(\"\n这10个数的平均值为:%.2f\n\",ping/N);
}


----------------解决方案--------------------------------------------------------
输出这些数    跑那去了?
----------------解决方案--------------------------------------------------------

没有必要了
以为输入序列时A()已经把这些数输出了
排序函数结束时也把排序好的这些数输出了

为什么还要单独输出呢?


----------------解决方案--------------------------------------------------------
这也是我郁闷的,老师给布置的作业题
要求是4个函数调用
有功能选择来实现

0.退出
1.输入10个数
2.排序
3.求平均值
4.输出

----------------解决方案--------------------------------------------------------

还有问题吗?

程序代码:
#include<stdio.h>
#define N 10
void A(int*);
void B(int*);
void C(int*);
void D(int*);
int flag=0;

void main()
{
int select;
int num[N];
do
{
//printf(\" 调用4个函数(作业题2) \");
printf(\"\n0.退出\n1.输入10个数\n2.进行排序\n3.求平均值\n4.输出这些数.\n\");
printf(\"功能选择:\");
scanf(\"%d\",&select);
if(select==0)
break;
switch(select)
{
case 1:A(num);break;
case 2:B(num);break;
case 3:C(num);break;
case 4:D(num);break;
default:printf(\"输入有误,请在0--4之间选择.\n\");
}
}while(1);
}
void A(int *num)//输入10个数
{
int i;
flag=1;
printf(\"\n请输入%d个数字:\",N);
for(i=0;i<N;i++)
scanf(\"%d\",&num[i]);
printf(\"\n您输入的%d个数为:\",N);
for(i=0;i<N;i++)
printf(\"%d \",num[i]);
printf(\"\n\");
}
void B(int* grade)//进行排序

{
if(flag==0)
A(grade);
int i,j;
int temp;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if(grade[j]<grade[j+1])
{
/*交换元素*/
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf(\"\n这10个数字排序后为:\n\");
for(i=0;i<N;i++)
{
printf(\"%d \",grade[i]);
}
putchar('\n');
}
void C(int *arr)//求平均值
{
if(flag==0)
A(arr);
int i;
float ping=0.0;
for(i=0;i<N;i++)
{
ping+=arr[i];
}

printf(\"\n这10个数的平均值为:%.2f\n\",ping/N);
}
void D(int *num)//输出这10个数
{
if(flag==0)
A(num);
int i;
printf(\"\n这10个数为:\");
for(i=0;i<N;i++)
{
printf(\"%d \",num[i]);
}
}


----------------解决方案--------------------------------------------------------
  相关解决方案