C语言100题练习打卡(2)

news2024/11/25 2:33:49

14,将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5

#include<stdio.h>
/*分析:
* 1,如果这话质数恰巧等于(小于的时候,继续执行循环)n,
则说明分解质因数的过程已经结束,另外 打印出即可
2,但n能被k整除,则应该打印出k的之,并用n除以k的商,作为新的正整数n,
重新执行第二步
3,如果n不能被k整除,则用k+1作为k的值,重复执行第一步
*/
int main()
{
	int n, i;
	printf("请输入整数:\n");
	scanf_s("%d", &n);
	printf("%d=", n);

	for (i = 2; i <= n; i++)
	{
		while (n % i == 0)
		{
			printf("%d", i);
			n /= i;
			if (n != 1)
				printf("*");
		}
	}
	printf("\n");
	return 0;
}

15 学生成绩评价

 利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A来表示

60~89分之间的用B来表示,60分以下的用C来表示

方法一:

#include<stdio.h>
int main()
{
	int score;
	char grade;

	printf("请输入分数:\n");
	scanf_s("%d", &score);

	if (score >= 90)
	{
		grade = 'A';
	}
	else if(score>60)
	{
		grade = 'B';
	}
	else
	{
		grade = 'C';
	}
	printf("%c", grade);
	return 0;
}

方法二:

#include<stdio.h>
int main()
{
	int score;
	char grade;

	printf("请输入分数:\n");
	scanf_s("%d", &score);

	grade = ((score >= 90) ? 'A' : (score >= 60) ? 'B' : 'C');
	printf("%c", grade);
	return 0;
}

16 求最大公约数或最小公倍数

#include<stdio.h>
/*分析:
1,最小公倍数=输入的两个数之积除以他们的最大公倍数
2,求最大公约数用辗转相除法
证明:设c是a和b的最大公约数,记为c=gcb(a,b),a>=b,
令r=a % b
设a=kc,b=jc,则k,j互素,否则c不是最大公约数
据上,r=a-mb=kc-mjc=(k-mj)c,可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,
由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,a mod b),得证
2)算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 
第二步:互换:置 a<-b,b<-r,并返回第一步。
*/
int main()
{
	int a,b,t,r,n;

	printf("请输入两个数字:\n");
	scanf_s("%d %d", &a, &b);

	if (a < b)
	{
		t = b;
		b = a;
		a = t;
	}

	r = a % b; 
	n = a * b;

	while (r != 0)
	{
		a = b;
		b = r;
		r = a % b;
	}
	printf("这两个数的最大公约数是%d,最小公倍数是%d\n", b, n / b);

	return 0;
}

17,统计字符个数

输入一行字符,分别统计其中的英文字母,空格,数字和其他字符的个数

利用while语句 

#include<stdio.h>
int main()
{
	char c;
	int letters = 0,spaces = 0,digitals = 0,others = 0;
	printf("请输入一段字符:\n");
	while ((c = getchar()) != '\n')
	{
		if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
		{
			letters++;
		}
		else if (c >= '0' && c <= '9')
		{
			digitals++;
		}
		else if (c == ' ')
		{
			spaces++;
		}
		else
		{
			others++;
		}
	}
	printf("字母=%d,数字=%d,空格=%d,其他=%d\n", letters, digitals, spaces, others);
	return 0;
}

17 多位数求和

求s=a+aa+aaa+aaaa+aaaaa的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有五个数和相加)

#include<stdio.h>
int main()
{
	int s = 0,a, n, t;
	printf("请输入 a 和n的值:\n");
	scanf_s("%d %d", &a, &n);
	
	t = a;

	while (n > 0)
	{
		s += t;
		a = a * 10;
		t += a;
		n--;
	}
	printf("a+aa+aaa+aaaa+aaaaa=%d\n", s);
	return 0;
}

 

18 计算球反弹的高度

题目:一球从100米高度自由落下,每次落地后反跳弹回高度的一半;

再落下,求它第十次落地时共经过多少米?

第十次反弹多高?

#include<stdio.h>
int main()
{
	double x = 100;//小球初始高度
	double S = 100;//小球第一次掉落路程
	
	for (int i = 0; i < 10; i++)
	{
		x = x / 2;//每次反弹的高度
		S += 2*x;//每次反弹路程是掉落的两倍+初始时候的100米
	}
	printf("小球在第十次反弹的高度:%lf\n",x);
	printf("小球十次落地,共经历%lf米\n", S);
	return 0;
}

19 猴子摘桃问题

猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少 

方法一:

#include<stdio.h>

/*程序分析:
题目:采取逆向思维的方法,从后往前推:
(1)设x1为前一天桃子数,x2为第二天桃子树:
x2=x1/2-1;x1=(x2+1)*2
x2=x1/2-1;x2=(x2+1)*2

(2)从第十天可以类推到第一天,循环*/
int main()
{
	int x=1;//设最后一天只剩1个桃子

	for (int i = 1; i < 10; i++)//从第九天开始倒数,倒数到第一天
	{
		x = (x + 1) * 2;
	}
	printf("%d", x);
	return 0;
}

方法二:

int main()
{
	int day, x1 = 0, x2;
	day = 9;
	x2 = 1;

	while (day > 0)
	{
		x1 = (x2 + 1) * 2;
		x2 = x1;
		day--;
	}
	printf("桃子总数为:%d", x2);
	return 0;
}

19 打印菱形图案

方法1:

#include<stdio.h>
//前四行一个规律,后三行一个规律
int main()
{
	int i, j, k;

	for (int i = 0; i <= 3; i++)//表示打印前四行
	{
		for (j = 0; j <= 2 - i; j++)
		{
			printf(" ");
		}
		for (k = 0; k <= 2 * i; k++)
		{
			printf("*");
		}
		printf("\n");
	}

	for (int i = 0; i <= 2; i++)
	{
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		for (k = 0; k <= 4-2 * i; k++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

方法二:

#include<stdio.h>
//前四行一个规律,后三行一个规律
int main()
{
	int i, j, n=3;

	for (int i = 1; i <= n; i++)//表示打印前四行
	{
		for (j = n - i; j >=1; j--)
		{
			printf(" ");
		}
		for (j = 1; j <= 2 * i-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}

	for (int i = n - 1; i >=1; i--)
	{
		for (j = n - i; j >= 1; j--)
		{
			printf(" ");
		}
		for (j = 1; j <= 2 * i - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

 20 求分数序列之和

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13....求出这个数列的前20项之和

#include<stdio.h>
int main()
{
	int i, t;
	float sum = 0;
	float a = 2, b=1;//设a为分子,b为分母

	for (int i = 1; i <= 20; i++)
	{
		sum = sum + a / b;
		t = a;//将分子赋值给t
		a = a + b;//将新的分母变成下一个数的分子
		b = t;//将新的分子变成下一个数的分母
	}

	printf("sum = %9.6f\n", sum);
	return 0;
}

 21 求1~20阶乘的和

题目:求1!+2!+3!....+20!的和

方法一:

#include<stdio.h>
int main()
{
	int i;
	long double sum=0, mix=1;

	for (i = 1; i <= 20; i++)
	{
		mix = mix * i;
		sum = sum + mix;
	}
	printf("%lf\n", sum);
	return 0;
}

21 用递归的方法求5!

#include<stdio.h>
int Fact(int n)
{
	if (n == 0)
		return 1;
	else
		return n * Fact(n - 1);
}


int main()
{
	int n = 5;
	long double ret = Fact(n);
	printf("%lf", ret);
	return 0;
}

 22 利用递归将字符反转

利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来

首先我们先正序打印:

#include<stdio.h>

void Print(int n)
{
	if (n > 9)
	{
		Print(n / 10);
	}
	printf("%d ", n % 10);
}

int main()
{
	int m = 0;
	scanf_s("%d", &m);
	Print(m);
	return 0;
}

然后我们来看看反转打印:

#include <stdio.h>

// 定义递归函数用于反向输出字符串
void reversePrint(const char* str) {
    // 检查字符串是否为空
    if (*str != '\0') {
        // 先递归调用函数处理字符串的剩余部分
        reversePrint(str + 1);
        // 然后输出当前字符
        printf("%c", *str);
    }
}

int main() {
    const char* myString = "Hello, World!";
    printf("Original String: %s\n", myString);
    printf("Reversed String: ");
    reversePrint(myString);
    printf("\n");
    return 0;
}

23 用递归函数计算第五个人的年龄

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

#include<stdio.h>
int age(int n)
{
	int c;
	if (n == 1)
		c = 10;
	else
		c = age(n - 1) + 2;
	return c;
}

int main()
{
	printf("%d\n", age(5));
	return 0;
}

24 求整数的位数和反转

给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字,

#include<stdio.h>
int main()
{
	long a, b, c, d, e, x;

	printf("请输入五位数:\n");
	scanf_s("%ld", &x);

	a = x / 10000;//万位
	b = x % 10000 / 1000;//千位
	c = x % 1000 / 100;//百位
	d = x % 100 / 10;//十位
	e = x % 10;//个位

	if (a != 0)
	{
		printf("逆序打印5位数为:%ld %ld %ld %ld %ld \n", e, d, c, b, a);
	}
	else if (b != 0)
	{
		printf("逆序打印4位数为:%ld %ld %ld %ld\n", e, d, c, b);
	}
	else if (c != 0)
	{
		printf("逆序打印3位数为:%ld %ld %ld \n", e, d, c);
	}
	else if (d != 0)
	{
		printf("逆序打印2位数为:%ld %ld \n", e, d);
	}
	else if (e != 0)
	{
		printf("逆序打印1位数为:%ld  \n", e);
	}
	return 0;
}

 

 25 回文数

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#include<stdio.h>
int main()
{
	long int a, b, c, d, e, x;

	printf("请输入五位数:\n");
	scanf_s("%ld", &x);

	a = x / 10000;//万位
	b = x % 10000 / 1000;//千位
	c = x % 1000 / 100;//百位
	d = x % 100 / 10;//十位
	e = x % 10;//个位

	if (a == e&& b == d)
	{
			printf("该数是回文数!");
	}
	else
	{
		printf("该数不是回文数!");
	}

	return 0;
}

 

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

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

相关文章

案例分析-redis

案例需求&#xff1a;在7002这个slave节点执行手动故障转移&#xff0c;重新夺回master地位 步骤如下&#xff1a; 1&#xff09;利用redis-cli连接7002这个节点 2&#xff09;执行cluster failover命令 如图&#xff1a; 效果&#xff1a; 4.5.RedisTemplate访问分片集群 …

Gitea是一个开源、轻量级的自托管Git解决方案

Gitea介绍 Gitea是一个由Go语言编写的、轻量级的、自托管的Git解决方案&#xff0c;类似于GitHub、GitLab等平台。它是用Go语言编写的开源软件&#xff0c;提供了Git版本控制系统的基本功能&#xff0c;包括代码托管、问题跟踪、代码审查、Wiki等。Gitea的设计目标是简单易用、…

ssm 体检预约管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 体检预约管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c; 系统主要采用B/S…

深度学习 Lecture 7 迁移学习、精确率、召回率和F1评分

一、迁移学习&#xff08;Transfer learning) 用来自不同任务的数据来帮助我解决当前任务。 场景&#xff1a;比如现在我想要识别从0到9度手写数字&#xff0c;但是我没有那么多手写数字的带标签数据。我可以找到一个很大的数据集&#xff0c;比如有一百万张图片的猫、狗、汽…

SD-WAN企业组网:多样化的应用场景

随着企业网络环境的快速发展&#xff0c;SD-WAN技术正成为实现站点间网络互通的关键所在。它不仅支持企业站点对因特网、SaaS云应用和公有云等多种业务的高效访问&#xff0c;更能满足多样化的业务需求。深入探讨SD-WAN的组网应用场景&#xff0c;我们能够发现其广泛的适用性和…

Day 14 网络协议

常见网络设备&#xff1a;交换机 路由器 中继器 多协议网关&#xff08;路由器的前身&#xff09; 交换机&#xff1a;用于连接统一网络的设备&#xff0c;实现内网设备通信。 从广义上分为&#xff1a;局域网交换机&#xff0c;广域网交换机 从网络构成分为&#xff1a;接…

UbuntuServer22.04安装docker

通过ubuntuserver安装docker是搭建开发环境最便捷的方式之一。下面介绍一下再ubuntu22.04上如何安装docker。相关内容参考官网链接&#xff1a;Install Docker Engine on Ubuntu 根据官网推荐&#xff0c;利用apt命令的方式安装&#xff0c;首先需要设置docker仓库&#xff0c…

【个人博客搭建】(5)Sqlsugar实体创建数据库数据

1、在appsettings.json文件中配置SqlServer数据库连接字符串信息。&#xff08;后续考虑添加MySQL数据库等类型&#xff09; "DBS": [/*对应下边的 DBTypeMySql 0,SqlServer 1,*/{"ConnId": "plateau.poetize.2024","DBType": 1,&qu…

分类损失函数与评估指标

目录 1 评估指标 1.1 准确率 1.2 精确率 1.3 召回率 1.4 F1 score 1.5 ROC曲线 1.6 AUC 1.7 PRC曲线的优势 2 损失函数 1. 负对数似然损失 2. 交叉熵损失 3. 指数损失 3 分类问题为什么用交叉熵损失不用 MSE 损失 1 评估指标 混淆矩阵 TP(True Positive) ---- 正…

锂电池充放电管理-单片机通用

锂电池充放电管理-单片机通用 一、锂电池充放电检测的原理二、power.c的实现三、power.h的实现四、锂电池检测和充电电路 一、锂电池充放电检测的原理 ①两节锂电池通过电阻分压检测ADC&#xff0c;再根据电压划分电量等级&#xff1b;②充电使用的是锂电池充电IC方案&#xf…

区块链与数字身份:Web3的身份验证革命

随着数字化时代的发展&#xff0c;个人身份认证在日常生活和商业活动中变得越来越重要。然而&#xff0c;传统的身份认证方式存在着许多问题&#xff0c;如安全性不足、数据泄露、信息篡改等。而区块链技术的出现为数字身份认证带来了全新的解决方案。本文将深入探讨区块链与数…

无人零售行业展望:智能化与便利性引领未来

无人零售行业展望&#xff1a;智能化与便利性引领未来 无人零售&#xff0c;这一依靠智能化技术如人工智能、物联网、和大数据的零售模式&#xff0c;正逐步成为全球零售行业的新趋势。该模式允许消费者在没有店员的情况下自助完成购物&#xff0c;提供了24小时服务&#xff0…

【Web】陇原战“疫“2021网络安全大赛 题解

目录 CheckIN eaaasyphp EasyJaba CheckIN 拿到附件&#xff0c;贴出关键代码 func getController(c *gin.Context) {cmd : exec.Command("/bin/wget", c.QueryArray("argv")[1:]...)err : cmd.Run()if err ! nil {fmt.Println("error: ", …

Web3.0与AI的交融:开启智能互联网新时代

目前有140 多个 Web3 AI 概念项目&#xff0c;覆盖了基础设施、数据、预测市场、计算与算力、教育、DeFi & 跨链、安全、NFT & 游戏 & 元宇宙、搜索引擎、社交 & 创作者经济、AI 聊天机器人、DID & 消息传递、治理、医疗、交易机器人等诸多方向。持续关注…

SQLite数据库中JSON 函数和运算符

返回&#xff1a;SQLite—系列文章目录 上一篇:维护SQLite的私有分支&#xff08;二十六&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 ​ 1. 概述 默认情况下&#xff0c;SQLite 支持 29 个函数和 2 个运算符 处理 JSON 值。还有两个表值函数可用于分解 JSON…

二级综合医院云HIS系统源码,B/S架构,采用JAVA编程,集成相关医保接口

二级医院云HIS系统源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一系列常规功能&#xff0c;还能与公卫…

中立分析腾讯云故障相关的事件

最近腾讯云的故障&#xff0c;让一堆云计算爱好者兴奋地远看指点江山、近看沐猴而冠。我比这群爱好者们更了解云计算&#xff0c;但是我尊重我的读者&#xff0c;你们从我这里看到的科普信息&#xff0c;不仅仅只有情绪价值。 在信息爆炸的时代&#xff0c;大家关注和信任某个媒…

OSPF:MGRE实验

一、拓扑图 二、实验内容 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c;R1为中心站点 3&#xff0c;所有私有网段可以互相通讯&#xff0c;私有网段使用OSPF完成 …

js-pytorch:开启前端+AI新世界

嗨&#xff0c; 大家好&#xff0c; 我是 徐小夕。最近在 github 上发现一款非常有意思的框架—— js-pytorch。它可以让前端轻松使用 javascript 来运行深度学习框架。作为一名资深前端技术玩家&#xff0c; 今天就和大家分享一下这款框架。 往期精彩 Nocode/Doc&#xff0c;可…

uni-app中页面生命周期与vue生命周期的执行顺序对比

应用生命周期 uni-app 支持如下应用生命周期函数&#xff1a; 函数名说明平台兼容onLaunch当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;&#xff0c;参数为应用启动参数&#xff0c;同 uni.getLaunchOptionsSync 的返回值onShow当 uni-app 启动&#x…