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

C primer plus编程练习答案(上) 个人学习总结 C primer plus上篇 阅读详情

目录

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);
            }
            else
                break;
        }
    }
    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语言基础程序——100实例 /根据公示Π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算Π的近似值,当最后一项的绝对值小于0.000001为止。int f=1;//变号用//i是分母,sum是Π/4的值while (fabs(1.0/i)>=1e-6)//当绝对值小于10的-5次方认为为0//累加每项的值f*=-1;//变号i+=2;//分母+2变化printf("Π的近似值为%.5lf",sum*4); 阅读详情

相关推荐

C语言经典编程题100例(1-20)

本题要求编写程序,计算交错序列 1 - 2/3 + 3/5 - 4/7 + 5/9 - 6/11 +... 的前N项之和。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。

weixin_58045538的博客 1万+

C语言-基础例题55道

编程写程序,在屏幕上输出信息:Happy New Year!由键盘任意输入2个数,分别计算它们的和、差、积、商。已知梯形的上底、下底和高,计算梯形的面积。任意输入一个字符,输出此字符对应的ASCII码。

行秋的博客 7万+

【C语言】switch应用:输入1~7之内的数字,输出对应 星期几 | C语言面试:解释C语言中的typedef关键字的用途和作用。

代码 例如,输入1 输出Monday。 输入 3 输出Wednesday。 输入 0 输出error! //switch实例 #include <stdio.h> int main(){ int a; printf("input integer number: "); scanf("%d",&a); putchar('\n'); switch (a){ case 1: printf("Monday\n"); break; case 2: pri

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1万+

C基础:45道练习题汇总(初学者加油)

本文汇总了c基础阶段所有的练习题,有需要的可以参考下

weixin_57535837的博客 3万+

C语言全面解析:PAT乙级1001至1085题解集

PAT乙级考试(Programming Ability Test)是中国计算机协会举办的一项面向程序员的编程技能测试,考察学生使用C语言解决问题的能力。在备考时,除了打好扎实的基础知识外,还应注重解题思路和时间管理技巧的培养。为了帮助考生更好地准备考试,本章将提供一系列精选的C语言题解,涵盖了从基础到进阶的各个层面。每个题目都附有详细的解析和参考代码,以帮助理解解题的逻辑和步骤。考生可通过反复练习这些题目,提高编码效率和准确性,同时学习如何在限定时间内完成题目的策略。

weixin_32747681的博客 1034

若依框架集成saToken

若依版本3.8.8,鉴权采用security框架,这种框架太重,项目中想实现对外提供接口功能。尽快减少修改原框架的逻辑基础上,采用satoken实现。

sccd2009的专栏 1480

C语言基础编程练习精选10题(11~20)

C语言基础编程练习精选10题(11~20) 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件包含10道C语言基础编程练习题,每个题目都附带详细的题解和解题思路。这些练习题旨在帮助编程初学者加深对C语言基础知识的理解和应用。 题目列表 以下是题目列表和简要描述: 题目1013: 求和公式求和。给定一个数字a和次数n,计算Sn=a+aa+aaa+…+aa…aaa(有...

gitblog_06706的博客 514

第十二节:C#工业控制编程基础--输出正弦波实验

第十二节:基于c#使用开发板输出正弦波实验 文章目录第十二节:基于c#使用开发板输出正弦波实验一、实验目的:了解采集卡DA相关函数的使用。二、实验内容:利用C#生成正弦波,然后用采集卡DA输出。三、实验步骤:1.打开Visual Studio 2013,新建窗体应用程序项目,配置好板卡dll文件。2.在窗体中放入控件,对控件进行布局排版,并修改他们的Name属性和Text属性。3.在Chart控件内选择Spline型图表,如图2。4.进入编程区域,在public partial class Form1 :

weixin_49237052的博客 2289

C语言100道经典例题详解

** c语言100道经典例题 ** 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf(&amp;quot;\n&amp;quot;); for(i=1;i&amp;amp;lt;5;i++)    /以下为三重循环/   for(...

weixin_43876810的博客 3万+

告别电压瓶颈:手把手教你用SVPWM过调制算法提升电机驱动性能(附Simulink仿真)

本文详细介绍了如何利用SVPWM过调制算法提升电机驱动性能,解决电动汽车高速运行时的电压瓶颈问题。通过过调制I区和II区的算法实现细节,包括相角补偿与跳变控制,结合Simulink仿真演示,帮助工程师和研究者平衡电压增益与谐波失真,提升系统效率与动态响应。

weixin_30315723的博客 389

深入探索前端调试神器vConsole

vConsole作为一款前端调试神器,为前端开发者提供了一个便捷的调试解决方案。通过本文的介绍和示例,相信你已经对vConsole有了更深入的了解。然而,vConsole的功能远不止于此,它还有许多高级用法和技巧等待你去发掘。讨论:你在前端开发中是如何使用vConsole的?你有没有发现vConsole的一些隐藏功能或技巧?欢迎在评论区分享你的经验和见解!💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 8516

C语言基础编程练习精选10题1120:助力编程新手掌握C语言核心知识

C语言基础编程练习精选10题1120:助力编程新手掌握C语言核心知识 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在编程学习的道路上,C语言作为一门基础且经典的编程语言,是每位编程新手的必经之路。今天要推荐的这个项目——C语言基础编程练习精选10题(11~20),是一套专为编程初学者设计的C语言练习题库。它包含了10道精心设计的编程题目,每道题目都附带详细的题解和解...

gitblog_06735的博客 391

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析

本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。

yolo5detector的博客 214

C语言经典例题100道(没错,就是你要找的那个)

C语言经典例题100道(没错,就是你要找的那个) 希望可以帮助到你,加油!!! 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去        掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++)    /以下为三重循环/   for(j=1;j<5;j++)     for (k

weixin_47312141的博客 3万+

团队管理中最棘手的6个问题

研发团队的管理棘手问题,大多集中在。

xiaolyuh的专栏 735

MAX31855电路和程序,实现SPI和软件模拟时序两种方式读取数据

1. 概述 MAX31855为热电偶至数字输出转换器,内置14位模/数转换器(ADC)。器件带有冷端补偿检测和修正、数字控制器、SPI兼容接口,以及相关的控制逻辑,在温度控制器、过程控制或监测系统中设计用于配合外部微控制器(μC)工作。提供多个版本的器件,每个版本针对特定的热电偶类型(K、J、N、T或E型)进行优化和调整。热电偶类型以器件型号后缀表示(例如MAX31855K)。 器件输出14位...

睿思派克 1万+

【C语言基础】那些必会的编程练习题-第一部分

你好这是一个新的系列的开始,在这个系列种我将分为9个部分去带你刷一些C语言的编程练习题目,这些题目不论是对你以后的算法学习还是当下C语言学习,都有着很强的实践意义,也希望你可以将这个系列完整的看下来,相信你会有不少的收获。加油!下面我们直接进入正题,希望你在读完题之后可以自己思考并尝试这写一下。.........

感谢您的关注! 1370

【零基础入门unity游戏开发——unity通用篇30】Resources资源加载(基于unity6开发介绍)

Resources资源加载(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4107

C语言基础习题练习1

C语言基础习题练习1 1、输入一个三位正整数n,输出其个位、十位和百位上的数字。 程序代码如下: #include<stdio.h> main() { int n,ge,shi,bai; printf("请输入一个三位正整数:"); scanf("%d",&n); ge=n%10; shi=n/10%10; bai=n/100; printf("该三位数的个位,十...

Aoian的博客 1235

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言基础题目

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。输入在一行中给出A。输出满足条件的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。2。

m0_55652806的博客 3160

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

c语言经典例题及其答案详解,100个经典c语言例题(带答案)

100个经典c语言例题(带答案) 100 个经典 c 语言例题(带答案)经典C源程序 100 例- -1 经典C源程序 100 例 【程序 1】题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是 1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码:m.C 语言经典程序 100 例 2009-0...

weixin_34051133的博客 3970

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ACM大学生程序设计竞赛在线题库最新精选题解(赵端阳)解析

在线OJ题库部分解析 主要练习书中ZOJ,HDOJ。 章节(不定时更新)在线OJ题库部分解析前言第1章基础编程技巧题第2章模拟编程技巧题更新线 前言 本书介绍:ACM大学生程序设计竞赛在线题库最新精选题解 说实话我觉得新手确实需要一份刷题单,带解析那种。我个人也是新手才开这本书的题,连续追更中……我觉得写完读别人代码有很大提升,但是看题解大多数oj并不支持阅读其他人ac代码,而且很难找到优秀的代码。这本书给的代码让我学会很多奇巧淫技 。 洛谷题单还行就是不太循序渐进而且刷的题太多。这本书题单大多不错而

长门yuki 8308

C语言例题100道(21~40)

例题21:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少 #include <stdio.h> int main(void) { int i; int x = 1; for(i=9 ; i&...

qq_38365430的博客 2354

C语言经典例题100

C语言经典例题100来源http://www.fishc.com适合初学者 ----------------------------------------------------------------------------- 【程序1】 题目:由(1、2、3、4)4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个...

1036

C语言基础习题练习2

C语言基础习题练习2 1.输入一个三位的整数,判断其是否为水仙花数,输出判断结果YES或者NO。 #include<stdio.h> main() { int a,b,c,t; scanf("%d",&t); a=t%10; b=t/10%10; c=t/100; if(t==a*a*a+b*b*b+c*c*c) { printf("YES\n"); } else { printf("NO"); } } 2、输入三角形的三条边长a,b和c,判断其能否构成三

Aoian的博客 620

c语言考试经典编程题目及答案,经典练习C语言编程的题目及答案整理

《经典练习C语言编程的题目及答案整理》由会员分享,可在线阅读,更多相关《经典练习C语言编程的题目及答案整理(13页珍藏版)》请在人人文库网上搜索。1、1.逆序输出正三位数#include int main()int input,output= 0;scanf(%d,&input);while(input != 0)output = output*10 + input%10;input /=...

weixin_33396759的博客 1565
上一篇: C语言实现通讯录管理系统(简易版)
下一篇: C语言自定义类型详解(结构体+枚举+联合)
Li_yizYa
博客等级 码龄5年 682粉丝 139原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li_yizYa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值