概述
参考书:《C Primer Plus》第六版
-
for循环。程序清单1。
-
出口条件循环:do while。程序清单2。
-
关系运算符的优先级比算术运算符低,关系运算符的优先级比赋值运算符高。
-
注意:使用数组时,c编译器不会检查数组的下标是否正确,这里可能会导致潜在的异常。
-
if else语句。程序清单3。
-
ctype.c头文件中包含一些专门处理字符的函数的原型,这些函数接受一个字符作为参数,返回一个数值,如
isalpha()
函数如果输入参数是一个字母则返回非零值。 -
函数名 如果是下列参数时返回值为真 isalnum() 字母或数字 isalpha() 字母 isblank() 标准的空白字符(空格、水平制表符或换行符)或任何其它本地化为空白的字符 iscntrl() 控制字符,如Ctrl+B isdigit() 数字 isgraph() 除空格之外的任意可打印字符 islower() 小写字符 isprint() 可打印字符 ispunct() 标点符号(空格、换行符、换页符、回车符、垂直制表符、水平制表符或其它本地化定义的字符) isupper() 大写字符 isxdigit() 十六进制数字符 -
另外ctype.h头文件中还有字符映射函数:
tolower()
和toupper()
。 -
逻辑运算符:
&&
、||
、!
,另外,C99标准新增了可代替逻辑运算符的拼写,他们被定义在iso646.h
头文件中,如果程序中包含该头文件,则可用and
代替&&
、or
代替||
、not
代替!
。 -
一个统计单词的程序如程序清单4。
-
C语言中唯一的三元运算符:条件运算符,如
x=(y<0)?-y:y;
。 -
循环辅助:
continue
语句,执行该语句时,跳过本次迭代的剩余部分并开始下一轮迭代。break
语句,终止包含它的循环并继续执行下一阶段。 -
多重选择
switch
和break
,程序清单5。
程序清单1
#include<stdio.h>
int main(void) {
int num;
printf(" n n cubedn");
for (num = 1; num <= 6; ++num) {
printf("%5d %5dn", num, num * num * num);
}
return 0;
}
输出
n n cubed
1 1
2 8
3 27
4 64
5 125
6 216
C:UsersxhhSourceReposc_study_1Debugc_study_1.exe (进程 28332)已退出,代码为 0。
按任意键关闭此窗口. . .
程序清单2
#include<stdio.h>
int main(void) {
const int secret_code = 13;
int code_entered;
do {
printf("To enter the triskaidekaphobia therapy club,n");
printf("please enter the secret code number:");
scanf_s("%d", &code_entered);
} while (code_entered != secret_code);
printf("Congratulations! You are cured!");
return 0;
}
输出
To enter the triskaidekaphobia therapy club,
please enter the secret code number:12
To enter the triskaidekaphobia therapy club,
please enter the secret code number:11
To enter the triskaidekaphobia therapy club,
please enter the secret code number:13
Congratulations! You are cured!
C:UsersxhhSourceReposc_study_1Debugc_study_1.exe (进程 27016)已退出,代码为 0。
按任意键关闭此窗口. . .
程序清单3
#include<stdio.h>
#define SPACE ' '
int main(void) {
char ch;
ch = getchar();
while (ch!='n')
{
if (ch == SPACE)
putchar(ch);
else
putchar(ch + 1);
ch = getchar();
}
putchar(ch);
return 0;
}
输出
asdfasd
btegbte
C:UsersxhhSourceReposc_study_1Debugc_study_1.exe (进程 32428)已退出,代码为 0。
按任意键关闭此窗口. . .
程序清单4
#include<stdio.h>
#include<ctype.h>
#include<stdbool.h>
#define STOP '|'
int main(void) {
char c;
char prev;
long n_chars = 0L;//字符数
int n_lines = 0;//行数
int n_words = 0;//单词数
int p_lines = 0;//不完整的行数
bool inword = false;//如果c在单词中为true
printf("Enter text to be analyzed () to terminate):n");
prev = 'n';
while ((c = getchar()) != STOP) {
n_chars++;
if (c == 'n')
n_lines++;
if (!isspace(c) && !inword)
{
inword = true;
n_words++;
}
if (isspace(c) && inword)
inword = false;
prev = c;
}
if (prev != 'n')
p_lines = 1;
printf("characters=%1d, words=%d, lines=%d, ", n_chars, n_words, n_lines);
printf("partial lines =%dn", p_lines);
return 0;
}
输出
Enter text to be analyzed () to terminate):
reason is a
powerful servant but
an inadequate master.
|
characters=55, words=9, lines=3, partial lines =0
C:UsersxhhSourceReposc_study_1Debugc_study_1.exe (进程 28616)已退出,代码为 0。
按任意键关闭此窗口. . .
程序清单5
#include<stdio.h>
#include<ctype.h>
int main(void) {
char ch;
printf("Give me a letter of the alphabet, and I will give ");
printf("an animal namenbeginning with that letter.n");
printf("please type in a letter; type # to end my act.n");
while ((ch = getchar()) != '#') {
if ('n' == ch)
continue;
if (islower(ch))
switch (ch)
{
case 'a':
printf("argali, a wild sheep if Asian");
break;
case 'b':
printf("babirusa, a wild pig of Malayn");
break;
case 'c':
printf("coati,racoonlike mammaln");
break;
case 'd':
printf("desman, aquatic, molelike crittern");
break;
case 'e':
printf("echidna, the spiny anteatern");
break;
case 'f':
printf("fisher, brownish martenn");
break;
default:
printf("That's a stumper!n");
}
else
printf("I recongnize only lowercase letters.n");
while (getchar() != 'n')
continue;
printf("please type another letter or a #.n");
}
printf("Bye!n");
return 0;
}
输出
Give me a letter of the alphabet, and I will give an animal name
beginning with that letter.
please type in a letter; type # to end my act.
a
argali, a wild sheep if Asia
please type another letter or a #.
r
That's a stumper!
please type another letter or a #.
dab
desman, aquatic, molelike critter
please type another letter or a #.
r
That's a stumper!
please type another letter or a #.
q
That's a stumper!
please type another letter or a #.
#
Bye!
C:UsersxhhSourceReposc_study_1Debugc_study_1.exe (进程 25436)已退出,代码为 0。
按任意键关闭此窗口. . .
循环–示例(均来自课后习题)
示例1:编写一个程序,创建包含26个元素的数组,并在其中存储26个小写字母,然后打印数组的所有内容。
#include<stdio.h>
int main(void) {
char chars[27] ;
char c = 'a';
for (int i=0;i<26;i++)
chars[i] = c++;
chars[26] = '