投稿 资料上传 提问 搜索
您现在的位置是: 首页 > 问答 > 正文

C语言字符串输出 后面会有方框产生

题目截图如下: 

代码及详细注释如下:

#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);

最后的输出结果如下:


 

问题回复
  1. 笑叹一世浮沉
    笑叹一世浮沉IT技术之家

    include<bits/stdc++.h>
    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]也可以。

    回复