烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
【项目1 - C/C++语言中函数参数传递的三种方式】 C语言提供了两种函数参数传递的方式:传值和传地址。在C++中,又拓展了引用方式。通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准备。 下面是希望能够交换两个整型变量的swap函数的三个版本(从课程主页中可以找到项目链接,复制后就能调试,不必费事敲代码): //(1)传值 void mys
前言 新学期,我接受安排,承担“数据结构”课程的教学任务。历时四年的,针对大一的“程序设计基础”课程的教学暂时停止。在这四届学生身上,从最初的有博客交作业,到网络习题课,再到课堂录屏上网,然后有了翻转课堂。一个不安分的老师,带了四届勇于改变的学生。 其实,当初沉到大一,探讨针对大一学生的教学方法,我似乎也有些疲态,正想着将这四年处理教学问题中的心得,在和大二的学生
有不少人说数据结构课程抽象,学习起来感到困难。有些同学放弃了,有些同学拿出了高中学习时练熟的功夫,强行理解,死记硬背,结果辛苦不少,效果不佳,反倒得到很多枯燥的感受。 其实,数据结构课中有不少理论性分析的内容,但对于本科生学习的内容,以及要达到目标,还是以实践性为主的。在学习的方法上做出改变,这门课程就可以展示出生动的实践性味道来。这就要求在学习过程中,将实践学习有
[贺老师教学链接] [C语言及程序设计进阶] [本课讲解] bank.h/*注意:运行前要建立空文件account.bin*/ #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #include <malloc.h> typedef struct { int account; //账号 int passw
返回:贺老师课程教学链接 项目要求 【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20 ——这个应该会(2)1+1/2+1/3+…+1/20 ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是
监考很闲。监考自己教出来的学生,心情也很复杂。 在有些学生们想象中,期末考试期间的老师就是捕快加屠夫,最喜欢干的事,莫不过是挥舞着钩子,见人就挂。 实际上,很告诉大家,期末的老师都是人格分裂患者。 一方面,真心想让学生过关,甚至嘴上喊得凶,却主动会把门槛放得很低。学生过不了,后面一堆事。 另一方面,各种检查都在,担惊受怕。再得,自己受了几十年的教育,
一天半的时间,《程序设计课程设计》的验收结束了。将课程设计安排在考试周,真是不爽,学生们哪能有心思投入在设计上。话又说回来,考虑到这一情况,我在第七周就将题目公布出来,目的就是让同学们提前做。但拖到最后才动工的,占大多数。 不管怎样,最后的环节——验收,也就这样结束了。私下里,为制定的规则,小得意一下。写出来一个60分的指导书和示例,为“有需求”的同学“参考”,这样,
课程链接:http://edu.csdn.net/combo/detail/30,提供所有的视频和课件下载。 三部分的课程主页,提供了为每一课时配套的自测、示例下载,以及程序阅读、程序填空、实践项目、参考解答等。这是本课最具价值的部分,是保证学习效果的根本保证。请在看视频基础上,完成相关的实践。 这三部分的课程主页的链接分别是:【初步篇】、【提高篇】、【进阶篇】 本课QQ交流群
带着学生做课程设计。程序一大,课程中做过了小项目,练过了分解动作,一到合起来了,难免还是要乱了分寸。其实,实战的功夫,就是这样出来的。(课程设计指导视频链接(第36课时,3.18 银行系统开发),课程主页在链接,指导文档见链接,示例程序见链接)。 话说,已经有两位做银行系统的同学和我说,“文件中写不进去数据。程序一退出,明明写进去了,结果却是空文件。”这不是一个小打
返回:贺老师课程教学链接 【项目5 - 二进制文件浏览器】 (1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图: 提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。 [参考解答] #include <stdio.h> #include
返回:贺老师课程教学链接 【项目4 - 间隔选职工】 (1)从键盘输入10名职工的工号、姓名和年龄,并保存到二进制文件worker.rec中 用下面的结构体表示一名职工的记录 typedef struct { int num; //工号 char name[10]; //姓名 int age; //年龄 } Worker; [参
返回:贺老师课程教学链接 【项目3 - 处理C语言源代码的程序】 用C语言写的源程序是一种文本文件。本项目将以C语言的源程序为操作对象,完成对源程序的一系列处理,如判断是否有main函数、将某些行加上注释等。各功能可以分别编制一个程序实现(建议用这种简单的方案),也可以将其集成在一起(向着自己做出IDE努力)。 (1)读入一个C++程序,判断其中是否只有一个main()
返回:贺老师课程教学链接 【项目2-用文本文件保存的学生名单】 文件score.dat中保存的是若干名学生的姓名和C语言课、高数和英语成绩。 (1)定义学生结构体,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 //定义学生结构体 typedef struct { string name; double cpp; double mat
返回:贺老师课程教学链接 【项目1 - 小玩文件】 1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。 #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; if((fp=fopen("abc.txt",_______))==
返回:贺老师课程教学链接 【项目1 - 小玩文件】 1、下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。 #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; if((fp=fopen("abc.txt",_______))==
返回:贺老师课程教学链接 1、阅读下面的程序,写出输出结果,并上机运行程序进行对照 #include "stdio.h" int main() { FILE *outfile,*infile; outfile=fopen("data.dat","w"); fprintf(outfile, "1111111111\n"); fprintf(o
返回:贺老师课程教学链接 阅读并运行下面的程序,掌握按位运算的规则。 (1) #include "stdio.h" int main() { char x=040; printf("%d\n",x=x<<1); return 0; } (2) #include "stdio.h" int main() { unsi
程序设计初学者在学习时,总想问:“这个东东有什么用?”于是,在建设有关的教学资源时,也便总从这个角度,试图给出一些案例,这是一个将初学者作为教学目标人群的人该干的事。 然而,在准备这样一些案例时,诸如循环、数组、结构体之类的,可以编出一堆堆的能体现实际应用的案例,或出例题,或出实践题目,都好说。然而,对于有些在教科书中的“小知识点”,作为讲程序设计语言,有些老师都选
返回:贺老师课程教学链接 【项目2-敲了哪一个键?】 在应用中,常需要检测键盘上敲了哪一个键。每个输入的键都对应一个键值(我们熟悉的字母、数字等,键值就是其ASCII码)。在一些游戏、控制程序中,常用到的,诸如上下左右方向键、PgDn和PgUp这样的翻页键,以及ESC退出键等。用getch()捕获键盘输入,若输入的是PgDn(下一页,键值161)、PgUp(上一页,键值1
返回:贺老师课程教学链接 【项目1-对称点】 设计函数,可以按指定的方式,输出一个平面点的对称点 下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现。 #include<stdio.h> enum SymmetricStyle {axisx, axisy, point};//分别表示按x轴, y轴, 原点对称三种方式 void o
返回:贺老师课程教学链接 【项目1-对称点】 设计函数,可以按指定的方式,输出一个平面点的对称点 下面给出枚举类型定义和main函数(测试函数),请写出output函数的实现。 #include<stdio.h> enum SymmetricStyle {axisx, axisy, point};//分别表示按x轴, y轴, 原点对称三种方式 void
返回:贺老师课程教学链接 【项目4-链表版通信录】 利用链表存储数据,写一个通信录程序,能够记录多个联系人的编号、姓名、性别、联系电话、地址,完成数据的录入、添加、删除、修改以及查询功能。 [参考解答] 本解答自网络:链接 #include<stdio.h> #include<string.h> #include<stdlib.h>
返回:贺老师课程教学链接 【项目3 - 改造链表】 下面是一个建立动态链表的程序。阅读程序,然后按要求改造程序。 #include <iostream> using namespace std; #include <stdio.h> #include <malloc.h> #define N 5 typedef struct
返回:贺老师课程教学链接 【项目2-拆分链表】 编写一个函数将一个头指针为a的单链表A分解成两个单链表A和B,其头指针分别为a和b,使得A链表中含有原链表A中序号为奇数的元素,而B链表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序。例,建立长度为7,元素为1 2 3 4 5 6 7的链表后,经拆分,得到两个数组A和B,其元素分别是1 3 5 7 和2 4 6 [
返回:贺老师课程教学链接 【项目1-链表的合并】 输入一个整数m,表示A链表的长度,再输入m个数作为A链表中的m个数据元素,建立链表A,其头指针为heada。输入一个整数n,表示B链表的长度,再输入n个数表示B链表中的n个数据元素,建立链表B,其头指针为headb。输入i、len、j,将要从单链表A中删除自第i个元素起的共len个元素,然后将单链表A插入到单链表B的第j个
返回:贺老师课程教学链接 【项目1-链表的合并】 输入一个整数m,表示A链表的长度,再输入m个数作为A链表中的m个数据元素,建立链表A,其头指针为heada。输入一个整数n,表示B链表的长度,再输入n个数表示B链表中的n个数据元素,建立链表B,其头指针为headb。输入i、len、j,将要从单链表A中删除自第i个元素起的共len个元素,然后将单链表A插入到单链表B的第j个
返回:贺老师课程教学链接 (1)程序下面的阅读,写出其输出结果(建议画出内存中存储的数据,使链表直观地表示出来 ) #include <stdio.h> #include <stdlib.h> struct NODE { int num; struct NODE *next; }; int main() { struct N
返回:贺老师课程教学链接 【项目3-区号查询】 在文件PostCode.txt中,提供了全国各省城市的长途区号和邮政编码。请以这个文件为数据来源设计程序,输入城市名,输出该城市的相关的信息。 [参考解答] #include <stdio.h> #include <stdlib.h> #include <string.h> int
返回:贺老师课程教学链接 【项目2-玩转日期和时间】 定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能。 提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试。可以设计一个函数,即刻进行测试,以降低复杂度。 要实现的功能是: (1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中; (2)输出该日在
返回:贺老师课程教学链接 【项目1-学生成绩统计】 每位同学的信息学号、姓名、C、高数、英语成绩。定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13])、姓名(name)、三门课的成绩(grade)、总分(score)、均分(average))。 (1)从键盘上输入N名学生的信息(N定义为常变量); (2)求出每名同学的总分和均分,并存储在结
返回:贺老师课程教学链接 【项目1-学生成绩统计】 每位同学的信息学号、姓名、C、高数、英语成绩。定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13])、姓名(name)、三门课的成绩(grade)、总分(score)、均分(average))。 (1)从键盘上输入N名学生的信息(N定义为常变量); (2)求出每名同学的总分和均分,并存储在结
返回:贺老师课程教学链接 【项目7-紧急救援】 洪水突降,人们被困在各个屋顶上。如图所示: 救生船每次将从大本营出发,救了人之后将人送回大本营。已知救生船速度50米/分钟,逐个屋顶救人,每人上船1分钟,下船0.5分钟。以救援大本营为原点,输入每个屋顶的位置坐标和屋顶上的人数,求出所有人都到达大本营并登陆所用的时间。 要求使用结构体表示屋顶的坐标和人数。 [参考解答]
返回:贺老师课程教学链接 【项目6-日期结构体】 (1)定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。 #include <stdio.h> struct Date { int year; int month; int day; }; int main() { struct Date d
返回:贺老师课程教学链接 【项目5-个税计算器之码数分离】 在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。 下面定义了一个结构体数组,保存各个收入范围个税计算的基础数据,这样,一定程度上,将代码与数据分离,这是工程中常见的做法。 请先对照附后的个人所得税计算方法,理解下面的结构体数组: struct
返回:贺老师课程教学链接 【项目4-体重监测器】 根据世界卫生组织推荐的体重标准,男性的标准体重=(身高cm-80)×70﹪,女性的标准体重=(身高cm-70)×60﹪。标准体重正负10﹪为正常体重;标准体重正负10﹪~ 20﹪为体重过重或过轻;标准体重正负20﹪以上为肥胖或体重不足,其中超重计算公式为:超重(%)=[(实际体重-标准体重)/(标准体重)]×100%,体重
返回:贺老师课程教学链接 【项目3-点结构体】 下面定义了一个表示平面上一点的结构体类型: struct Point { float x; //横坐标 float y; //纵坐标 }; (1)请编写程序,输入一点的横纵坐标,输出该点到原点的距离 [参考解答] #include <stdio.h> #includ
返回:贺老师课程教学链接 【项目2-学生成绩处理】 (1)定义学生结构体,在结构体数组中,输入了学生学号和两门课的成绩,计算均分后,输出成绩单,请在下面的程序基础上,将程序补充完整。 #include <stdio.h> #define N 100 /*N表示最多允许的学生人数*/ struct Student { int num; //学号
返回:贺老师课程教学链接 【项目1-复数结构体】 编写一个程序,首先定义一个复数数据类型,即结构类型。然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出,请将程序补充完整。 #include <stdio.h> struct complex { int re; int im; }; int main() { stru
返回:贺老师课程教学链接 【项目1-复数结构体】 编写一个程序,首先定义一个复数数据类型,即结构类型。然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出,请将程序补充完整。 #include <stdio.h> struct complex { int re; int im; }; int main() { stru
返回:贺老师课程教学链接 请写出下面程序的运行结果或说明其功能,通过运行程序进行对照 (1) #include <stdio.h> #define DEBUG int main() { #ifdef DEBUG printf("Debugging\n"); #else printf("Not debugging\n"); #endif
返回:贺老师课程教学链接 写出下面程序的输出结果,并和运行的结果对照。 (1) #include<stdio.h> #define M 3 #define N M+1 #define NN N*N/2 int main() { printf("%d\n", NN); return 0; } (2) #include<stdio
返回:贺老师课程教学链接 【项目-递归函数】 (1)立方累加和:用递归函数求f(n)=13+23+...+n3f(n)=1^3+2^3+...+n^3,要求先将f(n)f(n)数学表达式表示成递归的形式,然后再编程序实现。 [参考解答] 递归公式: f(n)={1,n3+f(n−1),n=1n>1 f(n) = \begin{cases} 1, & \text
返回:贺老师课程教学链接 【项目-递归函数】 (1)立方累加和:用递归函数求f(n)=1 3 +2 3 +...+n 3 f(n)=1^3+2^3+...+n^3,要求先将f(n) f(n)数学表达式表示成递归的形式,然后再编程序实现。 (2)写出求1∗3∗...∗n 1*3*...*n的递归式,并编写出递归函数求解。 (3)编程序,用递归函数求出两个数的最大公约数
返回:贺老师课程教学链接 阅读下面的程序,写出运行结果,并和上机运行的结果对照 (1) #include <stdio.h> long fun(int n) { long s; if(n==1||n==2) s=2; else s=n+fun(n-1); return s; } int main
返回:贺老师课程教学链接 【项目3-随便改】保持下面程序主体for循环部分不变,用你能想到的办法修改程序,使下面程序的输出的a每次都能变化,输出1 2 3 4 #include<stdio.h> void change(int a) { a=a+1; } int main() { int a=0; int n=4; int i=
返回:贺老师课程教学链接 【项目1-程序的多文件组织】请将下面的程序中的代码分别保存在两个文件中,利用多文件的方式组织。 * main.c(也可以是别的名字) #include <stdio.h> int max(int x,int y); int min(int x,int y); int main( ) { int a,b,c1,c2;
返回:贺老师课程教学链接 1、写出下面程序的运行结果 #include <stdio.h> int a=3, b=5; int max(int a,int b) { int c; c=a>b ? a : b; return c; } int main() { int a=8; printf("%d\n",max
贺老师教学链接 C语言及程序设计进阶 本课讲解 例:用非标准文件函数复制文件 #include <stdio.h> #include <fcntl.h> #include <stdlib.h> int main() { int handle1, handle2; char ch, filename1[20], file
贺老师教学链接 C语言及程序设计进阶 本课讲解 对比ASCII文件和二进制文件 //(1)将short int x=12321写入文本文件 #include<stdio.h> #include<stdlib.h> int main( ) { short int x=12321; FILE *outfile = fopen("as
贺老师教学链接 C语言及程序设计进阶 本课讲解 示例:写到尾再从头读 #include<stdio.h> #include<stdlib.h> int main() { int a[10], b[10], i; FILE *iofile; if((iofile=fopen("f1.dat","w+"))==NULL)