哪位高手来帮我解决下这个c程序的问题啊!!

来源:百度知道 编辑:UC知道 时间:2024/05/09 07:37:21
#define increment 10
typedef struct{
char id[12];
char name[8];
char major[20];
int sclass;
float score;
}student;
typedef struct{
student *elem;
int length;
int listsize;
}sqlist;//存储结构
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int initlist(sqlist &l){
l.elem=(student *)malloc(100*sizeof(student));
l.length=0;
l.listsize=100;
return 1;
}//生成函数
void listinsert(sqlist &l){
student p;
int i=l.length;
char c='y';

while(c=='y'){
if(i>=l.listsize){
l.elem=(student *)realloc(l.elem,
(l.listsize+increment)*sizeof(student));
l.listsize+=increment;
}
printf("请输入学号:");
scanf("%s",p.id);
while(strlen(p.id)!=12){
printf("学号必须为12位,请重新输入:");
scanf("%s",p.id);
}
printf(&

这是浮点数库链接的问题,在scanf浮点数前,要先进行一次浮点数操作.

可以在student p;后加个p.score=0;

编译器在编译代码时会做些优化,如果它没发现浮点数操作,就会不加载浮点支持库.此时,如果scanf,printf中出现%f,%lf就会出错.

在win-tc1.9.1版下无法通过编译,提示在
int initlist(sqlist &l){ 这一行
说明语法错误

不好意思很久没有用C++了:)但是我换到Visual C++ 2005下面可以编译运行正常,没有提示错误。

你用的是tc不审c++,胡说编译没有问题