qq_33271899 2015-12-29 02:58 采纳率: 100%
浏览 4364
已采纳

如何把C++语言编写的代码转换成C语言

 #include <stdlib.h>
#include <stdio.h> 
#include <string.h>
#include <conio.h>
#include <iostream.h>
#define N 50  //系统中学生的最大数量
int n=3;  //学生数量的初始值

struct  student 
{
    int sid;
    char name[10];
    char num[14];
    float chinese;
    float english;
    float clanguage;
    float totalscore;
    float average;
};

void print(bool menu)//打印基本信息
{
    if(!menu)
    {
        cout<<"\t\t"<<"----------------------------------------------"<<endl;
        cout<<"\t\t"<<"----------------------------------------------"<<endl;
        cout<<"\t\t"<<"***            学生成绩管理系统            ***"<<endl; 
        cout<<"\t\t"<<"***           1.文件录入学生信息           ***"<<endl; 
        cout<<"\t\t"<<"***           2.增加学生信息               ***"<<endl;
        cout<<"\t\t"<<"***           3.删除学生信息               ***"<<endl;
        cout<<"\t\t"<<"***           4.查找学生信息               ***"<<endl;
        cout<<"\t\t"<<"***           5.学生成绩排序               ***"<<endl;
        cout<<"\t\t"<<"***           6.显示学生信息               ***"<<endl;
        cout<<"\t\t"<<"***           7.退出系统                   ***"<<endl;
        cout<<"\t\t"<<"----------------------------------------------"<<endl;
        cout<<"\t\t"<<"----------------------------------------------"<<endl;
    }

}

void GetInformation(struct student *arr,int n)//学生成绩信息录入
{
    FILE *fp;
    int i;
    char buffer[100];
    if(fp=fopen("stu.dat","r"))
    {
        for(i=0;i<n;i++)
        {
            fgets(buffer,100,fp);
            sscanf(buffer,"%s %s %f %f %f",&arr[i].name,arr[i].num,&arr[i].chinese,&arr[i].english,&arr[i].clanguage);
            arr[i].totalscore=arr[i].chinese + arr[i].english + arr[i].clanguage;
            arr[i].average=arr[i].totalscore/3;
            if(feof(fp))
                break; 
        }
        cout<<"所有学生的成绩信息已录入!"<<endl<<endl;
        fclose(fp);
    }
}

void Display(struct student* arr,int n)//学生成绩信息显示
{
    cout<<"序号"<<"\t"<<"姓名"<<"\t"<<"   学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<"  "<<i+1<<"\t"<<arr[i].name<<"\t"<<arr[i].num<<"\t "<<arr[i].chinese<<"\t "<<arr[i].english<<"\t  "<<arr[i].clanguage
            <<"\t  "<<arr[i].average<<"\t"<<arr[i].totalscore<<endl;
    }
    cout<<endl;
}

void Save(struct student* arr,int n)//学生成绩信息保存,保存在源目录下的student.txt
{
    FILE *fp;
    fp=fopen("stu1.dat","w+");
    if(fp==NULL)
    {
        cout<<"文件不存在!"<<endl;
        exit(0);
    }
    fwrite(arr,sizeof(struct student)*n,n,fp);
    fclose(fp);
    cout<<endl<<"*所有学生的成绩信息已保存!!!"<<endl<<endl;
}

void Delete(struct student* arr,int n)//学生成绩信息删除
{
    char number[10];
    bool flag=false;
    cout<<"要删除的学生信息:"<<endl;
    cout<<"请输入该学生的学号:"<<endl;
    cin>>number;
    for(int i=0;i<n;i++)
    {
        if (!strcmp(number,arr[i].num))
        {
            strcpy(arr[i].name," ");
            strcpy(arr[i].num," ");
            arr[i].chinese=0;
            arr[i].english=0;
            arr[i].clanguage=0;
            arr[i].totalscore=0;
            arr[i].average=0;
            Save(arr,n);
            flag=true;
        }
    }
    if(flag==true)
    {
        cout<<endl<<"该学生不存在!"<<endl;
    }
}

void Search(struct student* arr,int n)//学生成绩信息查询
{
    int temp,i;
    bool flag=false;
    cout<<"---------------1.按学号查找---------------"<<endl;
    cout<<"---------------2.按姓名查找---------------"<<endl;
    cout<<"---------------3.返回上层菜单-------------"<<endl;
    cout<<"请按数字键(1—3)选择相应的功能:"<<endl;
    cin>>temp;
    switch (temp)
    {
    case 1://按照学号查询
        {
            char number[14];
            cout<<"请输入学号(10位整数的学号):"<<endl;
            cin>>number;
            for(i=0;i<n;i++)
            {
                if(!strcmp(number,arr[i].num))
                {
                    cout<<"姓名"<<"\t"<<"   学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
                    cout<<arr[i].name<<"\t"<<arr[i].num<<"\t "<<arr[i].chinese<<"\t "<<arr[i].english<<"\t  "<<arr[i].clanguage
                        <<"\t  "<<arr[i].average<<"\t"<<arr[i].totalscore<<endl<<endl;
                    flag=true;
                }
            }
            if(!flag)
            {
                cout<<endl<<"该学生不存在."<<endl<<endl;
            }
        }
        break;
    case 2://按照姓名查询
        {
            char nam[10];
            cout<<"请输入姓名(汉字):"<<endl;
            cin>>nam;
            for(i=0;i<n;i++)
            {
                if(!strcmp(nam,arr[i].name))
                {
                    cout<<"姓名"<<"\t"<<"学号"<<"\t\t"<<"语文"<<"\t"<<"英语"<<"\t"<<"C语言"<<"\t"<<"平均分"<<"\t"<<"总分"<<endl;
                    cout<<arr[i].name<<"\t"<<arr[i].num<<"\t"<<arr[i].chinese<<"\t"<<arr[i].english<<"\t"<<arr[i].clanguage
                        <<"\t"<<arr[i].average<<"\t"<<arr[i].totalscore<<endl<<endl;
                    flag=true;
                }
            }
            if(!flag)
            {
                cout<<endl<<"该学生不存在."<<endl<<endl;
            }
        }
        break;
    default:
        break;
    }
}

void Sort(struct student* arr,int n)//学生成绩排序
{
    int temp,i;
    bool flag=false;
    student stemp;
    cout<<"---------------1.按学号排序---------------"<<endl;
    cout<<"---------------2.按总分排序---------------"<<endl;
    cout<<"---------------3.返回上层菜单-------------"<<endl;
    cout<<"请按数字键(1—3)选择相应的功能:"<<endl;
    cin>>temp;
    switch (temp)
    {
    case 1://按照学号排序
        {
            int j,index;
            char min[14];
            for(i=0;i<n;i++)
            {
                index=i;
                strcpy(min,arr[i].num);
                for(j=i+1;j<n;j++)
                {
                    if(strcmp(min,arr[j].num)>0)
                    {
                        index=j;
                    }
                }
                if(index!=i)
                {
                    stemp=arr[index];
                    arr[index]=arr[i];
                    arr[i]=stemp;
                }
            }
            Display(arr,n);
        }
        break;
    case 2://按照总分排序
        {
            int bound,exchange=n-1;
            while(exchange!=0)
            {
                bound=exchange;
                exchange=0;
                for(i=0;i<bound;i++)
                {
                    if(arr[i].totalscore<arr[i+1].totalscore)
                    {
                        stemp=arr[i];
                        arr[i]=arr[i+1];
                        arr[i+1]=stemp;
                        exchange=i;
                    }
                }
            }
            Display(arr,n);
        }
        break;
    default:
        break;
    }
}


void Add(struct student* arr)
{
    bool flag=false;
    n+=1;
    cout<<"请根据下面提示输入新的学生信息:"<<endl;
    cout<<"姓名:";
    cin>>arr[n-1].name;
    cout<<"学号:";
    cin>>arr[n-1].num;
    cout<<"语文:";
    cin>>arr[n-1].chinese;
    cout<<"英语:";
    cin>>arr[n-1].english;
    cout<<"C语言:";
    cin>>arr[n-1].clanguage;
    arr[n-1].totalscore=arr[n-1].chinese + arr[n-1].english + arr[n-1].clanguage;
    arr[n-1].average=arr[n-1].totalscore/3;
    cout<<"新的学生信息已录入!"<<endl<<endl;
    flag=true;
}

int main(int argc,char* argv[])
{
    struct student arr[N];
    bool flag=true;
    if(flag)
    {
        int select;
        print(false);
        cout<<"请按数字键(1或7)选择相应的功能:"<<endl;
        cin>>select;
        while(0<select && select<7)
        {
            switch (select)
            {
            case 1:
                GetInformation(arr,N);
                print(true);
                break;
            case 2:
                ;
            case 3:
                ;
            case 4:
                ;
            case 5:
                ;
            case 6:
                cout<<"学生基本信息未录入,功能无法实现。"<<endl<<endl;
                print(false);
                cout<<"请按数字键(1或7)选择相应的功能:"<<endl;
                cin>>select;
                break;
            default:
                break;
            }
            if(select==1)
                break;
        }
        if(select>=7)
            flag=false;
        else
            flag=true;
        if(flag)
        {
            cout<<"请按数字键(1—7)选择相应的功能:"<<endl;
            cin>>select;
            while(select>0 && select<7)
            {
                switch (select)
                {
                case 1:
                    cout<<"学生信息已录入!"<<endl;
                    print(true);
                    break;
                case 2:
                    Add(arr);
                    print(true);
                    break;
                case 3:
                    Delete(arr,n);
                    print(true);
                    break;
                case 4:
                    Search(arr,n);
                    print(true);
                    break;
                case 5:
                    Sort(arr,n);
                    print(true);
                    break;
                case 6:
                    Display(arr,n);
                    print(true);
                    break;
                default:
                    break;
                }
                cout<<"请按数字键(1—7)选择相应的功能:"<<endl;
                cin>>select;
            }
        }
        Save(arr,n);
        cout<<"感谢使用本系统!"<<endl;
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 关注

    另外c里面是没有bool类型的可以用int的0和1来代替

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 thinkphp适配人大金仓问题
  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义