求助,帮忙看看这段c程序有什么问题
输入10个证书,将其中最小的数与第一个数兑换,把最大的数与最后一个兑换
编写3个函数,1、输入十个数2、进行处理3、输出十个数
// sdvfd.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
void main()
{
void input( int number[]);
void max_min_value(int number[]);
void output(int number[]);
int number[10];
input(number);
max_min_value(number);
output(number);
}
void input(int number[])
{
int i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void max_min_value(int number[])
{
int *max,*min,*p,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max) max=p;
else if (*p<*min) min=p;
temp=number[0];number[0]=*min;*min=temp;
if(max=number) max=min;
temp=number[9];number[9]=*min;*min=temp;
}
void output(int number[])
{
int *p;
printf("Now thry are: ");
for(p=number;p<number+9;p++)
printf("%d ",*p);
printf("\n");
}
正确结果:
运行结果:32 24 56 78 1 98 36 44 29 6
now they are 1 24 56 78 32 6 36 44 29 98
谁能帮我看看哪部出错了,怎么不能得到正确结果呢?
[解决办法]
if(max=number) max=min;
这里应该是max == number注意不要少了一个“=”
for(p=number+1;p<number+10;p++)
if(*p>*max) max=p;
else if (*p<*min) min=p;
像这种语句,最好用大括号括起来,看起来就比较规范。
建议lz看看编程规范,你的风格实在不行。
[解决办法]
帮你调试了一下,可以用了,
#include<stdio.h>
void main()
{
void input( int number[]);
void max_min_value(int number[]);
void output(int number[]);
int number[10];
input(number);
max_min_value(number);
output(number);
}
void input(int number[])
{
int i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void max_min_value(int number[])
{
int *max,*min,*p,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max) max=p;
else if (*p<=*min) min=p;
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*max=temp; //修改了将min改为max
}
void output(int number[])
{
int *p;
printf("Now thry are: ");
for(p=number;p<=number+9;p++) //加了一个等号
printf("%d ",*p);
printf("\n");
}
[解决办法]
二楼正解!
两个错误:
1、等号的问题
2、二楼处的min改为max即可。