【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】

简介: 算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!

目录😋

任务描述

相关知识

一、循环控制 / 跳转语句的使用

1. 循环控制语句(for 循环)

2. 循环控制语句(while 循环)

3. 跳转语句(break 语句)

4. 跳转语句(continue 语句)

二、算术运算字符(% / * +)

1. 算术运算符(%)

2. 整除运算(/)

3. 乘法运算(*)

4. 加法运算(+)

三、回文数的概念

1. 定义

2. 举例说明

3. 在数学中的应用及意义

编程要求

测试说明

通关代码

测试结果


任务描述

本关任务:编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。


相关知识

为了完成本关任务,你需要掌握:

  1. 循环控制 / 跳转语句的使用
  2. 算术运算字符(% / * +)
  3. 回文数的概念

一、循环控制 / 跳转语句的使用

1. 循环控制语句(for 循环)

  • 基本原理for循环是一种常用的循环结构,它允许您指定一个初始化表达式、一个循环条件和一个更新表达式。语法格式为for(初始化表达式; 循环条件; 更新表达式)。初始化表达式在循环开始时执行一次,用于初始化循环变量。循环条件在每次循环迭代开始时进行检查,如果为真,则执行循环体中的代码。更新表达式在每次循环体执行完后执行,用于更新循环变量。
  • 示例代码
#include <stdio.h>
int main() {
    // 打印1到10的数字
    for (int i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
  • image.gif

2. 循环控制语句(while 循环)

  • 基本原理while循环在循环开始时检查循环条件。只要条件为真,就会执行循环体中的代码。语法格式为while(循环条件)。循环条件是一个表达式,它返回一个布尔值(真或假)。在循环体中,通常需要包含一些能够改变循环条件的语句,否则可能会导致无限循环。
  • 示例代码
#include <stdio.h>
int main() {
    int i = 1;
    while (i <= 10) {
        printf("%d ", i);
        i++;
    }
    printf("\n");
    return 0;
}
  • image.gif

3. 跳转语句(break 语句)

  • 基本原理break语句用于立即跳出当前循环(forwhiledo - while)或switch语句。当程序执行到break语句时,循环或switch语句会立即终止,程序控制流将跳转到循环或switch语句后的下一条语句。
  • 示例代码(在循环中使用 break)
#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break;
        }
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
  • image.gif

4. 跳转语句(continue 语句)

  • 基本原理continue语句用于跳过当前循环迭代的剩余部分,直接开始下一次循环迭代。当程序执行到continue语句时,循环体中continue语句之后的代码将不会被执行,而是直接跳转到循环的更新表达式(对于for循环)或循环条件检查(对于whiledo - while循环)。
  • 示例代码(在循环中使用 continue)
#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            continue;
        }
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
  • image.gif

二、算术运算字符(% / * +)

算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。以回文数判断代码片段为例:

while(i > 0){
    j = j*10 + i%10;
    i /= 10;
}
image.gif

1. 算术运算符(%)

(1)基本概念

  • 在 C 语言中,%是取余运算符,也称为模运算符。它用于计算两个整数相除后的余数。例如,表达式a % b的结果是a除以b后的余数。余数的取值范围是从 0 到b - 1(假设b是正数)。
  • 例如,7 % 3的结果是 1,因为 7 除以 3 商为 2,余数为 1;9 % 3的结果是 0,因为 9 能被 3 整除,余数为 0。

(2)运算规则

       取余运算要求两个操作数必须是整数类型,包括charshortintlong等基本整数类型。如果操作数是浮点数,在 C 语言中是不允许直接进行%运算的。

       运算结果的符号与被除数(%左边的数)相同。例如,-7 % 3的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;7 % -3的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。

2. 整除运算(/)

(1)基本运算功能

  • 在 C 语言中,“/” 是除法运算符。它用于计算两个操作数相除的商。例如,“int a = 10; int b = 2; int c=a /b;”,这里变量 a 的值为 10,b 的值为 2,a 除以 b 的商是 5,这个结果被赋给变量 c。
  • 操作数可以是整数类型(如 int、long 等)和浮点数类型(如 float、double)。当操作数都是整数时,执行整数除法,得到的结果也是整数。例如,“int x = 7; int y = 3; int z = x /y;”,此时 z 的值为 2,因为整数除法会舍去小数部分。
  • 当操作数中有浮点数时,执行浮点数除法,会得到带有小数部分的结果。例如,“float a = 7.0; float b = 3.0; float c = a /b;”,此时 c 的值约为 2.333333(具体精度取决于编译器和数据类型)。

(2)运算符优先级

  • 除法运算符 “/” 的优先级和乘法运算符 “*” 相同。在表达式中,它们的运算优先级高于加法 “+” 和减法 “-”。例如,在表达式 “int result = 2 + 8 / 4;” 中,先计算除法 8/4 = 2,然后再计算加法 2 + 2 = 4。
  • 同样,“/” 的优先级低于括号 “()”。如果表达式为 “int result=(2 + 8)/4;”,则先计算括号内的加法 2 + 8 = 10,然后再进行除法 10/4 = 2(整数除法)。

(3)特殊情况:除数为零

  • 当除数为零时,在整数除法和浮点数除法中会出现不同的情况。
  • 在整数除法中,除数为零是一种未定义行为。例如,“int a = 5; int b = 0; int c=a /b;”,这样的代码可能会导致程序崩溃或者出现不可预测的结果。
  • 在浮点数除法中,C 语言的标准规定,除数为零会产生特殊的值。对于 IEEE 754 标准的浮点数(C 语言中的 float 和 double 通常遵循此标准),当用一个非零的浮点数除以零,结果是正无穷或负无穷。例如,“float a = 5.0; float b = 0.0; float c = a /b;”,此时 c 的值可能是正无穷(如果 a 是正数)或者负无穷(如果 a 是负数),具体取决于编译器和浮点数的表示方式。

(4)应用场景和示例

  • 在计算平均值、比例等情况时经常会用到除法运算符。例如,计算一个班级学生的平均成绩。假设有 5 个学生的成绩分别存储在数组 scores 中,代码如下:
int scores[5] = {80, 90, 75, 85, 95};
int sum = 0;
for(int i = 0; i < 5; i++){
  sum += scores[i];
}
float average = (float)sum / 5;
  • image.gif 在这个示例中,首先通过循环计算成绩总和 sum,然后将总和 sum 转换为浮点数(通过(float)sum这种类型转换),再除以学生人数 5,得到平均成绩 average。这里如果不进行类型转换,就会执行整数除法,得到不准确的结果。

3. 乘法运算(*)

(1)基本运算规则

  • 在 C 语言中,乘法运算符(*)用于计算两个操作数的乘积。操作数可以是整数(如intlong等)、浮点数(floatdouble)或者字符型(char)数据。例如:
  • 整数乘法:int a = 3; int b = 4; int c = a * b;,这里ab是整数,c的值为 12,这是简单的整数乘法运算。
  • 浮点数乘法:float x = 2.5; float y = 3.0; float z = x * y;,此时z的值为 7.5,展示了浮点数的乘法运算。
  • 字符型数据乘法(实际上是字符对应的 ASCII 码值的乘法):char ch1 = 'A'; char ch2 = 2; char result = ch1 * ch2;,字符'A'对应的 ASCII 码值是 65,所以result对应的 ASCII 码值为 130。

(2)运算符优先级

  • 乘法运算符(*)的优先级高于加法运算符(+)。在一个表达式中,如果同时出现乘法和加法,乘法会先进行运算。例如:int val = 2 + 3 * 4;,先计算3 * 4 = 12,然后再计算2+12 = 14
  • 但乘法运算符(*)的优先级低于括号(())。例如:int another_val=(2 + 3) * 4;,会先计算括号内的加法2 + 3 = 5,然后再进行乘法5 * 4 = 20

(3)应用场景

  • 在计算几何图形的面积和体积时经常会用到乘法运算。例如,计算矩形的面积,设矩形的长为length,宽为width,面积area = length * width
  • 在处理数据的缩放或者倍数关系时也很有用。比如,将一个数组中的所有元素的值放大两倍,可以使用for循环结合乘法运算来实现:
int array[5] = {1, 2, 3, 4, 5};
for(int i = 0; i < 5; i++){
  array[i] *= 2;
}
  • image.gif

4. 加法运算(+)

(1)基本运算规则

  • 加法运算符(+)用于计算两个操作数的和。操作数的类型可以是整数、浮点数、字符型等。例如:
  • 整数加法:int num1 = 3; int num2 = 4; int sum = num1 + num2;sum的值为 7。
  • 浮点数加法:float f1 = 2.5; float f2 = 3.5; float result_f = f1 + f2;result_f的值为 6.0。
  • 字符型加法(实际上是字符对应的 ASCII 码值的加法):char ch3 = 'A'; char ch4 = 1; char final_ch = ch3 + ch4;,因为'A'的 ASCII 码值是 65,所以final_ch对应的 ASCII 码值为 66,即字符'B'

(2)运算符优先级

  • 加法运算符(+)和减法运算符(-)优先级相同,在没有括号的情况下,按照从左到右的顺序进行计算。例如:int value = 3 + 4 - 2;,先计算3 + 4 = 7,然后再计算7 - 2 = 5
  • 加法运算符(+)的优先级低于乘法运算符(*)和除法运算符(/)。例如:int complex_val = 2 * 3 + 4;,先计算2 * 3 = 6,然后再计算6 + 4 = 10

(3)应用场景

  • 在计算总和时经常使用加法运算。比如计算一系列数字的总和,使用循环和加法运算符可以实现:
int numbers[5] = {1, 2, 3, 4, 5};
int total = 0;
for(int i = 0; i < 5; i++){
  total += numbers[i];
}
  • image.gif
  • 在处理字符串拼接(在 C 语言中通过字符数组来模拟字符串)时,也会用到加法的概念。例如,将两个字符数组中的字符串拼接在一起(假设字符数组足够大来容纳拼接后的字符串):
char str1[10] = "Hello";
char str2[10] = "World";
char str3[20];
int i, j;
for(i = 0; str1[i]!= '\0'; i++){
  str3[i] = str1[i];
}
for(j = 0; str2[j]!= '\0'; j++){
  str3[i + j] = str2[j];
}
str3[i + j]='\0';
  • image.gif

三、回文数的概念

1. 定义

  • 回文数是指一个数字从左向右读和从右向左读是一样的,例如 121、1331 等。简单来说,它具有对称的数字结构。

2. 举例说明

  • 一位数的回文数有 0、1、2、3、4、5、6、7、8、9。因为这些数从左往右和从右往左读都是一样的。
  • 两位数的回文数有 11、22、33、44、55、66、77、88、99。比如 11,从左边读是十一,从右边读也是十一。
  • 三位数的回文数如 101、111、121、131 等。以 121 为例,从左往右读是一百二十一,从右往左读也是一百二十一。
  • 四位数的回文数像 1001、1111、1221 等。拿 1001 来说,从左到右和从右到左的读法相同,都是一千零一。

3. 在数学中的应用及意义

  • 数学趣味问题:回文数常出现在一些数学趣味谜题或者数学竞赛题目中。例如,寻找某个范围内的回文数,或者通过特定运算得到回文数等。比如:一个两位数,个位和十位数字相同,这个数一定是回文数,设这个数的十位数字是( image.gif 编辑是整数且 image.gif 编辑),那么这个数可以表示为 image.gif 编辑,这就将回文数和代数式联系起来了。
  • 数字规律研究:研究回文数有助于发现数字的一些特殊规律。在数论领域,数学家会研究回文数的性质,例如回文素数(既是回文数又是素数的数,如 11、101 等)。通过研究这些特殊的回文数,可以深入了解数的整除性、因数分解等数论问题。

编程要求

根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。


测试说明

平台会对你编写的代码进行测试:

预期输出:注意:每一个数据输出格式为 printf("%4d", i);

101 111 121 131 141 151 161 171 181 191  202 212 222 232 242 252 262 272 282 292  303 313 323 333 343 353 363 373 383 393  404 414 424 434 444 454 464 474 484 494
image.gif

开始你的任务吧,祝你成功!


通关代码

#include<stdio.h>
int convert(int n)//判断是否是一个回文数 
{   
    int i, j = 0; 
    i = n;  
//请在此添加代码
/*********Begin*********/
while(i > 0){
    j = j*10 + i%10;
    i /= 10;
}
return n == j;
/********* End *********/
}
int main() {      
    int i,k=0; 
 // k统计每行打印个数   
//请在此添加代码
/*********Begin*********/
for (int i = 100;i <= 500;i++){
    if(convert(i){
        printf("%4d",i);
        k++;
        if(k == 10){
            printf("\n");
            k = 0;
        }
    }
return 0;
//printf("%4d", i); 打印时用格式 %4d
/********* End *********/
}

image.gif


测试结果 image.gif

image.gif

目录
相关文章
|
11天前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
22 3
|
11天前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
12 2
|
16天前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
52 23
|
16天前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
46 15
|
16天前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
54 24
|
12天前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
49 16
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
83 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
64 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
57 8
|
1月前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
57 6

热门文章

最新文章