程序设计基础第四周

输入两个20以内的正整数,输出其最大公约数和最小公倍数。测试用例如下:

输入:

12

15

输出:

最大公约数为3

最小公倍数为60

输入

2

6

输出

最大公约数为2

最小公倍数为6

(中间无空行,数字和字符之间无空格)

#include<stdio.h>
int main()
{
    int n1 , n2;
    scanf("%d",&n1);
    scanf("%d",&n2);
    /*
    先求最大公约数,比较两个数,选择较小的一个开始,进行减一操作,
    每减一一次,判断这个数是不是同时是这两个数的公约数,找到第一个即可 
    */ 
    int biggest;
    int temp = n1 > n2 ? n2 : n1;
    while(temp >= 1)
    {
        if(n1 % temp == 0 && n2 % temp == 0)
        {
            biggest = temp;
            break;
        }
        temp--;    
    }
    
    /*
    再求最小公倍数,思路和前面那个一样 
    */
    int min; 
    temp = n1 > n2 ? n1 : n2;
    while(1)
    {
        if(temp % n1 == 0 && temp % n2 == 0)
        {
        min = temp;
        break;    
        }
        temp++;
    }
    printf("最大公约数为%d\n",biggest);
    printf("最小公倍数为%d",min);
    return 0;
} 

输入一个三位数,判断这个数是否是水仙花数,并输出判断结果。

水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

例如:

输入:153

输出: 153 is a narcissistic number

输入:111

输出:111 is not a narcissistic number

#include<stdio.h>
#include<math.h>
int main()
{
    int num;
    scanf("%d",&num);
    /*
    思路:用一个temp存储它的值
    将temp逐位取出,乘幂之后相加 
    一个整数的位数可以用 log10(n) + 1 求出 
    幂乘可以使用math.h下的pow函数 
    */
    int temp = num;
    int len = (int)(log10(num) + 1);
    int sum = 0;
    while(temp != 0)
    {
        sum += (int)pow(temp % 10 , len);
        temp /= 10;
    }
    
    if(sum == num)
    {
        printf("%d is a narcissistic number",num);
    }else{
        printf("%d is not a narcissistic number",num);
    }
    return 0;
}

输入5个字母,分别统计大写字母和小写字母的个数,要求输入字符用逗号分隔,输入格式如下:

a,A,r,g,R

输出格式如下:

大写字母个数=2

小写字母个数=3

(输入用,分隔,输出之间无空行)

#include<stdio.h>
int main()
{
    int lowerCaseNum = 0;
    int upperCaseNum = 0;
    int i = 0;
    char temp;
    for(;i < 5; i++)
    {
        // 一边输入一遍判断,通过比较ASCII码值来进行判断 
        scanf("%c,",&temp);
        if(temp >= 'a' && temp <= 'z')
        {
            lowerCaseNum++;
        }else{
            upperCaseNum++;
        }
    }    
    printf("大写字母个数=%d\n",upperCaseNum);
    printf("小写字母个数=%d",lowerCaseNum);
    return 0;
}

输出1!+2!+3!+...+10!的值 。

输出格式如下:

1!+2!+3!+...+10!=求得的值

#include<stdio.h>

int getFactorial(int n)
{
    if(n == 1){
        return 1;
    }else{
        return getFactorial(n-1)*n;
    }
}
int main()
{
     // 这里使用递归函数来求阶乘,也可以使用循环的方式 
    int sum = 0;
    int i;
    for(i = 1; i <= 10; i++)
    {
        sum += getFactorial(i);
    }
    // 这里使用循环
//    int sum1 = 0;
//    for(i = 1; i <= 10; i++)
//    {
//        int temp = i;
//        int temp1 = 1;
//        while(temp > 1)
//        {
//            temp1 *= temp;
//            temp--;
//        }
//        sum1 += temp1;
//    }
    printf("1!+2!+3!+...+10!=%d",sum);     
    return 0;
} 

利用公式 π/4=1-1/3+1/5-1/7+… 求 π 的近似值,舍去绝对值小于eps的通项。eps由用户输入。数据类型使用双精度。 输入:双精度实数,输出pai的近似值,保留8位小数。 注意,级数求和之后再乘以4. 【输入输出样例】 输入: 1e-4 输出: 3.14139265

#include<stdio.h>
int main()
{
    double input;
    scanf("%lf",&input);
    // 利用 n = 2 * k - 1 来实现取奇数 
    double k = 1;
    int flag = 1; // 来确定每一项之前的符号
    
    double gap;
    double n;
    double sum = 0.0;
    while(1)
    {
        n = 2 * k - 1;
        gap = 1 / n;
        // 初学者可以看看浮点数是怎么比较的
        if(gap < input)
        {
            break;
        }
        sum += (flag * gap);
        flag *= -1;
        k++;
    }
    sum = sum * 4;
    printf("%.8lf",sum);
    return 0; 
}

输入正整数a,b,找出[a,b]中的所有素数。 输入:两个整数 输出:若干素数,用一个空格隔开,末尾无空格。 注意,1不是素数。 【输入输出样例】 输入: 1 20 输出: 2 3 5 7 11 13 17 19

#include<stdio.h>

// 定义一个函数来判断是不是素数
int isPrime(int n)
{
    // 注意特殊情况, 1 不是素数
    if(n == 1)
    {
    return 0;    
    } 
    int i = n / 2;
    // 为什么要从 n / 2 开始呢,自己想吧,挺简单的 
    for(; i >= 2; i--)
    {
        if(n % i ==0)
        {
            return 0;
        }
    }
    return 1;
} 
int main()
{
    int left,right;
    scanf("%d%d",&left,&right);
    int temp = left;
    int gap = 0;
    while(temp <= right)
    {
        if(temp == right)
        {
            gap = 1;
        }
        if(isPrime(temp))
        {
            if(gap == 0){
            printf("%d ",temp);        
            }else{
            printf("%d",temp);    
            }
            
        }
        temp++;    
    } 
    return 0;
}

一个数如果等于其因子之和,则称为“完数”。例如,6的因子是1,2,3,而6=1+2+3,则6是完数。编程输出1000以内的所有完数,数字在一行输出,数字之间用,分隔(英文标点)

#include<stdio.h>

    // 依旧从 n / 2 开始找一个数的因子
int isPerfectNum(int n)
{
    int temp = n / 2;
    int sum = 0;
    while(temp >= 1)
    {
        if(n % temp == 0)
        {
            sum += temp;
        }
        temp--;
    }
    if(sum == n)
    {
        return 1;
    }else{
        return 0;
    }
}
int main()
{
    // 依旧从 n / 2 开始找一个数的因子
    int flag = 0;
    int i = 1;
    for(; i <= 1000; i++)
    {
        if(isPerfectNum(i))
        {
            if(flag == 0)
            {
            printf("%d",i);    
            flag = 1;
            }else
            {
            printf(",%d",i);    
            }    
        }    
    }
    return 0; 
}

编写程序,输出n行n列的下列形式的左下三角九九乘法表,n由用户输入。下表是n=4的输出。 4 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 输入:1-9的正整数; 输出:n行n列左下三角九九乘法表,一行中各列数据间有一个空格,末尾无空格。 注意不能使用\b消末尾的空格。 提示:输出末尾无空格的10个数: int i=1,n=10; i=1; printf("%d",i); for(i=2;i<=n;i++) { printf(" %d",i); } printf("\n");

#include<stdio.h>
void print(int n)
{
    int j = 1;
    for(;j <= n; j++)
    {
        if(j == 1)
        {
        printf("%d*%d=%d",n,j,n*j);    
        }else{
            printf(" %d*%d=%d",n,j,n*j);
        }    
    }    
}
int main()
{
    int n;
    scanf("%d",&n);
    int i = 1;
    for(; i <= n;i++){
        // 这里也可以再来一个循环,这样就不用写函数了,写函数纯粹是为了看起来好看
        print(i);
        printf("\n");
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值