C语言 TC 编制音乐程序【C语言课程设计】
- 格式:doc
- 大小:41.50 KB
- 文档页数:5
关于C语⾔播放⾳乐的源代码我们不得不说C语⾔是⼀种还算得上强⼤的语⾔,今天就来展⽰⼀下如何通过C语⾔去播放⾳乐:⽹上有很多这⽅⾯的资料,我只是稍加整理了⼀下,随便玩⼀下。
先来看第⼀个例程,这是⽐较简单的:#include<stdio.h>#include<dos.h>#include<bios.h>#include<time.h>#include<graphics.h>#define N1 32 /*⼀拍*/#define N2 16#define N4 8#define N8 4#define N16 2#define END 0/*其中:N1,N2,N4,N6,N8,N16分别代表⼀拍,⼆分之⼀拍,四分之⼀拍,⼋分之⼀拍,⼗六分之⼀拍。
*//*声明⼀个图形显⽰*/void printtext(unsigned char *temp[],int i, int color); /* ⽤于在屏幕上显⽰字符串 */enum NOTES{C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,/*低度⾳调分别是:1,2,3,4,5,6,7*/C0=262, D0=286, E0=330, F0=349, G0=440, A0=440, B0=494,/*中度⾳调分别是:1,2,3,4,5,6,7*/C1=523, D1=158, E1=659, F1=698, G1=784, A1=880, B1=998,/*⾼度⾳调分别是:1,2,3,4,5,6,7*/C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976/*⾼⼋度⾳调分别是:1,2,3,4,5,6,7*/}song1[]={G0,N16,G0,N8,A0,N8,G0,N8,C1,N8,B0,N4,G0,N16,G0,N8,A0,N8,G0,N8,D1,N8,C1,N4,G0,N16,G0,N8,G1,N8,E1,N8,C1,N8,B0,N16,B0,N8,A0,N4,F1,N16,F1,N8,E1,N8,C1,N8,D1,N8,C1,N4,END,END/*以上是曲⼦代码,你可以嵌⼊⾃⼰喜欢的歌曲代码*//*注意:数组中的偶数元素代表⾳符奇数元素代表拍长.*/};song2[]={C10,N1,D10,N1,E10,N1,F10,N1,G10,N1,A10,N1,B10,N1,C10,N2,D10,N2,E10,N2,F10,N2,G10,N2,A10,N2,B10,N2,C10,N4,D10,N4,E10,N4,F10,N4,G10,N4,A10,N4,B10,N4,C10,N8,D10,N8,E10,N8,F10,N8,G10,N8,A10,N8,B10,N8,C10,N16,D10,N16,E10,N16,F10,N16,G10,N16,A10,N16,B10,N16,C0,N1,D0,N1,E0,N1,F0,N1,G0,N1,A0,N1,B0,N1,C0,N2,D0,N2,E0,N2,F0,N2,G0,N2,A0,N2,B0,N2,C0,N4,D0,N4,E0,N4,F0,N4,G0,N4,A0,N4,B0,N4,C0,N8,D0,N8,E0,N8,F0,N8,G0,N8,A0,N8,B0,N8,C0,N16,D0,N16,E0,N16,F0,N16,G0,N16,A0,N16,B0,N16,C1,N1,D1,N1,E1,N1,F1,N1,G1,N1,A1,N1,B1,N1,C1,N2,D1,N2,E1,N2,F1,N2,G1,N2,A1,N2,B1,N2,C1,N4,D1,N4,E1,N4,F1,N4,G1,N4,A1,N4,B1,N4,C1,N8,D1,N8,E1,N8,F1,N8,G1,N8,A1,N8,B1,N8,C1,N16,D1,N16,E1,N16,F1,N16,G1,N16,A1,N16,B1,N16,C2,N1,D2,N1,E2,N1,F2,N1,G2,N1,A2,N1,B2,N1,C2,N2,D2,N2,E2,N2,F2,N2,G2,N2,A2,N2,B2,N2,C2,N4,D2,N4,E2,N4,F2,N4,G2,N4,A2,N4,B2,N4,C2,N8,D2,N8,E2,N8,F2,N8,G2,N8,A2,N8,B2,N8,C2,N16,D2,N16,E2,N16,F2,N16,G2,N16,A2,N16,B2,N16,END/*以上是⾳符测试代码,你可以通过系统发出的⾳调选择你需要的⾳符*//*注意:数组中的偶数元素代表⾳符奇数元素代表拍长.*/};song3[]= {C0,N8,C0,N8,G0,N8,G0,N8,A0,N8,A0,N8,G0,N4,F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,G0,N8,G0,N8,F0,N4,E0,N8,E0,N8,D0,N4,G0,N8,G0,N8,F0,N8,F0,N8,E0,N8,E0,N8,D0,N4,C0,N8,E0,N8,G0,N4,A0,N8,C1,N8,G0,N4,F0,N8,F0,N8,E0,N8,E0,N4,D0,N8,D0,N8,C0,N4,C0,N8,C0,N8,G0,N8,G0,N8,A0,N8,A0,N8,G0,N4,F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,G0,N8,G0,N8,F0,N4,E0,N8,E0,N8,D0,N4,G0,N8,G0,N8,F0,N8,F0,N8,E0,N8,E0,N8,D0,N4,C0,N8,E0,N8,G0,N4,A0,N8,C1,N8,G0,N4,F0,N8,F0,N8,E0,N8,E0,N4,D0,N8,D0,N8,C0,N4,END/*以上是曲⼦代码,你可以嵌⼊⾃⼰喜欢的歌曲代码*//*注意:数组中的偶数元素代表⾳符奇数元素代表拍长.*/};song4[]= {C10,N4,B0,N4,G0,N8,A0,N4,E0,N16,D0,N8,C0,N8,D0,N8,G0,N8,E0,N8,E0,N4,E0,N8,G0,N8,E0,N8,D0,N8,D0,N4,A0,N8,A0,N8,G0,N8,A0,N8,B0,N8,G0,N8,G0,N8,E0,N4,C10,N8,B0,N8,G0,N8,A0,N4,E0,N8,D0,N8,C0,N8,D0,N8,G0,N8,E0,N4,C0,N8,D0,N8,E0,N4,G0,N8,E0,N8,D0,N4,C0,N8,B10,N8,C0,N8,B10,N8,A10,N4,A0,N8,A0,N8,A0,N8,C1,N8,D1,N8, E1,N8,E1,N8,C1,N8,A0,N8,A0,N8,B0,N16,A0,N16,G0,N8,E0,N8,A0,N8,A0,N8,C1,N8,D1,N8,E1,N8,E1,N8,C1,N8,A0,N8,A0,N8,B0,N8,A0,N8,B0,N16,A0,N16,G0,N8,E0,N8,D1,N16,D1,N16,D1,N8, D1,N8,A0,N16,B0,N16,A0,N8,G0,N8,E0,N8,D1,N16,D1,N16,D1,N8, A0,N16,B0,N16,A0,N8,G0,N8,E0,N8,A0,N8,A0,N8,A0,N4,A0,N8,A0,N8,A0,N4,C10,N8,B0,N8,G0,N8,A0,N4,E0,N16,D0,N16,C0,N8, D0,N8,G0,N8,E0,N4,E0,N4,E0,N16,G0,N16,E0,N16,D0,N16,D0,N4,A0,N16,A0,N16,G0,N8,A0,N8,B0,N8,G0,N16,G0,N16,E0,N4,C10,N8,B0,N8,G0,N8,A0,N4,E0,N16,D0,N16,C0,N8,D0,N8,G0,N8,E0,N4,C0,N16,D0,N16,E0,N4,G0,N8,E0,N8,D0,N4,C0,N8,B10,N8,C0,N16,B10,N16,A10,N4,END};union {unsigned fre;unsigned char c[2];}tone;/*以下是播放程序代码*/void MusicPlay(int *song){int note=0,dur,control;clock_t goal;while(song[note]!=0){tone.fre=song[note];dur=song[note+1]; /*节拍*/if(kbhit())break;/*int kbhit()函数返回最近所敲的按键*/if(tone.fre){outportb(0x43,0xB6);/*函数void outportb(int port,char byte)将字节byte写⼊指定的输出端⼝port*/tone.fre=(unsigned)(1193180L/tone.fre);outportb(0x42,tone.c[0]);outportb(0x42,tone.c[1]);control=inportb(0x61);/*函数int inportb(int port)从指定的输⼊端⼝读⼊⼀个字节,并返回这个字节*/outportb(0x61,(control)|0x3);}goal=(clock_t)dur+clock();while(goal>clock());if(tone.fre)outportb(0x61,control);goal=(clock_t)0;note=note+2;}}/*以下是主函数其中包括异常处理*/void main(void){ int n;int graphdriver,graphmode;unsigned char *text[7] ;text[0]=" ";text[1]="start music........";text[2]="play the one music";text[3]="play the two music";text[4]="play the three music";text[5]="play the four music";text[6]="good_bye............";graphdriver=DETECT;graphmode=0;initgraph(&graphdriver,&graphmode,""); /*系统初始化 */cleardevice(); /* 清除屏幕 */settextjustify(LEFT_TEXT,CENTER_TEXT); /*设置字符排列⽅式*/printtext(text ,1, 1);getch();printtext(text ,2, 62);MusicPlay(song1);getch();printtext(text ,3,4);MusicPlay(song2);getch();printtext(text ,4, 58);MusicPlay(song3);getch();printtext(text ,5, 61);MusicPlay(song4);getch();printtext(text ,6, 63);getch();closegraph();}void printtext(unsigned char *temp[] , int i , int color){setcolor(color);settextstyle(TRIPLEX_FONT , HORIZ_DIR, 3);outtextxy(100, 40+i*50 , temp[i]); /* 显⽰字符串 temp[i]是具体的指针*/ }。
c语言课程设计歌手大赛一、课程目标知识目标:1. 学生能理解并掌握C语言中的基本数据类型、运算符、控制语句等基础知识。
2. 学生能够运用C语言编写具有简单逻辑功能的程序,如歌曲信息录入、展示和排序。
3. 学生了解结构体在C语言中的应用,并能使用结构体存储和管理歌曲信息。
技能目标:1. 学生能够运用所学知识设计并实现一个歌手大赛的程序,包括歌曲信息录入、展示、排序等功能。
2. 学生通过实际操作,提高编程实践能力,培养解决问题的能力。
3. 学生学会运用调试工具检查并修正程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高主动学习的积极性。
2. 学生在团队协作中,培养沟通、协作能力和集体荣誉感。
3. 学生在编程实践中,体验成就感,增强自信心,培养勇于挑战、不怕困难的品质。
分析课程性质、学生特点和教学要求:本课程为C语言课程设计,旨在让学生将所学知识应用于实际项目中,提高编程实践能力。
针对学生的特点,课程设计注重培养学生的动手能力和团队协作能力。
在教学过程中,教师应关注学生的个体差异,提供适当的指导,确保学生能够达到预期的学习成果。
课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、控制语句(选择、循环)。
2. 函数:函数的定义、调用、参数传递、返回值。
3. 结构体:定义结构体、结构体变量的创建与初始化、结构体数组、结构体指针。
4. 文件操作:文件的打开、关闭、读写操作。
5. 歌手大赛程序设计:- 歌曲信息结构体设计:歌曲名称、歌手、专辑、发行年份等字段。
- 功能模块设计:a. 歌曲信息录入:设计输入界面,实现歌曲信息的录入。
b. 歌曲信息展示:设计展示界面,实现歌曲信息的展示。
c. 歌曲信息排序:根据指定字段(如歌手、发行年份等)进行排序。
d. 查询功能:根据歌曲名称、歌手等条件进行查询。
第一章C语言及程序设计概述本章要求:了解C语言的特点、C语言与其它高级语言相比有什么异同;了解C程序在PC机上的建立、编译和运行过程;了解C语言程序设计思想的基本篇;重点:①C语言的主要特点;②C语言在PC机上的运行过程及上机操作过程;③常用算法的应用难点:无一、C语言概述C语言是目前国际上在各种计算机运行较为广泛流行的一种高级语言.主要表现为:C语言:适合于作为系统描述语言—-可用来写系统软件。
具有高级语言的特点,又有低级语言(汇编语言)的特点。
C语言:是AT&T贝尔实验室的Dennis Ritchie在1972年发明的。
C语言:是在B语言的基础上发展起来的.(ALGOL 60)C语言:最早开始是用于UNIX操作系统。
(C语言和UNIX是相辅相成的)DBASE 、Microsoft Exel 、 Microsoft Word、PC—DOS等,则是用C语言加上若干汇编子程序编写的。
1983年:——制定的新标准,称为(美国国家标准化协会)ANSI C1987年:—-Turbo C1.0 (Borland) 1988年:TC 1.5(图形和文本窗口)1989年:——Turbo C2。
0 (DOS操作系统、查错、Tiny模式生成com文件)1991年:—-Turbo C++(3.0) 支持windows 3.X说明:Turbo C语言可以在程序的任何地方嵌入汇编代码,提高速度,可以直接使用存储器和寄存器。
二.C语言的特点1.语言简洁、紧凑、使用方便、灵活C语言:——共有32个关键字,9种控制语句;程序书写自由,主要用小写字母表示;2.运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符;即:把括号、赋值、强制类型转换都作为运算符处理3.有丰富的数据类型整型、实型、字符型、数据类型、指针类型、结构体类型、共用体(联合)类型等。
实现复杂的数据结构(链表、树、栈、图)的运算。
4.具有结构化的功能,用函数作为程序模块,实现程序的模块化5.语法限制不太严格,程序设计自由度大.(放宽了语法检查)例:1)对数组下标越界不作检查,由程序编写者自己保证程序的正确;2)整型数据、字符型数据、逻辑型数据可以通用。
大一c语言程序课程设计一、课程目标知识目标:1. 理解C语言程序设计的基本概念,掌握数据类型、变量、运算符、表达式等基础知识;2. 学会使用顺序结构、分支结构、循环结构进行程序设计;3. 掌握数组和函数的使用,理解指针的概念及其应用;4. 了解结构体、联合体和枚举类型的使用。
技能目标:1. 能够运用C语言编写简单的程序,解决问题;2. 能够分析问题,运用逻辑思维进行程序设计;3. 能够阅读和理解他人编写的C语言程序;4. 能够对程序进行调试和优化,提高程序效率。
情感态度价值观目标:1. 培养学生的编程兴趣,激发学习积极性;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 培养学生的创新精神,敢于尝试新思路和方法;4. 培养学生严谨的学术态度,遵循编程规范。
课程性质:本课程为大一C语言程序设计的基础课程,旨在使学生掌握C语言的基本知识和编程技能,为后续专业课程打下坚实基础。
学生特点:大一学生刚接触编程,对编程知识有一定好奇心,但缺乏实际操作经验。
教学要求:结合学生特点,注重理论与实践相结合,通过案例分析和实际操作,使学生熟练掌握C语言编程技巧。
在教学过程中,注重培养学生的编程兴趣和创新能力,提高学生分析问题和解决问题的能力。
将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
二、教学内容1. C语言概述:介绍C语言的发展历程、特点和应用领域,理解编程的基本概念。
相关教材章节:第一章2. 数据类型与运算符:讲解基本数据类型、变量定义、常量声明,运算符及其优先级。
相关教材章节:第二章3. 顺序结构程序设计:学习基本输入输出函数,编写简单的顺序结构程序。
相关教材章节:第三章4. 分支结构程序设计:介绍if语句、switch语句,学会编写分支结构程序。
相关教材章节:第四章5. 循环结构程序设计:讲解for循环、while循环、do-while循环,掌握循环结构编程。
相关教材章节:第五章6. 数组:介绍一维数组、二维数组的使用,学会存储和操作批量数据。
用c语言开发音乐的小示例用c语言开发音乐的小示例*表示最高音h表示高音m表示中音l表示低音与其控制的音符构成音高,决定发音频率,音高的后面是音长,可以用整数或小数输入以控制时间,但中间必须用空各隔开。
乐谱文件的得最前面是一个整数,白噢是音长基数,一般为300 600 900 1200ms;乐谱文件最后世结束符“##” ,以表示乐谱文件的结束。
程序对读入的乐谱进行翻译,确定每个乐音的频率和声长,每个音的音长=音长基数*节拍数,其中技术是乐谱文件的第一个字符。
由于DOS下用来发声的sound函数只能以频率作为参数,所以要完成音符到频率的翻译,没个音的音频可用以模拟频率值输入。
音符音频对应图1 131 1 126 1 123.3 1 1045.52 147 2 296 2 587.3 2 1174.73 155 3 329.7 3 659.3 3 1318.54 176 4 349.2 4 698.0 4 1386,95 196 5 392 5 784.0 5 1568.06 220 6 440 6 880 6 17607 247 7 493.9 7 987.8 7 1976.5最后通过调用sound()函数来实现发声使用delay()函数实现延时#include#include#includevoid main(int argc,char*argv[]){FILE*fp;int rate;char sound_high[3];float sound_long;register int i=0,j;float str[100][2];if(argc!=2){printf("Parameters Errors!\n");exit(1)'}if((fp=fopen(argv[1],"r"))==NULL){printf("Open file music doc Errors!\n");exit(1);}fscanf(fp,"%d",&rate);while(!feof(fp)&&!sign){fscanf(fp,"%s%f",sound_high,&sound_long); str[i][1]=rate*sound_long;switch(sound_high[0]){case'*':{switch(sound_high[1]){case'1':str[i++][0]=1046.5;break;case'2':str[i++][0]=1174.7;break;case'3': str[i++][0]=1318.5;break;case'4': str[i++][0]=1396.9;break;case'5': str[i++][0]=1568;break;case'6': str[i++][0]=1760;break;case'7': str[i++][0]=1975.5;break;default:printf("\nError in music doc\n"); exit(1); }break;}case'h':{switch(sound_high[1]){case'1': str[i++][0]=523.3;break;break;case'3': str[i++][0]=659.3;break;case'4': str[i++][0]=698.3;break;case'5': str[i++][0]=784.0;break;case'6': str[i++][0]=880;break;case'7': str[i++][0]=987.8;break;default: printf("\nError in music doc\n"); exit(1); }break;}case'm':{switch(sound_high[1]){case'1': str[i++][0]=262;break;case'2': str[i++][0]=296;break;case'3': str[i++][0]=329.6;break;case'4': str[i++][0]=349.2;break;case'5': str[i++][0]=392;break;case'6': str[i++][0]=440;break;case'7': str[i++][0]=493.9;break;default: printf("\nError in music doc\n"); exit(1);}break;}case'l':{switch(sound_high[1]){break;case'2': str[i++][0]=147;break;case'3': str[i++][0]=165;break;case'4': str[i++][0]=176;break;case'5': str[i++][0]=196;break;case'6': str[i++][0]=220;break;case'7': str[i++][0]=247;break;default: printf(\nErrors in music doc\n); exit(1); }break;}case'#':if(sound_high[1]=='#') sign=1;break;default: printf("\nErrors in music doc\n"); exit(1); }}for(j=0;j<=i-1;j++) {sound(str[j][0]); delay(str[j][1]);}nosound();}。
《C语言程序设计》课程标准编制:审核:单位:日期: 2020年11月5日智能交通技术运用专业教学资源库一、课程性质《C语言程序设计》是智能交通技术运用专业的一门专业基础课,是学习其它计算机语言课程的基础。
本课程以程序设计思想为主线,介绍C语言基本概念和程序设计的思想和方法,培养学生运用C语言解决实际问题的能力。
通过学习该门课程,可以使学生掌握程序设计的基本方法及思维,形成程序设计基本思想,掌握程序调试的基本方法,使学生初步具备程序设计的能力,为他们进一步学习其他专业课程打下基础。
二、课程设计思路总体思路:以就业为导向,根据职业岗位对技能、知识的需求,选取教学内容,对课程进行系统化的总体设计,在总体设计的基础上开发课程标准和配套的教学资源,然后进行教学方案的设计、教学的组织和实施。
三、课程培养目标(一)总目标通过对《C语言程序设计》理论和实践教学,使学生建立起程序设计的概念,掌握程序设计的基本理论、基本知识和基本技能,逐步积累算法设计和程序设计的常用技巧;并能够熟练地使用C语言进行程序的编写,解决常见的应用问题,培养出扎实的软件开发基本技能,并养成良好的编程习惯,为进一步学习后续课程奠定扎实的基础。
(二)具体目标1、能力目标(1)能合理使用C语言的数据类型;(2)能熟练地使用三种基本结构进行程序设计;(3)能熟练阅读程序;(4)能具有分析和设计算法的能力;(5)能使用C语言解决常见的应用问题;《C语言程序设计》课程标准(6)能使用C语言程序设计的方式分析和解决实际问题并测试程序。
2、知识目标(1)了解C语言的数据类型;(2)掌握C语言顺序、选择和循环三种基本结构;(3)掌握标准的输入和输出函数;(4)掌握函数的基本定义和应用;(5)掌握数组的基本概念和应用;(6)掌握指针的基本知识。
3、素质目标(1)具有学习能力,使用C语言解决实际问题;(2)具有良好的职业道德;(3)具有团结协作能力,互相帮助,服从大局;(4)具有自我展示能力,能够讲述、说明、回答问题;(5)具有良好的职业道德、社会责任感、工作责任心。
《C语言程序设计》课程标准课程名称:C语言程序设计课程编码:60415001总学时数:84适用专业:网络技术,软件技术,多媒体技术,电子技术等一、课程概述1.课程定位《C语言程序设计》课程是高职高专计算机类和电子信息类各专业职业素质必修课,旨在培养高职学生运用计算机进行逻辑思维的能力,掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。
所以,本课程主要针对培养这类人才基本程序设计能力的目的而设置的课程。
学生毕业后工作岗位主要有程序员、计算机管理员、数据库管理员、软件测试等,在计算机各专业等相关行业中都将使用C语言作为应用系统开发设计语言,C语言也是计算机应用专业中《Java程序设计》、《C#程序设计》及其它编程语言类课程的前导课程,也是信息产业部计算机专业和软件专业水平资格考试要求的主要程序设计语言。
2.课程设计思路本课程以“学生成绩管理系统”项目作为主线,采用边讲边练的教学互动形式,同时应用案例教学法,在课堂上导入贴近实际的程序设计实例。
教学过程中,首先提出项目目标,然后通过知识讲解、方法演示、实践演练、复习归纳,以解决实际问题的学习方法来学习软件开发。
二、课程目标1.总体目标通过本课程的学习,使学生能够具有结构化程序设计的思想,能够用C语言进行简单程序的编写,能够熟练的进行程序的调试和修改,同时具备软件开发所需要的协作精神,较强的上进心和责任感。
2.具体目标(1)职业技能目标○1培养学生编写规范化的程序代码○2自主的学习能力○3掌握面向过程编程的思想○4能够编制简单的C语言应用程序(2)知识目标○1掌握C语言的数据类型的定义与使用○2掌握程序结构设计的方法○3掌握数组定义与使用的方法○4掌握函数定义与使用的方法○5掌握指针的使用方法○6掌握文件的概念与使用方法(3)职业素质养成目标○1服务意识:能够为他人提供优质的服务○2文明、法制意识;合理利用所学知识,不做危害他人和社会的事○3吃苦精神:能承受软件开发带来的体力和脑力的压力○4合作精神:能够与他人进行合作,具有协调工作能力和组织管理能力○5较强的自我知识及技术更新能力;快速跟踪社会前沿技术及市场应用动态三、课程内容与要求表1 课程总体设计表2 学习单元设计四、实施建议(一)考核评价建议本课程采用理论考加题签的考试形式,即课程的总成绩由平时成绩(20%)+实验成绩(30%)+考试成绩(50%),课程实训单独计算成绩。
程序设计c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本概念、语法和编程技巧,培养学生运用C语言解决实际问题的能力。
具体分解为以下三个方面的目标:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等概念。
2.技能目标:学生能够熟练使用C语言编写程序,解决简单的数学计算、数据处理和排序等问题。
3.情感态度价值观目标:培养学生对编程语言的兴趣,增强其自主学习和解决问题的能力,使其认识到程序设计在现代社会的重要性。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组和指针等。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点和基本语法。
2.第二章:数据类型和运算符,讲解整型、浮点型、字符型数据以及各类运算符的用法。
3.第三章:控制结构,学习顺序结构、分支结构和循环结构的使用。
4.第四章:函数,讲解函数的定义、声明和调用,以及常用的库函数。
5.第五章:数组和指针,学习一维、二维数组的操作以及指针的基本用法。
6.第六章:字符串和文件操作,了解字符串的表示方式、文件的基本操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式:1.讲授法:教师通过讲解、举例等方式,向学生传授C语言的基本概念和编程技巧。
2.案例分析法:教师通过分析实际案例,引导学生运用C语言解决具体问题。
3.实验法:学生动手编写程序,巩固所学知识,培养实际编程能力。
4.讨论法:学生分组讨论,共同解决问题,提高沟通和合作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》、《C语言入门教程》3.多媒体资料:教学PPT、视频教程、在线编程练习平台4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
《C语言程序设计》教学大纲一、课程性质、地位和作用课程性质:公共基础课程本课程在该专业中的地位和作用:本课程是为运算机及相关专业本科、专科学生而开设的运算机程序设计基础课,是在学生学习完《运算机文化基础》的基础上开设的第一门高级语言程序设计课,是一门必修的公共基础课程。
本课程的任务是结合一般数值计算向学生介绍计算机程序设计的基本知识,使学生掌握C 语言的基本内容及程序设计的基本方法与编程技巧,了解进行科学计算的一般思路,培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机打下基础。
二、课程教学对象、目的和要求教学对象:运算机及相关专业本科、专科学生目的和要求:(1)了解C语言的历史、特点,把握C语言的运行环境及运行一个C语言程序的进程;(2)掌握用流程图、N-S流程图表示算法,理解结构化程序设计方法的概念;(3)掌握几种基本数据类型的存储方式、表示方法、不同类型间数据转换的原则与方法及有关运算符与表达式的运用;(4)掌握语句的概念、字符数据输入输出函数及格式输入输出函数的用法;(5)熟练掌握关系、逻辑表达式的用法,熟练掌握选择型程序设计语句的用法;(6)熟练掌握三种循环语句的运用及break和continue语句的运用;(7)掌握数组的概念和使用、数组初始化的方法、字符数组和字符串的应用;(8)掌握函数的定义和调用方法,理解变量的存储属性,作用范围;(9)掌握指针变量的定义与引用,指针与变量、指针与数组、指针与字符串的关系,掌握用指针作为函数参数的方法,有关指针的算法;三、相关课程及关系“C语言程序设计”是运算机及相关专业的基础课,也是专业课,是“数据结构”、“操作系统”“JAVA程序设计”“软件工程”等许多课程的先修课。
学生程序设计能力的好坏直接阻碍后续课程的学习,尤其是实践环节的学习。
四、课程内容及学时分派总学时:42 (课堂教学: 20 ;上机: 18 ;温习: 2 ;考试: 2 )考虑到程序设计是运算机专业学生最大体的技术之一,“C语言程序设计”课程学时为42个学时。
c语言经典教程:发声技术问题:乐谱的 1、2、3、4、5、6、7,加上高低音可以谱出动听的曲子,请编写程序,使计算机能够播放歌曲。
[分析]播放歌曲意味着让计算机发声,声音从 PC 机内的扬声器发出,所以这个问题将与硬件扬声器电路有关。
[解答]解决这一编程问题,让我们首先简单了解一下计算机发声的原理。
在PC 机的系统板上装有定时与计数器 8253 芯片,还有 8255 可编程并行接口芯片,由它们组成的硬件电路可用来产生 PC 机内扬声器的声音,对于 286、386、486、586 等 PC 微机,因为采用了超大规模集成电路,因而看不到这些芯片,它们均集成在外围电路芯片上了。
当我们操作计算机时,常常听到的发声,就是由软件控制这些电路而产生的。
声音的长短和音调的高低,均可由程序进行控制。
在扬声器电路中,定时器的频率决定了扬声器发音的频率,所以可通过设定定时器电路的频率来使扬声器发出不同的声音。
对定时器电路进行频率设定时,首先对其命令寄存器(口地址为 0x43>写命令字,如写入 0xb6,这可用outporb(0x43,0xb6>;来实现,则表示选择该定时器的第二个通道,计数频率先送低 8 位(二进制>,后送高 8 位。
接着用口地址 0x42 送频率计数值,先送低 8 位,后送高 8 位,即用outportb(0x42,低 8 位频率计数值>和 outportb(0x42,高 8 位频率计数值>来实现。
通过这两步使定时器电路产生一系列方波信号,此信号是否能推动扬声器发音,还要看由 8255 产生的门控信号和送数信号是否为 1,而它们也可编程,口地址为 0x61。
为了不影响 8255 口地址 61H 中的其他高位,应先输入口地址 6lH 的现有值 bits,即用 bits= inportb(0x61>来实现,然后就可用 outportb(0x61,bits|3>来允许发声,而用 outportb(0x61,bits&0xfc>来禁止发声,且不改变 8255 其它位原来的值,关于这方面的详细内容可以参阅 IBM PC/XT 接口技术方面书籍有关内容。
#include<stdio.h>#include<dos.h>#include<stdlib.h>#include<time.h>#include<bios.h>#include<conio.h>/*定义音阶长度*/#define N1 64#define N2 32#define N4 16#define N8 8#define N16 4#define N32 2#define END 0/*定义音符*/enum NOTES{C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,C0=262,D0=294,E0=330,F0=349,G0=392,A0=440,B0=494,C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988,C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976};/*用枚举类型结构体编写出两首不同的歌曲*/typedef enum NOTES SONG;SONGsong1[]={A0,N32,A0,N32,A0,N32,G0,N16,A0,N8,C1,N8,C1,N8,D1,N16,C1,N8 ,A0,N4,C1,N8,C1,N16,G0,N16,C1,N16,D1,N16,E1,N16,G1,N16,G1,N16,E1,N16,D1, N8,E1,N4,A1,N16,A1,N16,A1,N16,G1,N16,E1,N16,E1,N8,C1,N16,A0,N16,A0,N16,A0,N 16,E1,N16,D1,N4,E1,N16,E1,N16,G1,N16,E1,N16,D1,N16,E1,N16,D1,N16,C1,N16,A0,N8,G0,N 8,A0,N4,E1,N16,E1,N16,G1,N16,E1,N16,E1,N16,G1,N16,G1,N16,A1,N16,C2,N16,A1, N16,G1,N8,A1,N4,END,END};SONGsong2[]={A0,N8,A0,N16,G0,N16,A0,N8,C1,N8,D1,N8,E1,N32,D1,N32,C1,N16 ,D1,N16,E1,N4,A0,N16,A1,N16,A1,N16,G1,N16,D1,N16,E1,N32,D1,N32,C1,N16,D1,N16,E1, N4,C1,N16,A0,N16,A0,N16,C1,N16,D1,N8,G0,N16,G0,N16,E1,N16,G1,N16,E1, N16,D1,N16,C1,N4,A0,N16,C1,N16,D1,N16,E1,N16,D1,N16,C1,N16,G0,N16,E0,N16,A0,N4, END,END};/*函数功能:选歌播放*/void Play(int fre,int dur){int control;clock_t goal;outportb(0x43,0xb6);fre=(unsigned)(1193180L/fre);fre=fre/2;outportb(0x42,(char)fre);outportb(0x42,(char)(fre>>8));control=inportb(0x61);outportb(0x61,control|0X03);goal=(clock_t)dur+clock();while(goal>clock());if(fre)outportb(0x61,control);goal=(clock_t)0;}/*函数功能:显示歌词*/void Lyrics(){int y;while(1){printf("\t1).English\n\t2).Chinese\n\t3.)Return\n");scanf("%d",&y);if(y==1){printf("The boundless horizon is my love\nThe continuous mountains at the foot of the flowers open\nWhat kind of rhythm is most swing\nWhat song is the most happy\nThe curved river water from heaven\n");printf("A riot of colour flow to the sea\nCrash-bang the ballad is our expectation\nSinging while walking all the way is most comfortable\nWe wantto sing to sing happily\n");printf("You are my most beautiful clouds in the sky\nLet my heart to keep you\nYY sings folk style most dazzles\nLet love swept away all the dust\nYou are my heart the most beautiful cloud\n");}if(y==2){printf("-x-|||sorry...still under construction...\n");}if(y==3){system("cls");break;}}}/*函数功能:显示曲谱*/void Notes(){int i,j,c0;intl1[5][7]={6,65,6,61,1,21,6,1,15,12,35,53,2,3,66,65,3,31,66,63,2,33,53,23,21,6, 5,6,33,53,35,56,16,5,6};intl2[4][7]={66,65,6,1,232,12,3,66,65,2,32,12,3,0,16,61,2,55,35,32,1,61,23,21,53 ,6,0,0};while(1){printf("\t1).notes 1\n\t2).notes 2\n\t3).Return\n");scanf("%d",&c0);if(c0==3){system("cls");break;}if(c0==1){for(i=0;i<5;i++){for(j=0;j<7;j++){printf("%d",l1[i][j]);printf(" ");}printf("\n");}}if(c0==2){for(i=0;i<4;i++){for(j=0;j<7;j++){printf("%d",l2[i][j]);printf(" ");}printf("\n");}}}}/*主程序*/main(){int flag=0,fre,dur,control,c,t;clock_t goal;while(1){printf("\nWelcome to JR's music program!\n\tHere are the functions:\n");printf("1.Play the song\n2.See the lyrics\n3.See the notes\n4.Quit the program\n");scanf("%d",&c);if(c==4)break;/*输入4时,跳出while循环,结束程序*/switch(c){case 1:printf("\nNow you can hear two pieces of music ~\^u^/~\n ");printf("\t1).music No.1\n\t2).music No.2\n");scanf("%d",&t);if(t==1)while(song1[flag]!=0){fre=song1[flag];dur=song1[flag+1];if(kbhit()) break;Play(fre,dur);flag+=2;}elsewhile(song2[flag]!=0){fre=song2[flag];dur=song2[flag+1];if(kbhit()) break;Play(fre,dur);flag+=2;}system("cls");break;case 2:Lyrics();break;case 3:Notes();break;}}}。