读书人

输入十个数字放在一维数组中找出其中

发布时间: 2013-01-05 15:20:39 作者: rapoo

输入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不推荐)




同初学者 多多关照啦

读书人网 >C++

热点推荐