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

news2025/1/15 12:49:44

我的个人主页☆光之梦☆的博客_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(){
	// 方案2
	int 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语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试经典 150 题 3 —(双指针)— 167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组 方法一 class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {unordered_map<int,int> hashtable;for(int i 1; i < numbers.size(); i){auto item hashtable.find(target - numbers[…

Allegro基本规则设置指导书之Spacing规则设置

进入规则设置界面 1.设置Line 到其他的之间规则: 2.设置Pins 到其他的之间规则: 3.设置Vias 到其他的之间规则:

微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序

Microsoft Azure 首席技术官兼著名 Windows 软件开发人员 Mark Russinovich 在社交平台上宣布&#xff0c;启动了一个名为 windows-drivers-rs 的新开源项目。 该项目可帮助开发人员使用 Rust 开发 Windows 驱动程序&#xff0c;旨在支持 WDM (Windows Driver Model) 和 WDF (…

Pandas将两个Excel表格找出不同之处-对比两个文件-merge合并查询

Demo示例&#xff1a; 现有两个Excel表格&#xff0c;SKU不同&#xff0c;需要找出不同之处 代码结果演示&#xff1a; 代码&#xff1a; import pandastest1_path rC:\Users\Administrator\Desktop\新建文件夹 (2)\test1.xlsx test2_path rC:\Users\Administrator\Deskto…

pyqt 划线标注工具

效果图: 代码: import osfrom PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QLabel from PyQt5.QtGui import QPainter, QPen, QColor, QImage, QPixmap from PyQt5.QtCore import Qt, QPoint import sys import jsonclass ImageLabel(QLabel)…

接口自动化测试 —— 协议、请求流程

一、架构 CRM客户关系管理系统 SAAS Software As A Service 软件即服务 PAAS Platform AS A Service 平台即服务 快速交付→ 快&#xff1a;自己去干、有结果、事事有回音、持续改进 单体架构——》垂直架构——》面向服务架构——》微服务架构&#xff08;分布式&#xf…

(学习笔记)U-net++代码解读

U-net 声明&#xff1a;本文只提供代码部分。声明&#xff1a;内容为题主学习时的疑问&#xff0c;仅供初学者参考。python&#xff1a; 3.10 U-net结构图遇到的问题1. albumentations包安装的问题2. AttributeError: module albumentations.augmentations.transforms has no a…

0.在Linux Centos7下安装MySQL及其配置

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 1.检查是否已有MySQL 2. 检查系统安装包 3. 卸载这些默认安装包 4. 获取mysql官⽅yum源 5.安装mysql的yum源&#xff0c;对⽐前后yum源 6.看看能不能正常⼯作 7. 安装mysql服务 8.查看配置⽂件和数据存储位置 …

【编程必备知识】文件操作

文章目录 前言1. 认识文件1.1 树型结构组织和目录1.2 文件路径1.2.1 绝对路径1.2.2 相对路径 1.3 文件类型 2. Java 中操作文件2.1 File 概述2.1.1 构造方法2.1.2 成员方法 2. 2 代码示例示例1: 观察 get 系列的特点和差异示例2: 普通文件的创建示例3: 普通文件的删除示例4: 观…

手写Spring系列【一】IOC的简单实现笔记

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;项目专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

uni-app:文本超出部分用省略号表示

效果 前 后 核心代码 white-space: nowrap; /* 强制不换行 */ text-overflow: ellipsis; /* 超过部分省略号代替 */ overflow: hidden; /* 必须同时设置overflow:hidden才能生效 */ 完整代码 <template><view><view class"all_style"><view c…

「才得吹嘘身渐稳」,也来谈谈大模型

要问2023年的科技领域什么消息最博人眼球&#xff0c;那么22年底发布、23年迅速跻身顶流的ChatGPT一定占有一席之地。随着ChatGPT的“爆火出圈”&#xff0c;国内外大厂纷纷布局「生成式语言模型」研发赛道&#xff0c;各类应用也如雨后春笋般层出不穷&#xff0c;让人眼花缭乱…

SpringBoot的配置文件——.yml和.properties

目录 1. Spring Boot 配置文件的使用场景 2. 配置文件的两种格式 2.0 特殊说明&#xff1a; 2.1 .properties 2.1.1 格式 2.2.2 缺陷 2.2.3 解决中文乱码的问题 2.2 .yml 2.2.3 格式 配置数据库连接 注意转义字符 ​编辑 ​编辑 配置null 配置对象 从.yml读取文件举例 Stud…

v-on/@ 事件处理指令修饰符-stop、prevent、once

v-on/事件修饰符&#xff1a; 一、.stop 阻止单机事件继续传播 event.stopProgagetion() eg: <h3>事件修饰符</h3> <div click"todo"> <div click.stop"doThis"> 单机事件会继续传递 </div> </div> 点击 单机事…

【Java 进阶篇】Java Web 编写注册页面案例

当涉及到创建一个Java Web注册页面时&#xff0c;你将需要涵盖很多不同的主题&#xff0c;包括HTML、CSS、Java Servlet和数据库连接。在这篇文章中&#xff0c;我们将详细介绍每个步骤&#xff0c;以帮助你创建一个完整的注册页面。 1. 介绍 注册页面是许多Web应用程序的关键…

STM32标准库代码转为LL库代码-详解

概述 由于标准库&#xff0c;ST公司逐步不再维护&#xff0c;比较老旧的项目&#xff0c;都是使用标准库来开发&#xff0c;如果想使用LL库&#xff0c;需要借助《SPL2LL转换器》实现。 1、LL库简介 LL库&#xff0c;即STM32Cube Low-Layer&#xff0c;也叫Cube LL、Cube底层…

文件上传 [极客大挑战 2019]Upload 1

题目来源&#xff1a;buuctf [极客大挑战 2019]Upload 1 打开题目 是一道文件上传题 我们上传png和jpg格式的一句话木马上去看看 上传失败了&#xff0c;应该是在后端也对我们的文件内容进行了检测&#xff0c;检测到我们的一句话木马里面包含<? 那我们重新换个一句话木…

【软件工程】常见软件过程模型及其优缺点

软件过程模型 1. 瀑布模型2. V模型3. 原型模型4. 增量模型5. 螺旋模型6. 喷泉模型 1. 瀑布模型 描述&#xff1a; 瀑布模型是将软件开发划分为不同的阶段&#xff0c;只有上一个阶段完成了才能进入到下一个阶段&#xff0c;也就是按照需求分析、设计、实现、测试、运行和维护这…

UML类图是什么?怎么画?

在软件开发和系统设计领域&#xff0c;UML&#xff08;Unified Modeling Language&#xff09;类图是一种强大的工具&#xff0c;用于可视化和表示软件系统的结构和关系。如果你曾经在软件开发中遇到过“UML类图是什么&#xff1f;”这个问题&#xff0c;那么你来对地方了。本文…

简要归纳UE5 Lumen全局光照原理

一、Jim kajiya老爷子的渲染方程&#xff1a; 求全局光照就是求解渲染方程&#xff0c;我们将两边都有未知数的渲染方程变换成离散形式&#xff1a; 更形象的描述这个离散的渲染方程&#xff1a; 要给每个三角形着色就得先判断光线有没有和它相交&#xff0c;以下是求光线和三…