C语言基础知识.ppt
第三章 输入与输出,#includefunc1(.) .func2(.) .int main(.) .,C语言程序的结构,C语言程序,源程序文件1源程序文件2源程序文件n,预编译命令函数main函数1函数n,函数首部函数体,3.1 C语句分类,说明语句控制语句表达式语句空语句复合语句,a=3;x=y+z; i+;max(a,b);printf("%d",x);,;,t=x; x=y; y=t; ,if(a>b)max=a;while(i>0) i-;,int x,y;float s=3.5;,if(表达式) 语句 else 语句;for(表达式) 语句;while(表达式) 语句;do 语句 while (表达式);continue ;break ;switch goto return,控制语句,#include int main( ) int i, num=0, word=0; char string81; gets(string); for(i=0; stringi!='0' i+) if (stringi=' ') word=0; else if(word=0) word=1; num+; printf("%d n",num); return 0;,3.2 数据的输出, C本身不提供输入/出语句,输入/出操作由函数实现 C的标准库函数中提供了一些输入/出函数 stdio.h, 输入/出操作过程,输入设备(键盘),输 入缓冲区,输 出缓冲区,输出设备(显示器), printf格式:printf(格式控制串,输出表列)功能:按格式控制串指定的格式输出输出表列中的内容要求:#include "stdio.h",格式控制 由%、格式字符、普通字符组成, 普通字符原样输出。,doxu,feg,整数格式,无符号整数格 式,c,s,字符格式,字符串格式,实数格式,int a=3, b=4, c=12345;printf("a=%db=%dn",a,b);printf("a=%4d c=%4dn",a,c);,a=3b=4a= 3c=12345,d格式输出十进制整数%d 按数据的实际长度输出int%md 按最小长度m输出int%ld 按数据的实际长度输出long%mld 按最小长度m输出long,unsigned int a;a=100;printf("%o,%8o", a, a);,o格式输出八进制无符号整数(不含前导0)%o %mo %lo %mlo,144,144,unsigned int a;a=100;printf("%x,%8x", a, a);,x(X)格式输出十六进制无符号整数%x %mx %lx %mlx,64,64,unsigned int a=65535;printf("a=%o, %x, %un", a, a, a);,u格式输出十进制无符号整数%u %mu %lu %mlu,a=177777,ffff,65535,int a=65; char c= 'a'printf("%d %c %4cn",c,a,c);,97Aa,c格式输出一个字符%c %mc,printf("%sn%3sn%7.2sn%.4sn%-5.3sn", "china", "china", "china", "china", "china");,chinachinachchinchi,s格式输出一个字符串%s %ms %-ms %m.ns %-m.ns,float s=123.456; double x=3333333333333.333333333; printf("%fn%fn",s,x); printf("%.2f %6.1fn",s,s);,float f=123.456;printf("%8.1f%8.1f%8.1fn",3.0,12.5,523.36);printf("%f %10f %10.2f %-10.2f n", f,f,f,f);,123.4560013333333333333.333500123.46 123.5,f格式以小数形式输出实数,单、双精度均可 %f%m.nf n为小数位数,实施四舍五入%-m.nf 左对齐,3.0,12.5,523.4,123.456001,123.456001,123.46,123.46,float s=123.456;printf("%en%10en%10.2en%-10.2en%.2en", s,s,s,s,s);,1.234560e+0021.234560e+0021.23e+0021.23e+0021.23e+002,e(E)格式 以指数形式输出实数 %e X.XXXXXXe+XXX %m.ne n为小数位数 %-m.ne,d,x,o,u,c,s,e,f,%,格式字符:,十六进制无符号整数,不带符号十进制整数,十进制整数,指数形式浮点小数,单个字符,字符串,八进制无符号整数,小数形式浮点小数,百分号本身,int a=567;printf ( "%d",a);,int a=255;printf("%x",a);,int a=65;printf("%o",a);,int a=567;printf("%u",a);,char a=65;printf("%c",a);,printf("%s","ABC");,float a=567.789;printf("%e",a);,float a=567.789;printf("%f",a);,printf(“6%");,567,ff,101,567,A,ABC,5.677890e+002,567.789000,6%,3.3 数据的输入,int a,b,c;scanf("%d %d %d",1 2 3 ,1 2 3 ,scanf("%2d %*3d %2d",输入:1234567,scanf("%3d%3d",输入:123456CR,scanf("%3c",输入:abc, scanf格式:scanf(格式控制,地址表列)功能:根据格式控制指出的格式从键盘上输入 数据,并依次放入地址表列指定的存储 单元中,格式字符 d o x c s e f,附加的格式说明符 l %ld %lf %lo %lx %le h %hd %ho %hx m 输入长度 * 本输入项读入后不赋给任何变量 忽略输入,讨论scanf("%d",a);scanf("a=%d",数据的输入结束情况有: 空格、回车、Tab 长度结束 非法输入输入实型数据时不能规定精度, 输入double类型变量必须必须用格式符%lf 输入float类型变量必须必须用格式符%f非控制字符原样输入不要以空格或回车作为格式控制串的结束符,讨论:输入12345这是几个整数?,输入字符/字符串时多余的空格如何去除?,char a,b,c; scanf("%c",输入:try,方法1:使用getchar()方法2:在%c前加空格方法3:用%*c读掉字符,该如何为如下输入数据书写输入语句:2 3 42,3,42 3 4abca=5,b=6123456(两个变量), putchar格式:putchar(字符)功能:向输出设备输出一个字符要求:在程序开头加预编译命令: #include "stdio.h" 或 #include ,#include "stdio.h"int main( )char a,b; a= 'B' b= 'O' putchar(a); putchar(b); putchar('Y'); return 0;,3.4 字符的输入输出, getchar格式:getchar()功能:从键盘上输入一个字符要求:#include "stdio.h",#include "stdio.h"int main( ) char c; c=getchar( ); putchar(c); putchar(getchar( ); return 0;,华氏温度转换为摄氏温度,scanf("%f",int main() float f,c; scanf("%f",编程示例,计算存款本息。设银行一年定期存款的利息是2.25%,到期后转存。n年后本息是多少?,#includeint main() double rate=0.0225; /rate表示年利率 double capital; /capital表示本金 double profit; / profit表示本及息 int n; /n表示存款年数 printf("请输入存款年数及本金"); scanf("%d,%lf",编程示例,int main() 说明程序中所使用变量及类型 输入数据 计算 输出结果 return 0;,int main() 说明程序中所使用变量及类型 输入数据 计算 输出结果,int main() double rate=0.0225; /rate表示年利率 double capital; /capital表示本金 double profit; / profit表示本及息 int n; /n表示存款年数 printf("请输入存款年数及本金"); scanf("%d,%lf",#include "stdio.h"int main( )char c1,c2; c1=getchar( ); c2=c1+32; printf("%cn",c2); return 0;,大写改小写,编程示例,阅读以下程序#include int main( )float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",1.将数据输出到文件,FILE *fp;unsigned int a=65535;fp=fopen("data.txt", "w");fprintf(fp, "a=%o, %x, %un", a, a, a);fclose(fp);,3.5文件输入输出,2.从文件中读入数据,int a,b,c;FILE *fp;fp=fopen("data.txt","r");fscanf(fp,"%d %d %d",从文件中读取数据示例,int main( )FILE *fp; fp=fopen("one.txt","r"); fscanf(fp, "%d%d%d",