输入十个数字放在一维数组中,找出其中最大的数,并与数组最后一个元素交换位置
输入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不推荐)
同初学者 多多关照啦
以下是我写的一段代码,可以执行,只是有些疑问,疑问是代码中间那段文字。
#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不推荐)
同初学者 多多关照啦