目录

1.求最大公约数和最小公倍数

2.打印图形

3.质数因子

4.数字排序

5.十进制数转换为八进制数(进制转换)

6.寻找完数


1.求最大公约数和最小公倍数

题目描述:输入两个正整数m和n,求其最大公约数和最小公倍数。

输入:输入为一行,包括两个数字,以空格隔开。

输出:输入应为两行,第一行为最大公约数,第二行为最小公倍数。

样例输入:

2 3

样例输出:

1

6

解题思路: 

1.求最大公约数时,先找出输入的两个数中小的那一个,从该数开始,依次-1,判断该数是否是两个数字的约数,找到第一个约数即返回,该约数即为最大公约数;

2.求最小公倍数时,先找出输入的两个数中小的那一个,从该数开始,依次+1,判断该数是否是两个数字的倍数,找到第一个倍数即返回,该倍数即为最大公倍数;

代码如下:

#include <stdio.h>
int Largest_common_divisor(int m, int n);//寻找最大公约数
int Least_common_multiple(int m, int n);//寻找最小公倍数
int main()
{int m, n;scanf("%d %d", &m, &n);printf("%d\n%d", Largest_common_divisor(m, n), Least_common_multiple(m, n));return 0;
}
int Largest_common_divisor(int m, int n)
{int small_num = m < n ? m : n;for (int i = small_num; i > 0; i--){if (m % i == 0 && n % i == 0)return i;}
}
int Least_common_multiple(int m, int n)
{int large_num = m > n ? m : n;for (int i = large_num; ; i++){if (i % m == 0 && i % n == 0)return i;}
}

2.打印图形

题目描述:输入参数n,打印输出类似样例的三角形

样例输入: 

4

样例输出: 

   *********
*******

解题思路:

在遇到打印图形这种题目时,我们需要找出每一行的空格和' * '与行数有什么关系,在找到这个关系后,利用循环语句,即可解决此类问题;

如样例所示,输入4,,假设i为行数,则可得出以下规律:

1.每一行的空格数 = 4 - i

2.每一行的' * '数 = 2 * i - 1

根据上述规律,我们可以轻松的解决此类问题

代码如下:

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

3.质数因子

题目描述:

输入一个正整数,输出它的所有的质数因子(如180的质数因子为2、2、3、3、5)

样例输入:

180

样例输出:

2 2 3 3 5

何为质数因子?

本题的关键在于对于质数因子的理解

质因子(或质因数)在数论里是指能整除给定正整数的质数。根据算术基本定理,不考虑排序的情况下,每个正整数都能以唯一的方式表示成它的质因数的乘积。

代码如下:

#include <stdio.h>
int main()
{int n;scanf("%d", &n);for (int i = 2; i <= n; i++){while (n != 1){if (n % i == 0){n /= i;printf("%d ", i);}elsebreak;}}return 0;
}

4.数字排序

题目描述:输入10个整数,对其进行排序输出。

样例输入: 

9 8 7 6 5 4 3 2 1 0

样例输出: 

0 1 2 3 4 5 6 7 8 9

解题思路: 

根据题目要求,定义出一个一维数组来存储输入的数字,由于题目中给定的要求是十个整数,因此直接定义出一个空间为10的数组,利用循环依次输入数字,保存在数组中,之后利用冒泡排序方法对其进行排序并输出。

代码如下:

#include <stdio.h>
void bubbleSort(int* arr, int n)
{int flag = 0;for (int i = 0; i < n; i++){for (int j = 1; j < n - i; j++){if (arr[j] < arr[j - 1]){int tmp = arr[j];arr[j] = arr[j - 1];arr[j - 1] = tmp;flag = 1;}}if (!flag)return;}
}
int main()
{int arr[10];for (int i = 0; i < 10; i++){scanf("%d", &arr[i]);}bubbleSort(arr, 10);for (int i = 0; i < 10; i++)printf("%d\n", arr[i]);return 0;
}

5.十进制数转换为八进制数(进制转换)

题目描述:编程,输入一个10进制正整数,然后输出它所对应的八进制数。

样例输入: 

10

样例输出: 

12

题目分析:

我们首先需要理解十进制转换为八进制的机制,即满8进1位,以下举出几个数字样例的转换来方便大家对于转换的理解,可以根据此举例来理解下述的代码

十进制:8
八进制:10
转化方式:
8 % 8 = 0
8 / 8 = 1
1 % 8 = 1
1 / 8 = 0十进制:65
八进制:101
65 % 8 = 1
65 / 8 = 8
8 % 8 = 0
8 / 8 = 1
1 % 8 = 1
1 / 8 = 0

由此可以得出一个转化规律,当输入的数为n时,先对其进行取余,得到八进制数的最右边一位,再对其除8后继续取余8 ,得到八进制数最右边的倒数第二位,一直循环下去,直至n变为0为止。

利用递归的方式来实现十进制转换为二进制。

除此之外方法外,利用栈的相关知识也可以实现进制的转换,后序会在博客发表利用栈实现所有进制转换的方法

代码如下:

#include <stdio.h>
void Transform(int n);
int main()
{int n;scanf("%d", &n);Transform(n);return 0;
}
void Transform(int n)
{int num;if (n == 0)return;num = n % 8; Transform (n / 8);printf("%d", num);
}

6.寻找完数

题目描述:

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。

提示: 1000以内。

无输入样例 

输出样例:

1=1
6=1+2+3
......

题目分析:

根据题意,我们可以清晰地了解完全数的概念,根据其概念完成代码的编写并找出完全数。一定要注意题目的输出格式。

代码如下: 

#include <stdio.h>int FindNum(int n);
void Print(int n);
int main()
{int sum = 0;for (int i = 1; i <= 1000; i++){if (FindNum(i)){printf("%d=", i);Print(i);printf("\n");}}return 0;
}
int FindNum(int n)
{int sum = 0;if (n == 1)return 1;for (int i = 1; i < n; i++){if (n % i == 0)sum += i;}if (sum == n)return n;return 0;
}
void Print(int n)
{int sum = 0;printf("1");for (int i = 2; i < n; i++){if (n % i == 0){printf("+");printf("%d", i);}}
}

C语言基础编程练习(精选例题+题解)相关推荐

  1. 实验四 数据库SQL语言基础编程

    -- 实验四 数据库SQL语言基础编程 -- 实验目的: --  掌握数据库查询语句的编写方法 --  掌握利用查询语言完成基本查询 --  掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...

  2. 实体类 接口_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)

    原文:Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口, 视频讲解) 这里分享三道编程题, 下面是我个人的视频讲解 二维数组, 五子棋游戏, 实体类和接口_哔哩哔哩 (゜-゜)つロ ...

  3. n1 c语言程序,C语言基础编程练习

    <C语言基础编程练习>由会员分享,可在线阅读,更多相关<C语言基础编程练习(94页珍藏版)>请在人人文库网上搜索. 1.1.屏幕上输入:This is a C program# ...

  4. c语言基础编程题文库,C语言基础编程题资料.doc

    C语言基础编程题资料.doc |5-1 求幂之和 15 分本题要求编写程序,计算 sum21 22 23 cdots 2nsum2122232n.可以调用 pow 函数求幂.输入格式输入在一行中给出正 ...

  5. java语言编程基础王晓华_Java语言基础编程练习

    Java语言基础编程练习 1. 运算符练习 提示用户输入正整数类型的秒数,拆分秒数后输出x小时x分x秒. 如:输入7199,输出1小时59分59秒 System.out.println("请 ...

  6. C语言基础编程题——喝水问题,译码问题

    C语言基础编程题--喝水问题,译码问题 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?"答案是5瓶,方法如下:先用9 ...

  7. C语言基础-编程规范!代码不规范,自己两行泪!

    前言 一个好的程序编写规范是编写高质量程序的保证.清晰.规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性. 说明 l 本文档主要适用于刚刚开始接 ...

  8. c语言基础编程题讲解,C语言入门例题讲解

    C语言入门例题讲解 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的'编程语言.今天就为大家 ...

  9. 易语言基础编程知识〖E语言手册〗

        易语言手册易语言的命名约定 在易语言应用程序的编写过程中,用户涉及到定义各类名称,如:子程序名.变量名.数据类型名等等,这些名称的命名规则为:名称的首字母必须为全半角字母或汉字,其它字符必须为 ...

  10. c语言中aver是什么意思_嵌入式C语言基础编程—5年程序员给你讲函数,你真的懂函数吗?...

    本文主要讲述的内容: 1函数概述 2函数定义的一般形式 3函数的参数和函数的值 3.1形式参数和实际参数 3.2函数的返回值 4函数的调用 4.1函数调用的一般形式 4.2函数调用的方式 4.3被调用 ...

最新文章

  1. you need python_Life is short,you need Python——Python序列(列表)
  2. android matrix 简书,android matrix
  3. JavaScript 编程精解 中文第三版 零、前言
  4. PAT甲级1068 Find More Coins (30 分):[C++题解]DP、背包问题、dp输出方案
  5. 一般向量空间的基变换_从希尔伯特空间的角度看线性变换的一般思想和问题
  6. pandas apply()函数参数 args
  7. web.xml文件报红,怎么解决???
  8. IO多路复用中select、poll、epoll之间的区别
  9. 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
  10. informatic对表的增量抽取机制
  11. 识别中Excel的空值和空格值
  12. 计算机事业单位简答题MAC
  13. 数学文化赏析期末笔记
  14. 税务信息系统建设安全管理平台的研究(一)
  15. 云服务器(CentOS 7)上面部署Node.js环境
  16. Docker 开启 remoter api
  17. Unity打开电脑本地文件夹选择图片替换
  18. 线程wait和notify方法
  19. 无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同
  20. Vue 引入高德地图 vue-amap

热门文章

  1. VC中调用 Excel 的总结
  2. 【C语言】10-字符和字符串常用处理函数
  3. python排序算法可视化
  4. docker容器部署的应用启动日志在哪里看_在SAP云平台上部署和运行Docker应用
  5. windows与ubuntu Centos系统下载站点整理(自用)
  6. 登录处理php页面,登录处理页面
  7. springboot整合rpc远程调用_SpringBoot—-JsonRpc跨语言远程调用协议 - Java天堂
  8. mysql 5.6忘记root密码_Linux平台MySQL忘记root密码解决方案
  9. 最好用的WIN7 系统下载
  10. 背诵华为hcia认证考试题库答案能过吗?华为认证等级是怎样的