例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
1.字符常量
(1)C语言的字符常量是用单引号括起来的一个字符,如’a’,’D’,’$’,’@’。大写字母与小写字母是不同的字符常量,如’a’和’A’是不同的字符。请注意,单引号是定界符,不占存储空间。
(2)转义字符。C语言中还有一些特殊的字符常量,它们是以“\”开头的字符序列。这是一种“控制字符”,不能显示在屏幕上。例如,在前面的程序中用到的’\n’代表“换行”意思。
常用的以“\”开头的转义字符见表2.3。
表2.3 转义字符
表2.3中’\ddd’表示将1~3位数转换成ASCII码值所对应的符号。例如,’\101’代表ASCII码(十进制数)为65的字符’A’,’\012’代表换行,’\0’或’\000’代表ASCII码为0的控制符,即“空操作”。’\xhh’中“x”代表十六进制,hh代表十六进制数。例如’\x61’代表“a”,’\x6a’代表字母“j”。
例2.3 转义字符的使用。
输出结果如图2.2所示。
图2.2 例2.3输出结果
2.字符变量
字符变量用来存放字符常量,并且只能放一个字符。一个字符变量在内存中占1个字节。
字符变量的定义形式如下:
char c1,c2;
上述语句定义c1和c2为字符型变量。字符变量的使用方式如下:
例2.4 向字符变量赋值。
注意:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中,而是将该字符相应的ASCII码值放到存储单元。将一个数值赋值给一个字符常量,并以字符型输出时,也将通过ASCII码转换为对应的字符输出。但是,由于字符数据只占1个字节,它只能存放0~255的整数。
在C语言中,允许对整型变量赋以字符值,也允许对字符变量赋以整型值;允许把字符变量按整型值输出,也允许把整型变量按字符输出。因此,字符数据可以加减运算,只是运算形式是通过ASCII码值进行加减来实现。
3.字符数据的输入输出
(1)字符输入函数getchar()。
getchar()函数的作用是从指定的输入设备输入一个字符,其格式为:
getchar();
例如:(www.chuimin.cn)
char c;
c=getchar(); /*从键盘读入一个字符,并且赋给变量c*/
这里的getchar()和scanf()函数有着相似的作用。
(2)字符输出函数putchar()。
putchar()函数的作用是向终端输出一个字符,其格式为:
putchar(c);
其中c可以是字符型变量也可以是整型变量。
例2.5 字符输入输出函数的使用
这个程序运行过程中,从键盘输入任意两个字符,并把第一个字符赋给变量b,第二个字符赋给变量c,最后输出变量a,b,c的值。
4.字符串
(1)字符串常量。
前文讲的字符常量是由一对单引号括起来的单个字符。而字符串常量则是一对双引号括号起来的字符序列。例如:“Welcome to China”“How are you”“zhangshan”这些都是字符串常量。
字符常量和字符串常量不仅在单引号和双引号有区别,还有更重要的是,字符串常量还包含一个“字符串结束标志”,即“\0”。每一个字符串的结尾都有一个“字符串结束标志”。例如,一个字符串“zhangshan”,实际在内存中存储如图2.3所示。
图2.3 字符串在内存中存储状态
它的长度不是9个字符,而是10个字符,最后一个字符为“\0”,“\0”不需要我们输入,而是系统内部默认添加的。因此,字符串“a”实际上就是’a’和’\0’两个字符组成。
在C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中,必须使用字符数组。这将在以后的章节中介绍。
(2)字符串的输出。
前文讲到字符数据的输出格式为“%c”,而字符串的输出格式符为“%s”。字符串的格式化输出形式包括:
①%s。例如:printf(“%s”,“program”),输出结果为:program 。
②%ms。输出的字符串占m列。如果字符串本身长度大于m,则突破m的限制,将字符串全部输出;若字符串长度小于m,则向左补齐空格。例如:printf(“%8s”,“program”),输出结果为: program。
③%-ms。如果字符串长度小于m,则在m列范围内,字符串向左对齐输出,向右补齐空格。例如:printf(“%-8s”,“program”);输出结果为:program 。
④%m.ns。输出的字符串占m列,但只取字符串中从左到右n个字符。这n个字符向右对齐输出,向左补空格。如果n>m,则m自动取n值,保证n个字符正常输出。例如:printf(“%7.3s”,“program”),输出结果为: pro。
⑤%-m.ns。这与上一格式的区别在于n个字符输出在m列范围的左侧,右补空格。例如:printf(“%-7.3s”,“program”),输出结果为:pro 。
有关C语言程序设计 第2版的文章
例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
";无论使用哪种形式,在此后的程序代码中,都可以使用字符指针变量sPtr表示字符串数据"I Love China!使用字符指针变量表示字符串数据时,最容易出现的错误就是将未确定指向的字符串指针变量直接使用。使用指向字符数组的指针变量处理字符串示例。......
2023-11-20
图4.9字符数组初始化状态③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。图4.11程序运行结果4.字符串字符串:是用双引号括起来的字符序列,也称为字符串常量。图4.13存储状态用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。......
2023-10-21
函数fwrite的功能则是将内存储器中指定区域的数据块写入与文件指针stream相关联的文件中。将一个5×10的整型二维数组数据存入指定文件中。编写程序实现功能:将例7.10所创建文件中的数据读出,并将数据按5行10列的矩阵形式进行显示。由于要接收从文件中读出的二维数组数据,程序中需要定义构成方式与之对应的二维数组。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
C语言把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算,功能强大。另外,C语言还把括号、下标、强制类型转换、取地址等都作为运算符处理,并通过与算数运算符的组合达到不同的目的,从而使程序更加简洁明了。C语言具有超强的可移植性。总之,C语言在运算符方面是比较容易让人混淆的。......
2023-11-18
C语言的最大特点是:功能强、使用方便灵活。由于这个“灵活”给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。在C语言中大写字母和小写字母是两个不同的字符。C语言规定以’\0’作字符串结束标志,它是由系统自动加上的。当一个语句中使用多层括弧时常出现这类错误。main()C语言中对数组的定义或引用数组元素时必须用方括弧。......
2023-11-18
相关推荐