程序设计基础第三次作业

2021/10/25 17:09:45

本文主要是介绍程序设计基础第三次作业,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

2. (程序题)

【计2014级期中试题】素数判断。

问题描述:一个大于1的自然数,只能被1和它本身整除,不能被其它除0以外的自然数整除,则该数称之为素数。编写函数,判断一个整数是否为素数

注:判断素数部分必须编写成一个独立于main()函数的其它函数

输入:一个大于1的自然数

输出:根据是否是素数输出Y/N

样例1:

输入:3

输出:Y

样例2:

输入:51

输出:N

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
    int n;
    cin >> n;
    if(n == 2){
        cout << "Y";
        return 0;
    }
    if(n == 3){
        cout << "Y";
        return 0;
    }
    for(int i = 2;i < sqrt(n)+1;i++){
        if(n % i == 0){
            cout << "N";
            return 0;
        }
    }
    cout << "Y";
}

3. (程序题)

题目编号:Exp03-Basic01,GJBook3-05-02

题目名称:组合问题

题目描述:编写程序,输入m,n的值,计算并输出函数f的值。

GJBook3-05-02.jpg

输入:一个整数m和一个整数n(m,n≤20)。

输出:函数f的值。
 

样例1:

输入:-1  2
输出:-1

样例2:

输入:2  2
输出:1
​#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long int ff(long long int t){
    if(t == 1||t == 0){
        return 1;
    }else{
        return ff(t - 1)*t;
    }
}
int f(long long int m, long long int n){
    if(m < n&&m > 0&&n > 0){
        return 0;
    }else if(m == n&&m > 0&& n > 0){
        return 1;
    }else if(m > n&& m > 0&&n > 0){
        long long int count = 1;
        for(long long int i = n+1;i <= m;i++){
            count *= i;
        }
        return count/ff(m - n);
    }else{
        return -1;
    }
}
int main(){
    long long int m,n;
    cin >> m >> n;
    cout << f(m,n);
}

4. (程序题)

题目编号:Exp03-Extend01,GJBook3-12-04

题目名称:自守数

题目描述:若一个正整数a满足条件 a^2 的尾数等于a,则称a为自守数,例如:

25^2=625 、76^2=5776 、9376^2=87909376 都是自守数。

编写程序,求小于等于n的所有自守数。

输入:从键盘随机输入一个正整数n(<1000000)。

输出:输出小于n的所有自守数,每个数之间以一个西文空格间隔。
 

样例1:

输入:10
输出:1 5 6

样例2:

输入:100
输出:1 5 6 25 76

​#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
int wei(long long int n){
    for(int i = 1;i < 100;i++){
        n /= 10;
        if(n/10 == 0){
            return i+1;
        }
    }
}
int iiff(int input){
    if(input % 10 != 6 &&input % 10 != 5){
        return 0;
    }
    if(input == 5||input == 6){
        return 1;
    }
    long long int big = (long long int)input * (long long int)input;
    big %= (int)pow(10, wei(big) - wei(input));
    if(big == input){
        return 1;
    }else{
        return 0;
    }
}

int main(){
    int n;
    cin >> n;
    cout << 1 << " ";
    for(int i = 2;i < n;i++){
        if(iiff(i)){
            cout << i << " ";
        }
    }

}

5. (程序题)

题目编号:Exp03-Basic02,GJBook3-05-06

题目名称:逆序数

题目描述:编写函数,求任意位自然数的逆序数,例如5432就是2345的逆序数。

输入:任意一个整数(<10^18) 。

输出:如果输入的不是自然数,则输出NULL;否则输出对应的逆序数。


样例1:

输入:120
输出:21

样例2:

输入:999999999999999999
输出:999999999999999999

样例3:

输入:-1357
输出:NULL

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;

int main(){
    long long int n;
    cin >> n;
    string s1;
    if(n == 0){
        cout << 0;
        return 0;
    }
    if(n < 0){
        cout << "NULL";
        return 0;
    }else{
        s1 = to_string(n);
        int i;
        for(i = s1.length() - 1;i >= 0;i--){
            if(s1[i]=='0'){
                continue;
            }else{
                break;
            }
        }
        for(;i >= 0;i--){
            cout << s1[i];
        }
    }
}

6. (程序题)

题目编号 :Exp03-Basic03

题目名称:多边形周长

题目描述:编写程序,求由键盘按顺时针方向输入n(0<n<=10)个顶点坐标的多边形周长(测试数据已保证当n>2时,各点按输入方向依次连接可构成封闭的n边形)。

输入:第一行输入一个整数,作为n值;以后每行两个浮点数(double),为多边形各顶点的坐标。

输出:多边形的周长,精确到小数点后2位。
 

样例1:

输入:
4
0  0
0  1
1  1
1  0
输出:4.00

样例2:

输入:
1
2 3
输出:
0.00

样例3:

输入:
2
2 3
2 4
输出:
1.00

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
double dis(double i1,double i2,double i3,double i4){
    double count = 0;
    count += (double)pow((i2 - i1),2) + (double)pow((i4 - i3),2);
    count = sqrt(count);
    return count;
}
int main(){
    int n;
    cin >> n;
    double a[100],b[100];
    for(int i = 0;i < n;i++){
        cin >> a[i] >> b[i];
    }
    double count = 0;
    for(int i = 0;i < n - 1;i++){
        count += dis(a[i],a[i+1],b[i],b[i+1]);
    }
    if(n == 1){
        printf("0.00");
        return 0;
    }else if(n == 2){
        count = dis(a[0],a[1],b[0],b[1]);
        printf("%.2lf",count);
        return 0;
    }
        count += dis(a[0],a[n - 1],b[0],b[n - 1]);
        printf("%.2lf",count);

}


 



这篇关于程序设计基础第三次作业的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程