首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求讲解啊该怎么解决

2012-04-06 
求讲解啊!!!#include stdio.h#include string.h#define input scanfstruct record{double mathdouble

求讲解啊!!!
#include <stdio.h>
#include <string.h>
#define input scanf


struct record 

{
  double math;
  double english;
  double chinese;
  double physics;
};


struct student 

{
  char num[20];
  char name[10];
  char sex[5];
  int old;
  struct record record[2];
  double avgreco;
  double sumreco;

};


int main()

{
  struct student students[2];

  input("%s",&students[0].num);

  input("%s",&students[0].name);

  input("%s",&students[0].sex);

  input("%d",&students[0].old);

  input("%f",&students[0].record[0].math);

  printf("%f\n",students[0].record[0].math);

  students[1]=students[0];


  printf("%s %s %s %d %f\n",students[1].num,students[1].name,students[1].sex,students[1].old,students[1].record[1].math);
  return 0;
}


//students[0].record[0].math 编译不会报错,但是输出的值不是自己输入的值。怎么会这样啊????

[解决办法]
你程序里也没有输出那个啊。。。
[解决办法]
问题有以下几个:
第一:请将struct student中关于record的记录改为非数组
第二:将record中的多有数据定义改为float
[解决办法]
input("%f",&students[0].record[0].math);
应该是 input("%lf",&students[0].record[0].math);
其他的也不对

C/C++ code
int main(){    struct student students[2];        input("%s",students[0].num);        input("%s",students[0].name);        input("%s",students[0].sex);        input("%d",&students[0].old);        input("%lf",&students[0].record[0].math);        printf("%f\n",students[0].record[0].math);        students[1]=students[0];            printf("%s %s %s %d %f\n",students[1].num,students[1].name,students[1].sex,students[1].old,students[1].record[0].math);    return 0;}
[解决办法]
不是很明白你的意思诶,你想要的输入是什么,想要的输出又是什么?
[解决办法]
发生问题的原因是:
1、struct student中的record记录是数组,而程序中只输入了record[0],所以在输出时是内存中的随机值。解决办法就是将record数组改为结构体变量。
2、record中的数据定义为double型,通常占用两个机器字长的内存(一般为8字节/64位),而输入时使用的%f格式包括float型和double型,由编译器决定如何取缓冲区的内容,所以结果可能出现异常。解决办法是使用cin输入或直接定义为float。
[解决办法]
补充说明:楼上关于输入格式的解释错误的。因为%f格式是输入单精度实数(float型),要输入双精度数(double)需要使用%lf

热点排行