第3节:补充知识点(数据的录入)

108 阅读4分钟

C语言补充知识点——数据录入

#include<stdio.h>

int main() {
	/*
		定义两个整数类型的变量 num1 和 num2,键盘录入数据分别为两个变量赋值
		求两个数的和并进行打印
	*/
	// 1.定义两个变量
	int num1;
	int num2;

	// 2.键盘录入多个数据
	printf("请输入两个整数:\n");
		scanf_s("%d %d",&num1,&num2);
	// 1012320

	// 3.相加并输出
	printf("----------------------------------\n");
	printf("第一个输入的数字为: %d\n", num1);
	printf("第二个输入的数字为: %d\n", num2);
	printf("两数之和为 %d\n", num1+num2);
	printf("----------------------------------\n");
	return 0;
}

实例练习

数值拆分

  • 需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台上
  • 运行结果
请输入整数:
123
个位数是: 3
十位数是: 2
个位数是: 1

解决方案:

  • 示例:123
  • 123 除以10123
  • 12 除以1012
#include<stdio.h>

int main() {
	// 1.键盘录入一个三位数
	printf("请输入一个三位数: \n");
	int num;
	scanf_s("%d", &num);

	// 2.拆分
	int splitOne = num % 10;
	int splitTen = num / 10 % 10;
	int splitHundred = num / 100 % 10;

	// 3.逐个打印

	printf("这个数的个位数是:%d\n", splitOne);
	printf("这个数的十位数是:%d\n", splitTen);
	printf("这个数的百位数是:%d\n", splitHundred);
	return 0;
}

最核心的方法就是取余的应用

  • 个位数:数值 % 10
  • 十位数:数值 / 10 % 10
  • 百位数:数值 / 100 % 10
  • 千位数:数值 / 100 % 10

隐式转换和强制转换

❓ 什么是隐式转换 把一个取值范围小的,转换成取值范围大

short a = 10;
int b = a;
❓c = a + b
// 1. double c = a + b 
-----------------------------------------
short:0000 0000 0000 0000
int:0000 0000 0000 0000 0000 0000 0000 0000
-----------------------------------------
由于数据大小的不同,所占用的内存字节也会发生转换

规则1:取值范围小的和取值范围大的计算,小的会自动提升为大的,再进行计算
规则2:short char 类型的数据在运算的时候,先提升为 int,再进行计算


🫀隐式转换小结:

取值范围: char > short > int > long > float > double
什么时候转换❓ 不同的数据类型进行计算、赋值等操作的时候,会触发隐式转换
规则1:取值范围小的和取值范围大的计算,小的会自动提升为大的,再进行计算
规则2:short char 类型的数据在运算的时候,先提升为 int,再进行计算

练习 🐅

// 请问最终的运算数据类型结果式什么类型的?
1-
short b1 = 10;
short b2 = 20;
数据类型 result = b1 + b2; 
----> int 

2-
int i = 10;
long n = 100L;
double d = 20.0;
数据类型 result = i + n + d;
----> double

3-
short b = 10;
long s = 20L;
long long n = 100LL;
数据类型 result = b + s + n;
----> long long

❓ 什么是强制转换 把一个取值范围大的,转换成取值范围小

格式:目标数据类型 = 变量名 = (目标数据类型)被强制转的数据

int a = 10;
short i = short(a);

❓

-----------------------------------------

int:0000 0000 0000 0000 0000 0000 0000 0000
short:0000 0000 0000 0000

-----------------------------------------
由于数据大小的不同,所占用的内存字节也会发生转换

🫀强制转换小结:

取值范围: char < short < int < long < float < double

什么时候转换

大的数据赋值给小的时候,需要强制转换

格式:想要转换成为什么类型,就在前面的小括号中写什么类型即可。

  • short i = short(a);

强制转换的弊端: 有可能导致数据错误

练习 🐅

// 请问最终的运算数据类型结果式什么类型的?
//04_operator_demo4.c
#include<stdio.h>

int main() {
	// 隐式转换:short 类型的数据在参与计算时候,提什为int
	short s1 = 10;
	short s2 = 20;
	// 第一种:错误写法
	//short result = s1 + s2;
	//printf("%zu\n", sizeof((short)s1 + s2));

	// 第二种:正确写法
	short result = (short)(s1 + s2);
	printf("%d\n", result);
	return 0;

}

  • 第一种结果

  • 第二种结果