第13章 C语言综合应用程序设计
- 格式:ppt
- 大小:73.50 KB
- 文档页数:23
c语言软件综合课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和编程技巧;2. 理解C语言程序设计的流程控制、数据结构和函数运用;3. 了解软件工程的基本原理,能运用结构化分析方法进行问题求解;4. 掌握C语言编程中的调试和优化方法。
技能目标:1. 能够独立编写简单的C语言程序,解决实际问题;2. 学会运用流程图、伪代码等工具进行程序设计;3. 能够运用结构化分析方法,进行需求分析,编写软件设计文档;4. 具备团队协作能力,能与他人共同完成一个综合性的软件项目。
情感态度价值观目标:1. 培养学生的逻辑思维能力和问题解决能力,提高对编程的兴趣;2. 培养学生严谨、细心的编程态度,注重代码质量和性能优化;3. 培养学生的创新意识和团队协作精神,学会与他人分享和交流;4. 增强学生的自信心,使其在面对编程挑战时,能够积极应对,不断进步。
本课程针对高年级学生,课程性质为理论与实践相结合。
在教学过程中,充分考虑学生的认知水平、兴趣和特长,注重培养学生的实际操作能力和综合素质。
课程目标明确,分解为具体可衡量的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. C语言基础语法:变量、数据类型、运算符、表达式、输入输出、控制语句(选择、循环)等;2. 函数与模块化编程:函数定义、调用、参数传递、模块化设计、递归等;3. 数据结构:数组、字符串、结构体、共用体、枚举等;4. 指针与动态内存管理:指针概念、指针运算、指针与数组、动态内存分配等;5. 文件操作:文件打开、关闭、读写、二进制文件操作等;6. 结构化分析方法:数据流图、实体关系图、状态转换图、顺序图等;7. 综合项目设计:需求分析、模块划分、编码、调试、测试、文档编写等。
教学内容按照教学大纲安排,关联课本相应章节,确保科学性和系统性。
教学进度分为三个阶段:基础知识学习、进阶知识掌握、综合项目实践。
具体教学内容如下:第一阶段:C语言基础语法(1-4课时)第二阶段:函数与模块化编程、数据结构、指针与动态内存管理、文件操作(5-12课时)第三阶段:结构化分析方法、综合项目设计(13-18课时)教学内容与实践相结合,注重培养学生的实际操作能力和编程素养。
c语言综合课程设计一、教学目标本课程的目标是让学生掌握C语言的基本语法、编程技巧和相关算法,培养学生独立编程和解决问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构;–理解函数、指针、数组、字符串等核心概念;–学习常用算法和数据处理方法。
2.技能目标:–能够使用C语言编写简单的程序;–熟练使用调试工具,排查和解决问题;–具备基本的代码阅读和编写能力。
3.情感态度价值观目标:–培养学生的创新意识和团队合作精神;–增强学生对计算机科学的兴趣和热情;–培养学生的自主学习和解决问题的能力。
二、教学内容本课程的教学内容分为四个部分:1.C语言基础:包括变量、数据类型、运算符、表达式等基本概念;2.控制结构:涵盖条件语句、循环语句、跳转语句等编程逻辑;3.函数和指针:讲解函数的定义和调用、指针的运算和应用;4.数组和字符串:涉及数组的操作、字符串的存储和处理。
具体教学大纲如下:1.第一周:C语言基础–教材第1-4章:变量、数据类型、运算符、表达式等基本概念;2.第二周:控制结构–教材第5-7章:条件语句、循环语句、跳转语句等编程逻辑;3.第三周:函数和指针–教材第8-10章:函数的定义和调用、指针的运算和应用;4.第四周:数组和字符串–教材第11-12章:数组的操作、字符串的存储和处理。
三、教学方法本课程采用多种教学方法相结合的方式,以提高学生的学习兴趣和主动性:1.讲授法:讲解基本概念、原理和编程技巧;2.案例分析法:分析典型代码,引导学生思考和解决问题;3.实验法:上机编程实践,培养学生的实际操作能力;4.讨论法:分组讨论,促进学生之间的交流与合作。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言编程实例教程》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、编程环境、调试工具等。
教学资源应根据教学内容和教学方法的需要进行选择和准备,以支持教学的顺利进行,并丰富学生的学习体验。
C语言综合应用C语言综合应用球落地弹起高度和所走路程#includevoid main(){float sn,hn;int n,N;printf("请输入球落地次数\n");scanf("%d",&N);sn=100.0;hn=sn/2;for(n=2;n<=N;n++){sn=sn+2*hn;hn=hn/2;}printf("球走过的总路程为%f.",sn);printf("球反弹的高度为%f.",hn);}输入某班N个同学的成绩,分别统计各分数段的人数,#includevoid main(){int a,b,c,d,e,score;int i,n;a=b=c=d=e=0;printf("请输入学生人数\n");scanf("%d",&n);for(i=1;i<=n;i++){printf("请输入第%d位学生的成绩:",i);scanf("%d",&score);for(;score<0||score>100;){if(score>100||score<0)printf("有效成绩为0到100分,输入错误!请重新输入!\n");scanf("%d",&score);}if(score>=90)a++;else if(score>=80)b++;else if(score>=70)c++;else if(score>=60)d++;elsee++;}printf("90分以上的学生有%d人\n",a);printf("80到89分的学生有%d人\n",b);printf("70到79分的学生有%d人\n",c);printf("60到69分的学生有%d人\n",d);printf("不及格的有%d人\n",e);}输入某年某月某日,判断这一天是这一年的第几天。
C语言综合程序设计说明书一、设计目的用C语言设计一个具有输入成绩、打印成绩表功能的综合程序,以巩固和加深对C语言的学习。
二、设计要求1、输入1时完成输入姓名及各科成绩;2、输入2时完成打印输出总表;3、输入3时完成打印学号,成绩表,总分和名次;4、输入4时,完成退出功能。
注:每执行完一个功能,屏幕必须清屏。
三、设计思路将设计要求中的1、2、3分别定义为具有相应功能的子函数,再在主函数中进行调用。
1、根据设计要求,设计需要用到结构体数组。
因此,首先需要定义一个结构体数组,并将其中的学号赋值为从10101~10105。
2、定义一个具有输入成绩功能的子函数,用循环语句和scanf 语句相结合,完成每个学生的信息输入。
3、另外定义一个子函数对结构体中的总分进行比较,排出学生名次。
4、定义一个输出总表函数,用printf语句和循环语句结合使用,使该函数可以输出结构体中的各项数据。
根据设计要求,可将定义的输出总表的函数中的输出姓名项删除,即可得到打印学号、成绩表、总分和名次的函数。
四、程序设计环境Windows操作系统 Win-tc五、程序功能模块图六、程序功能流程图输入子函数--完成信息的录入 输出子函数—完成打印表排名子函数--完成名次的排列 退出子函数--完成退出功能七、程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>struct student{ int num;char name[20];float score[5];float sum;int mingci;}st[6]={{0},{10101},{10102},{10103},{10104},{10105}};int shuru(){ int i;system("cls");printf("成绩录入\n\n\n\n");printf("\t\t本程序只能输入5个学生的信息\n\t\t为使系统正常工作请按提示操作\n\n\t\t注意:每输入成一项信息后按Enter键确认!\n\n\n\n");printf("\n\n");sqrt(0); /*打开win tc浮点数支持*/for(i=1;i<=5;i++) /*这个循环是输入数据*/{printf("请输入学号为%d学生的姓名:",st[i].num);scanf("%s",st[i].name);printf("请输入该生的数学成绩:");scanf("%f",&st[i].score[1]);printf("请输入该生的英语成绩:");scanf("%f",&st[i].score[2]);printf("请输入该生的计算机成绩:");scanf("%f",&st[i].score[3]);printf("请输入该生的哲学成绩:");scanf("%f",&st[i].score[4]);st[i].sum=st[i].score[1]+st[i].score[2]+st[i].score[3]+st[i].score[4]; }printf("\n您已经完成了5位学生信息的录入\n\n\t\t请按任意键返回主菜单\t"); getch();}int mingci(){ int i,j;for(i=1;i<=5;i++){ st[i].mingci=1;for(j=1;j<=5;j++)if(st[i].sum<st[j].sum) st[i].mingci++;}}int shuchu(){ int i;printf("打印输出总表");printf("\n\n\n");printf("\t\b\b\b_______________________________________________________________ _________\n");printf("\t学号\t姓名\t\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\b\b\b_______________________________________________________________ _________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t%d\t%8s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].name, st[i].score[1],st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].min gci);printf("\t\b\b\b_______________________________________________________________ _________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int shuchu1(){ int i;printf("打印学号、成绩表、总分和名次");printf("\n\n\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");printf("\t\t学号\t数学\t英语\t计算机\t哲学\t总分\t名次\n");printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");for(i=1;i<6;i++) /*这个循环是输出数据*/{printf("\t\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t %d\n",st[i].num,st[i].score[1] ,st[i].score[2],st[i].score[3],st[i].score[4],st[i].sum,st[i].mingci);printf("\t\t\t\b\b\b\b\b\b\b\b\b\b\b\b\b\b_____________________________________ __________________________\n");}printf("\n\n\n\n");printf("您还想完成哪项操作,请选择功能键 1,2,3,4后按 Enter\n");printf("\n");printf("\t1.录入成绩 2.打印输出总表 3.打印学号、成绩表、总分和名次 4.退出\n"); }int tuichu(){ char m;while(1){system("cls");printf("\n\n\n\n\n");printf("\t\t\t您确认要退出吗?(y/n)\n");printf("\n\n");printf("\t\t\ty 确认退出\n");printf("\t\t\tn 返回主菜单\n\n\n\n");printf("\t\t请选择功能键 y 或 n 后按 Enter\t");scanf("%c",&m);if(m=='y') exit(0);else if(m=='n') main();}}main(){ int i,j;char n;system( "graftabl 936 ");system("cls");printf(" 08-09学年第2学期c语言综合程序设计*****应用电子技术08-1班:肖红福丁传飞*****\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~\n");printf("\n\n\n\n");printf("\t\t\t1.录入成绩\n\t\t\t2.打印输出总表\n\t\t\t3.打印学号、成绩表、总分和名次\n\t\t\t4.退出\n\n\n\n\n");printf("\t\t请选择功能键 1,2,3,4后按 Enter\t");while(1){scanf("%c",&n);switch(n){case '1':system("cls");shuru();mingci();main();break;case '2':system("cls");shuchu();break;case '3':system("cls");shuchu1();break;case '4':tuichu();default : printf("对不起!您输入的数字不是功能键,请从新选择\n");}}}八、程序运行结果注:本程序因调用函数system( "graftabl 936 "),因此直接用Win-tc的英文环境即可运行。
课程名称:结构化程序设计与C语言开课实验室:年月日一、实验目的用C语言编写和调试结构体、文件等内容的综合程序设计。
从而对结构体、结构体数组的定义、文件的读写有比较深入的了解。
该程序包含了C语言的主要知识点,并得到了一个综合的训练,从而对程序设计有更深入的了解。
二、内容及结果1、题目学生管理系统2、内容:完成10个学生的学号、姓名、三门课的成绩管理。
要求用函数输入数据,用函数计算每个学生的平均分,用函数按平均分从高到低排序,用函数输出排序后的数据,用函数将结构体数组中的内容保存到一个文本文件中,用函数把文本文件中的内容读入到结构体数据中。
主函数中用菜单的形式显示上述功能,根据用户的选择调用对应函数。
3、代码:#include<stdio.h>#include<stdlib.h>#define N 10typedef struct Student{int num;char name[20];float score[3];float aver;}STUD;void input(struct Student stu[]);void print(struct Student stud[]);void read(struct Student stud[]);void calaverage(struct Student stud[]); void sort(struct Student stud[]);void write(struct Student stud[]);int main(){STUD stud[10];int choice;while(1){system("cls");printf(" 1.从键盘输入数据\n"); printf(" 2.从文本文件读入数据\n"); printf(" 3.计算平均分\n");printf(" 4.根据平均分排名\n"); printf(" 5.输出排名结果\n");printf(" 6.保存数据到文本文件\n"); printf(" 0.退出\n");printf("请你输入你的选择:\n");scanf("%d",&choice);getchar();switch(choice){case 1:input(stud);getchar();break;case 2:read(stud);getchar();break;case 3:calaverage(stud);getchar();break;case 4:sort(stud);getchar();break;case 5:print(stud);getchar();break;case 6:write(stud);getchar();break;case 0:printf("BYEBYE!\n");exit(0);default:printf("选择错误,重新选择!\n");break;}}return 0;}void input(struct Student stu[]){int i;printf("请输入个学生的信息:学号姓名三门课的成绩:\n");for(i=0;i<N;i++)scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); }void print(struct Student stud[]){ int i;printf("学号\t姓名\t 三门课成绩\t 平均成绩\n");for(i=0;i<N;i++)printf("%d\t%s\t%5.1f\t%5.1f\t%5.1f\t%6.2f\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],st ud[i].score[2],stud[i].aver);}void read(struct Student stud[]){FILE *fp;int i;if((fp=fopen("stu.txt","r"))==NULL){printf("cannot open file\n");return;}for(i=0;i<N;i++)if(fread(&stud[i],sizeof (struct Student),1,fp)!=1)printf("file write error\n");fclose(fp);}void calaverage(struct Student stud[]){ int i;for(i=0;i<N;i++)stud[i].aver=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3;}void sort(struct Student stud[]){int i,j;STUD t;for(j=0;j<N-1;j++)for(i=0;i<N-j-1;i++)if(stud[i].aver<stud[i+1].aver){t=stud[i];stud[i]=stud[i+1];stud[i+1]=t;}}void write(struct Student stud[]){FILE *fp;int i;if((fp=fopen("stu.txt","w"))==NULL){printf("cannot open file\n");return;}for(i=0;i<N;i++)if(fwrite(&stud[i],sizeof (struct Student),1,fp)!=1)printf("file write error\n");fclose(fp);}4、运行截图:三、实验结果、分析和结论:此题是自编程以来覆盖知识最广的一题,几乎涵盖了以前所学的所有知识点。
国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。
(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。
(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。
(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。
(√)3.C语言中使用的字符常量,其起止标记符是()。
a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。
a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。
a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。
a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。
a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。
a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。
a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。
a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。
a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。
a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。