MyException - 我的异常网
当前位置:我的异常网» C++ » 输入十个数字放在一维数组中,找出其中最大的数,并

输入十个数字放在一维数组中,找出其中最大的数,并与数组最后一个元素交换位置

www.MyException.Cn  网友分享于:2013-01-06  浏览:283次
输入10个数字放在一维数组中,找出其中最大的数,并与数组最后一个元素交换位置。
以下是我写的一段代码,可以执行,只是有些疑问,疑问是代码中间那段文字。

#include<stdio.h>
#define N 10

int main()
{
int i,t,t2,j,k,m;
double iNumber[N];
printf("请输入十个数字:\n");

for(m=0;m<N;m++){
scanf("%lf",&iNumber[m]);}

for(i=0,t=iNumber[0];i<N;i++){
if(t<=iNumber[i]){
t=iNumber[i];}    
}
 //为什么如果直接在这里printf("最大值是:%.0lf\n",t);  执行程序的话输出结果总是为0?//

for(j=0;j<N;j++){
if(iNumber[j]==t){
t2=iNumber[j];
iNumber[j]=iNumber[9];
iNumber[9]=t2;
break;}
}

printf("最大值是:%.0lf\n",iNumber[9]);

printf("转换后的数组为:\n");

for(k=0;k<N;k++){
printf("%.0lf ",iNumber[k]);}

return 0;

}
------解决方案--------------------
你的t是int型,iNumber[0]是double型,t=iNumber[0];这样你觉得合适吗?
------解决方案--------------------
你声明t是int型的啊。
------解决方案--------------------
//为什么如果直接在这里printf("最大值是:%.0lf\n",t);  执行程序的话输出结果总是为0?//
 将t的变量类型改为double
------解决方案--------------------
你定义t 为 int类型 输出却用  %f  (就是你等于0的原因)


VC里%f对应的是double,如果你只传入一个int的话,相当于只提供了这个double的低4字节,而接下来的四个字节刚好是main保存寄存器的位置,一般来说刚好是0,就拼凑出了0x00000000xxxxxxxx的形态。所以printf会打印出0    摘自百度
 
修改① t t2都改为double类型
     ② t=iNumber[i] 改为t=(int)iNumber[i] ,并在输出时使用%d  (2不推荐)




同初学者 多多关照啦
 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有