user-0 提问: 求问下面的代码哪里错了以及怎么改？输不出来是什么原因？

回复:
user: user-0
content: 楼主发现错在哪里了，谢谢楼上大神的帮助，但是比值那里还是有问题： 下面这样比较输出正确可以的                 if(strcmp(zhi, stud[i].id) == 0)                 {                     printf("%d%d%d", stud[i].score[0], stud[i].score[1], stud[i].score[2]);                 }  但这样输出又有问题了                 if(strcmp(zhi, stud[i].name) == 0) {                     printf("%s%s%s%d%d%d", stud[i].cname[0], stud[i].cname[1], stud[i].cname[2], stud[i].score[0], stud[i].score[1], stud[i].score[2]);                 }

user: user-0
content: 然后楼主虽然学了c++但没有学c语言，是个学生，基础比较差，是要好好学

user: user-0
content: 谢谢你说的问题，但我有尝试strcmp或strncmp这个函数，仍旧是不行，用了你的代码还是不行，同样的问题，不会报错，但无法输出值，至于你说的int用s%，我设计的是用来存课程名字符串的，所以显示用了s%，我是前面声明类型的时候写了int，这个问题现在我改了~不过还是谢谢~

user: user-1
content: 这位兄台，你这个代码习惯太差了，如果你是学生的话好好学，如果你是工作了，你家老板不批你我表示很震惊

user: user-2
content: #include <stdio.h> #include <stdlib.h>  #define SIZE 10  struct   student{     char  id[20];     char  name[20];     int   cname[3];     int   score[3]; } stud[SIZE];  void input()  /* 输入学生的信息 */ {     int i;        for (i  =0; i < SIZE; i++) {          printf("第%d个学生的信息:\n",i+1);         scanf("%s%s%d%d%d%d%d%d", stud[i].id, stud[i].name,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);         } } void output()  /* 输出学生的信息 */ {     int i;     printf("\n");     for(i=0;i<SIZE;i++) {         printf("%s %s %d %d %d %d %d %d\n",stud[i].id,stud[i].name, stud[i].cname[0], stud[i].cname[1], stud[i].cname[2],stud[i].score[0],stud[i].score[1],stud[i].score[2]);     } } /* 成绩查询输出信息 */ void sortput() {     int z,n;	//选择项      int i;      //行      char zhi[20];      for(;n=1;) {  	    printf("Search function :\n");  	    printf("1. Search use id :\n");  	    printf("2. Search use name :\n");  	    printf("3. Search use cname :\n");         printf("4. Search all :\n");         printf("Choose :");         scanf("%d", &z);          printf("Zhi :");         scanf("%s",zhi);           printf("Search results : \n");         for(i=0;i<SIZE;i++) {//行              if(z==1)               {                 if(strcmp(zhi, stud[i].id) == 0)                 {                     printf("%d%d%d%d%d%d", stud[i].cname[0], stud[i].cname[1], stud[i].cname[2], stud[i].score[0], stud[i].score[1], stud[i].score[2]);                 }	             }             if(z==2) {                 if(strcmp(zhi, stud[i].name) == 0) {                     printf("%d%d%d%d%d%d", stud[i].cname[0], stud[i].cname[1], stud[i].cname[2], stud[i].score[0], stud[i].score[1], stud[i].score[2]);                 }           	               }             if(z==3) {                 if(atoi(zhi)== stud[i].cname[0]) {                 printf("%d", stud[i].score[0]);             } else if(atoi(zhi) == stud[i].cname[1]) {                 printf("%d", stud[i].score[1]);             } else {                 printf("%d", stud[i].score[2]);             }           }     }     if(z==4) {         output();     }	  	printf("Choose 1继续:");  	scanf("%d", &n);	     } }   int main() {	    input();    sortput(); } 问题比较多，改了改；试试这个。 问题： 1. int类型的数据不能使用%s输入，当然也不能用%s输出； 2. printf输出时，就不要加& 3. 字符串比较不能直接比较，需要借助字符库函数，比如strcmp或strncmp 4. 注意代码风格和格式