预告:(阶乘)+统计读取的单个字符+把我电脑给干关机了的题,还好在tmp里面找到(穷举法编程)+(双循环算法)+(最大公约数,最小公倍数)

news2024/11/24 14:57:09

在赶一篇作业出来 

 第一个:

题目:编程实现,求s=a+aa+aaa+aa⋯an个a的值,其中a是一个数字。例如当a为2,n为5时,计算,2+22+222+2222+22222的值。

#include<stdio.h>
int main()
{
	printf("请输入a和n\n");
	int a,n,k,t=0,s=0;
	scanf("%d%d", &a ,& n);
	for ( k=1; k<=n; k++)
	{
		t = t* 10 + a;
		s += t;
	}
	printf("结果为:%d", s);
	return 0;
}

输入测试数据:2 5 (其中a=2,n=5)

程序运行结果:24690

 解释:

这里定义了五个整数变量:

  • a 和 n 用于存储用户输入的两个整数。
  • k 用作for循环的计数器。
  • t 用于存储当前迭代的a的重复值(例如,当a=2k=3时,t=222)。
  • s 用于存储整个序列的和。
  1. 提示用户输入

c复制代码

printf("请输入a和n\n");

使用printf函数输出提示信息,告诉用户输入两个整数an

  1. 读取用户输入

c复制代码

scanf("%d%d", &a ,& n);

使用scanf函数读取用户输入的两个整数,并存储在变量an中。

  1. 计算序列的和

c复制代码

for ( k=1; k<=n; k++)
{
t = t* 10 + a;
s += t;
}

这是一个for循环,它执行n次。在每次迭代中:

  • t 被更新为t乘以10再加上a。这样,t的值就变成了a重复k次的结果。例如,当a=2k=3时,t的值会从2变为22,再变为222
  • s 加上当前的t值,从而累计序列的和

第二个:

题目:编程实现,输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数(以\n作为结束)。

输入测试数据:abcd !@# 123 EFG 890 *&^

程序运行结果:英文字符的个数:7,空格的个数:5,

              数字字符的个数:6,其它字符的个数:6

#include <stdio.h>
int main()
{
	int m = 0, n = 0, o = 0, p = 0;
	char c;
	printf("请输入字符串:");
  // 使用getchar直接读取字符串,不使用scanf (知识点) 
	while ((c = getchar()) != '\n')
	{
		if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')
			m += 1;
		else if (c >= '0' && c <= '9')
			n += 1;
		else if (c == ' ')
			o += 1;
		else 
			p += 1;
	}
	printf("英文字符的个数:%d\n", m);
	printf("数字字符的个数:%d\n", n);
	printf("空格的个数:%d\n", o);
	printf("其它字符的个数:%d\n", p);
	return 0;
}

AI的解释:

这里定义了四个整数变量mnop,用于分别统计英文字符、数字字符、空格和其他字符的数量。还定义了一个字符变量c,用于存储从输入中读取的单个字符。

提示用户输入

c复制代码

printf("请输入字符串:");

使用printf函数输出提示信息,告诉用户输入一个字符串。

读取字符并统计

while ((c = getchar()) != '\n')
{
...
}

这是一个while循环,使用getchar函数逐个读取用户输入的字符,直到遇到换行符\n为止。

在循环内部,程序使用if-else if-else结构来判断字符的类型,并相应地增加计数器的值。

  • 如果字符是英文字符(大写或小写),m增加1。
  • 如果字符是数字字符,n增加1。
  • 如果字符是空格,o增加1。
  • 对于其他类型的字符,p增加1。
  • 输出结果

c复制代码

printf("英文字符的个数:%d\n", m);
printf("数字字符的个数:%d\n", n);
printf("空格的个数:%d\n", o);
printf("其它字符的个数:%d\n", p);

 第三个:(这个还是得再看看)双循环

题目:编程实现,利用双循环编程,输出下列所示的图形。

代码如下:

#include <stdio.h>  
int main() {
    int i, j;
    int m = 6; // 根据图形确定星号的最大数量  

    // 上半部分:星号数量逐渐增加  
    for (i = 1; i <= m; i++) {
        // 打印空格  
        for (j = 1; j <= m - i; j++) {
            printf("  ");
        }
        // 打印星号  
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n"); // 换行  
    }
    // 下半部分:星号数量逐渐减少(排除中间的星号最多的那一行)  
    for (i = m - 1; i > 0; i--) {
        // 打印空格  
        for (j = 1; j <= m - i; j++) {
            printf("  ");
        }
        // 打印星号  
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n"); // 换行  
    }
    return 0;

下面那部分,重新看一下有不一样的收获:(运行下面有解释。)

运行结果:(520的尺寸,保准喜欢)

变量定义

c复制代码

int i, j;
int m = 6; // 根据图形确定星号的最大数量

这里定义了两个循环变量ij,以及一个常量m,用于表示等腰三角形每一行星号的最大数量。

打印等腰三角形的上半部分

c复制代码

for (i = 1; i <= m; i++) {

外层循环控制行数,从1到m

c复制代码

for (j = 1; j <= m - i; j++) {
printf(" ");
}

内层循环用于打印每一行前面的空格。随着行数i的增加,空格的数量逐渐减少,从而实现等腰三角形的形状。

c复制代码

for (j = 1; j <= i; j++) {
printf("*");
}

另一个内层循环用于打印星号。随着行数i的增加,星号的数量逐渐增加。

c复制代码

printf("\n"); // 换行

每一行星号打印完后,换行以开始下一行的打印。

打印等腰三角形的下半部分(排除中间行)

c复制代码

for (i = m - 1; i > 0; i--) {

外层循环控制行数,从m-1递减到1(不包括0,因为中间那一行已经打印过了)。

接下来的内层循环和打印逻辑与上半部分类似,只是方向相反:随着行数i的减少,空格的数量逐渐增加,星号的数量逐渐减少。

 第四个:

这个直接把我电脑给干关机了:虽然我问C语言老师说找不到,但是我从历史文件头给他扒出来了

开开机就成这种样子。哈哈哈哈哈:。有点扯淡,所以我给他设了250的尺寸

但是还是给你们发一下题目,哈哈哈哈

题目:用一张一元票换1分、2分和5分的硬币30枚(至少各一枚),问有哪几种换法(各几枚)。(提示:本题用穷举法编程)。

程序运行结果:

2  14  14

5  10  15

8  6   16

11 2   17

这个代码如下:

#include<stdio.h>
int main()
{
	int i, j, k;
	int n=0 ;
		for (i = 1; i <= 27; i++)
		{
			for (j = 1; j <= 30-i; j++)
			{
				k = 30-i-j;
				if (i + (j * 2) + (k * 5) == 100 && (i * j * k) != 0)
				{
					printf("%d   %d  %d \n ", i, j, k);
					n++;
				}

			}	
		}	
		printf("共%d种配法",n);
		return 0;
}

主要目的是寻找一组三元整数组合(i, j, k),这组数满足以下两个条件:

  1. i + 2j + 5k = 100
  2. i * j * k ≠ 0

外层循环

c复制代码

for (i = 1; i <= 27; i++)

i的值从1遍历到27。这是因为考虑到i + 2j + 5k = 100这个等式,如果i的值太大,那么jk的值将可能为负或零,这不符合题目的要求。

内层循环

c复制代码

for (j = 1; j <= 30-i; j++)

对于每一个i的值,j的值从1遍历到30-i。这是因为i + 2j的最大值不能超过100,所以j的最大值不能超过50-i,但考虑到k的存在,这里取了30-i作为上限。

计算k的值

c复制代码

k = 30-i-j;

根据i + 2j + 5k = 100这个等式,我们可以解出k的值。

条件判断

c复制代码

if (i + (j * 2) + (k * 5) == 100 && (i * j * k) != 0)

判断当前(i, j, k)的组合是否满足i + 2j + 5k = 100并且i * j * k ≠ 0

打印和计数

c复制代码

printf("%d %d %d \n", i, j, k);
n++;

如果当前组合满足条件,则打印该组合,并增加计数器n的值。

输出总的组合数

c复制代码

printf("共%d种配法", n);

在所有可能的组合遍历完之后,输出满足条件的组合的总数。

第5个:就最大公约数,最小公倍数

最后一个了,能看尽量看下去,哈哈哈

题目:编写程序:输入两个正整数,求其最大公约数和最小公倍数。

输入测试数据:12 8

程序运行结果:最大公约数为4,最小公倍数为24

程序如下 

#include <stdio.h>  
int main()
{
	int a, b ,i;
	scanf("%d%d", &a, &b);
	int min = (a < b) ? a : b;
	for  (i= min; i >0; i--)
	{
		if (a % i == 0 && b % i == 0)
		break;
	}
	printf("最大公约数是:%d", i);
	int m;
	m = (a * b) / (i); // 查到的公式,简洁快捷就用它了
		printf("最小公倍数是:%d", m);
}

也可以看一下解释 

变量定义

c复制代码

int a, b, i;

这里定义了三个整数变量abi,分别用于存储用户输入的两个整数以及用于循环和计算的临时变量。

读取用户输入

c复制代码

scanf("%d%d", &a, &b);

这一行使用scanf函数从标准输入读取两个整数,并存储在变量ab中。

计算最小数

c复制代码

int min = (a < b) ? a : b;

这里使用三元运算符计算ab中的较小值,并将其存储在变量min中。这个较小值将作为循环的起始值,用于寻找两个数的最大公约数。

寻找最大公约数

c复制代码

for (i = min; i > 0; i--)
{
if (a % i == 0 && b % i == 0)
break;
}

这个循环从min开始递减,检查每个数是否同时是ab的约数。如果是,循环将终止,此时i的值就是ab的最大公约数。

打印最大公约数

c复制代码

printf("最大公约数是:%d", i);

使用printf函数输出计算得到的最大公约数。

计算最小公倍数

c复制代码

int m;
m = (a * b) / i;

最小公倍数(LCM)可以通过两个数的乘积除以它们的最大公约数来计算。这里,m被初始化为ab的乘积除以i(即最大公约数)的结果。

 还有其他好几种方法可可解决,下面列一下;AI助力

除了上述方法外,还有其他方法可以计算两个数的最小公倍数(LCM)。以下是一些替代方法:

方法一:直接使用公式

最小公倍数(LCM)和最大公约数(GCD)之间有一个简单的数学关系,可以直接用公式计算:

c复制代码

LCM(a, b) = (a * b) / GCD(a, b)

其中,GCD(a, b) 表示 a 和 b 的最大公约数。因此,你可以先计算 GCD,然后用这个公式得到 LCM

方法二:质因数分解

将两个数分别进行质因数分解,然后找出所有质因数的最高次幂,将它们相乘得到最小公倍数。

例如,对于 a = 12 和 b = 18

  • 12 = 2^2 * 3
  • 18 = 2 * 3^2

最小公倍数 LCM(12, 18) = 2^2 * 3^2 = 36

方法三:逐个倍数查找

这种方法效率较低,但对于较小的数或者教学目的仍然有效。你可以从较大的数开始,逐个检查它是否是两个数的倍数,直到找到为止。

c复制代码

int lcm(int a, int b) {
int max = (a > b) ? a : b;
while (1) {
if (max % a == 0 && max % b == 0) {
return max;
}
max++;
}
}

这个函数会一直增加 max 的值,直到找到一个数能同时被 a 和 b 整除。虽然这种方法可行,但它不是最高效的,特别是当 a 和 b 很大时。

方法四:使用欧几里得算法和扩展欧几里得算法

欧几里得算法(辗转相除法)用于计算最大公约数,而扩展欧几里得算法可以用来同时找到最大公约数和对应的贝祖等式系数,进而可以通过这些系数计算最小公倍数。这种方法在数学上很优美,但实现起来相对复杂一些。

在实际编程中,推荐使用方法一,因为它既简单又高效。如果你需要处理大数或者对性能有较高要求,可以考虑使用专门的数学库或工具来计算最大公约数和最小公倍数。

走了走了,上课去了 待会就是c语言课。

祝大家好运!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…

物联网SaaS平台

在信息化、智能化浪潮席卷全球的今天&#xff0c;物联网SaaS平台作为推动工业数字化转型的重要工具&#xff0c;正日益受到广泛关注。那么&#xff0c;物联网SaaS平台究竟是什么&#xff1f;HiWoo Cloud作为物联网SaaS平台又有哪些独特优势&#xff1f;更重要的是&#xff0c;它…

Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结

一、前言 记录时间 [2024-4-7] 前置文章&#xff1a; Docker学习笔记&#xff08;一&#xff09;&#xff1a;入门篇&#xff0c;Docker概述、基本组成等&#xff0c;对Docker有一个初步的认识 Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#…

IDEA2023连接服务器docker并部署ruoyi-cloud-plus项目

文章目录 TCP 方式连接docker1. 服务器docker配置修改查看虚拟机中Docker配置文件位置修改配置文件重启docker服务关闭防火墙 2. idea安装docker插件3. idea连接docker服务 部署ruoyi-cloud-plus项目1. 项目环境说明2. 安装Centos73. 安装docker4. idea配置服务器SSH连接5. ide…

SHAP安装问题

一、安装 pip install shap -i https://pypi.tuna.tsinghua.edu.cn/simple 二、遇到问题 1、提示报错如下&#xff1a; ModuleNotFoundError: No module named numba.core 安装numba&#xff1a; pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple 提示已经…

【go从入门到精通】作用域,包详解

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

基于React封装Handsontable并兼容antd

背景 其实Handsontable官方也提供了React的版本&#xff0c;但是官方的版本再编辑和渲染的时候并不能够很好的嵌入第三方的组件库。这就导致了&#xff0c;使用了Handsontable就没有办和普通的react项目一样轻松引用其他第三方组件。因此对其react的版本进行了二次的封装&#…

MySQL之sql性能分析

sql执行频率 MySQL客户端连接成功后&#xff0c;通过show[session|global]status命令可以提供服务器状态信息。通过如下指令&#xff0c;可以查看当前数据库的所有INSERT、DELETE、UPDATE、SELECT的访问频次。 慢日志查询 慢查询日志记录了所有执行时间超过指定参数(longquer…

石子合并(区间dp)-java

石子合并问题是经典的区间dp问题&#xff0c;我们需要枚举中间端点k的情况从而来推出dp数组的值。 文章目录 前言 一、石子合并问题 二、算法思路 1.问题思路 2.状态递推公式 二、代码如下 代码如下&#xff08;示例&#xff09;&#xff1a; 2.读入数据 3.代码运行结果如下&am…

CY7.5-COOH荧光属性Cyanine7.5花菁染料

CY7.5-COOH&#xff0c;作为一种Cyanine 7.5花菁染料&#xff0c;在荧光属性上表现出色。其独特的化学结构赋予了它荧光性质&#xff0c;使其在生物标记、荧光成像和光学传感等领域具有诸多应用前景。 CY7.5-COOH具有出色的荧光量子产率&#xff0c;这意味着在激发光的照射下&…

电商市场价格治理的有效方法

监测价格的目的是为了治理价格&#xff0c;品牌在发展过程中必然要做价格管控&#xff0c;否则任由渠道自由生长&#xff0c;最后的结果多是低价不断&#xff0c;且渠道愈发难以管控&#xff0c;所以在电商链接并不多时&#xff0c;也应对渠道进行监测、治理&#xff0c;将渠道…

【学习路径】AI入门路线分享

近期整理飞书文档&#xff0c;一些权限被关掉了。看好多人在申请访问这个飞书文档&#xff0c;于是把它单独拿出来放在CSDN上&#xff0c;供大家参考~ 原视频地址&#xff1a;AI&#xff1a;从小白到入门&#xff0c;超详细人工智能成长路径分享_哔哩哔哩_bilibili 文章目录 1.…

69787987

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

ArcGIS Pro中的3D建模

在本文中,我讲述了我最近一直在探索的在 ArcGIS Pro 中设计 3D 模型的过程。 我的目标是尽可能避免与其他软件交互(即使是专门用于 3D 建模的软件),并利用 Pro 可以提供的可能性。 这个短暂的旅程分为三个不同的阶段:准备、组装和照明。 我们必须使用一些布局可能性以及一…

android平台下opencv的编译--包含扩展模块

由于项目需要使用安卓平台下opencv的扩展库&#xff0c;对于通用的opencv库&#xff0c; opencv官网提供了android的SDK 但未能提供扩展库&#xff0c;因此需要自己进行源码编译。本文记录android平台下opencv及其扩展库的交叉编译。 前提&#xff1a;主机已安装android-ndk交…

泰迪智能科技受邀参加花都区产教评技能生态链建设政策宣讲培训会

2024年4月8日&#xff0c;由广州市花都区人力资源和社会保障局主办的花都区产教评技能生态链建设政策宣讲培训会在广州市华风高级技工学校顺利举行。广东省人力资源和社会保障厅职业能力建设处鲍彬科长&#xff0c;广州市人力资源和社会保障局职业能力建设处肖飞扬科长&#xf…

volta(轻松切换管理Node.js版本)

Node.js版本管理 Volta提供了一个简单直观的命令行界面&#xff0c;可以轻松地安装、卸载、更新和切换Node.js版本。 Volta 既可以全局使用&#xff0c;也可以在项目级别使用&#xff0c;可以为每个项目单独设置node版本&#xff0c;nvm不行。 下载安装Volta 参考&#xff1a; …

JavaScript ECMAScript标准的与时俱进:从ES6至ES14的革新之路与关键技术特性剖析

ECMAScript&#xff08;通常缩写为ES&#xff09;是一种标准化的脚本语言规范&#xff0c;由ECMA International&#xff08;前身为European Computer Manufacturers Association&#xff0c;欧洲计算机制造商协会&#xff09;制定。自1997年发布首个版本以来&#xff0c;ECMAS…

JavaScript_注释数据类型

JavaScript_语法_注释&数据类型&#xff1a; 1.2注释&#xff1a; 1.单行注释&#xff1a;//注释内容 2.多行注释&#xff1a;/*注释内容*/ 1.3数据类型&#xff1a; 1.原始数据类型(基本数据类型)&#xff1a;&#xff08;只有这五种&#xff09; 1.number&#xff1a;数字…

网络安全知识知多少?

网络安全知识在当今数字化的世界中显得尤为重要。随着网络技术的不断发展和普及&#xff0c;网络安全问题也日益突出&#xff0c;对个人、组织乃至国家的安全都构成了严重威胁。因此&#xff0c;了解并掌握一些基本的网络安全知识显得尤为重要。 首先&#xff0c;我们需要明白网…