PTA第五次编程题及源代码

PTA第五次编程题及源代码

7-1 【C0139】输出所有的水仙花数 (10分)

若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。编写一个程序,输出所有的水仙花数。

输入格式:
无输入

输出格式:
按照从小到大的顺序输出所有水仙花数,一行输出一个数。

输入样例:
在这里给出一组输入。例如:

输出样例:
在这里给出相应的输出。例如:

153
370
371
407

#include 
#include 

int main ()
{
    int i,g,s,b,sum;
    for(i=100;i<=999;i++)//遍历所有三位数
    {
        g=i%10;//取个位数
        s=(i/10)%10;//取十位数
        b=i/100;//取百位数
        sum=pow(g,3)+pow(s,3)+pow(b,3);//求和

        if(i==sum)/*判断是否相等,是则输出此百位数*/
        {
            printf("%d\n",i);
        }
    }

    return 0;
}

7-2 【C0140】输入两个整数,用辗转相除法计算其最大公约数和最小公倍数 (10分)

编写一个程序,输入两个整数,用辗转相除法计算其最大公约数和最小公倍数。。

输入格式:
在一行中输入两个以逗号为间隔的整数。

输出格式:
以逗号为间隔输出这两个整数的最大公约数和最小公倍数。

输入样例:
在这里给出一组输入。例如:

24,36

输出样例:
在这里给出相应的输出。例如:

12,72

#include 
int main ()
{
    int a,b,max,min,mcm,t=1;
    scanf("%d,%d",&a,&b);
    if(a>b)//比较两个数 
    {
        max=a;
        min=b;
    }else{
        max=b;
        min=a;        
    }
    
    while(min>0)//辗转相除法求最大公约数,t=0时结束 
    {
		t=max%min;
    	max=min;
		min=t; 
}
	
	mcm=(a*b)/max;//最小公倍数
    printf("%d,%d",max,mcm);
    
return 0;
}

7-3 【C0141】计算阶乘和 (10分)

编写一个程序,计算s=1!+2!+3!+…+n!。其中!为阶乘运算,n由输入决定。

输入格式:
输入正整数n。

输出格式:
输出1!+2!+3!+…+n!的值。

输入样例:
在这里给出一组输入。例如:

3

输出样例:
在这里给出相应的输出。例如:

9

#include 

int main ()
{
    int a,b,s,sum,i;
    scanf("%d",&a);
    for(i=1;i<=a;i++)//求前n项的和
    {
        for(b=i;b>0;b--)//求第n项的阶乘
        {
            s*=b;//printf("b=%d,s=%d",b,s);这个是调试用的
        }
        sum+=s;
        //printf("\ti=%d,sum=%d\n\n",i,sum);这个也是调试用的
        s=1;
    }

    printf("%d",sum);
    return 0;
}

7-4 【C0142】计算数列和 (10分)

编写一个程序,计算


其中m由输出决定。

输入格式:
输入正整数m。

输出格式:
计算 并输出。

输入样例:
在这里给出一组输入。例如:

3

输出样例:
在这里给出相应的输出。例如:

0.833333

#include 
#include 

double total(int n)//编这个求和函数命名为total
{   int b=1;
    double sum = 0;
    for(float i = 1; i <= n; i++)
    {   b++;
        sum += pow(-1,b)*(1/i);
    }
    return sum;
}


int main(){

    int n;

    scanf("%d",&n);

    printf("%7.6lf\n",total(n));//调用求和函数并输出值

    return 0;

}



你可能感兴趣的:(PTA第五次编程题及源代码)