南理工 c语言 第十三章 文件
- 格式:ppt
- 大小:308.50 KB
- 文档页数:44
《C语言程序设计》教学大纲(总11页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《C语言程序设计》教学大纲课程名称:中文名称:C语言程序设计;英文名称:C Language Programming课程编码:161002学分:分总学时:72学时,其中,理论学时:52学时;上机学时:20学时。
适用专业:全校理工科各专业先修课程:计算机基础执笔人:审订人:一、课程的性质与任务《C语言程序设计》是为全校所有的理工科专业的学生开设的公共基础课,也是一门重要的必修课。
其目的是使学生掌握程序设计的基本方法,培养学生掌握利用计算机处理问题的思维方法与应用能力。
要求学生掌握程序的三种基本结构及结构化的程序设计方法,了解并掌握几种典型的算法,并且能够熟练地运用C语言编写各种应用程序,为进一步学习其它相关课程奠定基础。
二、教学内容与学时分配第一章程序设计基本概念 (3学时)本章重点:一、算法及特性;二、结构化程序设计方法。
难点:算法设计及其表示。
第一节程序和程序设计一、程序;二、程序设计。
第二节算法第三节结构化程序设计方法第四节 C语言程序的基本结构第二章数据类型、运算符和表达式 (5学时)本章重点:一、标识符的正确使用;二、各种基本数据类型的使用;三、算术运算符的优先级和结合性;四、表达式计算中的类型转换。
难点:一、各种类型数据在计算机内存中的存储形式;二、自增自减运算。
第一节 C语言的数据类型第二节常量与变量第三节整型数据第四节实型数据第五节字符型数据第六节算术运算符与算术表达式第七节赋值运算符与赋值表达式一、赋值运算符和赋值表达式;二、复合的赋值表达式;三、自加、自减运算符;四、赋值运算中的类型转换。
第八节逗号运算符与逗号表达式第三章顺序结构程序设计 (4学时)本章重点:一、printf函数;二、scanf函数。
难点:输入与输出时的格式控制。
第一节 C语句概述第二节赋值语句第三节数据的输入与输出一、printf函数;二、putchar函数;三、scanf函数;四、getchar函数第四节顺序结构程序举例第四章选择结构程序设计 (4学时)本章重点:一、逻辑值的表示、使用及其运算;二、关系运算符的运算规则及关系表达式;三、逻辑运算符的运算规则及逻辑表达式;四、if语句;五、switch语句的形式与执行过程。
第十三章例13.1 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *fp;char ch,filename[10];scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("cannot open file\n");exit(0);}ch=getchar();ch=getchar();while(ch!='#'){fputc(ch,fp);putchar(ch);ch=getchar();}putchar(10);fclose(fp);}例13.2 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *in, *out;char ch,infile[10],outfile[10];printf("Enter the infile name:\n");scanf("%s",infile);printf("Enter the infile name:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannot open file\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannot open file\n");exit(0);}while(!feof(in)) fputc(fgetc(in),out);fclose(in);fclose(out);}注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。
第1章程序设计和C语言1第2章算法——程序的灵魂16第3章最简单的C程序设计——顺序程序设计第4章选择结构程序设计85第5章循环结构程序设计114第6章利用数组处理批量数据1426.1怎样定义和引用一维数组1426.1.1怎样定义一维数组1436.1.2怎样引用一维数组元素1446.1.3一维数组的初始化1456.1.4一维数组程序举例1466.2怎样定义和引用二维数组1486.2.1怎样定义二维数组1496.2.2怎样引用二维数组的元素1506.2.3二维数组的初始化1516.2.4二维数组程序举例1526.3字符数组1546.3.1怎样定义字符数组1546.3.2字符数组的初始化1556.3.3怎样引用字符数组中的元素1556.3.4字符串和字符串结束标志1566.3.5字符数组的输入输出1596.3.6使用字符串处理函数1616.3.7字符数组应用举例165习题168第7章用函数实现模块化程序设计1707.1为什么要用函数1707.2怎样定义函数1727.2.1为什么要定义函数1727.2.2定义函数的方法1737.3调用函数1747.3.1函数调用的形式1747.3.2函数调用时的数据传递1757.3.3函数调用的过程1777.3.4函数的返回值1787.4对被调用函数的声明和函数原型1797.5函数的嵌套调用1827.6函数的递归调用1847.7数组作为函数参数1927.7.1数组元素作函数实参1937.7.2数组名作函数参数1947.7.3多维数组名作函数参数1977.8局部变量和全局变量1997.8.1局部变量1997.8.2全局变量2007.9变量的存储方式和生存期2047.9.1动态存储方式与静态存储方式2047.9.2局部变量的存储类别2057.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和定义2147.11内部函数和外部函数2157.11.1内部函数2157.11.2外部函数215习题218第8章善于利用指针2208.1指针是什么2208.2指针变量2228.2.1使用指针变量的例子2228.2.2怎样定义指针变量2238.2.3怎样引用指针变量2248.2.4指针变量作为函数参数2268.3通过指针引用数组2308.3.1数组元素的指针2308.3.2在引用数组元素时指针的运算2318.3.3通过指针引用数组元素2338.3.4用数组名作函数参数2378.3.5通过指针引用多维数组2458.4通过指针引用字符串2558.4.1字符串的引用方式 2558.4.2字符指针作函数参数2598.4.3使用字符指针变量和字符数组的比较263 8.5指向函数的指针2668.5.1什么是函数指针2668.5.2用函数指针变量调用函数2668.5.3怎样定义和使用指向函数的指针变量268 8.5.4用指向函数的指针作函数参数2708.6返回指针值的函数2748.7指针数组和多重指针2778.7.1什么是指针数组 2778.7.2指向指针数据的指针2808.7.3指针数组作main函数的形参2828.8动态内存分配与指向它的指针变量2858.8.1什么是内存的动态分配2858.8.2怎样建立内存的动态分配2858.8.3void指针类型 2878.9有关指针的小结288习题291第9章用户自己建立数据类型2939.1定义和使用结构体变量2939.1.1自己建立结构体类型2939.1.2定义结构体类型变量 2959.1.3结构体变量的初始化和引用2979.2使用结构体数组3009.2.1定义结构体数组3009.2.2结构体数组的应用举例3019.3结构体指针3039.3.1指向结构体变量的指针3039.3.2指向结构体数组的指针3049.3.3用结构体变量和结构体变量的指针作函数参数306 9.4用指针处理链表3099.4.1什么是链表 3099.4.2建立简单的静态链表3109.4.3建立动态链表3119.4.4输出链表3159.5共用体类型3179.5.1什么是共用体类型3179.5.2引用共用体变量的方式3189.5.3共用体类型数据的特点3199.6使用枚举类型3239.7用typedef声明新类型名326习题330第10章对文件的输入输出33110.1C文件的有关基本知识33110.1.1什么是文件33110.1.2文件名33210.1.3文件的分类33210.1.4文件缓冲区33310.1.5文件类型指针33310.2打开与关闭文件33510.2.1用fopen函数打开数据文件33510.2.2用fclose函数关闭数据文件33710.3顺序读写数据文件33810.3.1怎样向文件读写字符33810.3.2怎样向文件读写一个字符串34110.3.3用格式化的方式读写文件34410.3.4用二进制方式向文件读写一组数据34510.4随机读写数据文件34910.4.1文件位置标记及其定位34910.4.2随机读写 35210.5文件读写的出错检测353习题354第11章常见错误分析355附录370附录A在Visual C++ 6.0环境下运行C程序的方法370附录B常用字符与ASCII代码对照表377附录CC语言中的关键字378附录D运算符和结合性378附录EC语言常用语法提要380附录FC库函数384参考文献390第4章选择结构程序设计854.1选择结构和条件判断854.2用if语句实现选择结构874.2.1用if语句处理选择结构举例874.2.2if语句的一般形式 894.3关系运算符和关系表达式914.3.1关系运算符及其优先次序914.3.2关系表达式924.4逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套1004.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例106习题112第5章循环结构程序设计1155.1为什么需要循环控制1155.2用while语句实现循环1165.3用do…while语句实现循环1185.4用for 语句实现循环1215.5循环的嵌套1255.6几种循环的比较1265.7改变循环执行的状态1265.7.1用break语句提前终止循环1275.7.2用continue语句提前结束本次循环1285.7.3break语句和continue语句的区别1295.8循环程序举例132习题141第6章利用数组处理批量数据1436.1怎样定义和引用一维数组1436.1.1怎样定义一维数组1446.1.2怎样引用一维数组元素1456.1.3一维数组的初始化1466.1.4一维数组程序举例1476.2怎样定义和引用二维数组1496.2.1怎样定义二维数组1506.2.2怎样引用二维数组的元素1516.2.3二维数组的初始化1526.2.4二维数组程序举例1536.3字符数组1556.3.1怎样定义字符数组1556.3.2字符数组的初始化1566.3.3怎样引用字符数组中的元素156 6.3.4字符串和字符串结束标志1576.3.5字符数组的输入输出1606.3.6使用字符串处理函数1626.3.7字符数组应用举例166习题169第7章用函数实现模块化程序设计171 7.1为什么要用函数1717.2怎样定义函数1737.2.1为什么要定义函数1737.2.2定义函数的方法1747.3调用函数1757.3.1函数调用的形式1757.3.2函数调用时的数据传递1767.3.3函数调用的过程1787.3.4函数的返回值1797.4对被调用函数的声明和函数原型181 7.5函数的嵌套调用1837.6函数的递归调用1857.7数组作为函数参数1937.7.1数组元素作函数实参1937.7.2数组名作函数参数1957.7.3多维数组名作函数参数1987.8局部变量和全局变量2007.8.1局部变量2007.8.2全局变量2017.9变量的存储方式和生存期2057.9.1动态存储方式与静态存储方式205 7.9.2局部变量的存储类别2067.9.3全局变量的存储类别2097.9.4存储类别小结2137.10关于变量的声明和定义2157.11内部函数和外部函数2167.11.1内部函数2167.11.2外部函数216习题219第8章善于利用指针2218.1指针是什么2218.2指针变量2238.2.1使用指针变量的例子2238.2.2怎样定义指针变量2248.2.3怎样引用指针变量2258.2.4指针变量作为函数参数2278.3通过指针引用数组2328.3.1数组元素的指针2328.3.2在引用数组元素时指针的运算2338.3.3通过指针引用数组元素2348.3.4用数组名作函数参数2398.3.5通过指针引用多维数组2478.4通过指针引用字符串2578.4.1字符串的引用方式 2578.4.2字符指针作函数参数2618.4.3使用字符指针变量和字符数组的比较265 8.5指向函数的指针2688.5.1什么是函数指针2688.5.2用函数指针变量调用函数2688.5.3怎样定义和使用指向函数的指针变量270 8.5.4用指向函数的指针作函数参数2728.6返回指针值的函数2768.7指针数组和多重指针2798.7.1什么是指针数组 2798.7.2指向指针数据的指针2828.7.3指针数组作main函数的形参2848.8动态内存分配与指向它的指针变量2878.8.1什么是内存的动态分配2878.8.2怎样建立内存的动态分配2878.8.3void指针类型 2898.9有关指针的小结290习题293第9章用户自己建立数据类型2959.1定义和使用结构体变量2959.1.1自己建立结构体类型2959.1.2定义结构体类型变量 2979.1.3结构体变量的初始化和引用2999.2使用结构体数组3029.2.1定义结构体数组3029.2.2结构体数组的应用举例3049.3结构体指针3059.3.1指向结构体变量的指针3059.3.2指向结构体数组的指针3069.3.3用结构体变量和结构体变量的指针作函数参数3089.4用指针处理链表3119.4.1什么是链表 3119.4.2建立简单的静态链表3129.4.3建立动态链表3139.4.4输出链表3179.5共用体类型3199.5.1什么是共用体类型3199.5.2引用共用体变量的方式3209.5.3共用体类型数据的特点3219.6使用枚举类型3259.7用typedef声明新类型名328习题332第10章对文件的输入输出33310.1C文件的有关基本知识33310.1.1什么是文件33310.1.2文件名33410.1.3文件的分类33410.1.4文件缓冲区33510.1.5文件类型指针33510.2打开与关闭文件33710.2.1用fopen函数打开数据文件33710.2.2用fclose函数关闭数据文件33910.3顺序读写数据文件34010.3.1怎样向文件读写字符34010.3.2怎样向文件读写一个字符串34310.3.3用格式化的方式读写文件34610.3.4用二进制方式向文件读写一组数据34710.4随机读写数据文件35110.4.1文件位置标记及其定位35110.4.2随机读写 35410.5文件读写的出错检测355习题356第11章常见错误分析374附录390附录A在Visual C++ 6.0环境下运行C程序的方法390 附录CC语言中的关键字398附录D运算符和结合性398附录EC语言常用语法提要400附录FC库函数404参考文献410。
2022年南京理工大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:int a=-1;a=a|0377;printf("%d,%o\n",a,a);以上程序段的输出结果是_______。
2、结构化程序由________、________ 、________ 3种基本结构组成。
3、C语言源程序的基本单位是________4、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______5、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。
6、以下程序的运行结果是_______。
#include <stdio.h>int main(){char s[]="ab\'cdefg\",*p=s+1;printf("%c”,*(p++));printf("%s",p+2);return(0);}7、鸡兔共有30只,脚共有90只,下面程序段是计算鸡兔各有多少只。
请填空。
for(x=0;x<=30;x++){y=30一x;if(_______)printf("%d,%d\n",x,y);}8、设有如下结构体说明:struct ST{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。
_______9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;scanf("%4c%4c",&cl,8&c2);10、下面程序段的运行结果是_______。
char ch[]="600";int a,s=0;for(a=0;ch[a]>= '0'&&ch[a]<='9';a++)s=10*s+ch[a]-'o';printf("%d",s);二、选择题11、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )A.7B.8C.6D.212、下列4组选项中,不是C语言关键字的选项是。
昆明理工大学C语言程序设计课后习题答案第1章认识C语言(一)、是非题1.程序是指挥计算机进行各种信息处理任务的一组指令序列。
A.对B.错2.机器语言与硬件平台相关,但汇编语言和硬件平台无关。
A.对B.错3.编译型高级语言明显优于解释型高级语言。
A.对B.错4.C语言把高级语言的基本结构和低级语言的实用性紧密结合起来,不仅适合编写应用软件,而且适于编写系统软件。
A.对B.错5.面向对象的程序设计方法明显优于面向过程的程序设计方法。
A.对B.错6.计算机算法要有一个明确的起点和确定的步骤序列。
A.对B.错7.main函数是C程序的入口,由计算机系统负责调用。
A.对B.错8.在C语言中,同一行上可以写一条或多条语句,但一条语句不能写在多行上。
A.对B.错9.在C语言中,扩展名为.h的文件称为头文件,常用于组织C标准函数库中的函数。
A.对B.错10.注释语句会增加编译结果的复杂性,因此要尽量减少注释语句的数量。
A.对B.错11.声明变量的含义是通知编译系统为变量分配合适大小的存储空间。
A.对B.错12.C语言不允许使用关键字作为变量的名称,但可以使用保留字为变量命名。
A.对B.错13.符号常量提高了程序的可读性,但降低了程序维护的方便性。
A.对B.错14.变量声明把一个具体的标识符名称和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型。
A.对B.错15. C语言允许在同一条语句中定义多个相同类型的变量,其间用分号进行分隔。
A.对B.错16.在ISO/ANSI 1999规定中,允许将变量声明放在程序中的任何位置。
A.对B.错17.不同类型的数据在内存中所占存储单元的大小不同,内部存储方式不同,取值范围不同,甚至能够参与的运算种类也不相同。
A.对B.错18.有符号和无符号整数的区别仅在于对数据最高位的解释不同。
若最高位解释为数据位,则为signed类型;若最高位解释为符号位,则为unsigned类型。
紫金学院C++课程设计南京理工大学紫金学院C++课程设计报告课程:C++课程设计学院:计算机学院班级:计算机大类四班学号:**********名:**选题名称:扑克牌游戏起止时间:2018.5.22~2018.6.1指导教师:**2018年5月1 问题描述在提供的源程序基础上,写一个程序,可以进行洗牌等操作.2 基本要求1)增加大小王.2)删去一张指定扑克牌后,进行余牌显示.3)创建一副扑克牌,显示一副扑克牌,洗牌,依次分发给四人并显示.3 需求分析输入形式与范围是按照提示语句输入相应的数字或是(Y)否(N)的英文字母输出形式即为提示语句所说明的内容该程序基本任务是完成扑克洗牌,显示玩家手牌,按花色或牌面整理手牌(排序) 测试数据为54张扑克牌面值以及花色,无需手动设置正确的输入将使得程序按说明运行,错误输入默认直接退出程序4 概要设计分为8个部分,也是八个文件头文件两个:all.h 包含主程序所需的所有头文件.class.h 包含所有的类,并卷入all.h 其余cpp文件,共6个,说明如下:main函数主调函数deck 包含deck类的函数perdeck 包含perdeck类的函数playdeck 包含playdeck类的函数playingcard 包含playingcard类的函数main函数调用的函数顾名思义5 详细设计All.h#pragma once#include<iostream>#include<string.h>//编译器是VS2017#include<time.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>Class.h#pragma once#include"all.h"using namespace std;class PerDeck;class PlayingCard{int nValue;//扑克牌实际面值char achFace[3];//扑克牌字符串A,2,......10,J,Q,K char chSuit;//扑克牌花色public:friend class PerDeck;PlayingCard();//将对象清零void ShowCard();//显示面值花色void CardMake(int);//给一张扑克牌赋值(面值,花色) };class Deck{private:PlayingCard m_cardarray[54];int nLastDelt;public:friend class PerDeck;Deck();void MakeDeck();//将52张牌清零(没有大,小王)void DealOne();//删除开头一张牌void ShowDeck();//依次逐张显示这副牌void DeckShuff(int);//用于洗牌,参数是洗牌次数void RemoveCard();//清零删除掉的那张牌};class PerDeck{private:PlayingCard myCard[20];int nNum;public:PerDeck() {}void MakePerDeck(Deck &, int);void Show();void SortFace();void SortSuit();int Delete(int n);};class PlayDeck{private:PerDeck myDeck[4];PlayDeck() {}void PlayCard(Deck &);void Show();int DeleteOne(int row, int column);int DeleteAll(int, int, int ,int);void SortDeckFace(int);void SortDeckSuit(int);void s(int);};void ProgramInit();//初始化,并输出信息void CenterText(char ShellText[80]);//居中显示int GetNumber();//键入整数型char GetKey();//键入字符串型void DeckMakeDiver();//主要算法(生成扑克牌,洗牌,删除等) int GetRandInt(int min, int max);//在min到max间选随机值void ProgClose();//暂停,供用户查看中间运行结果main函数.cpp#include"class.h"using namespace std;int main(void){srand((unsigned)time(NULL));int nCardNum = 0;ProgramInit();DeckMakeDiver();ProgClose();return 1;}Playdeck.cpp#include"class.h"#include<iostream>using namespace std;void PlayDeck::PlayCard(Deck &k){int a, b, c, d;char g[29] = { "依次输入四位玩家手里的牌数:" };CenterText(g);cout << endl;cin >> a >> b >> c >> d;if (a + b + c + d > 54)char g[] = { "超过牌的张数,退出游戏。