第十二周实验安排
统计英文单词。
实验要求:
使用RandomAccessFile流统计一篇英文中的单词,要求如下:
(1)一共出现了多少个单词;
(2)有多少个互不相同的单词;
(3)给出每个单词出现的频率,并将这些单词按频率大小顺序显示在一个TextArea中。
程序界面如下图所示:
提示:1. 界面及文件处理可以参考12章的内容
2. 字数的统计方法可以参考9.3节的StringTokenizer类
代码如下:
public class shiyan {
public static void main(String args[]){
Wbk win=new Wbk();
win.setTitle("使用文本对话框读写文件.");
win.setV isible(true);
}
}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
public class Wbk extends JFrame implements ActionListener{
JFileChooser files;
JMenuBar menubar;
JMenu menu;
JMenuItem save,open,census;
JTextField text;
JTextArea text1;
BufferedWriter out;
BufferedReader in;
FileWriter filewriter;
FileReader filereader;
Wbk(){
init();
setBounds(100,100,500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init(){
menubar=new JMenuBar();
menu=new JMenu("文件");
save=new JMenuItem("保存文件");
open=new JMenuItem("打开文件");
census=new JMenuItem("统计字数");
save.addActionListener(this);
open.addActionListener(this);
census.addActionListener(this);
menu.add(save);
menu.add(open);
menu.add(census);
menubar.add(menu);
setJMenuBar(menubar);
text1=new JTextArea(20,20);
add(new JScrollPane(text1),BorderLayout.CENTER);
text=new JTextField(30);
add(new JScrollPane(text),BorderLayout.SOUTH);
files=new JFileChooser();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==save){
int state=files.showSaveDialog(this);
if(state==JFileChooser.APPROVE_OPTION){
try{
File wj=files.getCurrentDirectory();
String name=files.getSelectedFile().getName();
File wj1=new File(wj,name);
filewriter=new FileWriter(wj1);
out=new BufferedWriter(filewriter);
out.write(text1.getText());
out.close();
filewriter.close();
}
catch(IOException exp){}
}
}
else if(e.getSource()==open){
int state=files.showOpenDialog(this);
if(state==JFileChooser.APPROVE_OPTION){
text1.setText(null);
try{
File wj=files.getCurrentDirectory();
String name=files.getSelectedFile().getName();
File wj1=new File(wj,name);
filereader=new FileReader(wj1);
in=new BufferedReader(filereader);
String s=null;
while((s=in.readLine())!=null){
text1.append(s+"\n");
}
in.close();
filereader.close();
}
catch(IOException exp){}
}
}
else if(e.getSource()==census){
String wz=text1.getText();
StringTokenizer zs=new StringTokenizer(wz," ,.!?");
int zishu=zs.countTokens();
text.setText("共有"+zishu+"个单词");
HashMap
String ss="[\\s\\p{Punct}]+";
String[] danci=wz.split(ss);
int[] ts= new int[danci.length];
for (int i = 0; i < danci.length; i++) {
if (tt.containsKey(danci[i])) {
continue;
}
else {
ts[i]=0;
for (int j = i+1; j < danci.length; j++) {
ts[i]=1;
if (danci[i].equals(danci[j])) {
ts[i]++;
}
}
}
tt.put(danci[i], ts[i]);
}
Integer[] dcshu=new Integer[tt.size()];
String[] string = tt.keySet().toArray(new String[0]);
for (int i=0;i { dcshu[i]=tt.get(string[i]); } for(int m=0;m for(int j = m+1;j int a; String b; if(dcshu[j] a= dcshu[m]; b=string[m]; dcshu[m] = dcshu[j]; string[m] = string[j]; dcshu[j]=a; string[j]=b; } } } text1.append("\n共有"+string.length+"个不相同的单词"+"\n单词按频率大小顺序为:"); for(int i=0;i text1.append("\n"+string[i]+" "+dcshu[i]+"个");} } } 结构截图: C++文件输入与输出 简介 本教程将以C++最基本的文件I/O(输出/输出)开始。此后,我将从更深入的方面,为你展示一些技巧,并分析给出一些有用的函数。 你需要对C++有一个较好的理解,否则这个教程于你而言将是陌生而毫无用处。 你的第一个程序 首先我将给出一段代码,接着再逐行进行解释。我们的第一个程序将建立一个文件,并写入一些字符: #include 输入和输出并不是C++语言中的正式组成成分?C和C++本身都没有为输入和输出提供专门的语句结构?输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的? C++的输出和输入是用“流”(stream)的方式实现的?图3.2和图3.3表示C++通过流进行输入输出的过程? 有关流对象cin?cout和流运算符的定义等信息是存放在C++的输入输出流库中的,因此如果在程序中使用cin?cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中: #include 5 Java 输入流与输出流 5.1 单项选择题 1.实现字符流的写操作类是( A . FileReader B . Writer C )。 . FileInputStream D . FileOutputStream 2. 实现字符流的读操作类是( )。 A . FileReader B . Writer C . FileInputStream D . FileOutputStream 3.凡是从中央处理器流向外部设备的数据流称为() A. 文件流 B. 字符流 C. 输入流 D. 输出流 4.构造 BufferedInputStream 的合适参数是哪一个?( ) A . FileInputStream B . BufferedOutputStream C . File D . FileOuterStream 5.在编写 Java Application 程序时,若需要使用到标准输入输出语句,必须在程序的开 头写上( )语句。 D . import java.awt.Graphics ; 6.下列流中哪个不属于字符流?( A . InputStreamReader C . FilterReader 7.流的传递方式是() A. 并行的 B. 串行的 C. 并行和串行 D. 以上都不对 8.字符流与字节流的区别在于( ) A. 前者带有缓冲,后者没有 B. 前者是块读写,后者是字节读写 C. 二者没有区别,可以互换使用 A . import java.awt.* ; B import java.applet.Applet ; C . import java.io.* ; ) B . BufferedReade r D . FileInputStream 零起点学C++快速入门 江苏省赣榆县外国语学校张文传 信息学竞赛以算法应用为主要竞赛内容,编程语言仅仅是一种载体,当解决问题的算法确定后,无论是用PASCAL或是C/C++实现,其最终结果的相同的。当然不同的语言在功能、易用性方面确实存在差异,比如C/C++功能强大,而PASCAL更加易用。虽然目前信息学竞赛的教材、资料、网站等仍以PASCAL 作为语言载体的居多,但使用C或C++却是未来发展的一种趋势。对于没有编程学习经验的初学者来说,能否从零起点开始直接学习C++呢?本文将带你进行一次快速学习C++的入门尝试,你将能对C++语言概貌进行一次快速的预览,决定自己是否可以继续学习它。 一、第一个C++程序 人们在电脑上工作,往往会根据不同的目的选择不同的软件来解决问题,如打字排版一般会使用Word,上网浏览信息常常使用IE等,现在我们要使用C++编写程序,也要使用一种编程的软件,这里我们推荐你使用Dev-C++(也称Dev-CPP)。 1.安装Dev-C++ 以Dev-C++ 4.9.9.2为例,安装的主要过程如下: 双击运行你下载的安装文件,如devcpp-4.9.9.2_setup.exe,按提示点击“OK”、“I Agree”、“Next”、“Install”、“Close”等进行安装,第一次运行时,程序会提示你进行界面设置,当出现“Dev-C++ first time configuration”窗口(如下图1)时,选择语言为“Chinese”,使Dev-C++显示为中文界面。 图1 正确安装完成后,运行Dev-C++的界面如下图2所示: 图2 2. 编写第一个C++程序 【例1】现在我们使用Dev-C++来编写第一个C++程序。 选择菜单“文件-新建-源代码(Ctrl+N)”,或单击对应的工具栏按钮,新建一个空白文档,输入 如下程序代码: //My first program #include 第十二周实验安排 统计英文单词。 实验要求: 使用RandomAccessFile流统计一篇英文中的单词,要求如下: (1)一共出现了多少个单词; (2)有多少个互不相同的单词; (3)给出每个单词出现的频率,并将这些单词按频率大小顺序显示在一个TextArea中。 程序界面如下图所示: 提示:1. 界面及文件处理可以参考12章的内容 2. 字数的统计方法可以参考9.3节的StringTokenizer类 代码如下: public class shiyan { public static void main(String args[]){ Wbk win=new Wbk(); win.setTitle("使用文本对话框读写文件."); win.setV isible(true); } } import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.io.*; import java.util.*; public class Wbk extends JFrame implements ActionListener{ JFileChooser files; JMenuBar menubar; JMenu menu; JMenuItem save,open,census; JTextField text; JTextArea text1; BufferedWriter out; BufferedReader in; FileWriter filewriter; FileReader filereader; Wbk(){ init(); setBounds(100,100,500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void init(){ menubar=new JMenuBar(); menu=new JMenu("文件"); save=new JMenuItem("保存文件"); open=new JMenuItem("打开文件"); census=new JMenuItem("统计字数"); save.addActionListener(this); open.addActionListener(this); census.addActionListener(this); menu.add(save); menu.add(open); menu.add(census); menubar.add(menu); setJMenuBar(menubar); text1=new JTextArea(20,20); add(new JScrollPane(text1),BorderLayout.CENTER); text=new JTextField(30); add(new JScrollPane(text),BorderLayout.SOUTH); files=new JFileChooser(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==save){ int state=files.showSaveDialog(this); if(state==JFileChooser.APPROVE_OPTION){ try{ 文件输入与输出以流的形式进行,同时根据内容不同分为字节和字符两种 字节流的读取与写入 读取步骤:File→FileInputStream→f.read(bytes) 写入步骤:File→FileOutputStream→f.write(bytes) 演示:读取字节文件即把字节从文件读到内存中 File f=null;//定义文件类的变量,并为空 f=new File(“”);//给变量赋值,表明指向某个文件 因为File没有读写的能力,所以需要用个InputStream Try{ FileInputStream fis=null;//定义文件字节输入流变量 fis=new FileInputStream(f);//给其赋值,指向目标文件 Byte [] bytes=new byte[1024]; //定义数组,把字节流的字节读到数组中,相当于缓存Int n=0;//记录读取的字节数 While(n=fis.read(bytes)==-1){//以1024字节大小为单位每次读取字节,从fis字节流中,并放到bytes字节组中,读取字节个数为零即读到末尾,则返回数值-1. String s=new String(bytes,0,n);// 把字节转换成字符串,0代表:转换开始的下标; n代表:转换字节的长度。 System.out.println(s);//把字符串打印到显示器上 } } 演示:写入字节文件即把字节从内存中写道文件里 File f=null; f=new File(“d:\\ss.txt”); FileOutputSteam fos=null; Try{ Fos=new FileOutputStrream(f); String s=””;//定义空字符串 Byte []bytes=new byte[1024];//定义字节数组,存储转换来的字符 Fos.write(s.getBytes());//把String转化为byte } 举例:图片的拷贝即从一个磁盘拷贝到另一个磁盘;或从一个电脑到另一个电脑 思路:先把图片读到内存,在写入到某个文件里,因为图片是二进制文件,则只能用字节流File f1=new File(“c:\\a.jpg”); FileInputStream fis=null; Fis=new FileInputStream(f1) ; File f2=new File(“d:\\a.jpg”); FileOutputStream fos=null; Fos=new FileOutputStream(f2); Byte buf[]=new byte[1024]; Int n=0;//记录实际读到的字节数 While((n=fis.read(buf))!==-1){//以buf的大小为单位读取fis文件里的字节,读到内存buf字节组中。N代表一次读的字节的个数,当没有读到字节时,n的返回数值是-1. Fos.write(buf); 微循环讲解及实操 血液循环 一、定义: 血液由心室流经动脉、毛细血管、静脉又返回心房,这种周而复始的循环流动,称为血液循环。 二、组成: 血液循环系统由心脏和血管两部分组成。 心脏位于胸腔内,在隔以上居二肺之间,约有2/3在中线左侧,1/3在中线右侧,其大小相当于本人拳头。 心脏是人体内泵血的肌性动力器官(肌性泵)推动血液流动。 血管是血液流动的管道,包括大动脉、中小动脉、毛细血管、微小静脉、中静脉、上下腔静脉,心脏和血管构成一个密闭的管道系统,血液在其中流动。 三、循环路线: 血液循环又分为相互连接的两部分即: 体循环,(又称大循环) 肺循环,(又称小循环) 体循环和肺循环式同时进行的,是血液不可分割的两部分。(连接心房的血管称静脉,故连接左心房的肺静脉装的是动脉血,连接心室的血管称动脉,故连接右心室的肺动脉装的静脉血)。 详见附录:人体血液微循环图 微循环 微循环是一门新兴的边缘学科,主要由微循环的基础研究、临床应用及血液流变学三大部分组成。它是利用微循环的理论与技术直接观测人体微循环的变化。 一、微循环定义 微循环是循环系统最末梢的部分,又是脏器的组成部分,是指血液由微动脉流经广泛的毛细血管网,再汇合流入微静脉的循环。由于这部分血管口径很小,肉眼看不到,只有在显微镜下才能看到,因此称为微循环。 二、微循环生理特点 1、管径很细,直径只有一根头发丝的二十分之一; 2、血管很长,一个成人的微血管连结起来约为9.6万公里,可以绕赤道周径二周半; 3、血流很慢,由于压力低所以血流慢0.4——1毫米/秒; 4、管壁很薄,只有一层内皮细胞和外面的基膜,约为一白纸的1%厚度; 5、数量众多,全身约有100多亿根。 三、微循环的功能 微循环是生命的基本特征之一,其主要功能是向组织送氧气和养料,同时也带走细胞产生的二氧化碳和其他代谢产物,是直接进行物质交换的重要场所;微循环还具有信息传递和能量传递的功能。 人体血液从心脏输出后要经过漫长的路途才能到达组织细胞,因此仅靠心脏的收缩力是远远不够得,还必须依靠微血管自身的自律性活动才能将血液灌注进细胞,同时因为微血管的自律运动与心跳并不同步,它有自己的规律,驱动着微血管内的血流,起到第二次调节供血的作用,因此微循环又称为“人体的第二心脏”。 四、微循环与疾病 微循环是生命最基本的保证。人体额任何器官,任何部位都必须有一个正常的、健康的微循环。否则就会出现相应器官的病变。若微循环不通畅就好像灌溉秧田的水渠堵塞,秧苗得不到水分就会枯死一样,人体微循环功能障碍时机体产生疾病和早衰、早逝的直接原因。 前苏联一位著名医学家说:“不管你相信不相信,不管你意识到没意识到,你所治疗的每一种疾病都与微循环有关微循环状况直接影响疾病的治疗。微循环障碍是百病之源。 如果不注意保健预防,微循环就极易发生故障,而一旦微循环发生了障碍,微血流中的水份或有形物质渗出即出现水肿,微循环周围的感觉末梢受其影响而感觉局部的酸痛、麻木、发冷;局部组织得不到新鲜的血液供应,会缺氧,缺乏营养物质而处于病理状态;局部也会因为代谢产物不能清除而刺激末梢感觉疼痛。 微循环障碍的核心理论是:血气不足----不同的器官、组织缺血----功能受障----加重血气不足----产生不同的常见病、慢性病。如血气能量一天比一天低,健康状况就一天天恶化,最终走向死亡;相反的,如血气能量一天比一天高,健康状况就一天天好转,终至痊愈。微循环障碍所引发的常见疾病: Java 的文件(读写)输入输出 1、流: 它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。 2、有关的Java包: Java.io包中包括许多类提供许多有关文件的各个方面操作。 3、有关文件名及目录名的类:File 类独立于系统平台,利用构造函数 File( String path)、 File(String path, String FileName)、 File(File dir, String name) 等创建出File 对象;再利用canRead() 、canWrite()、getParent()、getPath()等成员函数实现对文件的各个属性的操作。 import java.io.*; public class FileTest { public static void main(String []args) { String FileName="C:\\temp\\myfile.dat" File myFile=new File(FileName); If( ! myFile. exists() ) { System.err.println("Can't Find " + FileName); return; } System.out.println("File " + FileName + "is " +myFile.length() + "bytes Long !"); If( myFile. isDirectory() ) { System.err.println("File" + FileName +"Is a Directory !"); return; } } } 4、有关文件内容(数据)操作的类: 4.1 输入输出抽象基类InputStream/OutputStream,实现文件内容操作的基本功能函 数read()、write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。 4.2 FileInputStream/FileOutputStream: 用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象); 本地文件读写编程的基本过程为: ①生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为 FileOutputStream类); ②调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读 写文件内容; ③关闭文件(close())。 4.3 PipedInputStream/PipedOutputStream: 用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线 C++标准输入输出流 C++标准输入输出流 在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入 设备键盘和标准输 出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可 用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设 备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对 内存中指定的字符串存储空间的输入输出简称为串I/O。 C++语言系统为实现数据的输入和输出定义了一个庞大的类库,它 包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrs tream,strstream等,其中ios为根基类,其余都是它的直接或间接派生类。 ios为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流 基类fstreambase和字符串流基类strstreambase,输入文件流类同时继承了输入流 类和文件流基类(当然对于根基类是间接继承),输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream 同时继承了输入流类和字符串流基类,输出字符串流类ostrstream同时继承了输出流类和字符串流基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。 “流”就是“流动”,是物质从一处向另一处流动的过程。C++流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入和从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为“流”。为了实现信息的内外流动,C++系统定义了I/O 类库,其中的每一个类都称作相应的流或流类,用以完成某一方面的功能。根据一个流类定义的对象也时常被称为流。如根据文件流类fstream 定义的一个对象fio,可称作为fio流或fio文件流,用它可以同磁盘上一个文件相联系,实现对该文件的输入和输出,fio就等同于与之相联系的文件。 C++系统中的I/O类库,其所有类被包含在iostream.h,fstream.h和strstrea.h这三个系统头文件中,各头文件包含的类如下: iostream.h包含有:ios, iostream, istream, ostream, iostream_withassign, istream_withassign, ostream_withassign等。 fstream.h包含有:fstream, ifstream, ofstream和fstreambase,以及iostream.h 组织传播的功能、媒介与过程研究概述 摘要:组织中存在着正式结构和非正式结构。组织传播是组织生存和发展的必要保障。组织传播借助于各种视觉、听觉和/或视听觉媒介,以各种正式和/或非正式的形式进行。组织传播有组织内传播和组织外传播两个方面:前者又有垂直传播、水平传播和对角传播之分,后者则包括信息输入和信息输出两层内容。组织内的非正式传播也会影响到组织传播的效果乃至组织的兴亡。在组织外传播中,“界限沟通者”发挥着关键作用。 在我国,组织传播学尚处于萌芽状态,学术上还处于译介阶段,而且相关介绍大都散见于管理学、传播学、政治学、社会学等学科文献中。本文作者在大量研读有关著述的基础上,试图梳理有关组织传播的功能、媒介和过程的研究成果。 一、组织 对于组织的界定,古典学派、人际关系学派、人力资源学派、系统学派、文化学派和批判学派有着不同的侧重点。究竟如何分辨群体和组织呢?用马克斯?韦伯的话说,主要看这个群体中是否存在着一个“管理主体”(governing body);凡是存在“管理主体”的,即为组织。作为社会系统的子系统,多数组织具有等级性:海南大学是一个组织,海南大学人文传播学院是一个组织,海南大学人文传播学院广告系也是一个组织。 组织的结构有正式和非正式之分。从1924年到1933年,在美国伊利诺伊州西方电子公司的霍桑工厂进行了一系列的调查研究,这些研究后来被称为霍桑实验(Hawthorne studies)。管理学者皮尤和希克森总结说,“霍桑实验的意义在于‘发现’了所有组织中都存在着非正 式组织……。它揭示了工作环境中稳固的社会关系对个人的重要性”。之后,更多的学者把目光转向了研究组织——群体——个人之间的互动关系上,从而催生了一门崭新的学科——组织行为学。美国学者理查德?L?达夫特和雷蒙德?A?诺伊指出:“个体-组织交换影响组织行为。不仅个体之间发生作用和反作用,而且个体与其所归属的组织之间也发生作用与反作用。理解个体-组织交换的一种方式是把它看作一种心理契约(psychological contract)。心理契约描述了员工期望对组织的贡献和组织将会给予员工的报酬。” 二、组织传播功能 所谓组织传播,就是以组织为主体的信息传播活动。毫无疑问,组织传播是组织生存与发展的必要保障。 组织的正常运转需要有效的管理和领导。管理是设计并保持一种良好环境,使个体在群体里高效率地完成既定目标的过程。管理者具有计划、组织、领导和控制四项职能。亨利?明茨伯格提出的管理者的角色可组合为三大类:人际关系、信息传递和决策制定。但“管理只能发挥职工能力的60%左右”。可见,仅仅依靠管理,组织的能量无法得到更有效的开发和利用;组织还需要领导。管理和领导的本质区别在于:“管理是建立在合法的、有报酬的和强制性权力基础上对下属命令的行为”,而“领导可能建立在合法的、有报酬的和强制性的权力基础上。但是,领导更多的是建立在个人影响权和专长权及模范作用的基础上。” 领导是一个领导者影响追随者的过程。领导者在组织中处于指挥和信息中心的位置,发挥着指挥、协调、激励和控制作用。领导者的特质、领导方式和领导艺术决定着领导者的权威、权力和领导的效率。领导者的权力由职位权力(合法权、奖赏权和惩罚权)与非职位权力(专长权、个人魅力、背景权和感情权)组成。 管理和领导的共同之处在于,二者都以信息为媒介;没有信息的有效传递,组织将陷入混乱之中,直致变革或解体。换言之,组织的管理和领导都需要高效率的组织传播。而这恰恰体现出了组织传播的总体功能:通过信息传递将组织的各部分联结成一个有机整体,以保障组织目标的实现和组织的生存与发展。具体说来,组织传播的这一功能可分解为内部协调、指挥管理、决策应变和达成共识四项。 * 掌握:输入输出的含意;文件流以及输入/输出的格式控制;标准输出在C++程序中的应用。 * 理解:C++类库中的常用流类。 * 了解:C++的I/O对C的发展。 重点、难点 ◆输入输出的含意;文件流以及输入/输出的格式控制;标准输出在C++程序中的应用。 一、C++ 输入输出的含义 以前所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件。程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++的输入与输出包括以下3方面的内容: 1、对系统指定的标准设备的输入和输出。简称标准I/O。(设备) 2、以外存磁盘(或光盘)文件为对象进行输入和输出。简称文件I/0。(文件) 3、对内存中指定的空间进行输入和输出。简称串I/O。(内存) C++采取不同的方法来实现以上3种输人输出。为了实现数据的有效流动,C++系统提供了庞大的I/O类库,调用不同的类去实现不同的功能。 二、C++的I/O对C的发展—类型安全和可扩展性 C语言中I/O存在问题: 1、在C语言中,用prinff和scanf进行输入输出,往往不能保证所输入输出的数据是可靠的、安全的。学过C语言的读者可以分析下面的用法:想用格式符%d输出一个整数,但不小心错用了它输出单精度变量和字符串,会出现什么情况?假定所用的系统int型占两个字节。printf("%d",i);//i为整型变量,正确,输出i的值 printf("%d",f);//f为单精度变量,输出变量中前两个字节的内容 printf("%d","C++");//输出字符串"C++”的起始地址 编译系统认为以上语句都是合法的,而不对数据类型的合法性进行检查,显然所得到的结果不是人们所期望的。 2、在用scanf输入时,有时出现的问题是很隐蔽的。如 C语言的文件操作与输入输出流控制 C语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言,它提供了丰 富的文件操作和输入输出流控制的功能,使得程序能够与外部环境进行数据的交互和存储。本文将介绍C语言中文件操作和输入输出流控制的相关知识。 一、文件操作 在C语言中,文件是指计算机中存储数据的一种资源,可以是文本文件、二进制文件等。文件操作是指对文件进行读取、写入、打开、关闭等操作。 1. 文件的打开与关闭 在C语言中,使用文件指针来操作文件。文件指针是一个指向文件的指针变量,通过它可以对文件进行读写操作。文件的打开使用fopen函数,语法如下:FILE *fopen(const char *filename, const char *mode); 其中,filename是文件名,mode是打开模式。常见的打开模式有: - "r":只读模式,打开一个已存在的文本文件。 - "w":写入模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。 - "a":追加模式,打开一个文本文件,如果文件不存在则创建,如果文件存在 则在文件末尾追加内容。 - "rb"、"wb"、"ab":对应的是二进制文件的读写模式。 文件的关闭使用fclose函数: int fclose(FILE *stream); 其中,stream是文件指针。 2. 文件的读取与写入 文件的读取使用fscanf函数,语法如下: int fscanf(FILE *stream, const char *format, ...); 其中,stream是文件指针,format是格式控制字符串,...是要读取的变量。 文件的写入使用fprintf函数,语法如下: int fprintf(FILE *stream, const char *format, ...); 其中,stream是文件指针,format是格式控制字符串,...是要写入的变量。 二、输入输出流控制 输入输出流是C语言中用于输入输出的一种机制,通过输入输出流,程序可以与用户进行交互,从键盘读取输入,向屏幕输出结果。 1. 标准输入输出流 在C语言中,标准输入流(stdin)和标准输出流(stdout)是两个预定义的文件指针,分别对应键盘输入和屏幕输出。可以使用scanf函数从标准输入流读取输入,使用printf函数向标准输出流输出结果。 2. 文件输入输出流 除了标准输入输出流,C语言还支持文件输入输出流,通过文件输入输出流, 程序可以读取文件内容和将结果写入文件。 文件输入流使用fscanf函数,语法如下: int fscanf(FILE *stream, const char *format, ...); 文件输出流使用fprintf函数,语法如下: int fprintf(FILE *stream, const char *format, ...); 最简单的c语言程序 C语言是一种广泛使用的编程语言,它是由Dennis Ritchie在20世纪70年代初期开发的。C语言被广泛应用于操作系统、编译器、游戏、网络和嵌入式系统等领域。在本文中,我们将介绍最简单的C语言程序,它可以帮助初学者快速入门。 C语言程序的基本结构 C语言程序的基本结构由以下几个部分组成: 1. 预处理器指令 2. 函数 3. 主函数 4. 语句 预处理器指令 预处理器指令是在程序编译之前执行的指令,它们通常用于定义常量、宏和条件编译等。在C语言中,预处理器指令以“#”开头。以下是一些常见的预处理器指令: #define:定义常量或宏 #include:包含头文件 #ifndef:条件编译 #ifdef:条件编译 #else:条件编译 #endif:条件编译 #pragma:指示编译器 函数 函数是程序中执行特定任务的代码块。在C语言中,函数有以下几个部分: 1. 函数头:包含函数名称和参数列表 2. 函数体:包含函数执行的代码块 3. 返回语句:指定函数的返回值 主函数 主函数是C语言程序的入口点。它是程序执行的第一个函数。在C语言中,主函数的定义如下: int main(){ //代码块 return 0; } 语句 语句是C语言中的基本执行单元。它们包含表达式、控制语句和函数调用等。以下是一些常见的语句: 赋值语句:将值赋给变量 条件语句:根据条件执行不同的语句 循环语句:重复执行一组语句 函数调用语句:调用函数执行特定任务 最简单的C语言程序 下面是最简单的C语言程序: #include 一、File类常用的方法 File类是Java中的一个核心类,用来表示文件或目录的抽象路径名。以下是File类常用的方法: 1. 创建File对象 可以通过以下构造方法创建File对象: - File(String pathname):使用给定的路径名字符串或URI创建一个File实例。 - File(String parent, String child):从父路径名字符串和子路径名字符串创建一个新的File实例。 - File(File parent, String child):从父抽象路径名和子路径名字符串创建一个新的File实例。 2. 文件操作 - boolean createNewFile():创建一个新的空文件。 - boolean delete():删除文件或目录。 - boolean exists():测试文件或目录是否存在。 - boolean isFile():测试是否为文件。 - boolean isDirectory():测试是否为目录。 - boolean renameTo(File dest):重命名文件或目录。 3. 文件属性 - String getName():返回文件或目录的名称。 - String getPath():将文件的路径名转换成字符串。 - long lastModified():返回最后一次修改时间的毫秒数。 - long length():返回文件的长度。 4. 目录操作 - String[] list():返回目录中的文件和目录的名称数组。 - File[] listFiles():返回目录中的文件和目录的File对象数组。 - boolean mkdir():创建此抽象路径名指定的目录。 - boolean delete():删除目录。 二、文件流的分类 文件流是Java中用来对文件进行读写操作的流。根据操作模式不同,可以分为输入流和输出流。 1. 输入流(InputStream) 输入流用于从文件中读取数据。常用的输入流有: - FileInputStream:从文件系统中的文件获取输入字节。 - DataInputStream:从输入流中读取Java基本数据类型。 - BufferedInputStream:添加缓冲功能,提高IO性能。 2. 输出流(OutputStream) 输出流用于向文件中写入数据。常用的输出流有: - FileOutputStream:向文件系统中的文件写入字节。 io流面试题 在Java开发中,IO流是一个常见而重要的概念。在面试中,经常 会被问到与IO流相关的问题。了解和掌握IO流的概念、原理和常见 的使用方式,对于成功通过面试至关重要。本文将介绍一些常见的IO 流面试题及其答案,帮助读者更好地准备面试。 1. 什么是IO流? IO流是指输入输出流,用于处理设备之间的数据传输。在Java中,IO流可以用于读取文件内容、读取网络数据、向文件写入数据等。 2. Java中的IO流有哪些分类? Java中的IO流可以分为字节流和字符流。 - 字节流:以字节为单位进行数据的输入和输出,包括InputStream 和OutputStream。 - 字符流:以字符为单位进行数据的输入和输出,包括Reader和Writer。 3. InputStream和OutputStream的主要作用是什么? InputStream是一个抽象类,用于读取字节流。OutputStream也是一 个抽象类,用于写入字节流。它们是Java中所有输入流和输出流的基类,是IO操作的基础。 4. Reader和Writer的主要作用是什么? Reader是一个抽象类,用于读取字符流。Writer也是一个抽象类,用于写入字符流。它们可以处理Unicode字符,并且提供了专门用于字符处理的方法。在读取或写入文本文件等操作中,常常使用字符流。 5. Java的IO流如何进行数据的读取和写入? Java的IO流提供了丰富的类和方法来进行数据的读取和写入。对于输入流,通常可通过创建相关的InputStream或Reader对象,并使用read()或readLine()等方法来读取数据。对于输出流,通常可通过创建相关的OutputStream或Writer对象,并使用write()等方法来写入数据。 6. 请解释一下Java中的File类的作用。 File类用于表示文件或目录的路径。可以通过File类来操作文件或目录,比如创建文件、删除文件、判断文件/目录是否存在等。 7. 什么是缓冲流? 缓冲流是指对字节流或字符流进行了封装,提供了缓冲功能以提高IO的读写效率。常见的缓冲流有BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter等。 8. 什么是序列化和反序列化? 序列化是指将Java对象转换为字节序列的过程,以便可以将其保存到文件中或通过网络传输。反序列化则是将字节序列恢复为Java对象的过程,以便可以继续使用该对象。 9. 如何防止对象不被序列化?C++文件输入与输出
C++输入与输出—cout和cin的用法
(完整版)5Java第五单元练习题-输入流与输出流
零起点学C++快速入门(江苏省赣 榆县外国语学校 张文传)
凡绍录---输入输出流
java IO文件输入输出流总结
微循环讲解及实操
Java的文件输入输出
C++标准输入输出流
组织传播的功能
C++的输入和输出与标准输出流
C语言的文件操作与输入输出流控制
最简单的c语言程序
file类常用的方法以及 文件流的分类
io流面试题