铁斯托 boom:大家认为这个是不是编译器原因!?

来源:百度文库 编辑:高考问答 时间:2024/04/29 01:12:46
我用的VC6.0
程序里.定义的是实型.如果是小数如93.22后面有小数的.编译器正常输出.如果遇到的是整数如81编译器输出81.(注:定义的为实型,逻辑正确输出应是81.00)
可能别的编译器可输出吧.如GCC不过没用过.
如有兴趣可运行下面的程序..你会发现不同
#include<iostream>
#include<iomanip>
using namespace std;
const int n=10;
struct student
{char num[6];char name[8];int score[4];float avr;
}stu[n];
int main()
{int i,j,max,maxi,sum;float average;
for(i=0;i<n;i++)
{cout<<"input scores of student "<<i+1<<endl;
cout<<"NO.:";cin>>stu[i].num;
cout<<"name:";cin>>stu[i].name;
for(j=0;j<3;j++)
{cout<<"score"<<j+1<<":";cin>>stu[i].score[j];}
cout<<endl;}
average=0;max=0;maxi=0;
for(i=0;i<n;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3.0;average+=stu[i].avr;
if(sum>max)
{max=sum;maxi=i;}}
average/=n;
cout<<" NO. name score1 score2 score3 average"<<endl;
for(i=0;i<n;i++)
{cout<<setw(8)<<stu[i].num<<" "<<setw(10)<<stu[i].name<<" ";
for(j=0;j<3;j++)
cout<<setw(3)<<stu[i].score[j]<<" ";
cout<<stu[i].avr<<endl;}
cout<<"average="<<average<<endl;
cout<<"The highest score is:"<<stu[maxi].name<<",score total:"<<max<<endl;
return 0;}