user-0 提问: 学生管理系统的学生成绩的及格率，平均分和年龄最小的问题， 谢谢谢谢！！！

回复:
user: user-0
content: 谢谢！！！年龄那里我调出来了，是因为循环那里出的问题

user: user-1
content: 你先自己调着吧。百度vc6如何调试

user: user-0
content: 这是devc++5.11上面的程序 #include<stdio.h> #include<stdlib.h> #include<string.h>     typedef union { 		struct{ 			unsigned int year:12; 			unsigned int month:4; 			unsigned int day:5; 		}; 		unsigned int value; 	}DATE;   typedef enum gender{male,female}GENDER;  typedef struct _student{ 	int id; 	char name[20]; 	float score[4];     GENDER gender;     DATE birthday; }STUDENT;//.定义学生结构体  STUDENT students[40]; DATE d;  int count=0; int min;   // 输入学生信息 void input_student( ) {  	 int i,j,n;      int year,month,day;       for(i=0;i<count;i++) 	 { 		printf("please input id,name:"); 		scanf("%d,%s",&students[i].id,students[i].name); 	   	printf("piease input year-month-day:"); 	    scanf("%d-%d-%d",&year,&month,&day);  	    d.year=year; 	    d.month=month;         d.day=day;  		printf("please input gender(male=0,female=1):");     	scanf("%d",&students[i].gender); 		printf("input score(chinese math english physics):");  		for(j=0;j<4;j++) 		{ 			scanf("%f",&students[i].score[j]); 		}  		printf("if you want to input again ,type 1;if you don't ,type 2:"); 		scanf("%d",&n);  		if(n==2) 			break; 	 }  }  //查找并显示学生信息 void show_student(int i) { 	int j; 	printf("\n"); 	printf("\tthe student is founded and this is all his information:\n"); 	printf("\tid: %d\t",students[i].id);  	printf("name: %s\t",students[i].name); 	printf("birthday: "); 	printf("%4d-%02d-%02d \t",d.year,d.month,d.day ); 	printf("gender: "); 	 	switch(students[i].gender) 	{ 	    case male: 		    puts("男");  			break; 	    case female: 			puts("女"); 			break;  	} 	 	printf("\tchinese math english physics: ");  	for (j=0;j<4;j++) 	{ 		printf("%.2f\t",students[i].score[j]); 	} 	printf("\n"); } 		 //统计平均成绩和及格率   void calculate_student( int n) { 	int i,j,p; 	      int a=0;  	float sum=0; 	  	enum subject{chinese,math,english,physics}; 	printf("\ninput the score you want to know(chinese=0,math=1,english=2,physics=3): "); 	scanf("%d",&p);  	switch(p) 	{ 	case 0: 		puts("the pass rate and avg of chinese:"); 		break; 	case 1: 		puts("the pass rate and avg of math:"); 		break; 	case 2: 		puts("the pass rate and avg of english:"); 		break; 	case 3: 		puts("the pass rate and avg of physics:"); 		break; 	}    	for(i=0;i<n;i++) 	{ 		for (j=p;j<p+1;j++) 		{ 		    sum+=students[i].score[p]; 		    if (students[i].score[p]>=60) 			{ 		    	a++; 			} 		} 		 	}   	      	printf("pass rate=%.2f\n",a/n); 	printf("avg=%.2f\n",sum/n); }  //查找年纪最小的学生 void young_student(int n) { 	 	 int min=students[0].birthday.value;    	 int i;  	 for (i=1;i<count;i++) 	 { 		 if (students[i].birthday.value < min) 		 { 		  			 min=students[i].birthday.value;               		 } 	 }  	 for (i=0;i<n;i++) 	 { 		 if ( students[i].birthday.value==min) 		 { 			show_student(i); 		 } 	 }  }     	     int main(void) { //1.输入学生信息：学号，姓名，性别，出生日期，成绩      int i,n; 	  	   	 char NAME[20];  	 int year,month,day; 	         	 printf ("please input the number of student:"); 	 scanf("%d",&count);  	 n=count;  	 input_student(); 	  //2.查找并显示学生信息 	        printf("\ninput the name you want to know:"); 	 scanf("%s",NAME); 	 for(i=0;i<count;i++) 	 { 		 if (strcmp(students[i].name,NAME)==0) 		 { 	         show_student(i); 		 } 	     else 		 { 			 printf("the name is wrong!!!"); 			 break; 		 } 	 }   	 printf("\n");	   //3.统计平均成绩和及格率       calculate_student(n);   //4. 查找显示年龄最小的学生的信息；  	 young_student( n);  }

user: user-0
content: warning是这张图片的内容 VC是老师要求的平台，其实devc++这些也是可以的。

user: user-0
content: 嗯嗯，谢谢，那那个及格率出来永远是0.00和那个查找年龄最小的学生是什么问题呢？？？

user: user-2
content: warning消息，你得贴出来看是什么警告内容，大部分没有什么影响的，你不帖提示不能让别人猜啊。VC6现在没有多少人在用了。

user: user-3
content: warning没必要管，只要不是error就行

user: user-0
content: 那我想再问一下，那个年龄为什么总是查找不对，是我的代码那个地方出了问题呢？？？

user: user-0
content: 嗯嗯，知道了，谢谢

user: user-1
content: int year, month, day;//这行代码没用。 这几个变量后面没有使用过

user: user-0
content: 谢谢谢谢，现在第一个类型不一样和第四个调好了 但是还是对二三四的day值没有使用很模糊，可以再讲一下吗？？？谢谢了！

user: user-1
content: 严重性	代码	说明	项目	文件	行	禁止显示状态 警告	C4018	“<”: 有符号/无符号不匹配	Project2	E:\C++application\Project2\Project2\main.cpp	686	 警告	C4101	“day”: 未引用的局部变量	Project2	E:\C++application\Project2\Project2\main.cpp	715	 警告	C4101	“month”: 未引用的局部变量	Project2	E:\C++application\Project2\Project2\main.cpp	715	 警告	C4477	“printf”: 格式字符串“%.2f”需要类型“double”的参数，但可变参数 1 拥有了类型“int”	Project2	E:\C++application\Project2\Project2\main.cpp	674	 警告	C4101	“year”: 未引用的局部变量	Project2	E:\C++application\Project2\Project2\main.cpp	715	  第一个是你的判断左右两边类型不一样。 左边是unsigned int，右边是int  第二、三、五个 day的值没有使用  第四个说printf("pass rate=%.2f\n", a / n); //打印格式是小数，但你的a是整数

user: user-1
content: 很不错，楼主加油

user: user-0
content: 嗯嗯，好，我之后注意

user: user-4
content: 发代码的时候用代码格式发看起来更好些