void input_information()
{
printf("\n请输入您需要录入的学生数量:");
int number;
scanf("%d",&number);
printf("\n");
char student[number][4];//姓名 性别 年龄 学号 学院
int i,j;
for(i=0;i<number;i++)
{
for(j=0;j<4;j++){
printf("请输入学生姓名:\n");
scanf("%s",&student[number][j]);
printf("\n");
printf("请输入学生性别:\n");
scanf("%s",&student[number][j]);
printf("\n");
printf("请输入学生年龄:\n");
scanf("%s",&student[number][j]);
printf("\n");
printf("请输入学生学号\n");
scanf("%s",&student[number][j]);
printf("\n");
printf("请输入学生学院:\n");
scanf("%s",&student[number][j]);
printf("\n");
}
system("cls");
}
printf("录入成功!");
}
scanf("%s",&student[number][j]);
改成
scanf("%s",&student[i][j]);
都写错了
另外student元素是个数据结构吧,姓名应该是 scanf("%s",&student[number][j].name);这样吧
void input_information()
{
printf("\n请输入您需要录入的学生数量:");
int number;
scanf("%d", &number);
printf("\n");
char student[number][5][100]; // 姓名 性别 年龄 学号 学院
for(int i=0; i<number; i++)
{
printf("请输入学生姓名:\n");
scanf("%s", student[i][0]);
printf("\n");
printf("请输入学生性别:\n");
scanf("%s", student[i][1]);
printf("\n");
printf("请输入学生年龄:\n");
scanf("%s", student[i][2]);
printf("\n");
printf("请输入学生学号:\n");
scanf("%s", student[i][3]);
printf("\n");
printf("请输入学生学院:\n");
scanf("%s", student[i][4]);
printf("\n");
system("cls"); // Windows,用cls清屏。Linux或Mac,用clear清屏
}
printf("录入成功!");
}
int main()
{
input_information();
return 0;
}
for(j=0;j<4;j++){
这你不是包进这个循环里了吗
跟number有什么关系
对于链表,在进行 双端队列的定义 之前,我们需要考虑以下几个点:
1)队列数据的存储方式,以及队列数据的数据类型;
2)队列的大小;
3)队首指针;
4)队尾指针;
#define DataType int // (1)
struct QueueNode; // (2)
struct QueueNode { // (3)
DataType data;
struct QueueNode *prev;
struct QueueNode *next;
};
struct Queue {
struct QueueNode *head, *tail;// (4)
int size; // (5)
};
struct QueueNode;
是对 链表结点 的声明;DataType data
代表 数据域;struct QueueNode *prev
代表 前驱指针域;struct QueueNode *next
代表 后继指针域;注意,双端队列 需要用 双向链表 实现,单向链表 无法满足需求;head
作为 队首指针,tail
作为 队尾指针;size
来代表现在队列中有多少元素。每次 入队时size
自增,出队时size
自减。这样在询问 队列 的大小的时候,就可以通过 O(1)O(1)O(1) 的时间复杂度。