谁帮忙调试这段c代码 编译环境c-free

qq_41737405 2018-04-05 08:28:53
#include <stdio.h>
#define NUM 30
typedef struct { //日期结构体
int year;
int month;
int day;
}DATE;

typedef struct{//学生信息结构
int num;
char name[24];
DATE birthday; //结构体嵌套
char department[48];
char major[32];
}STUDENTINFO;

void inputInfo(STUDENTINFO s[]); //函数声明
void outputInfo(STUDENTINFO s[]); //函数声明
void searchInfo(STUDENTINFO s[],DATE); //函数声明

main(){
STUDENTINFO s[NUM]; //学生结构体变量
DATE date; //日期结构体变量

inputInfo(s);
outputInfo(s);
printf("\n Enter a date(month,day)");
scanf("%d%d",&date.month,&date.day);
searchInfo(s,date);
}

//输入全部学生的信息
void inputInfo(STUDENTINFO s[])
{
int i;
printf("\nEnter %d student's information(name,birthday,department,major)\n",NUM);
for(i=0;i<NUM;i++){
s[i].num=i+1;
scanf("%s",s[i].name);
scanf("%d%d%d",&s[i].birthday.year,&s[i].birthday.month,&s[i].birthday.day);
scanf("%s",s[i].department);
scanf("%s",s[i].major);
}
}

//输出全部学生的信息
void inputInfo(STUDENTINFO s[])
{
int i;
printf("\n NUM Name Birthday Department Major\n");
for(i=0;i<NUM;i++){
printf("\n%4d%14s %4d%2d%2d%16s%16s",s[i].NUM,s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].department,s[i].major);
}
}

//查找并输出date之后过生日的学生信息
void searchInfo(STUDENTINFO s[],DATE date)
{
int i;
for(i=0;i<NUM;i++){
if(s[i].birthday.month>date.month){
printf("\n%4d%16s %2d%2d",s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day);
continue;
}
if(s[i].birthday.month==date.month&&s[i].birthday.day>date.day){
printf("\n%4d%16s %2d%2d",s[i].num,s[i].name,s[i].birthday.month,s[i].birthday.day);
}
}
}
...全文
644 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-04-08
  • 打赏
  • 举报
回复
#include <stdio.h>

#define NUM 30

typedef struct { //日期结构体
    int year;
    int month;
    int day;
}DATE;

typedef struct{//学生信息结构
    int num;
    char name[24];
    DATE birthday;  //结构体嵌套
    char department[48];
    char major[32];
}STUDENTINFO;

void inputInfo(STUDENTINFO s[]);  //函数声明
void outputInfo(STUDENTINFO s[]); //函数声明
void searchInfo(STUDENTINFO s[],DATE); //函数声明

int main()
{
    STUDENTINFO s[NUM]; //学生结构体变量
    DATE date; //日期结构体变量

    inputInfo(s);
    outputInfo(s);
    printf("\n Enter a date(month,day)");
    scanf("%d%d",&date.month,&date.day);
    searchInfo(s,date);

    return 0;
}

//输入全部学生的信息
void inputInfo(STUDENTINFO s[])
{
    int i;
    printf("\nEnter %d student's information(name,birthday,department,major)\n",NUM);
    for(i=0;i<NUM;i++){
        s[i].num=i+1;
        scanf("%s",s[i].name);
        scanf("%d%d%d", &s[i].birthday.year,&s[i].birthday.month,&s[i].birthday.day);
        scanf("%s", s[i].department);
        scanf("%s", s[i].major);
    }
}

//输出全部学生的信息
void outputInfo(STUDENTINFO s[])
{
    int i;
    printf("\n NUM Name Birthday Department Major\n");
    for(i=0;i<NUM;i++){
        //printf("\n%4d%14s %4d%2d%2d%16s%16s",s[i].NUM,s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].department,s[i].major);
        printf("\n%4d%14s %4d%2d%2d%16s%16s",s[i].num,s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].department,s[i].major);
    }
}

//查找并输出date之后过生日的学生信息
void searchInfo(STUDENTINFO s[],DATE date)
{
    int i;
    for(i=0;i<NUM;i++){
        if(s[i].birthday.month > date.month){
            printf("\n%16s %4d %2d%2d",s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day);
            continue;
        }
        if(s[i].birthday.month== date.month && s[i].birthday.day>date.day){
            printf("\n%4d%16s %2d%2d",s[i].num,s[i].name,s[i].birthday.month,s[i].birthday.day);
        }
    }
}
参考一下吧 问题1:inputInfo函数定义两次,第二次应该改成outputInfo 问题2:s[i]没有NUM结构体元素,应该改成小写; 问题3:searchInfo函数中,s[i].name应该对应的是%s,而不是%d 对比一下吧;写程序建议细心一些~
xian_wwq 2018-04-05
  • 打赏
  • 举报
回复

#include <stdio.h> 
#define NUM 30
typedef struct { //日期结构体 
	int year;
	int month;
	int day;
}DATE;

typedef struct {//学生信息结构 
	int num;
	char name[24];
	DATE birthday;  //结构体嵌套 
	char department[48];
	char major[32];
}STUDENTINFO;

void inputInfo(STUDENTINFO* s,int count);  //函数声明 
void outputInfo(STUDENTINFO* s,int count); //函数声明
void searchInfo(STUDENTINFO* s,int count, DATE date); //函数声明



int main()
{
	STUDENTINFO s[NUM]; //学生结构体变量 
	DATE date; //日期结构体变量

	inputInfo(s, NUM);
	outputInfo(s,NUM);
	printf("\n Enter a date(month,day)");
	scanf("%d%d", &date.month, &date.day);
	searchInfo(s,NUM, date);
}

//输入全部学生的信息
void inputInfo(STUDENTINFO* s,int count)
{
	int i;
	printf("\nEnter %d student's information(name,birthday,department,major)\n", count);
	for (i = 0; i<count; i++) {
		s[i].num = i + 1;
		scanf("%s", s[i].name);
		scanf("%d%d%d", &s[i].birthday.year, &s[i].birthday.month, &s[i].birthday.day);
		scanf("%s", s[i].department);
		scanf("%s", s[i].major);
	}
}

//输出全部学生的信息
void outputInfo(STUDENTINFO* s, int count)
{
	int i;
	printf("\n NUM Name Birthday Department Major\n");
	for (i = 0; i<count; i++) {
		printf("\n%4d%14s %4d%2d%2d%16s%16s", s[i].num, s[i].name, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, s[i].department, s[i].major);
	}
}

//查找并输出date之后过生日的学生信息 
void searchInfo(STUDENTINFO* s,int count, DATE date)
{
	int i;
	for (i = 0; i<count; i++) {
		if (s[i].birthday.month>date.month) {
			printf("\n%4d%16s %2d%2d",  s[i].birthday.year, s[i].name, s[i].birthday.month, s[i].birthday.day);
			continue;
		}
		if (s[i].birthday.month == date.month&&s[i].birthday.day>date.day) {
			printf("\n%4d%16s %2d%2d", s[i].num, s[i].name, s[i].birthday.month, s[i].birthday.day);
		}
	}
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧