个人学习C程序设计语言(第2版·新版)笔记

\n换行

\t制表符

\a 响铃符 \\ 反斜杠

\b 回退符 \? 问号

\f 换页符 \' 单引号

\n 换行符 \" 双引号

\r 回车符 \ooo 八进制

\t 横向制表符 \xhh 十六进制

\v 纵向制表符

在运算符前后各放一个空格是运算组合更清楚,花括号的位置不重要,选择一种风格,并保持下去。

所有变量必须先说明后使用,说明通常放在函数开始处的的可执行语句之前。用于说明变量性质。

int,float类型的取值范围取决于所使用的机器。int型一般是16位取值在-32768至32767之间,也有32位表示的。float类型一般是32位,至少有6位有效数字,取值在 之间,printf是个通用输出格式函数,printf(“%d\t%d\n”,a,b);该函数的数目和类型都必须匹配,否则出错。printf函数其实不是c语言本身的一部分,C语言没有定义输入输出的功能。printf是标准函数库的一个有用函数,标准库函数一般在c中都可以用。相对于printf的函数是scanf函数。

如果某个算术运运算。算符的运算分量均为整数类型,那么执行整数。然而,如果某个算术运算符有一个浮点运算分量和一个整数运算分量,那么这个整数运算分量在开始之前会被转换成浮点型。5/9程序的结果是0.  5.0/9程序执行的是两个浮点数消除,不需要截取。

 

%d  打印十进制整数

%6d 打印十进制整数,至少6个字符宽

%f  打印浮点数

%6.2f        打印浮点数,至少6个字符宽,小数点后有2位小数

%o  表示八进制

%x    表示十六进制

%c    表示字符串

%s    表示字符串

%%   表示百分号%

 

#define 名字  替换文本

 

#include <stdio.h>

#define LOWER 0 /* lower limitof table */

#define UPPER 300 /* upperlimit */

#define STEP 20 /* step size */

/* print FahrenheitCelsius

table */

main()

{

int fahr;

for (fahr = LOWER; fahr <=UPPER; fahr = fahr + STEP)

printf("%3d %6.1f\n",fahr, (5.0/9.0)*(fahr32));

}

1.5字符输入输出

标准库提供了一次读/写一个字符的函数,其中最简单的是getchar和putchar两个函数。每次调用时,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回。也就是说,在执行语句

C=getchar();之后,变量c中将包含输入流中的下一个字符。

每次调用putchar函数时将打印一个字符。

1.5.1 文件复制

读一个字符

While(该字符不是文件结束指示符)

         读出刚读入的字符

         读下一个字符

#include <stdio.h>

/* copy input to output; 1stversion */

main()

{

int c;

c = getchar();

while (c != EOF) {

putchar(c);

c = getchar();

}

}

这里有个问题?为什么c是int型。因为字符在键盘、屏幕或其他任何地方无论以什么形式表现,它在机器内部都是以位形式存储的。Char类型专门用于存储这种字符型数据,当然int型也可以用于存储字符型数据。

这里需要解决如何区分文件中有效数据与输入结束符的问题。C语言在没有输入是,getchar将返回一个特殊值,这个特殊值与任何实际的字符都不同,称为EOF(end of file)。在我们声明变量c的时候,必须让他能存放getchar函数返回的任何值。这里之所以不把c声明成char类型,是因为它必须足够大,除了能存储任何可能的字符外还要能存储文件结束符EOF。因此将c声明成int。

EOF定义在头文件<stdio.h>是个整数型。

上面那个程序可改写成下面简练形式

#include <stdio.h>

/* copy input to output; 2ndversion */

main()

{

int c;

while ((c = getchar()) != EOF)

putchar(c);

}

这里c = getchar()需要有个括号,不然的话c = getchar() != EOF等于c = (getchar() != EOF),这不是我们想要的。

1.5.2字符计数

#include <stdio.h>

/* count characters in input;1st version */

main()

{

long nc;

nc = 0;

while (getchar() != EOF)

++nc;

printf("%ld\n", nc);

}

Double类型可以处理更大的数字。

#include <stdio.h>

/* count characters in input;2nd version */

main()

{

double nc;

for (nc = 0; gechar() != EOF;++nc)

;

printf("%.0f\n", nc);

}

%.0f表示强制不打印小数点和小数部分。因此小数部分的位数为0.

1.5.3行计数

#include <stdio.h>

/* count lines in input */

main()

{

int c, nl;

nl = 0;

while ((c = getchar()) != EOF)

if (c == '\n')

++nl;

printf("%d\n", nl);

}

这里,单引号中的字符表示一个整型值,该值等于此字符在机器字符集中对应的数值,我们称之为字符常量。但是,它只不过是小的整型数的另一种写法而已。例如,’A’是一个字符常量,在ASCII字符集中,其值是65.

1.5.4单词计数

#include <stdio.h>

#define IN 1 /* inside a word*/

#define OUT 0 /* outside a word*/

/* count lines, words, andcharacters in input */

main()

{

int c, nl, nw, nc, state;

state = OUT;

nl = nw = nc = 0;

while ((c = getchar()) != EOF){

++nc;

if (c == '\n')

++nl;

if (c == ' ' || c == '\n' || c = '\t')

state = OUT;

else if (state == OUT) {

state = IN;

++nw;

}

}

printf("%d %d %d\n",nl, nw, nc);

}

1.7函数

int power(int base, int n)

声明参数的类型、名字以及该函数返回的结果类型。Power函数的参数使用的名字只在power函数内部有效,对其他任何函数都是不可见的:其他函数可以使用与之相同的参数名字而不会引起冲突。变量i和p也是这样:power函数中的i和main函数中的i无关。

#include <stdio.h>

int power(int m, int n);

/* test power function */

main()

{

int i;

for (i = 0; i < 10; ++i)

printf("%d %d %d\n", i, power(2,i), power(3,i));

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值