【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

目录
相关文章
|
6天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
131432 10
|
14天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201925 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
3天前
|
供应链 监控 安全
|
6天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。
|
9天前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
417 34
Qwen2.5-7B-Instruct Lora 微调
|
1月前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9940 29
|
3天前
|
机器学习/深度学习 存储 人工智能
【科普向】我们所说的AI模型训练到底在训练什么?
人工智能(AI)模型训练类似于厨师通过反复实践来掌握烹饪技巧。它通过大量数据输入,自动优化内部参数(如神经网络中的权重和偏置),以最小化预测误差或损失函数,使模型在面对新数据时更加准确。训练过程包括前向传播、计算损失、反向传播和更新权重等步骤,最终生成权重文件保存模型参数,用于后续的应用和部署。理解生物神经网络的工作原理为人工神经网络的设计提供了灵感,后者广泛应用于图像识别、自然语言处理等领域。
|
2天前
|
人工智能 算法 搜索推荐
阿里云百炼xWaytoAGI共学课开课:手把手学AI,大咖带你从零搭建AI应用
阿里云百炼xWaytoAGI共学课开课啦。大咖带你从零搭建AI应用,玩转阿里云百炼大模型平台。3天课程,涵盖企业级文本知识库案例、多模态交互应用实操等,适合有开发经验的企业或独立开发者。直播时间:2025年1月7日-9日 20:00,地点:阿里云/WaytoAGI微信视频号。参与课程可赢取定制保温杯、雨伞及磁吸充电宝等奖品。欢迎加入钉钉共学群(群号:101765012406),与百万开发者共学、共享、共实践!
|
15天前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。

热门文章

最新文章

下一篇
开通oss服务