【C语言程序设计】实验 5

目录

1. 计算平均分

2. 字母顺序数字逆序 

3. 求前n项和 

4. 求阶乘 

5. 完数 

6. 无理数 

7. 黄金分割数 


 

1. 计算平均分

【问题描述】输入一批学生的成绩(至少一个学生,以负数作为结束标志),计算平均分,并统计不及格成绩的个数。
【输入形式】一批学生的成绩(以负数作为结束标志),成绩数据类型为float,逗号分开。

【输出形式】平均分(保留二位小数)和不及格的人数(整数)。逗号分开。
【样例输入】6.9,6.4,87,65,48.6,-9

【样例输出】42.78,3

【样例说明】共有5个成绩,总分6.9+6.4+87+65+48.6=213.9,平均分213.9/5=42.78,有3个不及格。

#include
int main(){
    float x,s=0;
    int n=0,t=0;
    scanf("%f,",&x);
    while(x>=0){
        s=s+x;
        if(x<60){
            n++;
        }
        t++;
        scanf("%f,",&x);    
    }
    printf("%.2f,%d",s/t,n);
    return 0;

2. 字母顺序数字逆序 

【问题描述】输入任意的由字母和数字组成的字串,将其中字母直接输出,数字最后逆序输出。

【输入形式】任意的由字母和数字组成的字串,#结束,中间没有空格。

【输出形式】将其中字母直接输出,数字逆序输出,不含#。

【样例输入】number3reve45rse#
【样例输出】numberreverse543

提示:m=0,k=0,用while((c=getchar())!='#')输入字符c, 如果c是字母,直接输出,否则数字,再用 m=m+(c-'0' )*pow(10,k),k++;变成逆序。

#include
#include
int main(){
    char c;
    int k=0,m=0;
    while((c=getchar())!='#'){
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
            printf("%c",c);
        }else{
            m=m+(c-'0')*pow(10,k);
            k++;    
        }
    }
    printf("%d",m);
    return 0;

3. 求前n项和 

【问题描述】输入一个正整数n,计算1-2/3+3/5-4/7+5/9-...的前n项之和。
【输入形式】一个正整数n

【输出形式】1-2/3+3/5-4/7+5/9-...+(-1)n+1n/(2n-1)的前n项之和,保留5位小数。

【样例输入】3
【样例输出】0.93333
【样例说明】1-2/3+3/5=0.93333

#include
int main(){
    int n;
    float sum=0,flag=1,item1=1,item2=1,item=1;
    scanf("%d",&n);
    for(int i=0;i         sum=sum+item;
        flag=-flag;
        item1=item1+1;
        item2=item2+2;
        item=flag*item1/item2;
    } 
    printf("%.5f",sum);
    return 0;

4. 求阶乘 

【问题描述】

c3b77504a04146abbf854b75c1694a4f.png

【输入形式】一个不超过15的正整数。
【输出形式】一个double型数据,保留0位小数。
【样例1输入】3
【样例1输出】9
【样例1说明】1!+2!+3!=9

【样例2输入】15
【样例2输出】1401602636313

#include
int main(){
    int n;
    scanf("%d",&n);
    double sum1,sum2=0;
    for(int i=1;i<=n;i++){
        sum1=1;
        for(int j=1;j<=i;j++){
            sum1=sum1*j;
        }
        sum2+=sum1;
    }
    printf("%.0lf",sum2);
    return 0;

5. 完数 

【问题描述】输入一个正整数n(<=1000),判断该数是否为完数(真因子之和等于数本身),如6是完数,6=1+2+3。
【输入形式】一个正整数n。
【输出形式】如果是完数,输出该数,空格后输出Y,否则输出该数,空格后输出N。
【样例1输入】6
【样例1输出】6 Y

【样例2输入】8
【样例2输出】8 N

#include
int main(){
    int n,sum=0,k=1;
    scanf("%d",&n);
    while(1){
        if(k==n) break;
        if(k<=n/2&&n%k==0){
            sum+=k;
        }
        k++;
    }
    if(sum==n) printf("%d Y",n);
    else printf("%d N",n);
    return 0;

6. 无理数 

【问题描述】由下式e=1+1/1!+1/2!+...+1/n!求无理数e,精确到小数点后6位。
【输入形式】无
【输出形式】由e=1+1/1!+1/2!+...+1/n!得e,精确到小数点后6位。

【样例输入】无

【样例输出】e=2.718282

#include
int main(){
    float e,s1,s2=1;
    for(int i=1;i<100;i++){
        s1=1;
        for(int j=1;j<=i;j++){
            s1=s1*j;
        }
        s2=s2+1/s1;
    }
    printf("%.6f",s2);
    return 0;

7. 黄金分割数 

【问题描述】【问题描述】Fibonacci数列1,1,2,3,5,8,13,21…,fn=fn-1+fn-2,当n充分大时(如n=24),第n项和第n+1项的比是黄金分割数0.618033989,求黄金分割数,精确到小数点后6位。

【输入形式】无
【输出形式】一个小数,精确到小数点后6位。

【样例输入】
【样例输出】0.618034

#include
int main(){
    double a,b,c,d;
    a=1;
    b=1;
    c=2;
    for(int i=1;i<=100;i++){
        d=b+c;
        if(i==100) break;
        a=b;
        b=c;
        c=d;
    }
    printf("%.6lf",c/d);

 

你可能感兴趣的:(【C语言程序设计】实验,c语言,开发语言,算法,蓝桥杯)