十天学会C语言(day 2)

一、开发环境与工具

1.集成开发环境(IDE)有devC++、啊哈 C、Vc++、turboC 等。
2.代码编辑工具 - Notepad++
这是一款小巧高效的文本编辑器,支持 27 种编程语言,对 C、C++、Java 等语言的语法高亮度显示,可根据关键字显示节点并自由折叠 / 打开,还能显示缩进引导线,方便查看代码结构。
新建 C 语言代码文件时以.c 为后缀,并且可进行颜色、中文编码、标注等补充配置。
3.代码编译工具 - gcc
gcc 是常用的 C 语言编译器。安装后需配置环境变量,使命令终端在任意文件夹都能识别 gcc 指令。
使用时,在命令终端(cmd)中通过 cd 指令切换到代码所在文件夹,利用 “gcc 源文件 -o 生成程序名” 指令进行编译和运行,例如 “gcc test.c -o pro” 。

二、C 程序基础框架

1.变量

在程序运行中值可改变,使用前需先定义。

如 “int a = 3;” 定义了一个整型变量 a 并初始化。
变量名(标识符)由字母、数字、下划线组成,且只能以字母或下划线开头,区分大小写。
可以使用驼峰命名法等方式命名,如 “int secondsPerYear”。从内存角度看,变量就像蜂巢快递柜,里面的数据可变化。

2.数据类型

(1)整型数

C 语言中整型用int表示,通常占 4 个字节(32 位),能表示一定范围的整数。

但在不同开发环境(如 c51)中,整型可能占 2 个字节,其取值范围会相应变化,如 c51 中整型取值范围为 -32768 到 32767(无符号整型为 0 到 65535 )。
(2)字符型

用char定义,占 1 个字节(8bit),存储字符的 ASCII 码值。

例如char data3 = ‘c’;实际存储的是字符’c’对应的 ASCII 码值,通过该编码可实现字符与数值的转换。
(3)浮点类型

用于表示小数,float类型占 4 个字节(32 位) 。

它能满足一般精度的小数运算需求,但在表示高精度小数时可能存在精度损失问题,在对精度要求极高的场景下需谨慎使用或考虑使用更高精度的double类型(占 8 个字节,64 位)。
(4)数据类型转换
包括自动类型转换和强制类型转换。

自动类型转换发生在不同数据类型进行混合运算时,系统会自动将精度低的数据类型转换为精度高的类型。

强制类型转换则是根据编程需求,将一种数据类型强制转换为另一种数据类型,格式为(目标数据类型)表达式,不过强制转换可能会导致数据精度丢失或溢出,使用时需注意。

3.常量

在程序运行过程中,其值不能改变的量。

符号常量通过#define预处理指令定义,如#define PI 3.14 ,定义后在程序中使用PI就代表 3.14 。
这种方式增强了程序的可读性和可维护性,若需要修改PI的值,只需在定义处修改即可,无需在每个使用PI的地方逐一修改。

4.转义字符

用于表示一些特殊字符,这些字符无法直接通过键盘输入或在字符串中正常显示。

如\n表示换行符,使输出内容在该字符处换行;
\t表示制表符,用于对齐文本;
\表示反斜杠本身等。

三、输入输出函数

1.printf 函数

用于向标准输出设备(通常是显示器)输出数据。

它既可以原样输出字符串,如printf(“Hello, World!”);会在屏幕上显示Hello, World! 。
也能通过%占位符(格式字符)输出不同类型的数据,具体如下:

%d:输出十进制整数,如int num = 10
%c:输出单个字符,如char ch = ‘A’
%s:输出字符串,如char str[] = “C Programming”
%f:输出小数,默认保留 6 位小数
可通过%-m.nf格式指定位数,m表示输出字段宽度(包含小数点),n表示小数位数,-表示左对齐,如printf(“fnum = %-8.2f”, fnum)
%x:以十六进制格式输出整数,字母部分小写 。
%p:一般用于打印内存地址,也是十六进制格式输出,会输出变量的内存地址(具体地址值因系统和运行环境而异) 。

2.scanf 函数

用于从标准输入设备(通常是键盘)读取数据并存储到变量中。

使用时变量前必须加取地址符& ,例如int num; scanf(“%d”, &num); ,这样才能将用户从键盘输入的整数正确存储到变量num中。
当需要读取多个变量时,要分别使用scanf函数,
如int a, b, c; scanf(“%d”, &a); scanf(“%d”, &b); scanf(“%d”, &c); 。
输入格式要与scanf格式字符串中的字符一致,
如scanf(“%d,%d”, &a, &b); 输入时需用逗号分隔两个整数,如1,2 。
在处理字符混合输入时,要特别注意输入控制流程,因为字符输入可能会受到缓冲区残留字符的影响,导致输入结果不符合预期,通常可以在读取字符前使用getchar()函数清理缓冲区。

3.getchar 函数

用于从标准输入读取一个字符。

它每次只读取一个字符,包括空白字符(如空格、换行符等)。
例如char ch; ch = getchar(); ,程序会暂停等待用户输入一个字符,输入后该字符被赋值给变量ch。

四、代码练习

1.printf_1

#include <stdio.h>

int main()
{
	int a=3,b=10;
	float f=3.14;
	char c='#';
	
	float num;
	num=(float)b/a;
	printf("结果为:num=%f\n",num);
	printf("结果为:num2=%f\n",(float)b/a);
	
	printf("hello world!\n");
	
	printf("a=%d\n",a);
	
	a=100;
	printf("修改后为:a=%d\n",a);
	printf("十六进制为:a=0x%x\n",a);
	
	printf("小数为:f=%f\n",f);
	printf("字符为:c=%c\n",c);
	
	printf("地址为:%p\n",&a);
	
	return 0;
}

2.printf_2

#include <stdio.h>

int main()
{
	int num_1 = 8;
	int num_2 = 3;
	int num_3;
	int data;
	float data_1;
	
	printf("这是一个简单的加减乘除运算程序!!!\n");
	printf("原始数据为:%d,%d\n",num_1,num_2);
	
	data = num_1 + num_2;
	printf("数据相加为:%d\n",data);
	
	data = num_1 - num_2;
	printf("数据相减为:%d\n",data);
	
	data = num_1 * num_2;
	printf("数据相乘为:%d\n",data);
	
	data_1 = (float)num_1 / num_2;
	printf("数据相除为:%f\n",data_1);
	
	return 0;
}

3.scanf_1

#include <stdio.h>

int main()
{
	int data_1;
	int data_2;
	int data_3;
	
	printf("请输入一个整数:\n");
	scanf("%d",&data_1);
	printf("输入完毕!!!\n");
	printf("你输入的整数是:data_1=%d\n",data_1);
	
	printf("请输入3个整数:\n");
	scanf("%d%d%d",&data_1,&data_2,&data_3);
	printf("输入完毕!!!\n");
	printf("你输入的整数是:data_1=%d,data_2=%d,data_3=%d\n",data_1,data_2,data_3);
	
	return 0;
}

4.scanf_2

#include <stdio.h>

int main()
{
	/*
	int data_1;
	char data_2;
	float data_3;
	
	printf("请依次输入整数、字符和小数!!!\n");
	scanf("%d%c%f",&data_1,&data_2,&data_3);
	printf("你输入的数据为:data_1=%d,data_2=%c,data_3=%f\n",data_1,data_2,data_3);
	*/
	
	/*
	char c;
	puts("请输入一个字符:");
	c = getchar();
	putchar(c);
	*/
	
	/*
	char a;
	char A;
	
	puts("请输入一个大写字母:");
	A = getchar();
	printf("它的小写字母为:%c\n",A+32);
	*/
	
	char c1,c2,c3,c4,c5;
	
	printf("请输入原码:%c%c%c%c%c\n",c1,c2,c3,c4,c5);
	scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
	printf("编译密码为:%c%c%c%c%c\n",c1+4,c2+4,c3+4,c4+4,c5+4);
	
	/*
		puts跟printf的区别:
		1.puts自动加入换行符
		2.puts只能输出字符串
	*/
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值