题目截图如下:
#include <stdio.h>
#include <stdlib.h>
//自定义的结构体,用于存储每个学生的信息
struct inform{
//准考证号
char str[16];
//试机座位号
int num1;
//考试座位号
int num2;
};
int main()
{
typedef struct inform Inform;
//用户所输入的学生信息的个数
int N;
//用户输入的需要查询考试座位号的学生个数
int M;
//循环变量
int i = 0, j = 0;
//接收用户所输入的学生信息的个数
scanf("%d",&N);
//定义结构体数组,存储每个学生的详细信息
Inform student[N];
//通过循环依次录入每个学生的信息
for (i = 0; i < N; i++)
{
//接收该学生的准考证号
scanf("%s", student[i].str);
//接收该学生的试机座位号
scanf("%d", &student[i].num1);
//接收该学生的考试座位号
scanf("%d", &student[i].num2);
}
//接收用户输入的需要查询考试座位号的学生个数
scanf("%d", &M);
//用于接收用户输入的对应考生的待查询的试机座位号码的数组
int flags[M];
//依次对flags[M]赋值
for (i = 0; i < M; i++)
{
scanf("%d", &flags[i]);
}
//通过for循环的嵌套来查找该学生的准考证号和考试座位号
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
//判断是否为我们所需要查找的
if(student[j].num1 == flags[i]) {
//打印查找到的学生的准考证号和考试座位号,并且中间以空格隔开
printf("%s %d\n", student[j].str,student[j].num2);
}
}
}
return 0;
}
我是通过结构体来做的,最后的输出结果是没有问题的,就是输出的格式出了问题,这是我的输出语句printf("%s %d\n", student[j].str,student[j].num2);
using namespace std;
typedef long long ll;
struct STU
{
string n1;
int n2,n3;
} number;
int main()
{
int repeat;
scanf("%d",&repeat);
int i;
struct STU number[repeat];
for(i=0; i<repeat; i++)
{
cin>>number[i].n1>>number[i].n2>>number[i].n3;
}
int m;
cin>>m;
for(i=0; i<m; i++)
{
int a;
cin>>a;
int j;
for(j=0; j<repeat; j++)
{
if(number[j].n2==a)
{
cout<<number[j].n1<<" "<<number[j].n3<<endl;
}
}
}
}
这样就好了,用string代替char类型。
也可以把你代码中结构体里面的char str[16]改成str[17],其中字符串末尾还有一个结束符"\0",结束符也要占一位,所以至少是str[17],当然str[18]也可以。tips,最好去学一下c++。
你可以去看一下我的有一篇blog,https://www.cnblogs.com/jackwang-sparrow/p/12297344.html
好的,谢谢,我搞忘了C语言字符串的'\0' 需要占位,
还是基础没有打牢。
不好意思,最近在忙其他事,没能及时回复你