当前位置: 首页 > news >正文

考研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是一个三位阶乘合数,输入一个数,问共有多少个阶乘合数?(十万之内)

#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,如果是更大的数就需要先求出多少个位数然后再进行求?

        小数暴力法:

#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;
}

        大数算法:

#include <stdio.h>
//判断是否与2有关
int fun(int n){if(n%2==0) return 1; //能被2整数while(n){if(n%10 ==2) return 1; //包含2n/=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个字符串找到最长的那个并输出?

#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个

#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,依次输出鸡的数目和兔的数目,如果无解,则输出没有答案?

#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;
}

http://www.lryc.cn/news/116501.html

相关文章:

  • 用C语言实现定积分计算(包括无穷积分/可自定义精度)
  • 使用Presto、Trino数据库时提示“The datetime zone id ‘GMT+08:00‘ is not recognised”
  • C# BeginInvoke 加 EndInvoke实现异步操作
  • “华为杯”研究生数学建模竞赛2015年-【华为杯】B题:数据的多流形结构分析(续)
  • R语言APSIM模型高级应用及批量模拟
  • 【硬件设计】模拟电子基础三--集成运算放大电路
  • JavaWeb(11)——前端综合案例5(小黑记事本)
  • 在使用TensorFlow的时候内部报错:内部某个方法或属性不存在
  • dubbo之高可用
  • gitee代码扫描js代码,降低复杂度,减少if-else判断的处理方法
  • MySQL及SQL语句(3)
  • MySQL 查询语句大全
  • 【Axure高保真原型】账单列表和详情
  • 嵌入式面试题1
  • base64转二进制流,file文件
  • 各种查找算法的效率分析
  • 微报告下载!市场不确定性周期下的激光雷达前装赛道
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms
  • 并网逆变器学习笔记6---三电平SVPWM下的连续和不连续调制
  • TS协议之PES(ES数据包)
  • 银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
  • python爬虫3:requests库-案例1
  • 计算机网络 数据链路层 媒体接入控制
  • 面部表情识别(Pytorch):人脸检测模型+面部表情识别分类模型
  • 外卖点餐小程序开源源码——支持扫码点餐
  • 十分钟掌握使用 SolidJS 构建全栈 CRUD 应用程序
  • LabVIEW开发多材料摩擦电测量控制系统
  • 【Linux】网络基础1
  • HTML - Javascript - 原生的JS HTTP请求:实用主义的一篇文章
  • Intellij IDEA运行报Command line is too long的解决办法