请教两个C语言编程问题。 c语言编程 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第2题答案。 (选1增加,然后输入姓名就错误。其它功能还没试。)#include <stdio.h>#include<string.h>#define N 500//结构体数组的大小void caidan();/*功能浏览表,供使用者选择功能*/void zengjia();/*学生信息的增加*/void shanchu();/*学生信息的删除*/void chaxun();/*学生信息的查询*/int leve = 0;struct Student{ char *name; int age; char sex[2]; int number; int score;}stu[N];int main(){ int leve = 0; caidan();}void caidan(){ int x=0; printf("\n\n\n\n\n\n\n\n\t\t\t欢迎使用学生管理系统!\n"); printf("\t\t\t*******************\n"); printf("\t\t\t 1.增加学生信息\n"); printf("\t\t\t 2.删除学生信息\n"); printf("\t\t\t 3.查询学生信息\n"); printf("\t\t\t*******************\n"); printf("\n\t退出请输入:0\n\n\n");//输入0程序执行完毕 printf("请输入功能序号:\n"); scanf("%d",&x); switch(x)/*每个case后均有菜单函数,功能结束后返回功能表,按88结束*/ { case 1:zengjia();caidan();break; case 2:shanchu(stu);caidan();break; case 3:chaxun();caidan();break; case 0:break; default:printf("请输入正确的序号!");caidan() ;break; }}void zengjia(){ int q,k=1,r=1,d,b=0;/*r用来辨别信息输入是否错误,输入错误则r赋值1,没有错误则r赋值0,循环终止。初始值赋为1因为最后一次若错误则r=0*/ /*b记录@的个数*/ for(;leve<N && k==1;leve++)/*最外层循环,循环一次实现一个学生信息的录入,k控制是否继续录入下一个学生的信息*/ { printf("请你输入第%d个学生的信息!\n",leve+1); //getchar(); printf("请输入学生姓名:"); //stu[0].name = "小明"; //printf("\n请%s:",stu[leve].name); scanf("%s",stu[leve].name); //r=1; for(q=0;r==1;q++)//年龄范围在14~30之间 { printf("请输入学生年龄:"); scanf("%d",&stu[leve].age); if(stu[leve].age>30||stu[leve].age<14) { r=1;printf("系统鉴定您输入的年龄可能有误请重输!\n");} else r=0; }; r=1; getchar(); for(q=0;r==1;q++) { printf("请输入学生性别:"); scanf("%s",stu[leve].sex); if(strcmp("男",stu[leve].sex)==0) /*性别只能是男或者女,判断字符是否相等*/ r=0; else if(strcmp("女",stu[leve].sex)==0) r=0; else printf("性别输入错误!\n"); }; r=1;//接着赋值为1开始下次循环,下同 for(q=0;r==1;q++)/*该层循环控制学号的输入,直到输入正确循环终止,下同*/ { printf("请输入学生学号(学号不为0):"); scanf("%d",&stu[leve].number); if(stu[leve].number==0) { r=1;printf("您输入的学号有误请重输!\n");}//学号的输入不为0 else r=0;//若输入正确将r赋为0终止循环,下同 }; r=1; for (q = 0; r == 1; q++) { printf("请输入学生成绩(0~100):"); scanf("%d",&stu[leve].score); if(stu[leve].score >= 0||stu[leve].score <= 100) r = 0; else { r = 1; printf("系统鉴定您输入的年龄可能有误请重输!\n"); } } printf("要继续吗?\n1.是 2.退出\n"); scanf("%d",&k); }}void shanchu() //(struct student stu[N]){ int i,s,l,k=1;/*k判断是否有要删除的学生*/ printf("请输入要删除学生的学号:"); scanf("%d",&s); for(i=0;i<N;i++) { if(s==stu[i].number) { k=0;/*若有该学号k赋值为0*/ printf("您要删除的学生信息为:\n"); printf(" 姓 名 年龄 性别 学号 分数\n"); printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); printf("确认请按:1\n按任意键返回\n"); scanf("%d",&k); if(k==1) { leve--; /*删除后已录入学生个数减一*/ for(l=i;l<N;l++) { strcpy(stu[l].name,stu[l+1].name); stu[l].age=stu[l+1].age; strcpy(stu[l].sex,stu[l+1].sex); stu[l].number=stu[l+1].number; stu[l].score=stu[l+1].score; } printf(" 姓 名 年龄 性别 学号 分数\n"); for(i=0;i<=N && stu[i].number!=0;i++) { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); } } caidan(); } } if(k)/*k若未被赋值0,则说明没有需要删除的学生*/ printf("没有您要查询的学生不需要删除!");}void chaxun(){ int y,z,i,word=1,nianling,geshu=0;/*y为查询菜单中的变量,z为要查询的学号,geshu记录查询结果中年龄相同或性别相同的学生个数,word用来判断是否有要查询的学生信息*/ char xingming[20],xingbie[10]; printf("\t\t*******************************\n"); printf("\t\t1.按学号查询\n"); printf("\t\t2.按姓名查询\n"); printf("\t\t3.按性别查询"); printf("\t\t4.按年龄查询\n"); printf("\t\t5.查询所有\n"); printf("\t\t*******************************\n"); printf("请输入功能序号:"); scanf("%d",&y); switch(y) { case 1:printf("请输入要查询的学号:"); scanf("%d",&z); printf(" 姓 名 年龄 性别 学号 分数\n"); for(i=0;i<N;i++) { if(z==stu[i].number)//由学号来寻找目标学生 { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); word=0;/*若有要查询的学生则word赋值0 下同*/ }; } if(word)/*判断word的值 下同*/ printf("没有您查询的学生信息!\n"); ;break; case 2:printf("请输入要查询的姓名:"); scanf("%s",xingming); printf(" 姓 名 年龄 性别 学号 分数\n"); for(i=0;i<N;i++) { if(strcmp(xingming,stu[i].name)==0)//姓名字符比较 { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); word=0; }; } if(word) printf("没有您查询的学生信息!\n"); break; case 3:printf("请输入要查询的性别:"); scanf("%s",xingbie); printf(" 姓 名 年龄 性别 学号 分数\n"); for(i=0;i<N;i++)/*将结构体中信息逐一比较*/ { if(strcmp(xingbie,stu[i].sex)==0) { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); word=0; geshu++;/*若相等个数自增 下同*/ }; } if(word==0) printf("%s生的个数为:%d",xingbie,geshu);/*输出查询性别的学生个数 下同*/ if(word) printf("没有您查询的学生信息!\n"); geshu=0; break; case 4:printf("请输入要查询的年龄:"); scanf("%d",&nianling); printf(" 姓 名 年龄 性别 学号 分数\n"); for(i=0;i<N;i++) { if(nianling==stu[i].age) { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); word=0; geshu++; }; } if(word==0) printf("%d岁的学生个数为:%d",nianling,geshu);//输出所查询学生的个数 if(word) printf("没有您查询的学生信息!\n"); geshu=0; break; case 5: printf(" 姓 名 年龄 性别 学号 分数\n");/*顶行输出属性*/ printf("\n"); for(i=0;i<=N && stu[i].number!=0;i++) { printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score); printf("\n"); } default :printf("请输入正确的序号!\n"); }} 程序是用xcode编写的,自己不会了求大神帮忙 http://zhidao.baidu.com/link?url=t9I2kN41edrmyCxJyZpnR_bGWP6YBxEqoY5U0MjwTahuvft7YwD5YWFCMW-eQbmrHrLhecFitzfHnmkz1SUrcK 发错版块了吧?哥们,这是 iOS 论坛啊 iPad上怎样实现视频语音功能 objc的单例问题 itools放到真机中的程序出现incorrect architecture错误 iphone 链接 SQLite3 加载报错... 请问开发iphone用Mac Mini可以吗? 如何在IPad上做收费订阅杂志? 如何在iphone里面获得lac和cellid iphone中按提示弄音频接收, 在线等 UIImageView不能显示 请问学习了OC之后,想做个打小蜜蜂的游戏练手,该怎么做? ios7 navigationbar 设置背景图片引发的问题 IOS调用html中js函数,但是,页面启动了,函数没有执行,不知道怎么回事
#include <stdio.h>
#include<string.h>
#define N 500//结构体数组的大小void caidan();/*功能浏览表,供使用者选择功能*/
void zengjia();/*学生信息的增加*/
void shanchu();/*学生信息的删除*/
void chaxun();/*学生信息的查询*/
int leve = 0;
struct Student
{
char *name;
int age;
char sex[2];
int number;
int score;
}stu[N];
int main()
{
int leve = 0;
caidan();
}void caidan()
{
int x=0;
printf("\n\n\n\n\n\n\n\n\t\t\t欢迎使用学生管理系统!\n");
printf("\t\t\t*******************\n");
printf("\t\t\t 1.增加学生信息\n");
printf("\t\t\t 2.删除学生信息\n");
printf("\t\t\t 3.查询学生信息\n");
printf("\t\t\t*******************\n");
printf("\n\t退出请输入:0\n\n\n");//输入0程序执行完毕
printf("请输入功能序号:\n");
scanf("%d",&x);
switch(x)/*每个case后均有菜单函数,功能结束后返回功能表,按88结束*/
{
case 1:zengjia();caidan();break;
case 2:shanchu(stu);caidan();break;
case 3:chaxun();caidan();break;
case 0:break;
default:printf("请输入正确的序号!");caidan() ;break;
}
}
void zengjia()
{
int q,k=1,r=1,d,b=0;/*r用来辨别信息输入是否错误,输入错误则r赋值1,没有错误则r赋值0,循环终止。初始值赋为1因为最后一次若错误则r=0*/
/*b记录@的个数*/
for(;leve<N && k==1;leve++)/*最外层循环,循环一次实现一个学生信息的录入,k控制是否继续录入下一个学生的信息*/
{
printf("请你输入第%d个学生的信息!\n",leve+1);
//getchar();
printf("请输入学生姓名:");
//stu[0].name = "小明";
//printf("\n请%s:",stu[leve].name);
scanf("%s",stu[leve].name);
//r=1;
for(q=0;r==1;q++)//年龄范围在14~30之间
{
printf("请输入学生年龄:");
scanf("%d",&stu[leve].age);
if(stu[leve].age>30||stu[leve].age<14)
{ r=1;printf("系统鉴定您输入的年龄可能有误请重输!\n");}
else r=0;
};
r=1;
getchar();
for(q=0;r==1;q++)
{
printf("请输入学生性别:");
scanf("%s",stu[leve].sex);
if(strcmp("男",stu[leve].sex)==0) /*性别只能是男或者女,判断字符是否相等*/
r=0;
else if(strcmp("女",stu[leve].sex)==0)
r=0;
else
printf("性别输入错误!\n");
};
r=1;//接着赋值为1开始下次循环,下同
for(q=0;r==1;q++)/*该层循环控制学号的输入,直到输入正确循环终止,下同*/
{
printf("请输入学生学号(学号不为0):");
scanf("%d",&stu[leve].number);
if(stu[leve].number==0)
{ r=1;printf("您输入的学号有误请重输!\n");}//学号的输入不为0
else r=0;//若输入正确将r赋为0终止循环,下同
};
r=1;
for (q = 0; r == 1; q++) {
printf("请输入学生成绩(0~100):");
scanf("%d",&stu[leve].score);
if(stu[leve].score >= 0||stu[leve].score <= 100)
r = 0;
else
{
r = 1;
printf("系统鉴定您输入的年龄可能有误请重输!\n");
}
}
printf("要继续吗?\n1.是 2.退出\n");
scanf("%d",&k);
}
}
void shanchu() //(struct student stu[N])
{
int i,s,l,k=1;/*k判断是否有要删除的学生*/
printf("请输入要删除学生的学号:");
scanf("%d",&s);
for(i=0;i<N;i++)
{
if(s==stu[i].number)
{
k=0;/*若有该学号k赋值为0*/
printf("您要删除的学生信息为:\n");
printf(" 姓 名 年龄 性别 学号 分数\n");
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
printf("确认请按:1\n按任意键返回\n");
scanf("%d",&k);
if(k==1)
{
leve--; /*删除后已录入学生个数减一*/
for(l=i;l<N;l++)
{
strcpy(stu[l].name,stu[l+1].name);
stu[l].age=stu[l+1].age;
strcpy(stu[l].sex,stu[l+1].sex);
stu[l].number=stu[l+1].number;
stu[l].score=stu[l+1].score;
}
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<=N && stu[i].number!=0;i++)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
}
}
caidan();
}
}
if(k)/*k若未被赋值0,则说明没有需要删除的学生*/
printf("没有您要查询的学生不需要删除!");
}
void chaxun()
{
int y,z,i,word=1,nianling,geshu=0;/*y为查询菜单中的变量,z为要查询的学号,geshu记录查询结果中年龄相同或性别相同的学生个数,word用来判断是否有要查询的学生信息*/
char xingming[20],xingbie[10];
printf("\t\t*******************************\n");
printf("\t\t1.按学号查询\n");
printf("\t\t2.按姓名查询\n");
printf("\t\t3.按性别查询");
printf("\t\t4.按年龄查询\n");
printf("\t\t5.查询所有\n");
printf("\t\t*******************************\n");
printf("请输入功能序号:");
scanf("%d",&y);
switch(y)
{
case 1:printf("请输入要查询的学号:");
scanf("%d",&z);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(z==stu[i].number)//由学号来寻找目标学生
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;/*若有要查询的学生则word赋值0 下同*/
};
}
if(word)/*判断word的值 下同*/
printf("没有您查询的学生信息!\n");
;break;
case 2:printf("请输入要查询的姓名:");
scanf("%s",xingming);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(strcmp(xingming,stu[i].name)==0)//姓名字符比较
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
};
}
if(word)
printf("没有您查询的学生信息!\n");
break;
case 3:printf("请输入要查询的性别:");
scanf("%s",xingbie);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)/*将结构体中信息逐一比较*/
{
if(strcmp(xingbie,stu[i].sex)==0)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
geshu++;/*若相等个数自增 下同*/
};
}
if(word==0)
printf("%s生的个数为:%d",xingbie,geshu);/*输出查询性别的学生个数 下同*/
if(word)
printf("没有您查询的学生信息!\n");
geshu=0;
break;
case 4:printf("请输入要查询的年龄:");
scanf("%d",&nianling);
printf(" 姓 名 年龄 性别 学号 分数\n");
for(i=0;i<N;i++)
{
if(nianling==stu[i].age)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
word=0;
geshu++;
};
}
if(word==0)
printf("%d岁的学生个数为:%d",nianling,geshu);//输出所查询学生的个数
if(word)
printf("没有您查询的学生信息!\n");
geshu=0;
break;
case 5:
printf(" 姓 名 年龄 性别 学号 分数\n");/*顶行输出属性*/
printf("\n");
for(i=0;i<=N && stu[i].number!=0;i++)
{
printf("%6s%4d%4s%4d%4d",stu[i].name,stu[i].age,stu[i].sex,stu[i].number,stu[i].score);
printf("\n");
}
default :printf("请输入正确的序号!\n");
}
}