【C语言】(错题整理) 寻找完数、字符串中各类字符数的统计、最大公约数和最小公倍数、回文数计算 (循环、函数相关内容)

简介: 本篇博客旨在整理最近在头歌遇到的难题、错题,对其进行分析并整理。一、循环1.寻找完数(计算因子例题) 一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出1000之内的所有完数。 这道题的首要任务就是找到各个数的因子,然后再对其进行判断。那么计算这个数的因子,我们可以用循环,试每个小于它的数对其进行求余%,结果为零即是因子。

目录

一、循环

        1.寻找完数(计算因子例题)

       2.字符串中各类字符数的统计

       3.最大公约数和最小公倍数

求最大公约数:

最小公倍数:最小公倍数=两整数的乘积÷最大公约数

二、函数

       1.回文数计算


本篇博客旨在整理最近在头歌遇到的难题、错题,对其进行分析并整理。


一、循环

1.寻找完数(计算因子例题)

       一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出1000之内的所有完数。


       这道题的首要任务就是找到各个数的因子,然后再对其进行判断。那么计算这个数的因子,我们可以用循环,试每个小于它的数对其进行求余%,结果为零即是因子。

#include<stdio.h>intmain(void)
    {  
intnum,i,j,sum;
scanf("%d",&num);
for(i=2;i<num;i++)
      {
sum=1;
for(j=2;j<=i/2;j++)
          {
if(i%j==0)
sum+=j;
          }
if(i==sum)
          {
printf("%d\n",i);
          }
      }
return0;
    }

2.字符串中各类字符数的统计

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

       这道题主要就是用到了ASCII码相关知识,要具备的知识就是知道字母的大小排序。

#include<stdio.h>intmain(void)
    {  
inta=0,b=0,c=0,d=0;
charx;
while((x=getchar())!='\n')
      {
if((x>='A'&&x<='Z')||(x>='a'&&x<='z'))
a++;
elseif(x>='0'&&x<='9')
b++;
elseif(x==' ')
c++;
elsed++;
      }
printf("%d %d %d %d",a,b,c,d);
return0;
    }

3.最大公约数和最小公倍数

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


求最大公约数:

       (1)辗转相除法

设有两整数a和b:

① a%b得余数c

② 若c==0,则b即为两数的最大公约数

③ 若c!=0,则a=b,b=c,再回去执行①。


例如求27和15的最大公约数过程为:

27÷15 余12

15÷12 余3

12÷3 余0

因此,3即为最大公约数。


       (2)相减法

设有两整数a和b:

① 若a>b,则a=a-b

② 若a<b,则b=b-a

③ 若a==b,则a(或b)即为两数的最大公约数

④ 若a!=b,则再回去执行①。


例如求27和15的最大公约数过程为:

27-15=12( 15>12 )

15-12=3( 12>3 )

12-3=9( 9>3 )

9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即为最大公约数。


最小公倍数:最小公倍数=两整数的乘积÷最大公约数

#include<stdio.h>intmain(void)
    {  
intm,n,a,b,i,j;
scanf("%d %d",&m,&n);
a=m;
b=n;
j=m*n;
while(i!=0)
      {
i=a%b;
a=b;
b=i;
      }
printf("最大公约数是:%d\n最小公倍数是:%d",a,j/a);
return0;
    }

二、函数

       1.回文数计算

       编写函数求区间[200,3000]中所有的回文数,回文数是正读和反读都是一样的数。如525, 1551。


       因为题目已经给出所取数的区间了,所以只需要做一个判断来判断三位数和四位数就行了,所以相对来说比较简单,对三位数我们只需要判断第一位和最后一位就行,第一位用除以100来表达,(因为这个变量为整数,所以除以100所剩的只有第一位数字),然后第三位数字就是求余,%10,剩下的就是第三位。四位数除了第四位,前三位与三位数的第一位类似。

#include<stdio.h>intsolve(inta){
intb,c,d,e,temp;
if(a<1000)
    {
b=a/100;
c=a%10;
if(b==c)
temp=a;
elsetemp=0;
    }
else    {
b=a/1000;
c=(a-b*1000)/100;
d=(a-b*1000-c*100)/10;
e=a%10;
if(b==e&&c==d)
temp=a;
elsetemp=0;
    }
returntemp;
}
intmain(void)
{  
intnum,i,temp;
for(i=200;i<=3000;i++)
    {
temp=solve(i);
if(temp==i)
printf("%d\n",i);
    }
return0;
}


目录
打赏
0
0
0
0
108
分享
相关文章
一文彻底搞清楚C语言的循环语句
本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
28 0
一文彻底搞清楚C语言的循环语句
|
2月前
|
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
94 15
|
2月前
|
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
54 19
|
2月前
|
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
98 18
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
66 18
|
2月前
|
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
71 13
|
2月前
|
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
63 6
|
2月前
|
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
94 5
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
62 1
【C语言程序设计——选择结构程序设计】判断一个数是不是5和7的倍数(头歌实践教学平台习题)【合集】
本任务要求输入一个正整数,判断其是否同时是5和7的倍数,若是输出&quot;Yes&quot;,否则输出&quot;No&quot;。内容涵盖选择结构的基本概念、主要语句类型(if、if-else、switch)及条件判断逻辑,帮助理解编程中的分支执行与条件表达式。测试用例包括正数、负数及非倍数情况,确保代码逻辑严谨。通关代码示例如下: ```cpp #include &quot;stdio.h&quot; int main(){ int a; scanf(&quot;%d&quot;, &a); if (a &lt;= 0){ printf(&quo
61 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等