1、字符的大小写转换
对应的代码:
D:\Book\数据类型与运算符\数据类型与运算符\5、字符的大小写转换
int main()
{
char c = 'a';//现在是小写字母a,要变为大写字母A。虽然赋值是字符a,但是本质上是将该字符对应的ASCII值放到该变量中
c = c - 32;//由于c中放的是字符对应的ASCII值,所以字符的加减运算,本质就是对应的ASCII值间的加减运算,小写字母的ASCII值比大写字母的ASCII大32
printf("%c", c);//将c中的数据以字符的格式输出
return 0;
}
2、字符串常量
用双引号引起,内部有一个或多个字符的数据,就是字符串常量。如:”nihao123.45“
计算机中,字符串虽然是一串字符,但是仍将其拆分,每一个字符占用一个字节空间。对于用双引号引起的字符串,最后会多一个结束符\0,其仍然占用一个字节的空间。所以,对于双引号引起的字符串,占用的字节空间数会比看到的字符个数多一个。
字符在内存中,会以其对应的ASCII值进行存储。字符\0的ASCII值还是0。所以:'\0'=0。
对应代码
无
3、除法
整型除法
只有两个操作数都是整型时,才能进行整型除法
浮点型除法
只要有一个操作数时浮点型时,进行的就是浮点型除法
浮点型除法的小数部分,是在产生结果的同时产生,而不是放入浮点型变量后才产生的。
本次代码
D:\Book\数据类型与运算符\数据类型与运算符\6、混合运算
int main()
{
int i = 5;
float j = i / 2;//i是整型,2也是整型,两个整型进行除法运算,得到的还是整型数据,i/2得到的结果是2,将2放到浮点型变量中,最后在按照浮点型格式输出,所以会输出2.000 000.浮点型默认小数点后有6位
printf("%f\n", j);
float k = (float)i / 2;//此时将i强制转换为float类型,此时进行的是浮点型运算,所以得到的结果为2.5,将其存放到浮点型变量k中,最后按照浮点型变量打印,所以得到2.500 000
printf("%f\n",k);//注意,浮点型除法计算结束后,得到的数据的小数点后就有6位小数。6位小数不是在放到浮点型变量中时产生的,而是得到浮点型数据时产生的。
float m = i / 2.0;//总结,如果要进行浮点型除法,两个操作数中,至少有一个变量是浮点型才能进行浮点型的除法。即除法的结果才会有小数产生
printf("%f\n", m);
return 0;
}
4、输入输出函数
printf():输出到黑窗口,输出到了标准输出
scanf():读取的是标准输入
A.scanf()
a.scanf()
的定义:
int scanf(const char* format, ...)
该函数的返回值是一个整数,表示读取数据成功的个数。
...
:表示可变参数,即参数的个数必须与前面的format字符串中的%的数目保持一致。
format
:表示该位置放置的是字符串,如:”%d%f%c“等。
b.scanf()
的原理
例一:连续使用scanf()
不阻塞的问题
从黑窗口,输入10,这个10,就会被放到标准输入缓冲区。在黑窗口中再输入回车换行符,会将这个回车换行符,也放到标准输入缓冲区中。此时的标准输入缓冲区中的数据为10\n。
缓冲区中的数据,都是以字符的形式存在。当执行scanf("%d",&i)
时,%d:表示需要读取数据作为整型变量使用。此时就会将标准输入缓冲区中的10这两个字符,转换为10这个整型,并将这个整型数据放到对应变量i中。
scanf()
会将缓冲区中的字符转换为需要的类型,在放到对应变量中。
注意:标准输入缓冲区中的\n符号,会促使scanf()
读取缓冲区中的字符,并将其转换为所需的类型数据。
当10被scanf()
读取后,缓冲区中还有一个\n符号。
只有当缓冲区为空时,scanf()
才能起到阻塞的作用。
本次代码:
int main()
{//输入10\n
int i;
char c;
scanf("%d", &i);
printf("i=%d", i);//此时i读取的是10
scanf("%c", &c);
printf("c=%c", c);//此时c读取的是换行符
return 0;
}
例二:弥补scanf()
不阻塞的问题
本次代码
int main()
{
int i,j;
char c;
scanf("%d", &i);
printf("i=%d", i);
scanf("%j", &j);
printf("j=%d", j);
return 0;
}
说明
此时输入10\n,此时会由于第二个scanf()
阻塞程序,进而可以继续输入。
虽然此时的缓冲区没有清空,但是依然可以读取。
原因是:当scanf()
读取整型、浮点型、字符串(整型、浮点、字符串)时,会自动清除前面遗留的换行符、空格符号,直接匹配有效数据。
读取字符型,不会清除前面遗留的换行、空格。因为是读取字符,所以每个符号都会读取。
本次代码:
D:\Book\数据类型与运算符\数据类型与运算符\7、scanf
读取标准输入缓冲区的原理
5、scanf()
一次读取两个整型数
scanf()
一次读取多个数据
代码不加空格:
输入:10 空格 3
10被第一个%d读取
空格被第二个%d读取,后面的3直接被第二个%d匹配
代码加空格
当编写代码存在空格时,输入时的空格就会自动匹配到代码中的空格处。
本次代码:
D:\Book\数据类型与运算符\数据类型与运算符\8、scanf
读取两个整型数
6、判断闰年
闰年可以 被400整除 或者 被4整除且不能被100整除
本次代码
D:\Book\数据类型与运算符\数据类型与运算符\9、判断闰年
int main() { int year; scanf("%d", &year); if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) { printf("是闰年\n"); } else { printf("不是闰年\n"); } return 0; }
参考视频
链接:https://pan.baidu.com/s/1nsJ6a15dqRoye00i3EJsKg?pwd=q5ei
提取码:q5ei