X606C语言程序设计部分01
c语言头文件
#include <stdio.h>
/*
* 第1行引入头文件stdio.h,可以调用stdio.h文件下的所有函数
* 这里调用的printf
*/
int main() {
printf("Hello, World\n"); // Hello World
return 0;
}
c语言中的常量
/*
* 为什么要定义数据类型
* 为了告诉操作系统,定义的变量对应的存储空间中,将来能够存储什么样的数据
* 可以想象1个超市储物格,每个格子放的就是不同类型的变量
* 每个类型的存储空间都不一样,比如开到int类型,就会给你分配4个字节的存储空间
* 数据类型不同,在开辟存储空间的时候,开辟的位数就不同
*/
void test1() {
'a';
/*
* 对于字符型常量
* 只能放1个字符,放转义字符也可以\n
* 也不能放中文
*/
1;
3.14;
"tomcat";
}
printf函数宽度和标识
void test2() {
int num = 1000;
printf("%i\n",num);
printf("%3i\n",num);
printf("%6i\n",num);
/*
* 输出
* 1000
* 1000
* 1000
* 由此可见
* 如果输出长度大于指定输出长度
* 就按输出长度来输出
* 否则就按指定输出长度
*/
int num2 = 606;
printf("% i\n",num2); // 606
printf("|%-5i|\n",num2); // |606 | 把空格添加到后边了
printf("|%06i|\n",num2); // |000606| 指定长度大于输出长度,前面补0
}
printf函数精度和长度
float f = 3.14159265358979323846f;
double d = 3.14159265358979323846;
printf("%f\n",f); // 3.141593 默认保留6位小数
printf("%.2f\n",f); // 3.14 指定保留2位小数
printf("%.10f\n",f); // 3.1415927410 明显发现与原先小数点不太一样
printf("%.10lf\n",d); // 3.1415926536 这样就一样了
printf("%*f\n",2,f); // 精度的其它表示方法,*表示的就是2
/*
* 注意
* 单精度小数有效位数只有6-7位
* 超出这个范围,后面的就是一些垃圾数据
* 双精度小数有效位数只有15-16位,后面的就是一些垃圾数据
*/
长度就是长整型和长长整型之类的,就不写代码了
scanf函数的基本使用和注意点
void test03() {
/*
* 1. scanf函数的作用
* 接受用户输入的数据
* 2. scanf函数的格式
* scanf("格式化字符串",地址列表)
* 3. &取地址符号,可以获取变量对应的内存地址
* 4. scanf函数如果输入的不是字符型数据,比如space,tab等都会被忽略
* 5. scanf函数不能以\n结尾,否则永远无法结束
* 6. scanf函数第1个参数种除了格式化字符串还有其它字符串,必须在输入的时候带上其它字符串,否则数据就不对
* 7. scanf函数可以接受多个传入数据,如果不加其它字符串,需要按2次回车,或者中间按一次空格或tab
*/
int num;
scanf("%i",&num);
printf("%i\n",num);
}
scanf函数的实现原理
/*
* scanf函数的实现原理
* 1. scanf函数会先从输入缓冲区中获取数据,如果输入缓冲区中没有数据
* 那么程序就会阻塞,等待用户输入
* 2. 用户输入了数据,如果数据类型匹配,
* scanf函数就会把用户输入的数据放入缓冲区中
* 如果不匹配就直接丢弃
* 继续从输入缓冲区获取
* 3. 不同类型之间可以自动分割开,空格可以使用&char接收
*/
/*
* 清空输入缓冲区,该方法只能在Window上使用
* 不能在Linux上使用
* 但是setbuf(stdin,NULL);
* 方法可以跨平台(Linux,Mac)
*/
break和continue在嵌套循环中的注意事项
/*
* break和continue在循环嵌套中的注意点
* break只能结束自己所在的循环
*/
for (int i = 0; i < 2; i++) {
printf("outside function run...\n");
for (int j = 0; j < 3; j++) {
printf("inside function run...\n");
break;
}
}
/*
* 输出
* outside function run...
* inside function run...
* outside function run...
* inside function run...
* 内层嵌套语句中使用break
* j++不执行
*/
/*
* continue是跳过本次循环但不结束内循环
* 当内层循环遇到continue语句
* 就相当于执行完了此次内层循环的所有代码
* 进行下一次循环
*/
for (int i = 0; i < 2; i++) {
printf("outside function run...\n");
for (int j = 0; j < 3; j++) {
if(j == 1) {
continue;
}
printf("inside function run...\n");
}
}
/*
* 内层inside function run...
* 一共执行了2次
* 第1次执行时j = 0
* 第2次执行时j = 2
*/
函数执行的注意点
以下程序最终输出2个123,原因是执行到change函数的时候,开辟了一块新的存储空间,并为形参value开辟了一块存储空间
对value进行值操作后,函数执行完毕
该函数对应的存储空间被释放了,形参value对应的存储空间同样被释放了
所以可以说该函数没有任何作用