前言:感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。现在开始今天的内容:
一. 主干知识的学习
1.字符型数据
(1)字符型常量
字符型常量指单个字符,用一对单引号及其所括起来的字符表示。例如:‘A’,‘a’,‘9’,‘¥’是字符型常量,它们分别表示字母A,a,数字字符9和符号¥。
ASCII字符集中列出了所以可以使用的字符,共256个,它具有以下特性:
a.每个字符都有唯一的次序值,即ASCII码。
b.数字字符‘0’,‘1’,‘2’,······,‘9’的ASCII码按升序连续排列。
c.大写字母‘A','B',······,’Z‘的ASCII码按升序连续排列。
d.小写字母‘a’,‘b',······,’z‘的ASCII码按升序连续排列。
注意:要区分数字和数字字符,例如,1为整型数字,而'1'为字符。
(2)字符型变量
字符型变量在定义时用类型名char,例如:
char op;
定义了一个字符型变量op,它的值是字符型数据。op='+'将字符型常量'+'赋给字符型变量op。
2.字符型数据的输入与输出
(1)调用函数scanf()和printf()输入输出字符,此时,在函数调用的格式控制字符串中相应的格式控制说明为%c。
(2)字符输入函数getchar()
设ch是字符型变量,函数getchar()的一般使用格式为:
ch=getchar();
其功能是从键盘输入一个字符,并赋值给变量ch。
(3)字符输出函数putchar()
函数putchar()的一般调用格式:
putchar(输出参数);
其功能是输出参数是字符型变量或字符型常量。
注意:函数getchar()和putchar()只能处理单个字符的输入与输出,即调用一次函数,只能输入和输出一个字符。
3.逻辑运算
在C语言中提供了三种逻辑运算符,如下表所示:
目数 | 单目 | 双目 | 双目 |
运算符 | ! | && | || |
名称 | 逻辑非 | 逻辑与 | 逻辑或 |
解释说明:设a和b表示逻辑运算对象,逻辑运算符的功能描述如下
(1)!a:如果a为‘真’,结果为‘假’;如果a为‘假’,结果为‘真’。
(2)a&&b:当a和b都为‘真’时,其结果是‘真’;否则,结果是‘假’。
(3)a||b:当a和b都为‘假’时,结果为‘假’;否则,结果是‘真’。
举例:(写出C语言表达式)
(1)ch是空格或回车。
(ch==' ')||(ch=='\n')
(2)year是闰年,即year能被4整除但不能被100整除,或year能被400整除。
(year%4==0&&year%100!=0)||(year%400==0)
二. 具体程序实战应用
问题:统计英文字母和数字字符。输入一个正整数n,再输入n个字符,统计其中英文字母,数字字符和其他字符的个数。
#include <stdio.h>
int main()
{
int digit, i, letter, n, other; //定义三个变量存放统计结果
char ch; //定义一个字符变量
digit=letter=other=0;
printf("Enter n:"); //提示将输入几个字符
scanf("%d", &n);
getchar(); //读入并舍弃换行符
printf("Enter %d characters:", n);
for (i=1; i<=n; i++) //循环执行n次
{
ch=getchar(); //输入字符并赋值给变量ch
if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
{
letter++; //若为英文字母则加一
}
else if (ch>='0'&&ch<='9')
{
digit++; //若为数字则加一
}
else
{
other++; //非字母与数字则加一
}
}
printf("letter=%d, digit=%d, other=%d\n", letter, digit, other);
return 0;
}
注意:
(1)程序运行时,先输入10<换行>,然后再输入10个需要分类统计的字符。此时,第11行的getchar()读入了换行符,由于没有赋值给变量,读入的换行符相当于被舍弃了。如果此处没有调用getchar(),则换行符会将作为10个需要统计的字符的第一个输入字符参加统计。
(2)输入n个字符时,必须连续输入,字符之间不能有间隔。
感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。