当前位置:编程学习 > C/C++ >>

C++编程求助

请会C++的高手们帮我做几个题目,给出代码

题目如下

1,

编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求从键盘输入学生的数据用一个函数实现,输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)用一个函数,再用一个函数输出平均分在前3名的学生姓名及平均分。

2,

下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编写函数COUNTVALUE()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中.

3,

数学计算工具程序设计 难度系数1.3

功能要求:各计算功能单独编写成函数,在主函数中通过选项菜单调用函数。

(1)选项菜单集成各个计算功能函数

(2)求任意数的阶乘

(3)求组合数

(4)求任意两个整数的最大公约数和最小公倍数

(5)判断任意数是否是素数

(6)显示菲波拉契数列的前N项

4,

学生成绩管理程序设计  难度系数1.5

(1)选项菜单集成各功能函数模块

(2)录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)

(3)按总分排名次

(4)按姓名查找某学生成绩

(5)统计各课程的平均分、及格率、最高分、最低分

(6)打印成绩表

答案:#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;


//1
#define sum(i)    (p[i].ach[0]+p[i].ach[1]+p[i].ach[2])/3

struct Student{
    string name;    //姓名
    int id;            //学号
    int ach[3];        //三门成绩
};

void input(Student *p,int n)    //输入
{
    for(int i=0;i<n;i++){
        cout<<"第"<<i+1<<"个学生的信息:";
        if(!(cin>>p[i].name>>p[i].id>>p[i].ach[0]>>p[i].ach[1]>>p[i].ach[2])){
            cout<<"输入有误"<<endl;
            break;
        }
    }
}
void print(const Student *p,int n)
{
    cout<<"姓名          学号          成绩1        成绩2        成绩3        平均成绩"<<endl;
    for(int i=0;i<n;i++){
        cout<<setw(10)<<p[i].name<<setw(10)<<p[i].id;
        cout<<setw(10)<<p[i].ach[0]<<setw(10)<<p[i].ach[1];
        cout<<setw(10)<<p[i].ach[2];
        cout<<setw(10)<<sum(i)<<endl;
    }
}

void prntbth(Student *p,int n)
{
    Student t;
    for(int i=0;i<3;i++){            //只找出前三名即可
        for(int j=i+1;j<n;j++){
            if(sum(i)<sum(j)){
                t=p[i];
                p[i]=p[j];
                p[j]=t;
            }    
        }
    }
    print(p,3);    
}
///////////////////////////
//2-1
 void COUNTVALUE(int &num,int &sum)
{
    num=0;
    sum=0;
    for(int i=101;i<1000;i++){
        if(isprimenum(i))        //如果是素数
            if(i/100==(i%10+i/10%10)%10){   //i%10 个位  i/10%10 十位 i/100 百位
                ++num;
                sum+=i;
            }
    }
}

 //2-2
void WRITEDAT(int num,int sum)
{
    ofstream wr("OUT.DAT",ofstream::ate);
    if(!wr){
        cout<<"打开文件失败!"<<endl;
        return;
    }
    wr<<"素数个数:"<<num<<"素数和:"<<sum;
    wr.close();
}
/////////////////////////////////////////
//3-1 界面略去
//3-2阶乘
int nn(int i)        
{
    int m=1;
    if(i!=1)
        m=nn(i-1)*i;
    return m;
}
//3-3不明白 组合数 含意
//3-4求最大分约数和最小分倍数
void com(int a,int b)    
{    
    int re=a%b;
    while(re!=0)
    {
        a=b;
        b=re;
        re=a%b;
    }
    cout<<"最大公约数:"<<re<<endl;
    cout<<"最小公倍数:"<<a*b/re<<endl;
}
//3-5一个数是不是素数
bool isprimenum(int n )
{
    int i;
    if(n==1) return 0;
    for(i=2;i<n/2;i++)
        if(n%i==0) return 0; //不是素数
    return 1;                //是素数
}
//3-6-2 显示菲波拉契数列的前N项
int f(int n)
{
    if (n==1){
        return 1;
    }
    else  if (n==2){
        return 1;
    }
    else  if  (n>2){
        return f(n-1)+f(n-2);
    }
    else
        return 0;  //  n 为非正数时函数没有定义
}
//3-6-1 显示菲波拉契数列的前N项
void ff(int n)
{
    for(int i=1;i<=n;i++)
        cout<<f(i)<<" ";
}
////////////////////////////
struct stinfor{
    string name;
    int id;
    int chan;    //语文成绩
    int math;    //数学成绩
    int sum;
};
//4-1 界面略去
//4-2 录入学生成绩(姓名、学号、语文、数学成绩,总分自动计算)
stinfor* instudent(int &n)    //返回学生信息地址,n为学生个数,是函数输入的实际人数
{
    int size=10;
    stinfor *p=(stinfor*)malloc(10*sizeof(stinfor));
    for(int i=0;;i++){
        if(i==9){
            size*=5;    
            p=realloc(p,size);
        }
        if(!(cin>>p[i].name>>p[i].id>>p[i].chan>>p[i].math))
            break;
        if(!strcmp(p[i].name.c_str(),"ok"))        //名字为OK 就不再输入了;
            break;
        p[i].sum=p[i].math+p[i].chan;
    }
    n=i;
    return p;
}
//4-3 排名次    n为学生个数
void sort(stinfor *p,int n)
{
    stinfor t;
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++)
        {
            if(p[i].sum<p[j].sum)
            {
                t=p[i];
                p[i]=p[j];
                p[j]=t;
            }
&nbs

上一个:C++语言是什么?
下一个:帮忙解决c++问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,