Book
1.5.4
1
2
3
4
5
6
7
8
9
10
11
while (c = getchar() != EOF)
{
if(c == ‘ ‘ || c == ‘n’)
flag= 1;
else if (flag == 1)
{
flag = 0;
count++;
}
}
/*判断是否为一个单词的方法是检测空格或换行符,如果存在,设置一个标志表示现在位置是单词外,在该标志值不变时均不增加单词数。当读入非空格字符时,判断是否为首次读入,如果是就将标志置零,同时单词数加一。不能仅仅依据读入的是否为空格就做出判断。*/
1.6
1.
1
2
3
4
while (c = getchar()) != EOF)
if (c >= ‘0’ && c <= ‘9’)
++ndigit[c-‘0’];
/*实际上由getchar()得到的变量可以以整数的方式存储,该整数的值就是字符对应的ASCII码值,因此如果输入为’0’到’9’,减去’0’即可得到整数0至9,用于对数组对应位置进行处理。*/
2.
C语言中的char类型实际上可以等同于一个1byte的有符号整型数,可以将具体数字直接赋给char类型,如char a = 11,也可以像int类型数据一样进行各种运算。当使用a=getchar()将一个输入字符赋给a时,实际上a的值即等于输入的字符,有等于该字符对应的ASCII码值,具体输出的是ASCII码编号还是字符,要看输出控制是%d还是%c。
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
char c,d; //int类型也具有相同效果
c=65;
printf("%cn",c);
d='A';
printf("%dn",d);
return0;
}
1.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int getline(char s[],int lim) /*将一行字符串复制到s中并返回其长度,注意在结尾加了换行符和字符串结束符*/
{
int c,i;
for(i=0;i<lim-1&& (c = getchar()) !=EOF && c != 'n',i++)
s[i]= c;
if(c == 'n')
{
s[i]= c;
c++;
}
s[i]= '';
return i;
}
void copy(char to[],char from[]) //字符串拷贝
{
int i = 0;
while((to[i]= from[i]) != '') //在while函数里可以在判断语句里嵌套赋值语句
i++;
}
1.10
如果外部变量的定义出现在使用它的函数之前,那么在那个函数中就没有必要使用extern声明。所以一般外部变量的定义均放在源文件的开始处。而通常把变量和函数的extern声明放在一个单独的文件中,这个文件习惯上称之为头文件,并在每个文件的开头使用#include语句把所要用的头文件包含进来。
Exercise Solution
1.8
在利用getchar()对一段文本进行检测时,如检测空格数,单词数,换行符数等,常用的代码为:
1
2
3
4
while(c = getchar() != EOF)
{
//Somejudgement
}
1.18
欲查找一串输入结尾处连续的空格以及换行符等,思想为先将输入的字符串遍历一次,然后从尾部开始查找,如果一直搜索到头任然没有跳出循环,就说明该行没有空格,如果在中途跳出循环,就说明该行中存在空格或换行符。该方法也可得到输入的字符串长度加一的值。常用的代码为:
1
2
3
4
5
6
7
8
9
10
11
while(s[i] != 'n')
i++;
i--;
while (i >= 0 && (s[i] == ' ' ||s[i] == 't'))
i--;
if (i >= 0)
{
i++;
s[i]= 'n';
s[i+1]= '';
}
1.24
判断括号和引号是否匹配的方法是:在程序输入的过程中,每当输入一个左引号或括号,设置一个计数器,计数器加一;每当输入一个右引号或括号,计数器减一。若输入过程中计数器的值为负,说明括号肯定不匹配;若输入完成后计数器的值不为零,说明括号肯定不匹配。
最后
以上就是重要学姐最近收集整理的关于《C程序设计语言》学习笔记(一)——导言的全部内容,更多相关《C程序设计语言》学习笔记(一)——导言内容请搜索靠谱客的其他文章。
发表评论 取消回复