我在显示学生姓名时遇到了麻烦 他们各自的课程......这是我唯一的问题 有... ...
非常感谢
#include <stdio.h>
#include <stdlib.h>
#define p printf
#define s scanf
struct stud
{
char name[50];
char course1[50];
char course2[50];
char course3[50];
char course[50];
int course_code;
}c[5];
int main(int argc, char *argv[])
{
int input_code,i,bsit_list=0,bscpe_list=0,bscs_list=0;
for (i=0; i<5; i++)
{
strcpy(c[i].course1,"BSIT");
strcpy(c[i].course2,"BSCPE");
strcpy(c[i].course3,"BSCS");
p("\n[%d] Enter Student Name: ",i+1);
s("%s",c[i].name);
p(" [1] %s",c[i].course1);
p("\n [2] %s",c[i].course2);
p("\n [3] %s",c[i].course3);
p("\nEnter Student Code: ");
s("%d",&input_code);
if (input_code==1)
{
bsit_list++;
strcpy(c[i].course,"BSIT");
}
else if (input_code==2)
{
bscpe_list++;
strcpy(c[i].course,"BSCPE");
}
else if (input_code==3)
{
bscs_list++;
strcpy(c[i].course,"BSCS");
}
}
p("\nBSIT Students");
for (i=0; i<input_code==1; i++)
{
p("\nName: %s",c[i].name); `<----- This is where my problem starts`
}
p("\nCount: %d",bsit_list);
p("\n\nBSCPE Students");
for (i=0; i<input_code==2; i++)
{
p("\nName: %s",c[i].name); `<----- Also this`
}
p("\nCount: %d",bscpe_list);
p("\n\nBSCS Students");
for (i=0; i<input_code==3; i++)
{
p("\nName: %s",c[i].name); `<----- And this`
}
p("\nCount: %d",bscs_list);
getch();
}
答案 0 :(得分:1)
我认为你的问题在这里
p("\nBSIT Students");
for (i=0; i<input_code==1; i++)
|--------------|
{
p("\nName: %s",c[i].name); `<----- This is where my problem starts`
}
你想要的是
p("\nBSIT Students");
for (i=0; i<5; i++) //iterate over all the students
{
if(!strcmp(c[i].course, c[i].course1)) //check for the match
printf("Name: %s\n",c[i].name);
}
其他课程也类似。
注意:我更喜欢printf()
和scanf()
而不是p()
和s()
。 YMMV。
答案 1 :(得分:0)
首先,正如大家所建议的,printf()
和scanf()
更好。
我注意到你的结构中有一个你没有使用的变量course_code
,所以我用它来存储每个学生的item_code
。
现在,i<item_code==1
是错误的
您需要的是i<5
(因为学生人数是5),然后在输出名称之前只需使用if( c[i].course_code == 1 )
语句。
以下是您的代码的固定版本(仅我更改的部分)
c[i].course_code = input_code; // the cource_code is assigned
if ( input_code == 1 )
{
bsit_list++;
strcpy( c[i].course , "BSIT" );
}
else if ( input_code == 2 )
{
bscpe_list++;
strcpy( c[i].course , "BSCPE" );
}
else if ( input_code == 3 )
{
bscs_list++;
strcpy( c[i].course , "BSCS" );
}
}
p("\nBSIT Students");
for ( i = 0 ; i < 5 ; i++ )
{
if( c[i].course_code == 1 ) // this if statement is what is required
p("\nName: %s",c[i].name);
}
p("\nCount: %d",bsit_list);
p("\n\nBSCPE Students");
for ( i = 0 ; i < 5 ; i++ )
{
if( c[i].course_code == 2 ) // this if statement is what is required
p("\nName: %s",c[i].name);
}
p("\nCount: %d",bscpe_list);
p("\n\nBSCS Students");
for ( i = 0 ; i < 5 ; i++ )
{
if( c[i].course_code == 3 ) // this if statement is what is required
p("\nName: %s",c[i].name);
}
p("\nCount: %d",bscs_list);