本文目录一览:
C语言编写简单钢琴
呵呵,挺好玩 ,还要回放啊。。。那还得用数组
#include stdio.h
#include stdlib.h
#include conio.h
#include windows.h
int main( )
{
char ch;
printf("Please play the piano! 121314151617111\n");
while((ch=getche())!='q')
{switch(ch)
{
case '1': Beep(262,300);break;
case '2': Beep(294,300);break;
case '3': Beep(330,300);break;
case '4': Beep(349,300);break;
case '5': Beep(392,300);break;
case '6': Beep(440,300);break;
case '7': Beep(494,300);break;
default:break;
}
}
system("pause");
return 0;
}
怎样用C语言编一段钢琴伴奏?
看看这个吧...应该有用
#includestdio.h
#includedos.h
#includebios.h
#includetime.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分别代表
一拍,二分之一拍,四分之一拍,
八分之一拍,十六分之一拍。*/
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};
/*以下是播放程序代码*/
void MusicPlay(int *song)
{
int note=0,fre,dur,control;
clock_t goal;
while(song[note]!=0)
{
fre=song[note];
dur=song[note+1];
if(kbhit())break;
/*int kbhit()函数返回最近所敲的按键*/
if(fre)
{
outportb(0x43,0xB6);
/*函数void outportb(int port,char byte)
将字节byte写入指定的输出端口port*/
fre=(unsigned)(1193180L/fre);
outportb(0x42,(char)(fre8));
outportb(0x42,(char)(fre8));
control=inportb(0x61);
/*函数int inportb(int port)从指定的
输入端口读入一个字节,并返回这个字节*/
outportb(0x61,(control)|0x3);
}
goal=(clock_t)dur+clock();
while(goalclock());
if(fre)
outportb(0x61,control);
goal=(clock_t)0;
note=note+2;
}
}
/*以下是主函数其中包括异常处理*/
void main(void)
{ int n;
do{
printf("If you want to listen music please input a number(1-4):");
if(scanf("%d",n))
{
if(n=40=n)
switch(n)
{
case 1:MusicPlay(song1);break;
case 2:MusicPlay(song2);break;
case 3:MusicPlay(song3);break;
case 4:MusicPlay(song4);break;
}
else printf("\n\t\tYou can input '0' to exit!\n\n");
}
else {printf("\n\tInput error,please prass any key to exit!\n");break;}
}while(n!=0);
return ;
getch();
}
求郝斌老师的C语言180教程 网盘版的
《C语言视频教程》百度网盘高清资源免费在线观看
链接:
提取码:8yck
作品相关介绍:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。
谭浩强c语言视频教程下载地址
谭浩强【004】
链接:
提取码:ncnf 复制这段内容后打开百度网盘手机APP,操作更方便哦!
若资源有问题欢迎追问~
c语言 弹钢琴程序
while((ch=getche())!='q') 改成
while((ch=getchar())!='\0')
error C2146: syntax error : missing ';' before identifier 'WCHAR'
语法错误,在'WCHAR'前丢失';'
但我在你的源程序里没发现'WCHAR'
所以还有什么问题,我就不太清楚了