user-0 提问: 写了一个C语言数据结构，信息的输入与输出，求帮忙看一下哪里的问题

回复:
user: user-0
content: 引用 4 楼 wowpH的回复:[quote=引用 3 楼 qq_45661864 的回复:] 请问一下，那要怎么怎么改呢？我是在是没有头绪了 漏洞太多，先改了点明显的问题。还有一些你再看看。至少能运行了。  #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 80 typedef struct student { 	char no[11]; 	char name[10]; 	int math, computer; } student; student stu[N];// tu -> stu int n = 0; int menu() { 	int c; 	do { 		printf("\t==============学生管理系统==============\n\n"); 		printf("\t\t1.输入学生信息\n"); 		printf("\t\t2.输出学生信息\n"); 		printf("\t\t0:退出系统\n");// \\t -> \t 		scanf("%d", &c); 	} while (c < 0 || c > 2); 	return (c); } void Input() { 	char i; 	for (i = 0; i < 4; i++) { 		printf("输入学生学号:"); 		scanf("%s", stu[n].no); 		printf("输入学生姓名:"); 		scanf("%s", stu[n].name); 		printf("输入学生的数学成绩:"); 		scanf("%d", &stu[n].math);// %s -> %d， 加取地址符& 		printf("输入学生的计算机成绩:"); 		scanf("%d", &stu[n].computer);// %s -> %d    ，加取地址符& 		printf("请输入下一个?(Y\N)\n"); 	} } void Output() { 	int i; 	printf("--------------------------------------------------------------------------\n"); 	printf("学号 姓名 数学 计算机\n"); 	for (i = 0; i < n; i++) { 		printf("%-10s%-10s%-10d%-10d\n", stu[i].no, stu[i].name, stu[i].math, stu[i].computer); 		printf("--------------------------------------------------------------------------\n"); 	} } void main() { 	//struct student stu[N];// 这一行不要 	for (;;) { 		for (;;) { 			int n = 0; 			switch (menu()) { 			case 1: 				Input(); 				Output(); 				break; 			case 2: 				Output(); 				break; 			case 0: 				exit(0); 				break; 			deault: 				printf("*输入错误！*"); 				break; 			} 		} 	} }[/quote] 引用 3 楼 qq_45661864 的回复:请问一下，那要怎么怎么改呢？我是在是没有头绪了 漏洞太多，先改了点明显的问题。还有一些你再看看。至少能运行了。  #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 80 typedef struct student { 	char no[11]; 	char name[10]; 	int math, computer; } student; student stu[N];// tu -> stu int n = 0; int menu() { 	int c; 	do { 		printf("\t==============学生管理系统==============\n\n"); 		printf("\t\t1.输入学生信息\n"); 		printf("\t\t2.输出学生信息\n"); 		printf("\t\t0:退出系统\n");// \\t -> \t 		scanf("%d", &c); 	} while (c < 0 || c > 2); 	return (c); } void Input() { 	char i; 	for (i = 0; i < 4; i++) { 		printf("输入学生学号:"); 		scanf("%s", stu[n].no); 		printf("输入学生姓名:"); 		scanf("%s", stu[n].name); 		printf("输入学生的数学成绩:"); 		scanf("%d", &stu[n].math);// %s -> %d， 加取地址符& 		printf("输入学生的计算机成绩:"); 		scanf("%d", &stu[n].computer);// %s -> %d    ，加取地址符& 		printf("请输入下一个?(Y\N)\n"); 	} } void Output() { 	int i; 	printf("--------------------------------------------------------------------------\n"); 	printf("学号 姓名 数学 计算机\n"); 	for (i = 0; i < n; i++) { 		printf("%-10s%-10s%-10d%-10d\n", stu[i].no, stu[i].name, stu[i].math, stu[i].computer); 		printf("--------------------------------------------------------------------------\n"); 	} } void main() { 	//struct student stu[N];// 这一行不要 	for (;;) { 		for (;;) { 			int n = 0; 			switch (menu()) { 			case 1: 				Input(); 				Output(); 				break; 			case 2: 				Output(); 				break; 			case 0: 				exit(0); 				break; 			deault: 				printf("*输入错误！*"); 				break; 			} 		} 	} }[/quote] 好的，非常非常感谢🌸🌸🌸

user: user-1
content: 引用 3 楼 qq_45661864 的回复:请问一下，那要怎么怎么改呢？我是在是没有头绪了 漏洞太多，先改了点明显的问题。还有一些你再看看。至少能运行了。  #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 80 typedef struct student { 	char no[11]; 	char name[10]; 	int math, computer; } student; student stu[N];// tu -> stu int n = 0; int menu() { 	int c; 	do { 		printf("\t==============学生管理系统==============\n\n"); 		printf("\t\t1.输入学生信息\n"); 		printf("\t\t2.输出学生信息\n"); 		printf("\t\t0:退出系统\n");// \\t -> \t 		scanf("%d", &c); 	} while (c < 0 || c > 2); 	return (c); } void Input() { 	char i; 	for (i = 0; i < 4; i++) { 		printf("输入学生学号:"); 		scanf("%s", stu[n].no); 		printf("输入学生姓名:"); 		scanf("%s", stu[n].name); 		printf("输入学生的数学成绩:"); 		scanf("%d", &stu[n].math);// %s -> %d， 加取地址符& 		printf("输入学生的计算机成绩:"); 		scanf("%d", &stu[n].computer);// %s -> %d    ，加取地址符& 		printf("请输入下一个?(Y\N)\n"); 	} } void Output() { 	int i; 	printf("--------------------------------------------------------------------------\n"); 	printf("学号 姓名 数学 计算机\n"); 	for (i = 0; i < n; i++) { 		printf("%-10s%-10s%-10d%-10d\n", stu[i].no, stu[i].name, stu[i].math, stu[i].computer); 		printf("--------------------------------------------------------------------------\n"); 	} } void main() { 	//struct student stu[N];// 这一行不要 	for (;;) { 		for (;;) { 			int n = 0; 			switch (menu()) { 			case 1: 				Input(); 				Output(); 				break; 			case 2: 				Output(); 				break; 			case 0: 				exit(0); 				break; 			deault: 				printf("*输入错误！*"); 				break; 			} 		} 	} }

user: user-0
content: 引用 2 楼 wowpH的回复:Output里面的printf里面用到的stu，不是全局变量，引用不了。 请问一下，那要怎么怎么改呢？我是在是没有头绪了

user: user-1
content: Output里面的printf里面用到的stu，不是全局变量，引用不了。

user: user-2
content: #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 80 typedef struct student {   	char no[11]; 	char name[10]; 	int math,computer; }student; student stu[N]; int n=0; int menu() { 	int c; 	do{ 		printf("\t==============学生管理系统==============\n\n"); 		printf("\t\t1.输入学生信息\n"); 		printf("\t\t2.输出学生信息\n"); 		printf("\t\\t0:退出系统\n"); 		scanf("%d",&c); 	}while(c<0||c>2); 	return(c); } void Input() { 	char i; 	for(i=0;i<4;i++) 	{ 		printf("输入学生学号:"); 		scanf("%s",stu[i].no); 		 		printf("输入学生姓名:"); 		scanf("%s",stu[i].name); 		 		printf("输入学生的数学成绩:"); 		scanf("%d",&stu[i].math); 		 		printf("输入学生的计算机成绩:"); 		scanf("%d",&stu[i].computer); 		printf("请输入下一个?(Y\\N)\n"); 	} } void Output() { 	int i; 	printf("--------------------------------------------------------------------------\n"); 	printf("学号 姓名 数学 计算机\n"); 	for(i=0;i<n;i++) 	{ 		printf("%-10s%-10s%-10d%-10d\n",stu[i].no,stu[i].name,stu[i].math,stu[i].computer); 		printf("--------------------------------------------------------------------------\n"); 	} } int main() { 	struct student stu[N]; 	for(;;) 	{ 		for(;;) 		{ 			int n=0; 			switch(menu()) 			{ 				case 1:Input();Output();break; 				case 2:Output();break; 				case 0:exit(0);break; 				deault:printf("*输入错误！*");break; 			} 		} 	} }