1 语句及赋值语句
1.1 C语句分类
- 表达式语句:表达式加分号。
- 函数调用语句:函数名及其参数加上分号。如:printf("Hello world!");
- 空语句:只有分号";"组成。
- 控制语句
- 条件判断语句:if语句,switch语句
- 循环语句:while语句,do while语句,for语句
- 转向语句:break语句,continue语句,goto语句,return语句
- 复合语句:将多个语句用大括号{}括起来组成的语句。在程序中,应把复合语句看成是单条语句。括号}外不能加分号。
注:
- 分号预示一条语句的结束,但并不是每条语句都需要分号作为结束标志。
- if语句、for语句和while语句不需要分号。
- 复合语句是唯一不用分号结尾的语句。
1.2 赋值语句
赋值表达式加分号所构成的表达式语句。
以下是错误的:
int a=b=c=10;
以下是正确的:
int a=10, b=10, c=10;
int a,b,c;
a=b=c=10;
2 字符及字符串的输入与输出
函数在头文件“stdio.h”中定义。
- 字符输入函数:getchar。只能接收一个字符,得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,还可以作为表达式的一部分。如:putchar(getchar());
- 字符输出函数:putchar。只能输出一个字符。输出的字符可以是字符型变量、整型变量或使用常量。
- 字符串输入函数:gets
- 字符串输出函数:puts
例1-getchar/putchar:
include <stdio.h>
main()
{
printf("1 -->\n");
putchar('A');
putchar('\101');
putchar('\n');
printf("2 -->\n");
char a, b, c;
a = 'y';
b = 'e';
c = 's';
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
printf("3 -->\n");
char m, n;
m = getchar();
n = getchar();
putchar('\n');
putchar(m);
putchar(n);
putchar('\n');
}
运行结果为:
例2-gets/puts:
#include <stdio.h>
main()
{
char k[20];
puts("Please input a string:");
gets(k);
puts("The input string is:");
puts(k); //等价于printf("%s\n", k)
}
运行结果为:
3 格式输入函数与输出函数
函数在头文件“stdio.h”中定义。
3.1 格式输出函数:printf
调用形式:printf(格式控制,输出表列)
如:
printf("%d, %d", a, b);
格式字符 | 功能 |
---|---|
d,i | 以有符号的十进制形式输出整数。 用法: - %d:按整型数据的实际长度输出。 - %md:若数据位数小于指定输出宽度m,则左端补以空格;若大于m,则按实际位数输出。 - %1d:输出长整型数据。 |
u | 以无符号的十进制形式输出整数 |
o | 以八进制无符号形式输出整数。用法与%d类似。 |
x,X | 以十六进制无符号形式输出整数。x表示小写输出,X表示大写输出。用法与%d类似。 |
c | 以字符形式输出,只输出一个字符。 |
s | 以字符串形式输出。 用法: - %s:将字符串按实际长度输出。 - %ms:若字符串长度小于指定输出列数m,则左端补以空格;若大于m,则输出字符串全部。 - %-ms:若字符串长度小于指定输出列数m,则右端补以空格;若大于m,则输出字符串全部。 - %m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格(即右对齐)。m小于n时,m自动取n值。 - %-m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的左侧,右补空格(即左对齐)。m小于n时,m自动取n值。 |
f | 以小数形式输出 |
e,E | 以指数形式输出。用e时,指数以e表示;用E时,指数以E表示。 用法: - %e:按数据实际宽度和小数位数输出。 - %m.ne:输出的数据占m列,其中有n位小数。若数值长度小于m,则左端补空格。 - %-m.ne:输出的数据占m列,其中有n位小数。若数值长度小于m,则右端补空格。 注:指数符号"+"也算一位。 |
g,G | 根据数字的大小,自动选%f或%e格式输出,选用%f和%e中输出宽度较短的一种格式,不输出无意义的0。若以%e格式输出,则指数以大写表示。 |
3.2 格式输入函数:scanf
调用形式:scanf(格式控制,地址列表)
格式控制的一般形式:%[*][域宽][长度]类型
如:
scanf("%d, %d", &a, &b);
- 地址列表中给出各变量的地址,地址是由地址运算符"&"后跟变量名所组成。
- 用户在输入时,必须按照格式控制中的形式输入数据。如果格式控制中出现%d%d即两个%d之间无任何符号,则输入的两个数据之间可以一个或多个空白字符作为间隔,这些空白字符包括空格、换行、制表符(tab)。
- 格式控制的一般形式中的“*”,是用来表示该输入项读入后不赋予的变量,即跳过该输入值。如:scanf("%d %*d %d", &a, &b); 当输入98 234 77时,98被赋值给a,77被赋值给b,234被跳过。
- 格式控制的一般形式中的域宽应为正整数。如果输入的数据的宽度大于域宽,则只将相应域宽的数据赋值给变量。如:scanf("%5d", &a); 当输入12345678时,只把12345赋给变量a。
- 格式控制的一般形式中的长度格式符为l和h,l表示输入长整型数据和双精度浮点数;h表示输入短整型数据。
scanf函数格式字符也printf函数的格式字符类似。