版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Shenzhen lean-sigma consultant Co., LTD 版权所有版权所有 翻版必究翻版必究 1 1/41/41 1 1 / 49 / 49 南京信息工程大学南京信息工程大学 计算机与软件学院计算机与软件学院 XX XX (HK) LTD 2 2/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2 2 主要主要内容内容 2.1 C/C+语言的输入输出语句语言的输入输出语句 2.2 ACM题目题目I/O特点及分类特点及分类 2.3 文件操作文件操作 XX XX (HK) LTD 3 3/x/x 第第2 2讲讲
2、输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3 3 2.1 C/C+2.1 C/C+语言语言的输入输出语句的输入输出语句 nC语言的输入输出语言的输入输出 #include scanf( ) printf( ) getchar( ) putchar( ) gets( ) puts( ) nC+语言的输入输出语言的输入输出 #include cin cout XX XX (HK) LTD 4 4/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4 4 scanf( scanf( ) )语句
3、语句(函数(函数) ) nint scanf( const char * , .) 参数可变的函数参数可变的函数 第一个参数是格式字符串,后面的参数是变量的地址,函第一个参数是格式字符串,后面的参数是变量的地址,函 数作用是按照第一个参数指定的格式,将数据读入后面的数作用是按照第一个参数指定的格式,将数据读入后面的 变量。变量。 nscanf 返回值返回值 0 0 成功成功读入的数据项个数读入的数据项个数; 0 0 没有没有项被赋值项被赋值; EOF EOF 第一第一个尝试输入的字符是个尝试输入的字符是EOF(EOF(结束结束) ) 。预定义的常量,。预定义的常量, 等于等于-1-1。 XX
4、XX (HK) LTD 5 5/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5 5 printfprintf( )( )语句语句(函数(函数) ) nint printf( const char * , .) 参数可变的函数参数可变的函数 第一个参数是格式字符串,后面的参数是待输出的变量,第一个参数是格式字符串,后面的参数是待输出的变量, 函数作用是按照第一个参数指定的格式,将后面的变量在函数作用是按照第一个参数指定的格式,将后面的变量在 屏幕上屏幕上输出。输出。 nprintf 返回值返回值 成功成功打印的字符打印的字符数数
5、 返回返回负值为出错负值为出错 XX XX (HK) LTD 6 6/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6 6 格式字符串里的格式控制符号格式字符串里的格式控制符号 %d %d 读入或输出读入或输出intint变量变量 %c %c 读入或输出读入或输出charchar变量变量 %f %f 读入或输出读入或输出floatfloat变量变量 %s %s 读入或输出读入或输出char char * * 变量变量 %lf %lf 读入或输出读入或输出double double 变量变量 %e %e 以科学计数法格式输出数值以
6、科学计数法格式输出数值 %x %x 以以十六进制读入或输出十六进制读入或输出 int int 变量变量 %I64d %I64d 读入或输出读入或输出 _int64 _int64 变量变量(64(64位整数位整数) (% %lldlld) %p %p 输出指针地址值输出指针地址值 %.5lf %.5lf 输出浮点数,精确到小数点后输出浮点数,精确到小数点后5 5位位 XX XX (HK) LTD 7 7/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 7 7 前导前导空白的处理空白的处理 对每种格式搞清楚一个重要问题:是否是否自动跳
7、过前导空白自动跳过前导空白? n什么是空白什么是空白:空格,TAB,回车 n%d %lld %lf 自动扫描前导空格 比如:读入5个整数到A5 输入文件中,数的排布是这个样子 35 26 78 99 206 不管它,直接5次%d for ( int i = 0; i 5; i+ ) scanf(“%d”, A + i); XX XX (HK) LTD 8 8/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 8 8 n%s 读一个字符串,自动扫描前导空白,读到空白结束 如:输入 abcd efgh,将读出“abcd” n%c 读一个
8、字符,但是不扫描前导空白 n如何读一个非空白字符呢?如何读一个非空白字符呢? 比如,读取如下的人物信息,其性别用M/F表示: TopBoy M ComputerScience Kitty F Software 名字和专业用%s读,性别怎么办? 自己过滤空格?麻烦! XX XX (HK) LTD 9 9/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 9 9 读一个非空白字符读一个非空白字符 n方法一方法一 char str2; scanf(“%1s”, str); / %1s扫描前导空白,并且只读一个字符 n方法二方法二 强制扫描
9、空白:在%前面加上一个空格表示“强制扫描前 导空白” scanf(“ %c”, 前面那个读人物信息的完整scanf语句: scanf(“%s %c %s”, name, XX XX (HK) LTD 1010/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1010 过滤其他无关输入过滤其他无关输入 n可以用其他字符可以用其他字符来来扫描扫描其他其他类型类型的无关的无关输入。输入。 比如,输入年月日的信息 2007-08-03 scanf(“%d-%d-%d”, n其他类型的字符可类似处理。其他类型的字符可类似处理。 XX XX
10、(HK) LTD 1111/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1111 常见常见错误错误 int main() char * s; scanf( “%s”, s); return 0; 问题:问题:s s 不知道指向何处,往其指向的地方写入数不知道指向何处,往其指向的地方写入数 据,不安全。据,不安全。 XX XX (HK) LTD 1212/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1212 char char * * gets(char get
11、s(char * * s) s) 从标准输入读取一行到字符串s 如果成功,返回值就是 s 地址 如果失败,返回值是 NULL 可以根据返回值是可以根据返回值是 NULL判定输入数据已经读完。判定输入数据已经读完。 调用时要确保调用时要确保 s s 指向的缓冲区足够大,否则可能发指向的缓冲区足够大,否则可能发 生内存访问错误。生内存访问错误。 XX XX (HK) LTD 1313/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1313 例例 #include int main() char s200; char * p = ge
12、ts(s); printf(%s:%s,s,p); return 0; input:input: Welcome to Beijing !Welcome to Beijing ! output:output: Welcome to Beijing !:Welcome to Beijing Welcome to Beijing !:Welcome to Beijing ! ! XX XX (HK) LTD 1414/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1414 主要主要内容内容 2.1 C/C+语言的输入输出语句语言的输
13、入输出语句 2.2 ACM题目题目I/O特点及分类特点及分类 2.3 文件操作文件操作 XX XX (HK) LTD 1515/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1515 2.2 ACM2.2 ACM题目题目I/OI/O特点特点及及分类分类 ACM竞赛题目的输入数据和输出数据一般有多组竞赛题目的输入数据和输出数据一般有多组 (不定),并且格式多种多样,所以,如何处理题(不定),并且格式多种多样,所以,如何处理题 目的输入输出是对大家的一项最基本的要求。这也目的输入输出是对大家的一项最基本的要求。这也 是困扰初学者的一
14、大问题。是困扰初学者的一大问题。 XX XX (HK) LTD 1616/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1616 例例 nA+B for Input-Output Practice (I) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) nProblem Description Your task is to Calculate a + b. nInput The input will consist
15、 of a series of pairs of integers a and b, separated by a space, one pair of integers per line. XX XX (HK) LTD 1717/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1717 例例 ( (续续) ) nOutput For each pair of input integers a and b you should output the sum of a and b in one line, and with one
16、line of output for each line in input. nSample input 1 5 10 20 nSample output 6 30 XX XX (HK) LTD 1818/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1818 初学者很常见的一种写法:初学者很常见的一种写法: #include void main() int a, b; scanf(“%d %d”, printf(“%d”, a+b); 有没有问题?有没有问题? XX XX (HK) LTD 1919/x/x 第第2 2讲讲 输
17、入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 1919 输入输入_ _第一类第一类 n输入不说明有多少个输入不说明有多少个Input Block,以以EOF为结束标志。为结束标志。 n解决方案解决方案 C语法:语法: while(scanf(%d %d, while(scanf(%d %d, XX XX (HK) LTD 2121/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2121 源代码源代码 C+ C+语言语言 #include using namespace std; int m
18、ain() int a,b; while(cinab) couta+bendl; return 0; XX XX (HK) LTD 2222/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2222 输入输入_ _第第二二类类 n输入一开始就会说有输入一开始就会说有N个个Input Block,下面接着是,下面接着是N 个个Input Block。 n解决方案解决方案 C语法:语法: scanf(%d, for( i=0 ; i n; for( i=0 ; in ; i+ ) . XX XX (HK) LTD 2323/x/x 第
19、第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2323 例例 nA+B for Input-Output Practice (II) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) nProblem Description Your task is to Calculate a + b. nInput Input contains an integer N in the first line, and then N lines
20、 follow. Each line consists of a pair of integers a and b, separated by a space, one pair of integers per line. XX XX (HK) LTD 2424/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2424 例例 ( (续续) ) nOutput For each pair of input integers a and b you should output the sum of a and b in one lin
21、e, and with one line of output for each line in input. nSample input 2 1 5 10 20 nSample output 6 30 XX XX (HK) LTD 2525/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 2525 源代码源代码 for( i=0 ; i n while(scanf(“%d %d”, return 0; while(scanf(%d %d, gets(buf); C+语法:语法: 如果用string buf 来保存: getline
22、( cin , buf ); 如果用char buf 255 来保存: cin.getline( buf, 255 ); XX XX (HK) LTD 3131/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3131 例例 nInput Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following descri
23、ption, and there will be no blank lines separating data sets. All characters will be uppercase. A single data set has 3 components: Start line - A single line, START Cipher message - A single line containing from one to two hundred characters, inclusive, comprising a single message from Caesar End l
24、ine - A single line, END Following the final data set will be a single line, ENDOFINPUT. XX XX (HK) LTD 3232/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3232 例例 ( (续续) ) nSample input START NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX END START N BTZQI WFYMJW GJ KNWXY NS
25、 F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOFINPUT XX XX (HK) LTD 3333/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3333 说明说明CC语言字符串语言字符串I/OI/O nscanf(“ %s%s”,str1,str2),在多个字符串之间用 一个或多个空格分隔; n若使用gets函数,应为gets
26、(str1); gets(str2); 字符 串之间用回车符作分隔。 n通常情况下,接受短字符用scanf函数,接受长字符 用gets函数。 n而getchar函数每次只接受一个字符,经常 c=getchar()这样来使用。 XX XX (HK) LTD 3434/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3434 说明说明C+C+语言语言字符串字符串I/OI/O getline 是一个函数,它可以接受用户的输入的字符,直到已达 指定个数,或者用户输入了特定的字符。它的函数声明形式(函 数原型)如下: istream 不用管
27、它的返回类型,来关心它的三个参数: char line: 就是一个字符数组,用户输入的内容将存入在 该数组内。 int size : 最多接受几个字符?用户超过size的输入都将不被 接受。 char endchar :当用户输入endchar指定的字符时,自动结束。 默认是回车符。 XX XX (HK) LTD 3535/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3535 结合后两个参数,getline可以方便地实现: 用户最多 输入指定个数的字符,如果超过,则仅指定个数的前 面字符有效;如果没有超过,则用户可以通过回车来
28、 结束输入。 char name4; cin.getline(name,4,n); 由于 endchar 默认已经是 n,所以后面那行也可以 写成: cin.getline(name,4); XX XX (HK) LTD 3636/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3636 输入输入_ _第第五五类类 n以上几种情况的组合以上几种情况的组合 。 n例如:例如: Problem Description Your task is to Calculate the sum of some integers. Input I
29、nput contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed. Output For each group of input integers you should output their sum in one line, and with o
30、ne line of output for each line in input. Sample Input 4 1 2 3 4 5 1 2 3 4 5 0 Sample Output 10 15 XX XX (HK) LTD 3737/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3737 Problem Description Your task is to calculate the sum of some integers. Input Input contains an integer N in the first l
31、ine, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line. Output For each group of input integers you should output their sum in one line, and with one line of output for each line in input. Sample Input 2 4 1 2 3 4 5 1 2 3 4 5 Sample Output 10 15
32、XX XX (HK) LTD 3838/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3838 Problem Description Your task is to calculate the sum of some integers. Input Input contains multiple test cases, and one case one line. Each case starts with an integer N, and then N integers follow in the same line. O
33、utput For each test case you should output the sum of N integers in one line, and with one line of output for each line in input. Sample Input 4 1 2 3 4 5 1 2 3 4 5 Sample Output 10 15 XX XX (HK) LTD 3939/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 3939 思考:以下题目属于哪一类输入思考:以下题目属于哪一类输入? nInp
34、ut The input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero. nSample Input 24 39 0 XX XX (HK) LTD 4040/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4040 nInput Input consists of several lines of integer numbe
35、rs. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 n 107 on each line. nSample Input 2 10 20 XX XX (HK) LTD 4141/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4141 输出输出_ _第一类第一类 n一个一个Input Block对应一个对应一个Output Block,Output
36、 Block之间之间没有没有空行空行。 n解决方案解决方案 C语法:语法: . printf(%dn,ans); C+语法:语法: . cout ans endl; XX XX (HK) LTD 4242/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4242 例例 nA+B for Input-Output Practice (I) nOutput For each pair of input integers a and b you should output the sum of a and b in one line,
37、and with one line of output for each line in input. nSample input 1 5 10 20 nSample output 6 30 XX XX (HK) LTD 4343/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4343 输出输出_ _第二类第二类 n一个一个Input Block对应一个对应一个Output Block,每个,每个 Output Block之后都有之后都有空行空行。 n解决方案解决方案 C语法:语法: . printf(%dnn,ans); C+
38、语法:语法: . cout ans endl endl; XX XX (HK) LTD 4444/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4444 例例 nA+B for Input-Output Practice (VII) nOutput For each pair of input integers a and b you should output the sum of a and b, and followed by a blank line. nSample input 1 5 10 20 nSample ou
39、tput 6 30 XX XX (HK) LTD 4545/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4545 输出输出_ _第三类第三类 n一个一个Input Block对应一个对应一个Output Block,Output Block之间有空行之间有空行。 n解决方案解决方案 C语法:语法: for (k=0;kcount;k+) while () printf( %dn,result); if (k!=count-1) printf(n); C+语法:语法: 类似,输出语句换一下即 可。 XX XX (HK) LTD
40、4646/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4646 例例 A+B for Input-Output Practice(VIII) nProblem Description Your task is to calculate the sum of some integers. nInput Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then
41、 M integers follow in the same line. nOutput For each group of input integers you should output their sum in one line, and you must note that there is a blank line between outputs. XX XX (HK) LTD 4747/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4747 例例( (续续) ) nSample input 3 4 1 2 3 4 5
42、 1 2 3 4 5 3 1 2 3 nSample output 10 15 6 XX XX (HK) LTD 4848/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4848 源代码源代码 #include int main() int icase,n,i,j,a,sum; scanf(%d, for(i=0;iicase;i+) sum=0; scanf(%d, for(j=0;jn;j+) scanf(%d, sum+=a; if(iicase-1) printf(%dnn,sum); else printf(%dn,s
43、um); XX XX (HK) LTD 4949/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 4949 思考:以下题目属于哪思考:以下题目属于哪一类输出?一类输出? nOutput The output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers m
44、ust satisfy the above requirements. Print solutions in lexicographical order. You are to write a program that completes above process. Print a blank line after each case. nSample Output Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2 XX XX (HK)
45、 LTD 5050/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5050 nOutput For each case, print the case number as well as the number of pairs (a,b) satisfying the given property. Print the output for each case on one line in the format as shown below. nSample Output Case 1: 2 Case 2: 4 Case 3:
46、5 XX XX (HK) LTD 5151/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5151 C C语言处理语言处理“混合数据混合数据”的问题的问题 Problem Description Give you an operator (+,-,*, / -denoting addition, subtraction, multiplication, division respectively) and two positive integers, your task is to output the result. Inpu
47、t Input contains multiple test cases. The first line of the input is a single integer T (0T1000) which is the number of test cases. T test cases follow. Each test case contains a char C (+,-,*, /) and two integers A and B(0A,B10000).Of course, we all know that A and B are operands and C is an operat
48、or. Output For each case, print the operation result. The result should be rounded to 2 decimal places If and only if it is not an integer. Sample Input 4 + 1 2 - 1 2 * 1 2 / 1 2 Sample Output 3 -1 2 0.50 XX XX (HK) LTD 5252/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5252 源代码源代码 #includ
49、e #include using namespace std; int main() int T,a,b; char c; cinT; while(T-) cincab; switch(c) case +:couta+bendl;break; case -:couta-bendl;break; case *:couta*bendl;break; case /:if(a%b=0) couta/bendl; else printf(%.2fn,1.0*a/b);break; default:break; return 0; XX XX (HK) LTD 5353/x/x 第第2 2讲讲 输入输出输
50、入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5353 注意注意 混用输入输出混用输入输出 nC scanf 速度快速度快 printf 格式 格式容易控制容易控制 nC+ cin 使用使用简单简单, 自动识别自动识别类型类型 cout 格式格式控制较麻烦控制较麻烦 数据数据规模较大时规模较大时, 推荐推荐(必须必须)使用使用scanf 以避以避 免超时免超时(TLE) C和和C+的输入输出混合使用的输入输出混合使用 XX XX (HK) LTD 5454/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学
51、院院 5454 例:例:C/C+C/C+输入输出混合使用输入输出混合使用 #include #include int main() for(int j=0; j5; j+) coutj=; printf(%dn, j); return 0; j=0 j=1 j=2 j=3 j=4 XX XX (HK) LTD 5555/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5555 小技巧小技巧 n数据的拷贝(特别是输出的提示信息)数据的拷贝(特别是输出的提示信息) n调试的调试的sample input的拷贝的拷贝 n最好不要进行函数
52、声明最好不要进行函数声明 n变量变量定义在使用定义在使用之前之前, 避免避免 for(int i = 0;i n ;i+) i的使用范围仅仅在的使用范围仅仅在for内部,容易导致内部,容易导致CE n遇到遇到问题首先自己查找资料,之后再提问问题首先自己查找资料,之后再提问 XX XX (HK) LTD 5656/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5656 主要主要内容内容 2.1 C/C+语言的输入输出语句语言的输入输出语句 2.2 ACM题目题目I/O特点及分类特点及分类 2.3 文件操作文件操作 XX XX (H
53、K) LTD 5757/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5757 2.3 2.3 文件操作文件操作 2.3.1 程序设计竞赛中的文件输入输出程序设计竞赛中的文件输入输出 2.3.2 C语言文件输入输出语言文件输入输出 2.3.3 C+语言文件输入输出语言文件输入输出 XX XX (HK) LTD 5858/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5858 2.3.1 2.3.1 程序设计竞赛中的文件输入输出程序设计竞赛中的文件输入输出 n文件基
54、本文件基本概念概念 n文件输入输出的作用文件输入输出的作用 部分题目要求(很少)部分题目要求(很少) 测试测试程序时采用程序时采用 (1)避免重复输入测试数据 (2)便于查看输出(输出太多时) (3)便于比对运行结果(借助文件比较) n实现方法实现方法 文件重定向(简单):freopen( ) 文件输入输出:fopen( ) XX XX (HK) LTD 5959/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 5959 注意注意事项事项 n题目要求的输入输出类型题目要求的输入输出类型 标准输入输出:删除相关语句后提交 文件输入输
55、出:注意文件命名(包括字母大小写) n是否允许采用重定向方式?是否允许采用重定向方式? n普适普适原则原则 详细阅读比赛规定,并严格遵守。详细阅读比赛规定,并严格遵守。 XX XX (HK) LTD 6060/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6060 2.3.2 C2.3.2 C语言文件输入输出语言文件输入输出 n文件打开与关闭文件打开与关闭 fopen(文件名文件名,使用文件方式使用文件方式) FILE *fp; fp=fopen(“file1”,”r”); 如果打开失败,fopen函数将返回一个空指针值NULL
56、。 if (fp=fopen(“file1”,r)=NULL) printf(“cannot open this filen”); exit(0); fclose(文件指针文件指针) fclose (fp); XX XX (HK) LTD 6161/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6161 顺序顺序读写文件读写文件 n对顺序读写来说,对文件读写数据的顺序和数据在 文件中的物理顺序是一致的。 n顺序读写需要用库函数实现 n用用格式化的方式读写格式化的方式读写文件文件 fscanf(文件指针文件指针,格式字符串格式字符
57、串,输入表列输入表列); fprintf(文件指针文件指针,格式字符串格式字符串,输出表列输出表列); 如: fscanf (fp,”%d,%f”, fprintf (fp,”%d,%6.2f”,i,f); XX XX (HK) LTD 6262/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6262 n读写读写一个一个字符字符 函数名函数名调用形式调用形式功能功能返回值返回值 fgetcfgetc(fp) 从从fp指向的指向的 文件读入一文件读入一 个字符个字符 读成功,带回所读成功,带回所 读的字符,失败读的字符,失败 则返
58、回文件结束则返回文件结束 标志标志(即即-1) fputc fputc(ch,fp) 把字符把字符ch写写 到文件指针到文件指针 变量变量fp所指所指 向的文件中向的文件中 写成功,返回值写成功,返回值 就是输出的字符;就是输出的字符; 输出失败,则返输出失败,则返 回(即回(即-1) XX XX (HK) LTD 6363/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6363 例题:字符读写例题:字符读写 从键盘输入一些字符,逐个把它们送到磁盘上去, 直到用户输入一个“”为止。 解题思路解题思路: 用fgetc函数从键盘逐个
59、输入字符,然后用fputc函数 写到磁盘文件即可。 XX XX (HK) LTD 6464/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6464 #include #include int main() FILE *fp; char ch,filename10; printf(请输入所用的文件名:请输入所用的文件名:); scanf(%s,filename); if(fp=fopen(filename,“w”)=NULL) printf(无法打开此文件无法打开此文件n); exit(0); ch=getchar( ); 接收最
60、后输 入的回车符 输入文件名 只写 用exit函数时加 XX XX (HK) LTD 6565/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南京信息工程大学 计算机与软件学计算机与软件学 院院 6565 printf(“请输入一个字符串请输入一个字符串(以以#结束结束):); ch=getchar( ); while(ch!=#) fputc(ch,fp); putchar(ch); ch=getchar(); fclose(fp); putchar(10); return 0; XX XX (HK) LTD 6666/x/x 第第2 2讲讲 输入输出输入输出 南京信息工程大学南
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《陋室铭》教案设计
- 体育地产物业竞标授权委托书
- 苏教版五年级语文下册教案
- 石油化工设备招投标文件样本
- 山东创新创业基地建设合同
- 物理研究人防设备安装合同
- 七台河市公园公共安全事件处理
- 水上婚礼婚礼演艺游艇租赁合同
- 工业园区配电房施工协议
- 机场航站楼大理石施工合同
- 完整版抖音运营推广方案课件
- 人教版六上数学第六单元《百分数》教案(含单元计划)
- 中国邮政社招笔试题库
- 纸巾厂合作合同协议书
- 食品安全工作操作流程(5篇)
- 化工产品的品质保证与质量控制
- 2022版义务教育信息科技新课程标准试题(附答案)
- 高一历史(中外历史纲要上册)期中测试卷及答案
- 车间照明节能改造方案照明节能LED改造方案
- 三级安全培训考试题附参考答案【综合卷】
- 江西省内装修合同范本
评论
0/150
提交评论