linux下程序开发-复合语句及输入输出.笔记
2010年04月24日
[b]小术.. [/b]
..坚强..勇敢..专注..快乐..幸福.. 复合语句
一对大括号{}包围若干条语句组成。
格式:
{[数据说明部分;]
执行语句部分;
}
注意:
(1)在复合语句中的“内部数据描述语句”中定义的变量,是局部变量,仅在复合语句中有效。
(2)复合语句结束的“}”之后,不需要分号,括号是用来结构化(界定范围)的,不是执行语句,所以不需要分号。
(3)复合语句可以出现在任何数据操作语句可以出现的地方。
例:
#include
void main()
{
int a=11,b=21,c=31;
printf("a=%d\tb=%d\tc=%d\n",a,b,c);
{
int b=22;
float c=3.3;
printf("a=%d\tb=%d\tc=%f\n",a,b,c);
a=b;
}
printf("a=%d\tb=%d\tc=%d\n",a,b,c);
}
执行结果:
a=11 b=21 c=31
a=11 b=22 c=3.300000
a=22 b=21 c=31
在复合语句中重新声明的全局变量,只对复合语句作用,复合语句外的参数不受影响
如果在复合语句中直接对参数进行操作,不作声明,则复合语句外的参数受影响
另 用表示标准头文件"stdio.h"表示在当前目录寻找(视为自定义头文件)
程序结构
C语言提供三种结构化语句来控制程序的执行流程:
顺序结构:按照语句书写顺序执行的程序结构
选择结构:又称分支结构,是指有条件地选择要执行的程序段(流程图)
循环结构:重复执行某一程序段
循环结构
1.当循环结构:当条件成立时,反复执行程序段,否则不执行.
2.直到型循环结构:先执行程序段,再判断条件是否成立(至少执行一次程序段)
3.选择型循环结构:根据不同的条件执行不同的程序段
输入输出语句
c语言本身不提供输入输出语句
c语言的输入输出功能由c语言的标准I/O库函数提供
c语言的输入输出库函数名称不是保留字(或关键字).如printf,scanf
字符输入与输出函数
1.字符输入函数
(1)函数原型
int getchar(void)
int是函数的返回值类型,getchar是函数名称,void表明无参数
(2)函数功能
从标准输入设备(一般为键盘)读入一个字符,返回该字符的ASCII码值,并且将高入的字符"回显"到屏幕
例:
#include
void main()
{
int a;
char b;
a=getchar();
b=getchar();
printf("a=%c\ta=%d\tb=%c\tb=%d\n",a,a,b,b);
}
注:
%c是输出一个字符
%d是输出一个整型值
调用函数getchar时,程序执行被中断,等待用户从键盘输入数据,当用户键入字符并回车以后,程序继续运行,当用户输入字符后未回车,则输入的内容一直保留在键盘缓冲区中,只有用户键入回车键后字符输入函数getchar才进行处理,回车键也作为一个字符读入,所以,如果程序中有两个以上函数应该一次性输入所需要字符地最后再读取回车键
无论输入的是英文字母或标点符号还是数字,都是作为字符输入.
字符输出函数
(1)函数原型
int putchar(int);
int:函数返回值类型 putchar函数名
例:
#include
main()
{
int a=65;
char b='B';
putchar(a);
putchar(65+1);
putchar(b);
putchar('B'+1);
}
运行结果:ABBC
函数调用的一般形式:
printf("格式控制字符串",输出项列表);
格式控制字符:
(1)组成:普通字符\转义字符\格式说明
普通字符:按原样输出,主要用于输出提示信息
转义字符:指明特定的操作 例:\t\n
格式说明:由"%"和"格式字符串"组成
例:
#include
void main()
{
int a=97,b=98;
printf("1:%d %d\n",a,b); /*普通字符,原样输出*/
printf("2:%d,%d\n",a,b); /*a,b以十进制整数形式输出*/
printf("3:%c,%c\n",a,b); /*a,b以字符形式输出*/
printf("4:a=%d,b=%d",a,b);
}
运行结果:
1:97 98
2:97,98
3:a,b
4:a=97,b=98
格式说明的形式::
%[flags][width][.prcc][F|N|h|L][typc]
flags:可选的标志字符
-:左对齐输出,缺省为右对齐输出
+:正数输出为加号,负数输出为减号
空格:正数输出空格代替加号,负数输出减号
例:%+d,%-d,% d
width:十进制整数,指定输出的宽度
指定宽度>实际宽度, 被空格
指定宽度c 输出一个字符
s 输出字符串
f 以小数形式输出单、双精度数,隐含输出6位小数
e(E) 以指数形式输出单、双精度数,小数位为6位
g(G) 由给定的值和精度自动选用%f或%c或%E格式
% 输出百分号
例1:
printf(“%d\n",100);
printf("%5d\n",100);
printf("%8d\n%8d",100,100*100);
printf("%4c,%c\n",'A','A');
printf("%-8s,%8.2s","Name","Name")
例2:
#include
void main()
{
int i=8;
printf("%d\t%d\t%d\n",++i,--i,i--); /*计算方向:
void main()
{
int a=3,b=4;
printf("%d\n",(a=b,b,a+3));
printf("%d\n",a=b,b,a+3);
}
输出结果:
7
4
格式输入函数
scanf 遇文件结束返回EOF ,出错返回0
scanf(“格式控制字符串”,地址列表);
格式控制字符串,必须用英文的双引号括起来,由普通字符和格式说明字符地组成。
地址列表:由若干个地址组成的列表
变量的地址、字符串的首地址、指针变量等,以(,)间隔
格式控制符:
(1)组成:普通字符、格式说明
普通字符:键盘输入时,要按原样输入,一般起分隔或提示的作用
格式说明: %[*][width][F|N][h|l]type
例1:
scanf("i=%d",&i);/*把用户的输入存放到变量i的地址*/
printf("i=%d",i);
&:是取地址的符号
scanf("%d%d%d",&a,&b,&c);
例2:
#include
void main(0
{
int a,b;
printf("input a,b:");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d",a,b);
}
运行结果:
intput a,b
输入并回车后,
输出
a=XX,b=XX
注意事项:
scanf()的格式控制字符串中没有转义字符。如scanf("%d\n",&a);是错误的。
scanf()的格式控制字符串中的普通字符不是用来显示的,而是输入时要求照普通字符输入的。
scnaf()中参数的第二部分一定是地址列表,不能是表达式。
例1:输入一个华氏温度,输出对应的摄氏温度。输出取一位小数。转换公式为C=5/9(F-32)
#include
void main()
{
float c,f;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%.1f\n",c);
}
例2:输入两个整数a、b,将它们交换,如a=3,b=5,交换后a=5,b=3
#include
void main()
{
int a,b,c;
scnaf("a=%d,b=%d",&a,&b)
printf("a=%d,b=%d\n",a,b);
c=a;
a=b;
b=c;
printf("a=%d,b=%d\n",a,b);
}
例3:从键盘输入圆半径,求圆的面积和周长,结果保留两位小数。
#include
#include
void main()
{
float r,area,peri;
scanf("%f",&r);
area=3.14*pow(r,2);/*函数pow(x,y)表示x的y次方*/
peri=2*3.14*r
printf("area=%.2f,peri=%.2f\n",area,peri);
}
2010年04月24日
[b]小术.. [/b]
..坚强..勇敢..专注..快乐..幸福.. 复合语句
一对大括号{}包围若干条语句组成。
格式:
{[数据说明部分;]
执行语句部分;
}
注意:
(1)在复合语句中的“内部数据描述语句”中定义的变量,是局部变量,仅在复合语句中有效。
(2)复合语句结束的“}”之后,不需要分号,括号是用来结构化(界定范围)的,不是执行语句,所以不需要分号。
(3)复合语句可以出现在任何数据操作语句可以出现的地方。
例:
#include
void main()
{
int a=11,b=21,c=31;
printf("a=%d\tb=%d\tc=%d\n",a,b,c);
{
int b=22;
float c=3.3;
printf("a=%d\tb=%d\tc=%f\n",a,b,c);
a=b;
}
printf("a=%d\tb=%d\tc=%d\n",a,b,c);
}
执行结果:
a=11 b=21 c=31
a=11 b=22 c=3.300000
a=22 b=21 c=31
在复合语句中重新声明的全局变量,只对复合语句作用,复合语句外的参数不受影响
如果在复合语句中直接对参数进行操作,不作声明,则复合语句外的参数受影响
另 用表示标准头文件"stdio.h"表示在当前目录寻找(视为自定义头文件)
程序结构
C语言提供三种结构化语句来控制程序的执行流程:
顺序结构:按照语句书写顺序执行的程序结构
选择结构:又称分支结构,是指有条件地选择要执行的程序段(流程图)
循环结构:重复执行某一程序段
循环结构
1.当循环结构:当条件成立时,反复执行程序段,否则不执行.
2.直到型循环结构:先执行程序段,再判断条件是否成立(至少执行一次程序段)
3.选择型循环结构:根据不同的条件执行不同的程序段
输入输出语句
c语言本身不提供输入输出语句
c语言的输入输出功能由c语言的标准I/O库函数提供
c语言的输入输出库函数名称不是保留字(或关键字).如printf,scanf
字符输入与输出函数
1.字符输入函数
(1)函数原型
int getchar(void)
int是函数的返回值类型,getchar是函数名称,void表明无参数
(2)函数功能
从标准输入设备(一般为键盘)读入一个字符,返回该字符的ASCII码值,并且将高入的字符"回显"到屏幕
例:
#include
void main()
{
int a;
char b;
a=getchar();
b=getchar();
printf("a=%c\ta=%d\tb=%c\tb=%d\n",a,a,b,b);
}
注:
%c是输出一个字符
%d是输出一个整型值
调用函数getchar时,程序执行被中断,等待用户从键盘输入数据,当用户键入字符并回车以后,程序继续运行,当用户输入字符后未回车,则输入的内容一直保留在键盘缓冲区中,只有用户键入回车键后字符输入函数getchar才进行处理,回车键也作为一个字符读入,所以,如果程序中有两个以上函数应该一次性输入所需要字符地最后再读取回车键
无论输入的是英文字母或标点符号还是数字,都是作为字符输入.
字符输出函数
(1)函数原型
int putchar(int);
int:函数返回值类型 putchar函数名
例:
#include
main()
{
int a=65;
char b='B';
putchar(a);
putchar(65+1);
putchar(b);
putchar('B'+1);
}
运行结果:ABBC
函数调用的一般形式:
printf("格式控制字符串",输出项列表);
格式控制字符:
(1)组成:普通字符\转义字符\格式说明
普通字符:按原样输出,主要用于输出提示信息
转义字符:指明特定的操作 例:\t\n
格式说明:由"%"和"格式字符串"组成
例:
#include
void main()
{
int a=97,b=98;
printf("1:%d %d\n",a,b); /*普通字符,原样输出*/
printf("2:%d,%d\n",a,b); /*a,b以十进制整数形式输出*/
printf("3:%c,%c\n",a,b); /*a,b以字符形式输出*/
printf("4:a=%d,b=%d",a,b);
}
运行结果:
1:97 98
2:97,98
3:a,b
4:a=97,b=98
格式说明的形式::
%[flags][width][.prcc][F|N|h|L][typc]
flags:可选的标志字符
-:左对齐输出,缺省为右对齐输出
+:正数输出为加号,负数输出为减号
空格:正数输出空格代替加号,负数输出减号
例:%+d,%-d,% d
width:十进制整数,指定输出的宽度
指定宽度>实际宽度, 被空格
指定宽度c 输出一个字符
s 输出字符串
f 以小数形式输出单、双精度数,隐含输出6位小数
e(E) 以指数形式输出单、双精度数,小数位为6位
g(G) 由给定的值和精度自动选用%f或%c或%E格式
% 输出百分号
例1:
printf(“%d\n",100);
printf("%5d\n",100);
printf("%8d\n%8d",100,100*100);
printf("%4c,%c\n",'A','A');
printf("%-8s,%8.2s","Name","Name")
例2:
#include
void main()
{
int i=8;
printf("%d\t%d\t%d\n",++i,--i,i--); /*计算方向:
void main()
{
int a=3,b=4;
printf("%d\n",(a=b,b,a+3));
printf("%d\n",a=b,b,a+3);
}
输出结果:
7
4
格式输入函数
scanf 遇文件结束返回EOF ,出错返回0
scanf(“格式控制字符串”,地址列表);
格式控制字符串,必须用英文的双引号括起来,由普通字符和格式说明字符地组成。
地址列表:由若干个地址组成的列表
变量的地址、字符串的首地址、指针变量等,以(,)间隔
格式控制符:
(1)组成:普通字符、格式说明
普通字符:键盘输入时,要按原样输入,一般起分隔或提示的作用
格式说明: %[*][width][F|N][h|l]type
例1:
scanf("i=%d",&i);/*把用户的输入存放到变量i的地址*/
printf("i=%d",i);
&:是取地址的符号
scanf("%d%d%d",&a,&b,&c);
例2:
#include
void main(0
{
int a,b;
printf("input a,b:");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d",a,b);
}
运行结果:
intput a,b
输入并回车后,
输出
a=XX,b=XX
注意事项:
scanf()的格式控制字符串中没有转义字符。如scanf("%d\n",&a);是错误的。
scanf()的格式控制字符串中的普通字符不是用来显示的,而是输入时要求照普通字符输入的。
scnaf()中参数的第二部分一定是地址列表,不能是表达式。
例1:输入一个华氏温度,输出对应的摄氏温度。输出取一位小数。转换公式为C=5/9(F-32)
#include
void main()
{
float c,f;
scanf("%f",&f);
c=5.0/9*(f-32);
printf("%.1f\n",c);
}
例2:输入两个整数a、b,将它们交换,如a=3,b=5,交换后a=5,b=3
#include
void main()
{
int a,b,c;
scnaf("a=%d,b=%d",&a,&b)
printf("a=%d,b=%d\n",a,b);
c=a;
a=b;
b=c;
printf("a=%d,b=%d\n",a,b);
}
例3:从键盘输入圆半径,求圆的面积和周长,结果保留两位小数。
#include
#include
void main()
{
float r,area,peri;
scanf("%f",&r);
area=3.14*pow(r,2);/*函数pow(x,y)表示x的y次方*/
peri=2*3.14*r
printf("area=%.2f,peri=%.2f\n",area,peri);
}