谭浩强C语言第五版的一些课后习题
常用头文件:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdbool.h>
注意事项:
1)获取输入的字符串时,gets保留空格 scanf遇到空格就结束
所以求统计时应用gets
2)strlen()方法返回的个数不带字符串后的’\0’即为真实个数
3)字符数字0-9 转化为整型数字 减去48
4)字母大写转小写 加上32
5)未知大小的数组定义
如果支持 则:
否则:
6)取数字思路,例如四位数 取第一位 n/1000;
取第二位 n/100%10;
取第三位 n/10%10;
取第四位 n%10;
7)利用%03d 可以控制C语言输出整数格式,默认输出位数为3位,如果不够,用零补全。
8)在做题中,常常要求读入一行字符串,而这串字符里面可能有空格、制表符等空白字符,如果直接用%s是不可以的,于是有些人就想到用gets(),但由于gets很难控制,故而一般不推荐使用,所以用%[^ ]就可以很好的解决这个问题了,表示"非"即读入其后面的字符就结束读入。
另外地,所有对%s起作用的控制都可以用%[ ]:
1、常用的总结如下:
(1)%[0-9]表示只读入’0’到’9’之间的字符
(2)%[a-zA-Z]表示只读入字母
(3)%[^a-z]就表示读入小写字母之外的字符。 ^表示除XXX之外。
(4)"%n[^=]" 读入"="号前的至多n 个字符
(5)在符号前面加^,比如 “%[^:]” 就是除了冒号其他字符都可以输入,唯独忽略冒号,可输入的字符是除去冒号的字符集补集。
'-'是范围连接符,当然也可以直接列出需要读入的字符。
(6)scanf("%*[^\n]");//表示读入所有不是换行的字符串,这些都不保存,然后返回
scanf("%*c");//表示读入一个字符,但是这个字符不保存到变量里2、
%c 一个单一的字符
%d 一个十进制整数
%i 一个整数
%e, %f, %g 一个浮点数
%o 一个八进制数
%s 一个字符串
%x 一个十六进制数
%p 一个指针
%n 一个等于读取字符数量的整数
%u 一个无符号整数
%[] 一个字符集
%% 一个精度符号