读C程序设计语言第二章注意
1、sqrt()函数的参数是double类型的,不是double有可能会出错。要强制转换下:
sqrt((double) n);
2、数组中变量表示下标用到自增或者自减一般情况下都是:
str[i++]而不是str[++i];
因为i++可保证变量的一致性,是先使用i的值再++。
其余的情况下基本都一样,因为一般是i++;这一句结束,结束的时候值都会增加1的。
**分割线————————————————————-
不知不觉已经进入第三章了,没有详细的记叙,但是也已经完成了。
第三章需要注意的:
1、switch:
每个分支一个break;
格式:
while((c=getchar())!=EOF){
switch(c){
case‘0’:
case‘1’:
。。。。
default:
}
}
练习2-3代码:
//注意一:输入字符串的fgets可以存储换行和制表符
//注意二:打印'\'必须要写成'\\'形式才能打印输出
//关于注意二见本书P3和P29
![完整的转义字符序列]
(http://img.blog.youkuaiyun.com/20160420104427418)
#define _CRT_SECURE_NO_DEPRECATE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void escape(char s[], char t[]);
int main()
{
char s[1000], t[1000],d;
//while (gets(t) != EOF)
//{
fgets(t, 1000, stdin);
fflush(stdin);
escape(s, t);
system("pause");
return 0;
}
void escape(char s[1000],char t[])
{
int len2 = strlen(t);
char c,d;
for (int j = 0; j < len2; j++)
{
c = t[j];
switch (c)
{
case '\n' :
s[j] = '\\' ;
s[j + 1] = 'n';
len2++;
j++;
break;
case '\t':
s[j] = '\\';
s[j + 1] = 't';
len2++;
j++;
break;
default:
d = t[j];
s[j] = d;
break;
}
}
for (int i = 0; i < len2; i++)
{
printf("%c", s[i]);
}
}
2、for和while
1、格式:
for(i=0 , j=strlen(s)-1 ; i