当前位置: 首页 > news >正文

C语言常见题目(1)交换两个变量的值,数的逆序输出,猜数游戏,两个数比较大小等

我的个人主页☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主

欢迎各位 👍点赞 ⭐收藏 📝评论

特别标注:本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。 关注博主,学习不迷路哦

目录

​编辑

一、交换两个变量的值

二、C语言细节考察题(易错)

练习(1)

练习(2)

三、逆序的三位数

四、两个数比较大小

【方案1】

【方案2】

 五、计算阶乘

【方案1】

【方案2】 

六、计算平均数

七、猜数游戏

八、数的逆序输出(本文最难)

需要掌握的知识点

方案1(700——7, 007——7)  

方案2(700——007)  

九、学习路上遇到的常见错误


一、交换两个变量的值

核心代码:

t = a;
a = b;
b = t;

#include <stdio.h>int main()
{int a = 5;int b = 6;//新建第三方变量 int t;printf("原来:a = %d,b = %d\n",a,b);//交换两个变量的值 t = a;a = b;b = t;printf("现在:a = %d,b = %d\n",a,b);return 0;
}

二、C语言细节考察题(易错)

练习(1)

写出以下代码执行后,t1和t2的值,以空格隔开:

int a=14;

int t1 = a++; // a = 15,t1 = 14

int t2 = ++a; // a = 16,t1 = 16

答案:14 16

练习(2)

写出以下表达式的结果,结果之间间隔一个空格:

6 + 5 / 4 - 2                                                                                                   // 7 - 2

2 + 2 * (2 * 2 - 2) % 2 / 3                                                                               // 2 + 0

10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3                                                      // 10 + 27 + 4 + 3

1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10    // 3 + 7 * (2/8-9)* 10    3 + 7 * (0-9)* 10         3-630

答案:5 2 44 -627

注:先括号,再从左到右乘除,最后加减

三、逆序的三位数

逆序的三位数

程序每次读入一个正三位数,然后输出逆序的数字。注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7

提示:用%10可以得到个位数,用/100可以得到百位数...。将这样得到的三个数字合起来:百位100+十位10+个位,就得到了结果。

代码示例:

#include <stdio.h>int main()
{int a;int ge,shi,bai;printf("请输入一个三位数:");scanf("%d",&a);ge = a %10;shi = a % 100 / 10;bai = a / 100;//printf("ge=%d,shi=%d,bai=%d\n",ge,shi,bai);printf("%d\n",ge*100+shi*10+bai);return 0;
}

注:

关系运算符的结果只有0和1

所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高

四、两个数比较大小

【方案1】

#include <stdio.h>int main(){// 方案1 int a,b;printf("请输入两个整数:");scanf("%d %d",&a,&b);int max = b;if(a > b){max = a;}printf("大的那个是%d\n",max);return 0;
}

【方案2】

#include <stdio.h>int main(){// 方案2int a,b;printf("请输入两个整数:");scanf("%d %d",&a,&b);int max = 0;if (a > b){max = a;} else {max = b;}printf("大的那个是%d\n",max);return 0;
}

 tips:

测试数据(测试所编写的代码或者方法有没有问题)

测试程序常使用边界数据,如

  • 有效范围两端的数据

  • 特殊的倍数等个位数;

  • 10

  • 0

  • 负数

 五、计算阶乘

n!=1×2×3×4×..×n 写一个程序,让用户输入,然后计算输出 n!

变量:

显然读用户的输入需要一个 int 的 n,然后计算的结果需要用一个变量保存,可以是 int 的 factor,在计算中需要有一个变量不断地从 I 递增到 n,那可以是 int 的 

【方案1】

#include <stdio.h>int main()
{int n;scanf("%d",&n);int fact = 1;int i = 1;while(i <= n){fact *= i;i++;}printf("%d!=%d\n",n,fact);return 0;
}

【方案2】 

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

算法小套路

做求和的程序时,记录结果的变量应该初始化为 0,而做求积的变量时,记录结果的变量应该初始化为

六、计算平均数

需求:让用户输入一系列的正整数,最后输入-1表示输入结束,然后程序计算出这些数字的平均数,输出输入的数字的个数和平均数

实现思路:

只需要每读到一个数,就把它加到一个累加的变量里,到全部数据读完,再拿它去除读到的数的个数就可以了

一个变量记录累加的结果,一个变量记录读到的数的个数

算法

  1. 初始化变量 sum 和 count 为 0;

  2. 读入 number;

  3. 如果 number 不是 -l,则将 number 加入 sum,并将 count.加 l,回到2;

  4. 如果 number 是 -l,则计算和打印出 sum/count (注意换成浮点来计算)

代码实现:

#include <stdio.h>int main()
{int number;int sum = 0;//求和 int count = 0;//统计输入的个数printf("请输入要计算平均数的数:");scanf("%d",&number);while(number != -1){sum += number;count++;scanf("%d",&number);}printf("%f\n",1.0*sum/count);//将结果转化成浮点数 return 0;
}

七、猜数游戏

猜数游戏

需求:让计算机来想一个数,然后让用户来猜用户每输入一个数,就告诉它是大了还是小了,直到用户猜中为止,最后还要告诉用户它猜了多少次。 因为需要不断重复让用户猜,所以需要用到循环

核心重点是循环的条件

人们往往会考虑循环终止的条件

步骤

  1. 计算机随机想一个数,记在变量 number 里;

  2. 一个负责计次数的变量 count 初始化为 0;

  3. 让用户输入一个数字 a;

  4. counti 递增(加一);

  5. 判断 a 和 number 的大小关系,如果 a 大,就输出“大”;如果 a 小就输出“小”;

  6. 如果 a 和 number:是不相等的(无论大还是小),程序转回到第 3 步;

  7. 否则,程序输出“猜中”和次数,然后结束。

需要掌握的知识点

随机数 每次召唤 rand( ) 就得到一个随机的整数

随机产生一个100以内的数:rand( )%10

注:玩这个小游戏,只要你认真玩,那么最多你猜7次就能猜中 

代码实现:

#include <stdio.h>int main()
{srand(time(0));int number = rand()%100;//生成一个100以内的随机数int count = 0;//统计猜数的次数 int a = 0;//用户输入的数printf("我已经想好了一个1到100之间的数。");do{printf("请猜猜这个1到100之间的数:");scanf("%d",&a);count++;if (a > number){printf("你猜的数大了。");} else if (a < number){printf("你猜的数小了。");}} while(a != number);printf("太好了,你用了%d次就猜到了答案。\n",count);return 0;
}

 为什么100以内的数猜7次就够了?

2的7次方为128,使用二分法完全可以取到100内的任意整数

用二分法,例如第一次:100中猜50第二次:若大了,1~50中猜25第三次:若小了,26~50中猜38第四次:若小了,39~50中猜45第五次:若大了,39~45中猜42第六次:若大了,39~41中猜40第七次:若大了就是39,若小了就是41。

八、数的逆序输出(本文最难)

输入一个正整数,输出逆序的数

如:

【情况1】

输入:700        输出:7

输入:007        输出:7

【情况2】

输入:700        输出:007

注:想做出这题需要先掌握下列知识(否则就是鸡蛋碰石头哦)

需要掌握的知识点

整数的分解

整数的分解 一个整数是由 1 至多位数字组成的,如何分解出整数的各个位上的数字,然后加以计算

  • 对一个整数做%10 的操作,就得到它的个位数;

  • 对一个整数做/10 的操作,就去掉了它的个位数;

  • 依此类推。

当 x > n 时

1234 % 10                保留末尾一位数 4

1234 % 100              保留末尾二位数 34

1234 / 10                  去掉末尾一位数 123

1234 / 100                去掉末尾二位数 12

当 x < n

1 % 10 1                 小取余大 余小本身

5 % 10 5                 小取余大 余小本身

6 % 10 6                 小取余大 余小本身

1 / 10 0                 被除数比除数小 答案为0

5 / 10 0                 被除数比除数小 答案为0

6 / 10 0                 被除数比除数小 答案为0

方案1(700——7, 007——7)  

代码示例:

#include <stdio.h>int main()
{//用户要输入的数 int x;x = 12345;//007	7		700		7 //定义一个变量用来保存依次取出的数int digit;//定义一个变量用来保存逆序输出的结果int ret = 0;while(x > 0){//依次取出最后一位数 digit = x % 10;//原来的结果往左移动一位加上新的digit ret = ret * 10 + digit;printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);//x去除一位 x /= 10; }printf("%d",ret);return 0;
}

方案2(700——007)  

代码示例:

#include <stdio.h>int main()
{//用户要输入的数 int x;//scanf("%d",&x);x = 700;//007//定义一个变量用来保存依次取出的数int digit;//定义一个变量用来保存逆序输出的结果int ret = 0;while(x > 0){//依次取出最后一位数 digit = x % 10;printf("%d",digit);//原来的结果往左移动一位加上新的digit ret = ret * 10 + digit;//x去除一位 x /= 10; }return 0;
}

九、学习路上遇到的常见错误

(1)if 语句 忘了大括号

解决方法:永远在 if 和 else 后面加上大括号,即使当时后面只有一条语

(2)在 if 后面加分号

(3)错误使用==和=

(4)输入中文符号

(5)scanf()里面忘记加&

(6);老丢

(7)scanf()里面忘记加& printf()里面加了&

各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。

相关文章:

C语言常见题目(1)交换两个变量的值,数的逆序输出,猜数游戏,两个数比较大小等

我的个人主页&#xff1a;☆光之梦☆的博客_CSDN博客-C语言基础语法&#xff08;超详细&#xff09;领域博主 欢迎各位 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 特别标注&#xff1a;本博主将会长期更新c语言的语法知识&#xff0c;初学c语言的朋友们&#xff0c;可以收藏…...

Springboot使用sqlcipher4加密sqlite数据库

在有些业务场景&#xff0c;需要使用sqlite数据库&#xff0c;但sqlite数据库生的db文件&#xff0c;是明文的&#xff0c;该文件被别人拿到&#xff0c;就可以看到里面的所有数据&#xff0c;非常不安全&#xff0c;市面上有很多对sqlite数据库文件加密的方式&#xff0c;但都…...

指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)

文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言 提示&#xff1a;本章是指针拔尖系列的终章&#xff0c;有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我…...

本地部署多语言代码生成模型CodeGeeX2

&#x1f3e0; Homepage&#xff5c;&#x1f4bb; GitHub&#xff5c;&#x1f6e0; Tools VS Code, Jetbrains&#xff5c;&#x1f917; HF Repo&#xff5c;&#x1f4c4; Paper &#x1f44b; Join our Discord, Slack, Telegram, WeChat BF16/FP16版本&#xff5c;BF16…...

C语言刷题练习(Day2)

✅作者简介&#xff1a;大家好我是&#xff1a;侠客er&#xff0c;是一名普通电子信息工程专业的大学学生&#xff0c;希望一起努力&#xff0c;一起进步&#xff01; &#x1f4c3;个人主页&#xff1a;侠客er &#x1f525;系列专栏&#xff1a;C语言刷题练习 &#x1f3f7;️…...

docker- harbor私有仓库部署与管理

什么是 harbor harbor是一个开源的云原生镜像仓库&#xff0c;它允许用户存储、签名、和分发docker镜像。可以将 harbor 看作是私有的docker hub &#xff0c;它提供了更新安全性和控制性&#xff0c;让组织能够安全的存储和管理镜像 harbor RBAC&#xff08;基于角色访问控制…...

自动化测试的优缺点

自动化测试的优势 能够极大地提升测试的效率&#xff0c;测试人员可以迅速地在指定平台部署测试脚本且对相应功能进行测试。 “弱化”了软件测试人员个体差异对测试结果的影响。 提高整个测试团队的技能水平。 自动化测试的缺陷 自动化测试的缺陷在于&#xff1a;总是按照…...

深度学习基础知识 Dataset 与 DataLoade的用法解析

深度学习基础知识 Dataset 与 DataLoade的用法解析 1、Dataset2、DataLoader参数设置&#xff1a;1、pin_memory2、num_workers3、collate_fn分类任务目标检测任务 1、Dataset 代码&#xff1a; import torch from torch.utils import dataclass MyDataset(torch.utils.data.D…...

【ElasticSearch】深入探索 DSL 查询语法,实现对文档不同程度的检索,以及对搜索结果的排序、分页和高亮操作

文章目录 前言一、Elasticsearch DSL Query 的分类二、全文检索查询2.1 match 查询2.2 multi_match 查询 三、精确查询3.1 term 查询3.2 range 查询 四、地理坐标查询4.1 geo_bounding_box 查询4.2 geo_distance 查询 五、复合查询5.1 function score 查询5.2 boolean 查询 六、…...

使用wireshark解密ipsec ISAKMP包

Ipsec首先要通过ikev2协议来协商自己后续协商所用的加解密key以及用户数据的esp包用的加解密包。 ISAKMP就是加密过的ike-v2的加密包&#xff0c;有时候我们需要解密这个包来查看协商数据。如何来解密这样的包? 首先导出strongswan协商生成的各种key. 要能导出这些key&#…...

算法进阶-搜索

算法进阶-搜索 题目描述&#xff1a;给定一张N个点M条边的有向无环图&#xff0c;分别统计从每个点除法能够到达的点的数量 **数据规模&#xff1a;**1 < n < 3e4 **分析&#xff1a;**这里我们可以使用拓扑排序根据入边对所有点进行排序&#xff0c;排序后我们按照逆序&…...

时空智友企业流程化管控系统 sessionid泄露漏洞 复现

文章目录 时空智友企业流程化管控系统 sessionid泄露漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 时空智友企业流程化管控系统 sessionid泄露漏洞 复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从…...

QT编程,QMainWindow、事件

目录 1、QMainWindow 2、事件 1、QMainWindow QMenuBar&#xff1a;菜单栏 QMenu: 菜单 QAction: 动作 QToolBar: 工具栏 QStatusBar: 状态栏 setWindowTitle("主窗口"); //: 前缀 文件名 setWindowIcon(QIcon(":/mw_images/10.png")); resize(640, 4…...

人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用

大家好&#xff0c;我是微学AI ,今天给大家介绍一下人工智能在教育上的应用2-基于大模型的未来数学教育的情况与实际应用&#xff0c;随着人工智能(AI)和深度学习技术的发展&#xff0c;大模型已经开始渗透到各个领域&#xff0c;包括数学教育。本文将详细介绍基于大模型在数学…...

C++学习day5

目录 作业&#xff1a; 1> 思维导图 2> 多继承代码实现沙发床 1>思维导图 2> 多继承代码实现沙发床 #include <iostream>using namespace std; //创建沙发类 class sofa { private:string sitting; public:sofa(){cout << "sofa的无参构造函数…...

1.软件开发-HTML结构-元素剖析

元素的嵌套 代码注释 ctrl/ URL url 统一资源定位符 一个给定的独特资源在web上的地址 URI...

QTableWidget 表格增删数据

QTableWidgetQTableWidgetQTableWidget部分使用方法&#xff0c;如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时&#xff0c;设置了条件判断如正则表达式&#xff0c;若用户输入的数据不合法&#xff0c;则添加失败并提示用户错误的地方&#xff0c;便于用户修…...

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…...

【gmail注册教程】手把手教你注册Google邮箱账号

手把手教你注册Google邮箱账号 写在前面&#xff1a; 要注意&#xff0c;注册Google邮箱必须要确保自己能够 科学上网&#xff0c;如果暂时做不到&#xff0c;请先进行相关学习。使用的手机号是大陆&#xff08;86&#xff09;的。 在保证自己能够科学上网后&#xff0c;在浏…...

docker版jxTMS使用指南:数据采集系统的高可用性

本文讲解4.6版jxTMS中数据采集系统的高可用性&#xff0c;整个系列的文章请查看&#xff1a;4.6版升级内容 docker版本的使用&#xff0c;请查看&#xff1a;docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内容 4.2版jxTMS的说明&#xff…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...