考研C语言进阶题库——更新26-30题

目录

26.一个正整数,如果等于组成它的各个数字的阶数之和,该整数称为阶乘合数,例如145=1阶加四阶加五阶,则145是一个三位阶乘合数,输入一个数,问共有多少个阶乘合数?(十万之内)

27.与2相关的数.c假设是三位数最高999,如果是更大的数就需要先求出多少个位数然后再进行求?

小数暴力法:

大数算法:

28.输入5个字符串找到最长的那个并输出?

29.输入一个字符串输出由这个字符组成的等腰三角形底为5个,高为3个

30.已知鸡和兔的总数量为n,总腿数为m,输入n和m,依次输出鸡的数目和兔的数目,如果无解,则输出没有答案


26.一个正整数,如果等于组成它的各个数字的阶数之和,该整数称为阶乘合数,例如145=1阶加四阶加五阶,则145是一个三位阶乘合数,输入一个数,问共有多少个阶乘合数?(十万之内)

cpp 复制代码
#include <stdio.h>

int main() {
    //初始化
    int num, count = 0, temp, sum = 0, digit;
    scanf("%d", &num);
    int tempNum = num; // 保存初始的输入数字

    //求结果
    while (num > 0) {
        digit = num % 10;
        int result = 1;
        for (int i = 1; i <= digit; i++) {
            result *= i;
        }
        sum += result;
        num /= 10;
        count++;
    }

    //判断
    if (sum == tempNum) {
        printf("%d 是阶乘和数,分别由以下数字的阶乘之和构成:", tempNum);

        while (tempNum > 0) {
            printf("%d! ", tempNum % 10);
            tempNum /= 10;
        }
    } else {
        printf("%d 不是阶乘和数", tempNum);
    }

    return 0;
}

27.与2相关的数.c假设是三位数最高999,如果是更大的数就需要先求出多少个位数然后再进行求?

小数暴力法:

cpp 复制代码
#include <stdio.h>

int main(){
    //初始化
    int n,sum;
    scanf("%d",&n);
    for (int i = 1; i <= n; i++) {
        if(((i/100)!=2) && ((i/10%10)!=2) && ((i%10)!=2) && (i%2!=0)){
            sum=sum+i;
        }
    }
    printf("%d",sum);
    return 0;
}

大数算法:

cpp 复制代码
#include <stdio.h>
//判断是否与2有关
int fun(int n){
    if(n%2==0) return 1; //能被2整数

    while(n){
        if(n%10 ==2) return 1; //包含2
        n/=10;
    }
    return 0;
}

int main()
{
    int i,sum = 0,n;
    scanf("%d",&n);

    for (i=1;i<=n;i++){
        //if里面的值如果是0的话就是不成立!也就意味着if所关联的其它语句不会执行
        if(!fun(i)) //如果与2无关
        //if(fun(i)==0) //如果与2无关
            sum += i; //求和
    }
    printf("%d",sum);
    return 0;
}

28.输入5个字符串找到最长的那个并输出?

cpp 复制代码
#include <stdio.h>
#include <string.h>

int main() {
    char str[5][100], temp[100];
    int maxIndex = 0;

    for (int i = 0; i < 5; i++) {
        printf("请输入第 %d 个字符串:", i+1);
        gets(str[i]);

        str[i][strcspn(str[i], "\n")] = 0; // 去掉换行符

        if (strlen(str[i]) > strlen(str[maxIndex])) {
            maxIndex = i;
        }
    }
    puts(str[maxIndex]);
    //printf("最长的字符串是%s", str[maxIndex]);

    return 0;
}

//数据演示:
//E:\CODE\c\sdfhsui2.0\cmake-build-debug\28.exe
//请输入第 1 个字符串:sds
//请输入第 2 个字符串:sr
//请输入第 3 个字符串:sd
//请输入第 4 个字符串:s
//请输入第 5 个字符串:ssss
//ssss
//最长的字符串是ssss
//
//进程已结束,退出代码0

29.输入一个字符串输出由这个字符组成的等腰三角形底为5个,高为3个

cpp 复制代码
#include <stdio.h>

int main() {
    int i, j, k;
    char ch;

    printf("请输入一个字符:");
    scanf(" %c", &ch); // 注意这里加了一个空格,用于跳过换行符

    for (i = 1; i <= 3; i++) { // 控制行数
        for (j = 1; j <= 3 - i; j++) { // 控制每行前面的空格数
            printf("  ");
        }
        for (k = 1; k <= 2 * i - 1; k++) { // 控制每行字符数
            printf("%c ", ch);
        }
        printf("\n");
    }

    return 0;
}

30.已知鸡和兔的总数量为n,总腿数为m,输入n和m,依次输出鸡的数目和兔的数目,如果无解,则输出没有答案?

cpp 复制代码
#include <stdio.h>

int main(){
    //初始化
    int n,m,a,b;//n总头数,m总腿数,A小鸡,B小兔
    //这段代码使用了 scanf 函数在循环中读取输入,直到输入结束为止(即遇到文件结束符)。在每次循环中,
    //它从标准输入中读取两个整数并将它们存储在变量 n 和 m 中。这样的循环可以用来处理多组输入数据,直到输入结束。
    while(scanf("%d%d",&n,&m)!=EOF){
        if(n<0 || m<0){
            printf("输入错误!");
        } else{
            b=(m-n*2)/2;
            //a=(n*4-m)/2;
            a=(m-b*4)/2;
            if(a+b!=n || a<0 ||b<0){
                printf("没有答案!");
            } else{
                printf("a=%d,b=%d",a,b);
            }
        }
    }
    return 0;
}
相关推荐
染指111016 分钟前
6.第二阶段x64游戏实战-分析人物状态
开发语言·汇编·windows·游戏·游戏逆向·x64dbg·x64游戏
北冥有鱼被烹24 分钟前
【代码模板】C语言如何修改文件权限?读写执行权限对应值是多少?(chmod(“./a.out“, 0741);bit 2 1 0表示 读 写 执行)
c语言
forestsea43 分钟前
Java虚拟机面试题:内存管理(中)
java·开发语言
longlong int44 分钟前
【每日算法】Day 17-1:位图(Bitmap)——十亿级数据去重与快速检索的终极方案(C++实现)
开发语言·c++·算法
欧宸雅1 小时前
Perl语言的文件系统
开发语言·后端·golang
写代码的小王吧1 小时前
【安全】Java幂等性校验解决重复点击(6种实现方式)
java·linux·开发语言·安全·web安全·网络安全·音视频
淘源码d1 小时前
如何运用C#.NET快速开发一套掌上医院系统?
开发语言·c#·.net·源码·掌上医院
一个程序员(●—●)1 小时前
xLua环境控制+xLua的Lua调用C#的1
开发语言·unity·c#·lua
myloveasuka1 小时前
[Linux]进程与PCB的关系,进程的基本操作
linux·c语言·c++
Run_Teenage1 小时前
C语言 数据结构【双向链表】动态模拟实现
c语言·数据结构·链表