300 likes | 437 Views
第三章 键盘输入与屏幕输出. #include<stdio.h> func1(....) { ....... } func2(....) { ....... } int main(....) { ....... }. C 语言程序的结构. 预编译命令 函数 main 函数 1 …… 函数 n. 函数首部 函数体. 源程序文件 1 源程序文件 2 ……… 源程序文件 n. C 语言程序. int x,y; float s=3.5;. 3.1 C 语句分类. 说明语句 控制语句 表达式语句 空语句
E N D
第三章 键盘输入与屏幕输出 #include<stdio.h> func1(....) { ....... } func2(....) { ....... } int main(....) { ....... }
C语言程序的结构 预编译命令 函数main 函数1 …… 函数n 函数首部 函数体 源程序文件1 源程序文件2 ……… 源程序文件n C语言程序
int x,y; float s=3.5; 3.1 C语句分类 说明语句 控制语句 表达式语句 空语句 复合语句 a=3; x=y+z;i++; max(a,b); printf("%d",x); if(a>b)max=a; while(i>0) i--; {t=x; x=y; y=t; } ;
控制语句 #include <stdio.h> int main( ) { int i, num=0, word=0; char string[81]; gets(string); for(i=0; string[i]!='\0'; i++) if (string[i]== ' ') word=0; else if(word==0) {word=1; num++; } printf("%d \n",num); return 0; } if(表达式) 语句 else 语句; for(表达式) 语句; while(表达式) 语句; do 语句 while (表达式); continue ; break ; switch goto return
3.2 数据的输出 C本身不提供输入/出语句,输入/出操作由函数实现 C的标准库函数中提供了一些输入/出函数 stdio.h 输入/出操作过程 输 入 缓冲区 输 出 缓冲区 输入设备 (键盘) 输出设备 (显示器)
% %本身 ᴥprintf 格式:printf(格式控制串[,输出表列]) 功能:按格式控制串指定的格式输出输出表列中的内容 要求:#include "stdio.h" • 格式控制 由%、格式字符、普通字符组成, 普通字符原样输出。 字符格式 f e g 实数格式 整数格式 d o x u c 无符号整数格 式 字符串 格式 s
d格式 输出十进制整数 %d 按数据的实际长度输出int %md 按最小长度m输出int %ld 按数据的实际长度输出long %mld 按最小长度m输出long int a=3, b=4, c=12345; printf("a=%d b=%d\n",a,b); printf("a=%4d c=%4d\n",a,c); a=3b=4 a= 3c=12345
o格式 输出八进制无符号整数(不含前导0) %o %mo %lo %mlo unsigned int a; a=100; printf("%o,%8o", a, a); 144,144
x(X)格式 输出十六进制无符号整数 %x %mx %lx %mlx unsigned int a; a=100; printf("%x,%8x", a, a); 64,64
u格式 输出十进制无符号整数 %u %mu %lu %mlu unsigned int a=65535; printf("a=%o, %x, %u\n", a, a, a); a=177777,ffff,65535
c格式 输出一个字符 %c %mc int a=65; char c= 'a'; printf("%d %c %4c\n",c,a,c); 97Aa
s格式 输出一个字符串 %s %ms %-ms %m.ns %-m.ns printf("%s\n%3s\n%7.2s\n%.4s\n%-5.3s\n", "china", "china", "china", "china", "china"); china china ch chin chi
f格式 以小数形式输出实数,单、双精度均可 %f %m.nf n为小数位数,实施四舍五入 %-m.nf 左对齐 float f=123.456; printf("%8.1f%8.1f%8.1f\n",3.0,12.5,523.36); printf("%f %10f %10.2f %-10.2f \n", f,f,f,f); float s=123.456; double x=3333333333333.333333333; printf("%f\n%f\n",s,x); printf("%.2f %6.1f\n",s,s); 123.456001 3333333333333.333500 123.46 123.5 3.0 12.5 523.4 123.46 123.456001 123.456001 123.46
e(E)格式 以指数形式输出实数 %e X.XXXXXXe+XXX %m.ne n为小数位数 %-m.ne float s=123.456; printf("%e\n%10e\n%10.2e\n%-10.2e\n%.2e\n", s,s,s,s,s); 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002
格式字符: int a=567;printf ( "%d",a); 567 d 十进制整数 int a=255;printf("%x",a); ff 十六进制无符号整数 x int a=65;printf("%o",a); 101 o 八进制无符号整数 int a=567;printf("%u",a); 567 不带符号十进制整数 u char a=65;printf("%c",a); A c 单个字符 ABC printf("%s","ABC"); s 字符串 float a=567.789;printf("%e",a); 5.677890e+002 e 指数形式浮点小数 567.789000 float a=567.789;printf("%f",a); f 小数形式浮点小数 printf("%%"); 百分号本身 %% %
3.3 数据的输入 int a,b,c; scanf("%d %d %d",&a,&b,&c); printf("%d,%d,%d",a,b,c); 1 2 3 <CR> 1 <CR> 2 <CR> 3 <CR>
scanf("%3d%3d",&a,&b); 输入:123456〈CR〉 scanf("%3c",&ch); 输入:abc<CR> scanf("%2d %*3d %2d",&a,&b); 输入:1234567<CR>
ᴥ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",&a); 输入5 scanf("%c%c%c",&a,&b,&c); 输入a b c scanf("%5.2f",&a); scanf("%d%d",&x,&k); scanf("%d%c",&x,&y); scanf("%3d%c",&x,&y); scanf("%d%d ",&x,&k); scanf("%d%d\n",&x,&k);
数据的输入结束情况有: 空格、回车、Tab 长度结束 非法输入 输入实型数据时不能规定精度, 输入double类型变量必须必须用格式符%lf 输入float类型变量必须必须用格式符%f 非控制字符原样输入 不要以空格或回车作为格式控制串的结束符
输入字符/字符串时多余的空格如何去除? char a,b,c; scanf("%c",&a); scanf("%c",&b); scanf("%c",&c); printf("a=%c,b=%c,c=%c\n",a,b,c); 输入: t↙ r↙ y↙ 方法1:使用getchar() 方法2:在%c前加空格 方法3:用%*c读掉字符
该如何为如下输入数据书写输入语句: • 2 3 4 • 2,3,4 • 2 • 3 • 4 • a□b□c • a=5,b=6 • 123456(两个变量)
3.4 字符的输入输出 #include "stdio.h" int main( ) {char a,b; a= 'B'; b= 'O'; putchar(a); putchar(b); putchar('Y'); return 0; } ᴥputchar 格式:putchar(字符) 功能:向输出设备输出一个字符 要求:在程序开头加预编译命令: #include "stdio.h" 或 #include <stdio.h>
#include "stdio.h" int main( ) {char c; c=getchar( ); putchar(c); putchar(getchar( )); return 0; } ᴥgetchar 格式:getchar() 功能:从键盘上输入一个字符 要求:#include "stdio.h"
编程示例 输入f的值 计算c的值 输出c的值 华氏温度转换为摄氏温度 int main() { float f,c; scanf("%f",&f); c=5/9.0*(f-32); printf("c=%f",c); return 0; } scanf("%f",&f); c=5/9.0*(f-32); printf("c=%f",c);
编程示例 计算存款本息。设银行一年定期存款的利息是2.25%,到期后转存。n年后本息是多少? #include<math.h> int main() { double rate=0.0225; //rate表示年利率 double capital; //capital表示本金 double profit; // profit表示本及息 int n; //n表示存款年数 printf("请输入存款年数及本金"); scanf("%d,%lf",&n,&capital); profit=capital*pow(1+rate,n); printf(“profit=%7.2f", profit ); return 0; }
[函数类型] 函数名([参数名])----函数首部 {[变量说明] ----声明部分 [语句组] ----执行部分 } 输入 函数体 计算 输出 int main() { 说明程序中所使用变量及类型 输入数据 计算 输出结果 return 0; }
int main() { double rate=0.0225; //rate表示年利率 double capital; //capital表示本金 double profit; // profit表示本及息 int n; //n表示存款年数 printf("请输入存款年数及本金"); scanf("%d,%lf",&n,&capital); profit =capital*pow(1+rate,n); printf(" profit =%7.2f", profit ); return 0; } int main() { 说明程序中所使用变量及类型 输入数据 计算 输出结果 }
编程示例 大写改小写 #include "stdio.h" int main( ) {char c1,c2; c1=getchar( ); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); return 0; }
阅读以下程序 #include <math.h> int main( ) {float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=5.2f\n",x1,x2); return 0; }