目录
4.2 字符串简介
4.2.1 char类型字符数组和null字符
4.2.3 string()函数
4.3 常量和c预处理器
4.3.1 const限定符
4.3.2 明示常量
4.4 printf()和sacnf()
4.4.1 printf()转化说明及其打印输出的结果
4.4.2 使用printf()
4.4.3 printf()的转换说明修饰符
4.4.5 使用scanf()
4.4.6 printf()和sacnf()的*修饰符
4.7 复习题
4.8 编程练习
4.2 字符串简介
4.2.1 char类型字符数组和null字符
字符串都被储存在char类型的数组中,数组由连续的存储单元构成。c语言用 来标记字符串的结束。
例:char[40],只能存储39个字符,末位要加 即空字符。
4.2.3 string()函数
string()不计算 .
4.3 常量和c预处理器
#define NUM 1.5:编译程序时,程序中所有的NUM被替换成1.5,这被称为编译时替换,这样定义的常量也被称为明示常量。
注意:末尾不加分号,,一般用大写表示符号常量。
4.3.1 const限定符
const int NUM=12;//NUM在程序中不能修改,值为12。
4.3.2 明示常量
limts.h表示的明示常量
float.h中的明示常量
将FEL分别替换为DBL和LDBL,即可分别显示double和long double类型对应的明示常量。
4.4 printf()和sacnf()
4.4.1 printf()转化说明及其打印输出的结果
4.4.2 使用printf()
4.4.3 printf()的转换说明修饰符
转换类型一定要匹配,不然结构不正确。
printf()返回值:返回打印字符的个数,输出错误,则返回一个负值。
打印较长字符串:用反斜杠()加enter组合来断行,不要缩进。或引入字符穿连接。例"love" "love"和"lovelove"等价,要在双引号中”“即字符串中加空格,才会隔开。
4.4.5 使用scanf()
读取基本变量类型,需要加上&
如把字符串读取到字符数组,不要使用&
例:sacf(”%d,%d“,&n,&m)表示要输入一个数字,一个逗号,再输入一个数字。
格式字符串中空白意味跳过下一个输入项前面所有的空白。
例sacf(”%d ,%d“,&n,&m)
除了%c,其他转化说明都会自动跳过输入值前面所有的空白。
对与格式字符串
scanf(”%c“,&ch):从输入的一个字符串开始读取,(不懂)
scanf(” %c“,&ch)则从第一个非空白字符开始读取。(不懂)
scanf()返回值:返回成功读取的项数。
4.4.6 printf()和sacnf()的*修饰符
printf()中例%*.*f表示,前一个*为字段宽度,后一个为小数位后几位。
scanf()中%*c表示跳过该输入
%[* ]s表示可以输入带空格的字符串。
4.7 复习题
1. 不能正常运行,因为在空格初中断,姓被读取例。名还保留在缓冲区内,下次程序从上次中断的地方开始读取,即用%f读取名,会发生错误。
2. a:字符宽度和精度。b:关于转义字符,例 '41'其中41为八进制的41,'x41‘表示16进制的41。c:加上。d:
7. 打印字宽为8的字符串前8位字符。%8.8s
8. 空白包括空格,制表符和换行符
4.8 编程练习
1 输入姓名,转换为名,姓
#include <stdio.h> #define backspace ""//为了退格 int main(void) { char surname[40]; char name[40]; printf("%Please enter your name____________________%s",backspace); scanf("%s %s",surname,name); printf("%s,%s",name,surname); return 0; }
2.
1 #include <stdio.h> 2 #include <string.h> 3 #define backspace "" 4 int main(void) 5 { 6 7 char name[40]; 8 printf("%Please enter your name____________________%s",backspace); 9 scanf("%[^ ]s",name); 10 int len=strlen(name)+3; 11 printf(""%s" ",name); 12 printf(""%20s" ",name); 13 printf(""%-20s" ",name); 14 printf(""%*s" ",len,name); 15 return 0; 16 }
3.
1 #include <stdio.h> 2 #include <string.h> 3 #define backspace "" 4 int main(void) 5 { 6 float num=0.0; 7 printf("%Please enter a float____________________%s",backspace); 8 scanf("%f",&num); 9 printf("输出%.1f或%.1e ",num,num); 10 printf("输出%.3f或%.3e ",num,num); 11 return 0; 12 }
6.
#include <stdio.h> #include <string.h> #define backspace "" int main(void) { char surname[20]; char name[20]; printf("%Please enter your surname____________________%s",backspace); scanf("%s",surname); printf("%Please enter your name____________________%s",backspace); scanf("%s",name); printf("%s %s ",surname,name); printf("%*d %*d ",strlen(surname),strlen(surname),strlen(name),strlen(name)); printf("%s %s ",surname,name); printf("%-*d %-*d ",strlen(surname),strlen(surname),strlen(name),strlen(name)); return 0; }