c语言课程设计报告 数独之欧阳家百创编
- 格式:doc
- 大小:142.50 KB
- 文档页数:11
《C语言程序设计》欧阳家百(2021.03.07)课程设计报告(2013— 2014学年第3学期)题目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:吴芸成绩:计算机科学与技术系2014年6月23日目录一、课程设计的目的与要求 (1)二、方案实现与调试 (3)2.1 掷骰子游戏 (5)2.2 射击游戏 (7)2.3 计算存款本息之和 (8)2.4肇事逃逸 (10)2.5 礼炮 (12)2.6 汽车加油 (14)2.7 大优惠 (16)2.8 金币 (19)三、课程设计分析与总结 (23)附录程序清单 (25)一、课程设计的目的与要求(含设计指标)C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。
这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
编写程序要求遵循如下基本要求:①模块化程序设计②锯齿型书写格式③必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。
四川师范大学计算机科学学院《C语言程序设计》实验手册2012年2月年级: 2011级专业:电子商务班级: 04班姓名:罗桂清学号: 2009110438 指导教师:廖雪花《C语言程序设计》实验课程简介课程名称:C语言程序设计实验课程性质:专业必修课课程属性:专业必修课学时学分:学时32 学分1开课实验室:软件实验室面向专业:网络工程、软件工程、计算机科学与技术一、课程的任务和基本要求C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。
本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。
C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。
通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验项目【实验一】最简单的C程序---顺序程序设计【实验二】逻辑运算和判断选取控制【实验三】循环结构程序设计(一)【实验四】循环结构程序设计(二)【实验五】函数【实验六】数组(一)【实验七】数组(二)【实验八】指针【实验九】结构体、共用体和文件【实验十】C程序综合性实验三、有关说明1、与其它课程和教学环节的联系:先修课程:计算机文化后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程2、教材和主要参考书目:(1)教材:《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。
(2)主要参考书目:《C语言程序设计》谭浩强主编,清华大学出版社,2003年。
三、实验内容实验一最简单的C程序---顺序程序设计(验证性实验 2学时)(一)、实验目的1.熟悉win-tc程序运行环境2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法3.掌握C语言中使用最多的一种语句——赋值语句4.掌握数据的输入输出方法,能正确使用各种格式控制符(二)、实验内容1.写出下列程序的运行结果(1)#include <stdio.h>void main(){printf(“*****************\n”);printf(“This is a c program. \n”);printf(“****************\n”);}运行结果及分析:运行结果:*****************This is a c program*****************分析:1. c程序中的#include<stdio.h>是指一个标准输入输出文件,它包含了标准输入输出函数。
C语言程序设计实验报告12实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;(3)掌握函数的嵌套调用及递归调用的设计方法;(4)在编程过程中加深理解函数调用的程序设计思想。
2实验内容(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。
(2)输入三个整数,求最大值和最小值。
(3)编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。
如果a是b的整数倍,则函数返回值为1,否则函数的返回值为0。
(4)编写两个函数,一个函数gcd( )的功能是求两个整数的最大公约数,另一个函数mul( )的功能是求两个整数的最小公倍数。
3算法描述流程图(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。
(2)输入三个整数,求最大值和最小值。
(3)编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。
如果a是b 的整数倍,则函数返回值为1,否则函数的返回值为0。
(4)编写两个函数,一个函数gcd( )的功能是求两个整数的最大公约数,另一个函数mul( )的功能是求两个整数的最小公倍数。
4源程序(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。
#include<stdio.h>void primeNum(int x){int i,k;if(x==0||x==1)printf("%d is not a prime number\n",x); else{for(i=2;i<=x/2;i++)if(x%i==0)k=0;if(k==0)printf("%d is not a prime number\n",x); elseprintf("%d is a prime number\n",x);}}void main(){int m;printf("请输入一个数:");scanf("%d",&m);primeNum(m);}(2)输入三个整数,求最大值和最小值。
经典C语言程序设计100例欧阳引擎(2021.01.01)1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |53.学习使用按位异或 ^54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子60.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针)78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例394.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2-------------------------------------------------------------------------------- c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
C语言课程设计论文欧阳家百(2021.03.07)学生姓名:陈丹学生学号: 20091020101所在班级:信息与计算科学一班任课教师:马老师通讯录管理系统【设计目的】设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。
(1)数据包括:人名、工作单位、电话号码和E-mail地址。
(2)可对记录中的姓名和电话号码进行修改。
(3)可增加或删除记录。
(4)可显示所有保存的记录。
(5)可按人名或电话号码进行查询。
【设计思路】根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】图1 系统功能模块图【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】图2. 主函数流程图V oidmenu() /*主界面*/{int n, w1;void enter(); void add(); void modify(); void browse(); void deleter(); void search();do{puts("\t******************************菜单*****************************\t\n\n");puts("\t\t\t\t1.新建联系人");puts("\t\t\t\t2.添加联系人");puts("\t\t\t\t3.修改");puts("\t\t\t\t4.删除");puts("\t\t\t\t5.浏览");puts("\t\t\t\t6.查找");puts("\t\t\t\t7.退出");puts("\n\n\t***************************通讯录******************************\t\n");printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n);if(n<1||n>7){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1: enter(); break; /*输入模块*/case 2: add(); break; /*添加模块*/附录:源代码#define N 50#include<stdio.h>#include<string.h>struct people{char name[20]; char company[50]; char num[15]; char mail[20];}peop[N];void printf_face(){ printf("\n\t姓名\t单位\t电话号码\t邮箱\n"); }void printf_one(int i){ printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i]. num,peop[i].mail); }void printf_n(int n){ int j;for(j=0;j<n;j++){ if((j!=0)&&(j%10==0)) {printf("\n\nPress any key to continue...:"); getchar(); puts("\n\n");}printf_one(j);} getchar();}int load(){ FILE *fp;int i;if((fp=fopen("file","rb"))==NULL){ printf("\nCan not open file\n");exit(0);}for(i=0;!feof(fp);i++)fread(&peop[i],sizeof(struct people),1,fp);fclose(fp);return(i-1);}int modify_data(int i,int n){ int c,w1; void input(int i); void menu();do{ puts("\n修改选项=>\n\n 1).姓名 2).单位 3).电话号码 4).邮箱5).所有数据 6).取消并返回");printf("请选择?: [ ]\b\b");scanf("%d",&c);if(c>6||c<1) {puts("\nChoose error! Please again!"); getchar();}}while(c>6||c<1);do{ switch(c){ case 1: printf("name:"); scanf("%s",peop[i].name); break;case 2: printf("company:"); scanf("%s",peop[i].company); break; case 3: printf("number:"); scanf("%s",peop[i].num); break;case 4: printf("e-mail:"); scanf("%s",peop[i].mail); break;case 5: input(i); break;case 6: menu();}puts("\nNow:\n");printf_face(); printf_one(i);printf("\n确定?\n\n\t1).是2).不,重新修改3).返回不保存[ ]\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}void input(int i){ printf_face(); printf("\t");scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num, peop[i].mail); }void save(int n){ FILE *fp; int i;if((fp=fopen("file","wb"))==NULL){ printf("\nCan not open file\n");exit(0);}for(i=0;i<n;i++)if(peop[i].name[0]!='\0')if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1)printf("file write error\n");fclose(fp);}void printf_back(){int w; void browse(); void menu();printf("\n\n\t^_^.Successful. ^_^\n\n");printf("What do you want to do?\n\n\t1).浏览所有\t2).返回: [ ]\b\b"); scanf("%d",&w);if(w==1) browse();else menu();}void main(){void menu();menu();}void menu(){int n, w1;void enter(); void add(); void modify(); void browse(); void deleter(); void search();do{puts("\t************************菜单************************");puts("\t\t*******************1.新建联系人*******************");puts("\t\t*******************2.添加联系人*******************");puts("\t\t*******************3.修改*******************"); puts("\t\t*******************4.删除*******************"); puts("\t\t*******************5.浏览*******************"); puts("\t\t*******************6.查找*******************"); puts("\t\t*******************7.退出*******************"); puts("\n\n\t********************通讯录*********************");printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n);if(n<1||n>7){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1: enter(); break;case 2: add(); break;case 3: modify(); break;case 4: deleter(); break;case 5: browse(); break;case 6: search(); break;case 7: exit(0);}}void enter(){ int i,n;printf("How many people(0-%d)?:",N-1); scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++){printf("\n输入第 %d个记录.\n",i+1); input(i);}if(i!=0) save(n);printf_back();}void add(){ int i,n,k,t;n=load();printf("How many people do you want to add(0-%d)?:",N-n-1); scanf("%d",&t); k=n+t;for(i=n;i<k;i++){ printf("\n输入第 %d个记录.\n",i-n+1); input(i);}save(k); printf_back();}void modify(){ struct people s; int i,n,k,w0=1,w1,w2=0;n=load();do{ k=-1; printf_face(); printf_n(n);do{ printf("\n\nEnter name that you want to modify!\nName:"); scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);w1=modify_data(k,n);if(w1==1) {printf("\n\t^_^.Successful ^_^.\n\n是否继续?\n\n\t1).是 2).保存返回\t[ ]\b\b");scanf("%d",&w0); w2=1;}else{w0=0; if(w2==0) peop[k]=s;}if((w0!=1)&&(w2==1)) save(n);}while(w0==1); menu();}void browse(){ int n;n=load();printf_face(); printf_n(n);printf("\t共有 %d 记录.\n",n);printf("\nPress any key to back...");getchar();menu();}void search(){ int w0,k,i,n,w1,w2; struct people s; n=load();do{printf("请选择查找类别: 1).姓名 2).电话号码 [ ]\b\b");scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;}}while(w2==1);if(w1==1){do{ k=-1;do{ printf("\n\nEnter name that tou want to search!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\nWhat do you want to do?\n\t1).继续2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}else{ do{ k=-1;do{ printf("\n\nEnter number that tou want to search!\nNum:");scanf("%s",s.num);for(i=0;i<n;i++)if(strcmp(s.num,peop[i].num)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\nWhat do you want to do?\n\t1).继续2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}}void deleter(){struct people s; int i,n,k,w0,w1;n=load();do{ k=-1; printf_face(); printf_n(n);do{ printf("\n\nEnter name that you want to delete!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\n确定?\n\t1).是 2).返回 [ ]\b\b");scanf("%d",&w0);if(w0==1) {peop[k].name[0]='\0'; save(n);} else break;printf("\n\t^_^.Successful^_^.\n");printf("What do you want to do?\n\t1).继续 2).返回 [ ]\b\b");scanf("%d",&w1);}while(w1==1);menu();}【设计体会】通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数 15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值19.求解"完数" 20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数 34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define 命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~ 56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子60.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse 64.利用ellipse and rectangle画图65.画个最优美的图案 66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针) 78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例3 94.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1 100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
2009年08月17日星期日 16:51C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?__________________________________________________________________程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....___________________________________________________________________程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==月加起来赋值给第三个月*/}}上题还可用一维数组处理,you try!题目:判断101-200之间有多少个素数,并输出所有素数。
__________________________________________________________________程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
___________________________________________________________________程序源代码:#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k= 4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
实验项目一 C++程序设计初步题目欧阳家百(2021.03.07)在Visual Studio 2008平台上,用C++语言创建一个控制台应用程序,当其运行时在屏幕上显示“Hello,World!”(参考P15)实验项目二类与对象(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public://数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1;//定义t1为Time类对象cin>>t1.hour;//输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl;//输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体内定义成员函数。
然后编译和运行程序。
请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?代码:/ 实验_1.cpp : 定义控制台应用程序的入口点。
#include"stdafx.h"#include<iostream>usingnamespace std;class Time //定义Time类{private://数据成员为私有的int hour;int minute;int sec;public:void Input(){cout<<"请输入时、分、秒:"<<endl;cin>>hour>>minute>>sec;}void print(){cout<<"时间为:"<<endl;cout<<hour<<":"<<minute<< ":"<<sec<<endl;}};int _tmain(int argc, _TCHAR* argv[]){Time t1;t1.Input ();t1.print ();return 0;}结果:(2)修改实验1中的学生成绩管理系统,建立类OurClass,实现班级学生信息的输入,排序和输出。
2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:备忘录专业:计算机科学与技术班级:姓名:指导教师:成绩:计算机与信息工程系年月日目录1设计内容及要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2概要设计 (3)2.1该系统的功能简介 (3)2.2 总体程序框图 (3)2.3各个模块之间的主要关系 (4)33设计过程或程序代码 (5)3.1各个模块的程序流程图及运行界面 (5)3.2对关键代码加以分析说明 (7)4程序调试分析 (13)5小结 (14)致谢 (15)参考文献 (16)附:源程序 (30)1 设计内容及要求1.1设计内容《备忘录》主要根据课程设计要求进行设计,能够进行个人的事件记录,可以将程序使用者的时间安排,重要事件,以及个人行程等事件做出具体详细的记述,并能够使使用者在程序上完成查看时间的功能,足以使得使用者避免忘记一些重要事件,也可以为使用者带来一些便利,帮助使用者节省了时间。
电子备忘录相较于笔记本,其最大的好处在于可以不受纸张的限制,并切实的使用者可以在短时间内记述大量事件;查询时也可以节省大量的时间,使得使用者可以减短查询时间,方便快捷。
同时,使用电子备忘录也是一种现代化的代表,将电子科技应用与人们的日常生活中,达到现代实惠的先进水平。
该系统功能主要包括三大模块:1)备忘录的信息录入2)备忘录信息的查看3)进出备忘录系统1.2设计任务及具体要求主要利用C语言的文件操作能力设计开发一个小型的备忘录系统,至少具有如下功能:备忘录的信息录入,备忘录的信息查询和退出备忘录系统。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:利用C语言编写一个备忘录程序,能实现一些基本的操作,达到一些基本的信息录入,查询,提醒以及编写等功能,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高自身用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
C语言课程设计报告班级:电气1004学号: 201009334姓名:雷海燕指导教师:王果2011 年 07 月 18 日1 基本题目1.1题目1.1 题目有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
1.2 题目分析创建一个指针变量,指针变量中的初值为0至16。
然后通过for循环将指针变量中所指的值是三的倍数的变量赋值为0,最后找出所要找的值。
1.3 程序#include <stdio.h>#define N 17int main(){int i,j,k,a[N+1],*p;for(i=0,p=a;p<=a+N;i++,p++)*p=i;p=a+1;k=N;for(i=0,j=1;k!=1;j++){if(p>(a+N))p=a+1;if(*p!=0)i++;if(i%3==0&&i!=0){*p=0;i=0;k--;}p++;}for(i=1;i<=N;i++)if(a[i]!=0)printf("最后留下的是%d\n",a[i]);return 0;}1.4流程图1.5程序的运行结果基本体运行结果如图1.2所示:图1.2 基本题目运行结果2 改错题目2.1 改正后程序#include <stdio.h>int main(){int x=1; int y;y=x++;printf("y=%d ",y);int z;z=++x;printf("z=%d\n",z)return 0;}2.2 程序运行结果程序完成的功能:用x的初始值算出y与z的值。
改正后的运行结果如图2.1所示:图2.1 改正后的运行结果3.综合题目3.1 题目班级成绩管理系统,对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
C语言课程设计报告
欧阳家百(2021.03.07)
设计名称C语言课程设计
专业班级
姓名
学号
指导教师
实习时间
成绩
目录
一、设计目的2
二、设计内容3
三、详细设计说明4
四、软件使用说明6
五、设计总结(课程设计心得与体会)8
六、附录1:参考文献9
七、附录2:部分程序清单(带有较详细的注释)10
八、教师评语13
一、设计目的
通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。
“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。
每个学生需要独立完成教师安排的设计题目或由学生自拟实际的设计题目,但自拟自拟题目须经指导教师批准方可生效。
二、设计内容
1、开发一款“数独”小游戏(限最多1人完成)
规则:将数字1-9放置在每个小格里,使得每一行、没一列、每一个3*3的方框里都没有重复的数字即可。
要求:
(1)、字符界面完成即可(图形界面更好,有加分)
(2)、可以没有表格线
(3)、原有的36个数字及位置随机产生,原有数字越多,游戏越简单。
可以由用户输入原有数字的个数,以控制游戏难度;
(4)、其它空格处的数字由玩家从键盘输入,当输入的某个数字违背了规则,则游戏以失败结束,显示“Failure!“;当所有空格处数字均已经填上,并且没有违背规则,则游戏以成功结束,显示
三、详细设计说明
1.数独小游戏说明
数独游戏在9×9的方格内进行,分为3×3的小方格,被称为“区”:区数独游戏的目的是根据下列规则,用1至9之间的数字填满空格,一个格子只能填入一个数字。
每个数字在每一行只能出现一次。
每个数字在每一列只能出现一次。
每个数字在每一区只能出现一次
1>产生原始数字:由系统产生若干数字(1~81),作为游戏的原始数字
供玩家进行数独游戏2>退出系统: 用户填完数独,系统判断正误,然后退出系统.
2.数独游戏流程图
四、软件使用说明
1)系统要求:win98以上操作系统;
2) 语言平台:tc++或vc++6.0;
运行程序看到如下界面:
输入数据
运行结果
五、设计总结(课程设计心得与体会)
通过第18周这个星期的程序设计,我从中得到了许多的经验以及软件设计的一些新的思路;从数独游戏的设计以及分析中,本人从中理解到了数据结构对于计算机软件设计的重要性,它的使用,可以改变一个软件的运行周期,也可以将软件的思路从繁化简,并且都能够通过数据结构的相关引导,将本身以前编程思想进行扩充,发展;这也是在这次课程设计中我所获益的地方。
随着时间的推移,课程设计也即将结束了,但这个学期数据结构的学习还是具有相当大的意义,它从一个程度上改变了我们的编程思想,如何将一个程序快速而又准备的进行编写,进行编译,都成为了我们思考的重点,也通过这一个学期的学习,我们将数据结构的思想带入到了我们以后的编程学习中去。
在这个阶段,我也明白
了,好的思想,不能提留于字面上的认知,还需要的是平时多练多写一些相关的程序,并且通过修改,加入新的算法去尝试改变自己的一些编程思想。
保持更新算法的速度,这才是关键。
课程设计已经接近尾声了,但它给我的不只是程序设计上的满足,更重要的是对自己编程思想的一次更新,以及对算法的一个全新的认识!
六、附录1:参考文献
[1]谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2005
[2]谭浩强. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 2005
[3] 刘振安,刘燕君,孙忱. C++语言课程设计.北京:高等教育出
版社,2003
[4] 陈志泊, 张海燕, 王春玲. Visual C++程序设计. 中国铁道出版社 ,2005
[5] 吕凤哲,C++语言程序设计(第二版).北京:电子工业出版
社,2005
[6] 殷人昆,陶永雷等.数据结构(用面向对象方法与C++ ).北京:
清华大学出版社,1999
[7] 严蔚敏,吴伟民,数据结构.北京:清华大学出版社,1997
[8] 李春葆.数据结构—考研指导.北京:清华大学出版社,2002[9] 陈慧南.数据结构—C++语言描述.北京:人民邮电出版社,
七、附录2:部分程序清单(带有较详细的注释)
int result=0; //结果数
{
int a[9][9];
for(int i=0;i<9;i++)
{ printf("请输入第%d行的9个数:",i+1);
for(int j=0;j<9;j++)
scanf("%d",&a[i][j]);
}
printf("数独的解为:\n\n");
Sudoku(a,0);
if(result==0)
printf("此数独无解!");
return 0;
}
//输出可行的解
void print(int a[9][9])
bool check(int a[9][9],int i,int j,int k)
{int m,n;
//判断行
for(n=0;n<9;n++)
{if(a[i][n] == k)
return false;}
//判断列
for(m=0;m<9;m++)
{if(a[m][j] == k)
return false;}
//判断所在小九宫格
int t1=(i/3)*3,t2=(j/3)*3;
for(m=t1;m<t1+3;m++) {
for(n=t2;n<t2+3;n++)
{if(a[m][n] == k)
return false;}
}
//可行,返回true
return true;
//数独求解函数
void Sudoku(int a[9][9],int n) {int temp[9][9];
int i,j;
for(i=0;i<9;i++)
{for(j=0;j<9;j++)
temp[i][j]=a[i][j];
}
i=n/9; j=n%9; //求出第n个数的行数和列数if(a[i][j] != 0) //已经有原始数据
{if(n == 80) //是最后一个格子,输出可行解print(temp);
else //不是最后一个格子,求下一个格子Sudoku(temp,n+1);
}
else //没有数据
{for(int k=1;k<=9;k++)
{ bool flag=check(temp,i,j,k);
if(flag) //第i行、第j列可以是k
{temp[i][j]=k; //设为k
if(n == 80)
print(temp);
elseSudoku(temp,n+1);
temp[i][j]=0; //恢复为0,判断下一个k}
}
}
}
欧阳家百创编。