首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言刷题合集】(二)——分支循环语句

【C语言刷题合集】(二)——分支循环语句

作者头像
雾忱星
发布2025-12-23 13:07:30
发布2025-12-23 13:07:30
1640
举报
文章被收录于专栏:C++C++

前言:刷题博客主要记录在学习编程语言时,练习的一系列题目,比较适合C语言的初学者用来巩固提高编程能力,其余可见专栏。

1. 输出乘法口诀表

解题思路——

--需求分析:

---需要将乘法口诀表输出,格式如下:

1*1=1 1*2=2 2*2=4 ...... 1*9=9 2*9=18............9*9=81

--实现方案:

  • 变量设置

--定义两个变量a、b作乘数;定义变量c接收a*b;

  • 主体结构

--根据需求形式,在每行一个变量不变,另一个变量++——嵌套循环结构实现;

--外层循环:变量a控制行数(1~9);

--内层循环:变量b控制每行的列数;


代码语言:javascript
复制
#include <stdio.h>
int main()
{
	//定义两个乘数变量
	int a = 0;
	int b = 0;

	//定义乘积变量

	//外层循环——变量充当第二个乘数,输出完一行再++
	for (a = 1; a < 10; a++)
	{
		//内层循环——变量充当第一个乘数,随着运行++
		for (b = 1; b <= a; b++)
		{
			int c = a * b;
			printf("%d*%d=%-2d  ", b, a, c);//优化:-2代表左对齐,强制宽度为2,显得齐
		}

		//每打印完一行,换行,美观
		printf("\n");
	}
	return 0;
}

2. 求最大值

解题思路——


--需求分析

--要求:在输入的十个整数中找到最大值;


--实现方案

  • 变量设置

--定义变量num接收屏幕输入、定义变量max接收最大值;

  • 主体结构

--scanf,在屏幕上输入10个数,并先只读取第一个整数存在num中;初始化max,将num赋给max,用作后面的比较;

--实现主体需要循环来输入剩余9个数,scanf每读取一个整数,与max比较,大则更新,反之继续循环读取;


代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int num, max;//定义整数、最大值变量

	printf("请输入10个数值:\n");
	scanf("%d", &num);//读取屏幕输入的第一个整数

	//初始化最大值变量,默认输入的第一个数为最大值
	max = num;

	//使用循环,输入剩余9个数
	for (int i = 1; i < 10; i++)
	{
		scanf("%d", &num);//输入9个数值

		//用if语句来比较大小
		if (num > max)
		{
			max = num;//如果有后续输入的数值比num大,则替换成为max
		}

	}
	printf("最大值是:%d\n", max);

	return 0;
}

3. 交替分数求和

解题思路——


--需求分析

--要求:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果


-- 实现方案

  • 变量设置

--定义变量int a,充当分母;定义变量double term作分数(1.0/a);定义变量double sum求和;

  • 主体结构

--循环节构:将变量a生成1~100的数值作分母;

--循环中嵌套选择:用于分数符号的改变;

--根据数据规律得,负数都是分母为2的倍数的分数;参考之前的实现1~100中3的倍数求和,选择出2的倍数的分母;


代码语言:javascript
复制
int main()
{
	int a = 0;//定义变量充当分母
	double sum = 0.0;//累加和
	double term = 0.0;//分数变量

	//主体实现循环结构
	for (a = 1; a <= 100; a++)//完成分母的增长
	{

		term = 1.0 / a;
		//根据要求得知,分母是2的倍数的分数为负数
		//由选择语句实现符号变换
		if (a % 2 == 0)
		{
			term = -term;
		}

		sum += term;//求和
	}

	printf("和是:%f", sum);
	return 0;
}

4. 数9的个数

解题思路——


--需求分析

--要求:编写程序数一下 1到 100 的所有整数中出现多少个数字9;


--实现方案

  • 变量设置

--根据需求目前定义变量num用来存储数值输、定义变量sum求和;

--根据主体结构,每次判断符合后,定义变量count进行计数;

  • 主体结构

--如何判断?:首先要确定怎么判断是"9",可以沿用上一题的思路,但只是判断每个位数的数值"==9";

--判断方法:对于个位数,用选择语句直接判断==9;对于两位数,采取取余/取整再进行判断;

--结果预测:遍历1~100后,应输出19;


代码语言:javascript
复制
int main()
{
	int num = 0;//定义变量用于生成1~100数值
	int count = 0;//记录9出现的次数

	//循环生成数值
	for (num = 1; num <= 100; num++)
	{
		if (num == 9)
		{
			count++;
		}
		else if ((num % 10) == 9)
		{
			count++;
		}
		else if((num / 10) == 9)
		{
			count++;
		}
	}

	printf("9的个数是:%d", count);
	return 0;
}
输出:19//与预测相符

5. 求两个数的最大公约数

解题思路——


--需求分析

  • 变量设置

--定义两个变量mun1、num2:接收键盘输入;

--定义变量gcd(Greatest Common Divisor)接收最大公约数 ;


  • 主体结构

--循环结构:定义变量a,在循环中生成1~num1(较小值)数值,循环条件--a<较小值(节约遍历时间);循环嵌套选择——选择a,num1、num2同时满足 %a == 0;

--键盘输入:根据上面需要,输入时先较小值再较大值;


代码语言:javascript
复制
int main()
{
	//定义变量接收输入
	int num1 = 0;//小
	int num2 = 0;//大

	//屏幕输入两个整数
	printf("请按从小到大的顺序输入两个整数:");
	//屏幕输入
	scanf("%d%d", &num1, &num2);

	int a = 0;//定义变量,进行除数遍历
	//循环生成整数
	int gcd = 1;//存储被除数的约数最大值——Greatest Common Divisor (GCD)

	//求num1的约数
	for (a = 2; a <= num1; a++)//界限取小的数,
	{
        //a=2,因为gcd提前初始化1;
		//判断num1的约数是否num2适配
		if (((num1 % a) == 0) && ((num2 % a) == 0))
		{
			gcd = a;//存储最大公约数
		}
	}

	printf("二者最大公约数是:%d", gcd);
	return 0;
}
  • 优化建议

--上面的代码确实可行,但要讲究效率;循环中从2到较小值遍历费时,可以直接反向遍历寻找GCD;

--对于键盘输入端,限制多,可以使用前面学的三目操作符(条件操作符)来简化操作;

--exp1 ? exp2 : exp3;


代码语言:javascript
复制
int main()
{

	//定义变量接收输入
	int num1 = 0;
	int num2 = 0;
	//存储被除数的约数最大值——Greatest Common Divisor (GCD)
	int gcd = 1;
	printf("请输入两个整数:");

	scanf("%d%d", &num1, &num2);

	//判断较小值
	int min = (num1 < num2) ? num1 : num2;
	//反向遍历
	for (int a = min; a >= 1; a--)
	{
		if (((num1 % a) == 0) && ((num2 % a) == 0))
		{
			gcd = a;//存储最大公约数
			break;//找到符合的最大值后,跳出循环
		}
	}
	printf("二者最大公约数是:%d", gcd);
	return 0;
}

--这提醒我们,就算代码已经实现了功能,也要继续探索是否能够再次简化,节约时间等。

结语:本篇内容收录在《C语言刷题集》中,本篇主要分享的是有关分支循环语句题目的练习,难度不一,一定程度上能够有效提升编程能力,喜欢的朋友们,三连后一起来学习吧!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 输出乘法口诀表
  • 2. 求最大值
  • 3. 交替分数求和
  • 4. 数9的个数
  • 5. 求两个数的最大公约数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档