学堂在线TsinghuaX: 00740043X C++语言程序设计基础 第三章Lab

第一题:直角三角形

题目描述 

输入一个三角形的3边长度,判断该三角形是否为直角三角形,若是则输出True,若不是则输出False。推荐做法:定义一个函数,接受三个int参数,返回bool,再用主函数调用之。

输入描述

每行输入三个由空格隔开的整数a, b, c,表示三角形的3条边长 

1 <= a,b,c<= 10000

输出描述

对于每一行输入,输出True或者False表明是否为直角三角形

样例输入

3 4 5
6 7 8
1 1 1

样例输出

True
False
False
#include <stdio.h>
int main(int argc,const char *argv[])
{
    int a,b,c,tmp;
    scanf("%d %d %d",&a,&b,&c);
    if(a<b)
    {
        tmp=a;a=b;b=tmp;
    }
    if(a<c)
    {
        tmp=a;a=c;c=tmp;
    }
    if(a*a==b*b+c*c)
        printf("True
");
    else 
        printf("False
");
}

第二题:斐波那契数列

题目描述

斐波那契数列f(n)满足以下定义: 

f(0) = 1, f(1) = 1, f(n) = f(n-1) + f(n-2) (n >= 2)。 

请用递归的方法编写函数,对于给定的n,求出斐波那契数列的第n项f(n)

输入描述

每行输入一个整数n

0 <= n<= 30 

输出描述

对于每一行输入,输出斐波那契数列第n项的值f(n)

样例输入

1
10
25

样例输出

1
89
121393
#include <iostream>
using namespace std;
int f(int n)
{
    if (n==0||n==1)
        return 1;
    else
        return f(n-1)+f(n-2);
}
int main(int argc,const char *argv[])
{
    int i,a;
    cin>>i;
    a=f(i);
    cout<<a<<endl;
    return 0;
}

第三题:丑数

题目描述

只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数,另外1也不是丑数。请编写一个函数,输入一个整数n,能够判断该整数是否为丑数,如果是,则输出True,否则输出False。

输入描述

每行输入一个正整数n

1 <= n<= 1000000

输出描述

对于每一行输入,输出其是否为丑数,是则输出True,否则输出False

样例输入

4
7
12

样例输出

True
False
True
#include<iostream>
using namespace std;
void IsUgly(int num)
{
    if(num==1)
        cout<<"False"<<endl;
    else
    {
        while(num%2==0)
            num/=2;
        while(num%3==0)
            num/=3;
        while(num%5==0)
            num/=5;
        if(num==1)
            cout<<"True"<<endl;
        else
            cout<<"False"<<endl;
    }
}
int main(int argc,const char *argv[])
{
    int n;
    cin>>n;
    IsUgly(n);
    return 0;
}

附加题:斐波那契数列选做题

题目描述

斐波那契数列f(n)满足以下定义:

f(0) = 1, f(1) = 1, f(n) = f(n-1) + f(n-2) (n >= 2)。

本题的数据规模比原先更大 

输入描述

每行输入一个整数n

0 <= n<= 80

输出描述

对于每一行输入,输出斐波那契数列第n项的值f(n)

样例输入

44
77

样例输出

1134903170
8944394323791464
#include <iostream>
using namespace std;
long long int Fibonacci(int n)
{
    long long int result=0;
    long long int a[2]={1,1};
    if(n==0||n==1)
        return 1;
    else
    {
        for(int i=1;i<n;i++)
        {
            result=a[0]+a[1];
            a[0]=a[1];
            a[1]=result;
        }
    }
    return result;
}
int main()
{
    int n;
    cin>>n;
    cout<<Fibonacci(n)<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/Konayuki2015/p/4520580.html