解决方案 »

  1.   

    第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");
        }
    }
      

  2.   

    程序是用xcode编写的,自己不会了求大神帮忙
      

  3.   

    http://zhidao.baidu.com/link?url=t9I2kN41edrmyCxJyZpnR_bGWP6YBxEqoY5U0MjwTahuvft7YwD5YWFCMW-eQbmrHrLhecFitzfHnmkz1SUrcK
      

  4.   

    发错版块了吧?哥们,这是 iOS 论坛啊