您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > VC课程设计指导书(12.2.16)
计算机程序设计(VC++)课程设计指导书江苏科技大学南徐学院2012年2月一.课程设计教学目的和任务《计算机程序设计(VC++)课程设计》是实践性教学环节,是学生必修的一门计算机实践课程。本课程设计的目的是通过综合性程序设计训练,使学生进一步巩固对计算机程序设计语言(VC++)基本语法、基本算法的理解,加深对面向对象程序设计的理解与应用,并使学生养成模块化、结构化程序设计的良好风格,以及一定的程序组织能力,掌握基本程序设计的方法和技巧,为学习后续课程和实际编程打下良好的基础。本课程设计的重点要求学生掌握基本程序设计理念和方法,培养学生基本程序设计的应用和开发能力。二.课程设计目标与要求1.课程设计教学目标本课程通过编程技能训练,使学生掌握下列基本算法和数据结构的综合运用:(1)基本算法:穷举、迭代、递推、递归、排序和查找。(2)数据结构:数组、结构体、指针、动态内存分配、类。能熟练运用计算机程序设计语言(VC++)工具,编程解决实际生活中常见的问题。2.课程设计基本要求完成或基本完成“计算机程序设计(VC++)课程设计指导书”上的任课教师选定(或“课程设计任务书”中规定的任务(包括编程以及上机调试).(1)根据课程设计题目的要求,完成算法分析、算法流程图和源程序。(2)上机调试源程序,并进行充分的测试,力求程序的正确性、可读性、健壮性和运行的高效性。(3)课程设计结束后,按照指导书上要求的报告格式写出课程设计报告。三.教学内容、学时分配及其基本要求1.课程设计选题原则课程设计的选题,可根据教学的实际情况,由任课教师在“计算机程序设计(VC++)课程设计指导书”中选定。(也可以自行拟定一部分,以“课程设计任务书”的形式另行发布。)2.学时分配及基本要求实施参考方案:1周小综合+1周大综合。先进行一周的程序设计的基本练习(小综合),后进行一周的综合练习(大综合),具体要求如下:(1)小综合:每天3~4道小综合题,程序规模为50-100行。(2)大综合:选一道较为实际的应用题,如学生成绩管理、图书管理、通讯录等,程序规模为100-500行。课程设计报告等开发文档由学生课后完成。四.课程设计成绩的考核与评定方法1.过程考核:考查学生的课程设计态度、组织纪律、考勤情况、工作进度、分析问题和解决问题能力等,平时考核占总成绩的20%。2.现场考核:主要考查学生程序设计、程序调试情况以及现场提问的回答情况,现场考核占总成绩的50%。3.设计结果考核:考核占总成绩的30%。根据以上三项的考核情况评定总成绩,分优秀、良好、中等、及格、不及格五个等级。五.主要教学参考书目或资料1.南徐学院自编.计算机程序设计(VC++)课程设计指导书2.2.张岳新.VisualC++程序设计.苏州:苏州大学出版社,20023.钱能主编.《C++程序设计教程》.清华大学出版社1999六.课程设计内容(小综合题+大综合题)小综合题(必做)基础题1.编程统计键盘输入的一行字符串中的单词个数。设单词之间以一个或多个空格分开。2.求满足以下指定条件的所有三位数:1)该三位数是某一个二位数的平方;2)该三位数的个位数、十位树和百位数各不相同。要求每行输出五个数。例如,满足以上条件的数为1691962562893243615295766257297848419613.如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数及这些完数的和。要求:(1)要求使用for循环(2)输出形式为:完数1+完数2...=和值算法说明(下列算法仅供参考,学生可以采用其它算法):(1)sum=0,m=2(2)当m=1000时,反复执行(2.1)(2.2)(2.3)(2.4),否则转(3)(2.1)k=m/2,n=0,j=1(2.2)当j=k时,反复执行(2.2.1)(2.2.2),否则转(2.3)(2.2.1)ifj是m的因子则执行n=n+j(2.2.2)j++(2.3)ifm=n则输出完数m,sum=sum+m(2.4)m++(3)输出m值填空题1.题目:一个数的各位数字倒过来所得到的新数叫原数的反序数.如果一个数等于它的反序数,则称它为对称数或回文数。求10000—11000之间的二进制对称数算法说明:先将正整数n的二进制字符形式放在字符数组s2中,二进制字符形式的反序放在字符数组s1中,然后,比较这两个字符串,若相等,则是二进制对称数#includeiostream.h#includestring.hintfunc(intn,char*s1){charch,s2[33],*p,*q;p=s1;q=s2+32;*q--=while(n){ch=//求n的最低二进制位的字符表示形式n/=2;*p++=ch;*q--=ch;}*p=0;q++;if()returntrue;elsereturnfalse;}voidmain(void){chars[33]={0};intcount=0;cout”二进制对称数如下:\n”;for(intn=10000;n11000;n++){if(){cout”n=”n”\t二进制形式为:”sendl;count++;}}cout”对称数的个数为:”count’\n’;}2.题目以下程序中的函数fun(int*a,intn)的功能是:把形参a所指向的数组中的最小值放在a[0]中,接着把形参a所指数组中的最大值放在a[1]中;把a所指数组中的次小值放在a[2]中,把a所指数组中的次大值放在a[3]中,其余依次类推,直至将数组中数据依次处理完为止例如:把a所指向数组中的数据最初排列为:5,1,3,2,9,7,6,8,4.按以上规则移动数组中的数据后,数据的排列为:1,9,2,8,3,7,4,6,5#includeiostream.h#defineN9voidfun(int*a,intn){intmax,min,px,pn,t;for(inti=0;in-1;________){max=min=a[i];px=pn=i;for(intj=i+1;jn;j++){if(maxa[j]){max=a[j];px=j;}if(mina[j]){min=a[j];pn=j;}}if(pn!=i){t=a[i];a[i]=min;________if(px==i)px=pn;}if(){t=a[i+1];a[i+1]=max;}}}voidmain(void){intb[N]={5,1,3,2,9,7,6,8,4};cout”数组中的数据依次为:”endl;for(inti=0;iN;i++)coutb[i]’\t’;coutendl;fun(b,N);cout”处理后数组中的数据依次为:”endl;for(i=0;iN;i++)coutb[i]’\t’;coutendl;}改错题1.题目:下列程序的功能是输出字符串中最长的单词。函数longest的返回值为其参数string中最长单词的起始位置。在该函数的实现中,变量flag标识单词是否开始;len记录当前单词已累计的字母个数;length记录目前最长单词的长度;point指向当前单词的起始位置;place指向最长单词的起始位置。头文件ctype.h中声明的函数intisalpha(charc)的作用是判断字符c是否为英文字母,若是英文字母则返回非0值,否则返回0。含有错误的源程序如下:#includeiostream.h#includestring.h#includectype.hvoidmain(){intlongest(char);charline[100];cout”Inputastringplease:\n”;cin.fetline(line);cout”Thelongestwordis:“;for(inti=0;isalpha(line[i]);i++)coutline[i];coutendl;}intlongest(charstring[]){intlen=0,length=0,flag=1,place=0,point;for(inti=0;istrlen(string);i++)if(isalpha(string[i]))if(flag){point=i;flag=o;}elselen++;else{flag=1;if(lenlength){length=len;place=point;len=0;}}returnpoint;}要求1、将上述程序录入文件myfa1.cpp中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。2、改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。2.题目:判断一个字符串是否为回文。所谓回文,是指正向拼写和反向拼写都一样的字符串。例如,madam是回文。假定字符串中只出现字母,且不区分字母的大小写,即A和a被视为同一字母。其余类似。如Madam实回文,而sir不是回文。函数palin(char*)判断一个字符串是否为回文,函数返回1;否则,返回0.在主函数中当判断一个字符串是回文时,输出Yes;否则输出No。含有错误的源程序如下:#includeiostream.hvoidtoupper(chars[]){for(inti=0;s[i]!='\0';i++)if('a'=s[i]='z')s[i]=s[i]+32;}intpalin(char*s){char*head,*tail;head=tail=s;while(*tail)tail++;tail--;while(headtail){if(*head==*tail)return(0);head++;tail--;}return(1);}voidmain(){chars[80];cin.getline(s,80);toupper(s);if(intpalin(*s))coutYes.\n;elsecoutNo.\n;}要求1、将上述程序录入文件myfa2.cpp中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。程序中的注释可以不输入。2、改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。提高题1.素数是除1和它本身之外不能被其他任何整数整除的正整数。例如:11是素数,因为它除了能被1和11整除外,不能被其他数整除。试建立一个类prime,求出指定范围内的素数,要求如下:(1)私有数据成员inta[30]:存放求出的素数intm,n,p:m、n存放素数的取值范围,p存放所求出的素数的个数(2)公有成员构造函数prime(int,int):初始化数据成员m、n。voidisprime():根据给定的m、n的值,求出介于m、n之间(包括m、n本身)的所有素数及个数。voidshow():显示求出的所有素数及个数。(3)在主程序中对该类进行测试。使用测试数据m=1,n=100。2.定义一个类NUM,将一维数组中值为奇数的元素按从小到大的顺序排列,值为偶数的元素按从大到小的顺序排列,并且值为奇数的元素排序后仍位于原来奇数元素所在的位置上,值为偶数的元素排序后仍位于原来偶数元素所在的位置上。具体要求如下:(1)私有数据成员●int*p;指向待处理的数据。●intn;待处理数据的个数。(2)公有成员函数●NUM(int*t,intm);构造函数,用参数t初始化成员p,m初始化n。●voidfun();将数组p按题意要求处理。●voidprint();输出数组。●~NUM();析构函数,完成必要的操作。(3)在主函数中定义并初始化一个数组a,用a对类NUM进行测试。
本文标题:VC课程设计指导书(12.2.16)
链接地址:https://www.777doc.com/doc-3986202 .html