C++练习

题1:

输入10个学生5门课的成绩,分别用函数实现下列功能:

(1)计算每个学生的平均分;

(2)计算每门课的平均分;

(3)找出50个分数中最高的分数所对应的学生和课程。

 

#include<iostream.h>
void aver_student(int grade[][5] )   //定义每个学生的平均分的函数    
{
    int i,j;
    double aver_student;
    for(i=0;i<5;i++)
    {
        double sum=0.0;
        for(j=0;j<5;j++)
        {
            sum+=grade[i][j];
        }
        aver_student=sum/5.0;
        cout<<"第"<<i+1<<"个学生的平均分为:"<<aver_student<<endl;
    }

}
void aver_courses(int grade[][5])        //定义每个课程的平均分的函数 
{
    int i,j;
    double sum=0.0,aver_courses;
    for(j=0;j<5;j++)
    {
        double sum=0.0;
        for(i=0;i<5;i++)
        {
            sum+=grade[i][j];
        }
        aver_courses=sum/5.0;
        cout<<"第"<<j+1<<"个课程的平均分为:"<<aver_courses<<endl;
    }

}
void max_student(int grade[][5])
{
    int i,j,max,a=0,b=0;
    max=grade[0][0];
    for(i=0;i<5;i++)
    {
        for(j=1;j<5;j++)
        {
            if(max<grade[i][j])
            {
                max=grade[i][j];
                a=i+1;
                b=j+1;
            }
        }
    }
    cout<<"最高分为:"<<max<<"\t该学生为"<<a<<"号"<<"\t课程为"<<b<<"个科目"<<endl;

}                  
void main()
{
    int i,j,grade[5][5];
    for(i=0;i<5;i++)
    {
        cout<<"请输入第"<<i+1<<"个同学的五个单科成绩:";
        for(j=0;j<5;j++)
        {
            cin>>grade[i][j];
        }
    }
    aver_student(grade);
    aver_courses(grade) ;
    max_student(grade);
}
运行结果:
请输入第1个同学的五个单科成绩:87 98 90 87 92
请输入第2个同学的五个单科成绩:59 97 86 79 100
请输入第3个同学的五个单科成绩:93 81 77 69 84
请输入第4个同学的五个单科成绩:99 98 97 96 95
请输入第5个同学的五个单科成绩:89 88 87 86 85
第1个学生的平均分为:90.8
第2个学生的平均分为:84.2
第3个学生的平均分为:80.8
第4个学生的平均分为:97
第5个学生的平均分为:87
第1个课程的平均分为:85.4
第2个课程的平均分为:92.4
第3个课程的平均分为:87.4
第4个课程的平均分为:83.4
第5个课程的平均分为:91.2
最高分为:100   该学生为2号     课程为5个科目

题2:

从键盘上输入一行字符(50个字符以内),要求分别统计出其中的英文大写字母、小写字母、数字及其他字符的个数。

#include<iostream.h>
void main()
{
    int i,a=0,b=0,c=0,d=0;
    char str[20]={"tg#J?N+dC*c6@s2_eA8"};
    for(i=0;i<19;i++)
    {
        if(str[i]>='a'&&str[i]<='z')
            a+=1;
        else if(str[i]>='A'&&str[i]<='Z')
            b+=1;
        else if(str[i]>='0'&&str[i]<='9')
            c+=1;
        else
            d+=1;
    }
    cout<<"小写字母:"<<a<<endl;
    cout<<"大写字母:"<<b<<endl;
    cout<<"数字:"<<c<<endl;
    cout<<"其他:"<<d<<endl;
}

运行结果:
小写字母:6
大写字母:4
数字:3

题3:

写一个求Fibonacci数列第n项的递归函数,在主函数中调用此函数求出Finonacci数列的前20项。

#include<iostream.h>
long fibonacci(int n)
{
    int f;
    if(n==0||n==1)
        return 1;
    else 
        f=fibonacci(n-1)+fibonacci(n-2);
        return f;
}
void main()
{
    long y;
    y=fibonacci(20) ;
    cout<<y<<endl;
}

运行结果:
10946

 

题4:

求1000以内的所有完数。

#include<iostream.h>
void main()
{
    int i,j,sum;
    for(i=1;i<1000;i++)
    {
        sum=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
                sum+=j;
        }
        if(sum==i)
            cout<<sum<<endl;
    }
}
运行结果:
6
28
496


题5:

从键盘上输入若干个学生的成绩,统计学生的平均成绩,并输出最高和最低成绩,当输入-1时,结束输入。

#include<iostream.h>
void main()
{
    double grade[30],max,min,sum=0,aver;
    int i,n=0;
    for(i=1;i<=30;i++)
    {
        cin>>grade[i];
        if(grade[i]!=-1)
        {
            sum+=grade[i];
            n++;
        }
        else
            break;
    }
    cout<<n<<endl;
    aver=sum/n;
    max=grade[1];
    min=grade[1];
    for(i=2;i<n;i++)
    {
        if(max<grade[i]) max=grade[i];
        if(min>grade[i]) min=grade[i];
    }
    cout<<"max="<<max<<"\nmin="<<min<<"\naver="<<aver<<endl;
}
运行结果:
65
89
100
98
85
93
92
59
-1
8
max=100
min=65
aver=85.125
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值