清览题库--C语言程序设计第五版编程题解析(3)

简介: 因为python和C同时学,现在混得差不多了(悲

因为python和C同时学,现在混得差不多了(悲



题目一:求最大公约数和最小公倍数

求两数的最大公约数和最小公倍数

输入两个正整数m和n,求其最大公约数和最小公倍数

输入示例:

3 6

输出示例:

最大公约数:3 最小公倍数:6

思路:

首先要明确我们需要的数字是什么,就是二者共有的因数。


既然要求最大公约数,自然要用到循环


因为在本题中我们要通过循环来不断试错,最终找寻到最大公约数,也就是除数,所以设该除数的变量名为c,那么这个c就一定要不为0,因此for循环中第一个表达式就应该是


for (c=1;;)

针对于for循环中第二个表达式,我个人不喜欢在for中的表达式规定,所以在for循环的内部语句中再细说。


关于第三个表达式,我们要求的是最大的公约数,所以与其从0开始向上不断叠加相乘,不如把该除数的初始值设为一个极大的数字,从而由上至下向下减,虽然这样设置会大大增加对内存的占用(相对来说),但这只是一个简单的小作业,只要老师不故意找茬,就无伤大雅。


所以经过一系列思路分析,最终的for语句应该是


for (c=1000000000000;;c--)

那么接下来,针对for循环的内部语句进行分析


我第一次去思考这里的代码时,想的是只有当除到最后的两个数互质才可以结束循环,结果就是我花费了一点时间去思考如何判断两个数互质,实际上压根一点用没有。这对于初学者来说应该是个坑吧(悲)


完整代码


#include <stdio.h>

int main()

{

 int i,s,m,n;

 scanf("%d %d",&i,&s);

 m=10;

 for (;;m--)

 {

   if (i%m==0&&s%m==0){

 

     n = i/m*s;

     break;

   }

 }

 printf("最大公约数:%d\n",m);

 printf("最小公倍数:%d\n",n);

 return 0;

}

题目二

输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数字本身。例如,153是一个水仙花数,因为

输入示例:

输出示例:

153 370 371 407


思路解析

没啥好解析的,注意范围是三位数,分别用除数和余数来分离出三个位数上的数字、幂的形式和引用的文件就可以了。


这是源代码


#include <stdio.h>

#include <math.h>

int main()

{

int a,b,s,g;

for (a = 100;a >= 100;a++)

{

 s = a%100/10;

 b = a/100;

 g = a%100%10;

 if (pow(s,3)+pow(b,3)+pow(g,3) == a)

 {

 

  printf("%d\n",a);

 }

 else if (a==999)

  break;

 else

  continue;

}

return 0;

}

烦了,毁灭吧


目录
相关文章
|
10天前
|
存储 程序员 C语言
【C 言专栏】C 语言指针的深度解析
【4月更文挑战第30天】C 语言中的指针是程序设计的关键,它如同一把钥匙,提供直接内存操作的途径。指针是存储其他变量地址的变量,通过声明如`int *ptr`来使用。它们在动态内存分配、函数参数传递及数组操作中发挥重要作用。然而,误用指针可能导致错误,如空指针引用和内存泄漏。理解指针的运算、与数组和函数的关系,以及在结构体中的应用,是成为熟练 C 语言程序员的必经之路。虽然挑战重重,但掌握指针将增强编程效率和灵活性。不断实践和学习,我们将驾驭指针,探索更广阔的编程世界。
|
12天前
|
存储 Java 大数据
JAVA:编程的艺术与实战解析
JAVA:编程的艺术与实战解析
19 2
|
15天前
|
存储 安全 Java
Java并发编程中的高效数据结构:ConcurrentHashMap解析
【4月更文挑战第25天】在多线程环境下,高效的数据访问和管理是至关重要的。Java提供了多种并发集合来处理这种情境,其中ConcurrentHashMap是最广泛使用的一个。本文将深入分析ConcurrentHashMap的内部工作原理、性能特点以及它如何在保证线程安全的同时提供高并发性,最后将展示其在实际开发中的应用示例。
|
15天前
|
存储 C语言
指针深入解析(C语言基础)带你走进指针,了解指针
指针深入解析(C语言基础)带你走进指针,了解指针
|
15天前
|
存储 编译器 C语言
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
|
16天前
|
C语言 C++
C语言:指针运算笔试题解析(包括令人费解的指针题目)
C语言:指针运算笔试题解析(包括令人费解的指针题目)
|
3天前
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
12 0
|
4天前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。
|
4天前
|
算法 Java Go
ArrayList源码解析
ArrayList源码解析
9 1
|
4天前
|
存储 安全 Java
【HashMap源码解析(一)(佬你不来看看?)】
【HashMap源码解析(一)(佬你不来看看?)】
10 1

推荐镜像

更多