二是 想大家帮我看看程序是和图形学有关系的!!
问题出在,REPLAY()函数不执行啊!!还有就是我按“Q”退出 但是好象没有什么作用啊!!!
其中 FRE是频率函数!!这个程序的目的是为了 用图形学画个钢琴的键盘然后通过键盘输入1-8然后对应声音,把输入的值保存到文件,然后在调用REPLYA函数自动播放一次文件!!
可以编译通过!!有兴趣大家试一下!
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
float fre(int k)
{ float step,note[10];
int a;
step=pow(2,1/12.);
note[0]=385*step*step*step;
note[1]=note[0]*step*step;
note[2]=note[1]*step*step;
note[3]=note[2]*step;
note[4]=note[3]*step*step;
note[5]=note[4]*step*step;
note[6]=note[5]*step*step;
note[7]=note[6]*step;
a=k-1;
return(note[a]);
}
void fill(int j)
{ int a;
a=j;
setfillstyle(1,a + 1);
bar(80+(a-1)*60,200,80 + a*60,375);
}
void replay()
{
char c1;
FILE *fp1;
fp1=fopen("e:\\tc\\tc\\music.dat","rb");
if(fp1==NULL)
{
printf("Open file error!\n");
exit(0);
}
else
{
while(!feof(fp1))
{
c1=fgetc(fp1);
switch(c1){
case('1'):
sound(fre(1));
delay(100);
fill(1);
delay(100);
break;
case('2'):
sound(fre(2));
delay(100);
fill(2);
delay(100);
break;
case('3'):
sound(fre(3));
delay(100);
fill(3);
delay(100);
break;
case('4'):
sound(fre(4));
delay(100);
fill(4);
delay(100);
break;
case('5'):
sound(fre(5));
delay(100);
fill(5);
delay(100);
break;
case('6'):
sound(fre(6));
delay(100);
fill(6);
delay(100);
break;
case('7'):
sound(fre(7));
delay(100);
fill(7);
delay(100);
break;
case('8'):
sound(fre(8));
delay(100);
fill(8);
delay(100);
break;
}
}
}
}
void main()
{
float step;
int i;
int gd=DETECT,gm;
char c;
FILE *fp;
initgraph(&gd,&gm,"e:\\tc\\tc\\bgi");
cleardevice();
fp=fopen("e:\\tc\\tc\\bin\\music.dat","wb");
if(fp==NULL)
{
printf("File open error!");
exit(0);
}
setcolor(BLUE);
settextstyle(DEFAULT_FONT,HORIZ_DIR ,1);
outtextxy(100,150,"1-DO");
outtextxy(160,150,"2-RE");
outtextxy(220,150,"3-MI");
outtextxy(280,150,"4-FA");
outtextxy(340,150,"5-SO");
outtextxy(400,150,"6-LA");
outtextxy(460,150,"7-SE");
outtextxy(520,150,"8-DO+");
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(100,90,"Quit");
outtextxy(480,90,"Replay");
outtextxy(290,90,"Stop");
setcolor(11);
setlinestyle(0,0,1);
for(i=80;i<=530;i+=60)
{
rectangle(i,200,i+60,375);
}
while(c=getch(),c!='q'&&c!='Q')
{
switch(c)
{
case('s'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('S'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('1'):
sound(fre(1));
fill(1);
fputc(c,fp);
break;
case('2'):
sound(fre(2));
fill(2);
fputc(c,fp);
break;
case('3'):
sound(fre(3));
fill(3);
fputc(c,fp);
break;
case('4'):
sound(fre(4));
fill(4);
fputc(c,fp);
break;
case('5'):
sound(fre(5));
fill(5);
fputc(c,fp);
break;
case('6'):
sound(fre(6));
fill(6);
break;
case('7'):
sound(fre(7));
fill(7);
fputc(c,fp);
break;
case('8'):
sound(fre(8));
fill(8);
fputc(c,fp);
break;
case('r'):
replay();
break;
case('R'):
replay();
break;
}
}
nosound();
18 个解决方案
#1
少定义了一个K 在MAIN里面定义一个K
#2
今天仔细一看发现好多错误!!!大家还是尽可能改吧 最近要考试都没有时间好好看!!
大家帮个忙吧!!谢谢
大家帮个忙吧!!谢谢
#3
好长的程序呀,偶看的头都晕了!!
#4
同意楼上,我看你还是先看看这方面的书自己先改改吧。。
#5
晕死了,太长了
怎么说也要混点分先!
怎么说也要混点分先!
#6
要按键速度快可以直接用中断写的键盘处理函数,具体的请参加dos游戏编程21条,www.vcok.com的高级编程板块精华帖里有这文章。要更好处理延时1是修改时钟计数器的中断,2是用clock函数自己判断。
#7
可能是我没有注解吧 上面的程序都很简单的啊!可能是大家看见比较长吧 都是几个CASE占了地方!!
#8
while(c=getch(),c!='q'&&c!='Q')
===================================
c=getch();
while( !(c=='q'||c='Q') )
===================================
c=getch();
while( !(c=='q'||c='Q') )
#9
其它问题没法帮你调试,因为我电脑上没法运行图形模式
可以用Debug 下的单步跟踪F7,F8进行跟踪调试,应该可以找出问题所在,
可以用Debug 下的单步跟踪F7,F8进行跟踪调试,应该可以找出问题所在,
#10
请问有谁知道编译原理和C++视频教程哪里有的下载的?
谢谢告知!!
#11
先给分!后说话!
穷人的愿望!!!!
穷人的愿望!!!!
#12
我改了一下,在Tc3.0下面可以了…… 可以响应 r 和 R 两个键啊!!!
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
float fre(int k)
{
float step,note[10];
int a;
step=pow(2,1/12.);
note[0]=385*step*step*step;
note[1]=note[0]*step*step;
note[2]=note[1]*step*step;
note[3]=note[2]*step;
note[4]=note[3]*step*step;
note[5]=note[4]*step*step;
note[6]=note[5]*step*step;
note[7]=note[6]*step;
a=k-1;
return(note[a]);
}
void fill(int j)
{ int a;
a=j;
setfillstyle(1,a + 1);
bar(80+(a-1)*60,200,80 + a*60,375);
}
void replay()
{
char c1;
FILE *fp1;
fp1=fopen("f:\\play\\music.dat","rb");
if(fp1==NULL)
{
printf("Open file error!\n");
exit(0);
}
else
{
while(!feof(fp1))
{
c1=fgetc(fp1);
switch(c1)
{
case('1'):
sound(fre(1));
delay(100);
fill(1);
delay(100);
break;
case('2'):
sound(fre(2));
delay(100);
fill(2);
delay(100);
break;
case('3'):
sound(fre(3));
delay(100);
fill(3);
delay(100);
break;
case('4'):
sound(fre(4));
delay(100);
fill(4);
delay(100);
break;
case('5'):
sound(fre(5));
delay(100);
fill(5);
delay(100);
break;
case('6'):
sound(fre(6));
delay(100);
fill(6);
delay(100);
break;
case('7'):
sound(fre(7));
delay(100);
fill(7);
delay(100);
break;
case('8'):
sound(fre(8));
delay(100);
fill(8);
delay(100);
break;
}
}
}
}
void main()
{
//float step;
int i,k;
int gd=DETECT,gm;
char c;
FILE *fp;
initgraph(&gd,&gm,"");
cleardevice();
fp=fopen("F:\\play\\music.dat","wb");
if(fp==NULL)
{
printf("File open error!");
exit(0);
}
setcolor(BLUE);
settextstyle(DEFAULT_FONT,HORIZ_DIR ,1);
outtextxy(100,150,"1-DO");
outtextxy(160,150,"2-RE");
outtextxy(220,150,"3-MI");
outtextxy(280,150,"4-FA");
outtextxy(340,150,"5-SO");
outtextxy(400,150,"6-LA");
outtextxy(460,150,"7-SE");
outtextxy(520,150,"8-DO+");
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(100,90,"Quit");
outtextxy(480,90,"Replay");
outtextxy(290,90,"Stop");
setcolor(11);
setlinestyle(0,0,1);
for(i=80;i<=530;i+=60)
{
rectangle(i,200,i+60,375);
}
c = getch();
while( !(c=='q'||c=='Q') )
{
switch(c)
{
case('s'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('S'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('1'):
sound(fre(1));
fill(1);
fputc(c,fp);
break;
case('2'):
sound(fre(2));
fill(2);
fputc(c,fp);
break;
case('3'):
sound(fre(3));
fill(3);
fputc(c,fp);
break;
case('4'):
sound(fre(4));
fill(4);
fputc(c,fp);
break;
case('5'):
sound(fre(5));
fill(5);
fputc(c,fp);
break;
case('6'):
sound(fre(6));
fill(6);
break;
case('7'):
sound(fre(7));
fill(7);
fputc(c,fp);
break;
case('8'):
sound(fre(8));
fill(8);
fputc(c,fp);
break;
case('r'):
replay();
break;
case('R'):
replay();
break;
}
c = getch();
}
nosound();
}
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
float fre(int k)
{
float step,note[10];
int a;
step=pow(2,1/12.);
note[0]=385*step*step*step;
note[1]=note[0]*step*step;
note[2]=note[1]*step*step;
note[3]=note[2]*step;
note[4]=note[3]*step*step;
note[5]=note[4]*step*step;
note[6]=note[5]*step*step;
note[7]=note[6]*step;
a=k-1;
return(note[a]);
}
void fill(int j)
{ int a;
a=j;
setfillstyle(1,a + 1);
bar(80+(a-1)*60,200,80 + a*60,375);
}
void replay()
{
char c1;
FILE *fp1;
fp1=fopen("f:\\play\\music.dat","rb");
if(fp1==NULL)
{
printf("Open file error!\n");
exit(0);
}
else
{
while(!feof(fp1))
{
c1=fgetc(fp1);
switch(c1)
{
case('1'):
sound(fre(1));
delay(100);
fill(1);
delay(100);
break;
case('2'):
sound(fre(2));
delay(100);
fill(2);
delay(100);
break;
case('3'):
sound(fre(3));
delay(100);
fill(3);
delay(100);
break;
case('4'):
sound(fre(4));
delay(100);
fill(4);
delay(100);
break;
case('5'):
sound(fre(5));
delay(100);
fill(5);
delay(100);
break;
case('6'):
sound(fre(6));
delay(100);
fill(6);
delay(100);
break;
case('7'):
sound(fre(7));
delay(100);
fill(7);
delay(100);
break;
case('8'):
sound(fre(8));
delay(100);
fill(8);
delay(100);
break;
}
}
}
}
void main()
{
//float step;
int i,k;
int gd=DETECT,gm;
char c;
FILE *fp;
initgraph(&gd,&gm,"");
cleardevice();
fp=fopen("F:\\play\\music.dat","wb");
if(fp==NULL)
{
printf("File open error!");
exit(0);
}
setcolor(BLUE);
settextstyle(DEFAULT_FONT,HORIZ_DIR ,1);
outtextxy(100,150,"1-DO");
outtextxy(160,150,"2-RE");
outtextxy(220,150,"3-MI");
outtextxy(280,150,"4-FA");
outtextxy(340,150,"5-SO");
outtextxy(400,150,"6-LA");
outtextxy(460,150,"7-SE");
outtextxy(520,150,"8-DO+");
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(100,90,"Quit");
outtextxy(480,90,"Replay");
outtextxy(290,90,"Stop");
setcolor(11);
setlinestyle(0,0,1);
for(i=80;i<=530;i+=60)
{
rectangle(i,200,i+60,375);
}
c = getch();
while( !(c=='q'||c=='Q') )
{
switch(c)
{
case('s'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('S'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('1'):
sound(fre(1));
fill(1);
fputc(c,fp);
break;
case('2'):
sound(fre(2));
fill(2);
fputc(c,fp);
break;
case('3'):
sound(fre(3));
fill(3);
fputc(c,fp);
break;
case('4'):
sound(fre(4));
fill(4);
fputc(c,fp);
break;
case('5'):
sound(fre(5));
fill(5);
fputc(c,fp);
break;
case('6'):
sound(fre(6));
fill(6);
break;
case('7'):
sound(fre(7));
fill(7);
fputc(c,fp);
break;
case('8'):
sound(fre(8));
fill(8);
fputc(c,fp);
break;
case('r'):
replay();
break;
case('R'):
replay();
break;
}
c = getch();
}
nosound();
}
#13
fp=fopen("F:\\play\\music.dat","wb");
这个文件路径是我机器上的,你自己路径自己去设置吧…………
这个文件路径是我机器上的,你自己路径自己去设置吧…………
#14
getch以后sleep一下不就延时了?
#15
可以响应 r 和 R 两个键, 但得先按 s 和 S 键……
#16
是asc转化么?
要一个:
qingyuan18@126.com
要一个:
qingyuan18@126.com
#17
while(c=getch(),c!='q'&&c!='Q')
===================================
c=getch();
while( !(c=='q'||c='Q') )
看看是不是这个问题。我没有tc,不能帮你调试。
===================================
c=getch();
while( !(c=='q'||c='Q') )
看看是不是这个问题。我没有tc,不能帮你调试。
#18
十万火急!!!!!!!!!!!!!1
我是个新手!
请问如何用C语言编写一个 记事本 ?
我是个新手!
请问如何用C语言编写一个 记事本 ?
#1
少定义了一个K 在MAIN里面定义一个K
#2
今天仔细一看发现好多错误!!!大家还是尽可能改吧 最近要考试都没有时间好好看!!
大家帮个忙吧!!谢谢
大家帮个忙吧!!谢谢
#3
好长的程序呀,偶看的头都晕了!!
#4
同意楼上,我看你还是先看看这方面的书自己先改改吧。。
#5
晕死了,太长了
怎么说也要混点分先!
怎么说也要混点分先!
#6
要按键速度快可以直接用中断写的键盘处理函数,具体的请参加dos游戏编程21条,www.vcok.com的高级编程板块精华帖里有这文章。要更好处理延时1是修改时钟计数器的中断,2是用clock函数自己判断。
#7
可能是我没有注解吧 上面的程序都很简单的啊!可能是大家看见比较长吧 都是几个CASE占了地方!!
#8
while(c=getch(),c!='q'&&c!='Q')
===================================
c=getch();
while( !(c=='q'||c='Q') )
===================================
c=getch();
while( !(c=='q'||c='Q') )
#9
其它问题没法帮你调试,因为我电脑上没法运行图形模式
可以用Debug 下的单步跟踪F7,F8进行跟踪调试,应该可以找出问题所在,
可以用Debug 下的单步跟踪F7,F8进行跟踪调试,应该可以找出问题所在,
#10
请问有谁知道编译原理和C++视频教程哪里有的下载的?
谢谢告知!!
#11
先给分!后说话!
穷人的愿望!!!!
穷人的愿望!!!!
#12
我改了一下,在Tc3.0下面可以了…… 可以响应 r 和 R 两个键啊!!!
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
float fre(int k)
{
float step,note[10];
int a;
step=pow(2,1/12.);
note[0]=385*step*step*step;
note[1]=note[0]*step*step;
note[2]=note[1]*step*step;
note[3]=note[2]*step;
note[4]=note[3]*step*step;
note[5]=note[4]*step*step;
note[6]=note[5]*step*step;
note[7]=note[6]*step;
a=k-1;
return(note[a]);
}
void fill(int j)
{ int a;
a=j;
setfillstyle(1,a + 1);
bar(80+(a-1)*60,200,80 + a*60,375);
}
void replay()
{
char c1;
FILE *fp1;
fp1=fopen("f:\\play\\music.dat","rb");
if(fp1==NULL)
{
printf("Open file error!\n");
exit(0);
}
else
{
while(!feof(fp1))
{
c1=fgetc(fp1);
switch(c1)
{
case('1'):
sound(fre(1));
delay(100);
fill(1);
delay(100);
break;
case('2'):
sound(fre(2));
delay(100);
fill(2);
delay(100);
break;
case('3'):
sound(fre(3));
delay(100);
fill(3);
delay(100);
break;
case('4'):
sound(fre(4));
delay(100);
fill(4);
delay(100);
break;
case('5'):
sound(fre(5));
delay(100);
fill(5);
delay(100);
break;
case('6'):
sound(fre(6));
delay(100);
fill(6);
delay(100);
break;
case('7'):
sound(fre(7));
delay(100);
fill(7);
delay(100);
break;
case('8'):
sound(fre(8));
delay(100);
fill(8);
delay(100);
break;
}
}
}
}
void main()
{
//float step;
int i,k;
int gd=DETECT,gm;
char c;
FILE *fp;
initgraph(&gd,&gm,"");
cleardevice();
fp=fopen("F:\\play\\music.dat","wb");
if(fp==NULL)
{
printf("File open error!");
exit(0);
}
setcolor(BLUE);
settextstyle(DEFAULT_FONT,HORIZ_DIR ,1);
outtextxy(100,150,"1-DO");
outtextxy(160,150,"2-RE");
outtextxy(220,150,"3-MI");
outtextxy(280,150,"4-FA");
outtextxy(340,150,"5-SO");
outtextxy(400,150,"6-LA");
outtextxy(460,150,"7-SE");
outtextxy(520,150,"8-DO+");
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(100,90,"Quit");
outtextxy(480,90,"Replay");
outtextxy(290,90,"Stop");
setcolor(11);
setlinestyle(0,0,1);
for(i=80;i<=530;i+=60)
{
rectangle(i,200,i+60,375);
}
c = getch();
while( !(c=='q'||c=='Q') )
{
switch(c)
{
case('s'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('S'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('1'):
sound(fre(1));
fill(1);
fputc(c,fp);
break;
case('2'):
sound(fre(2));
fill(2);
fputc(c,fp);
break;
case('3'):
sound(fre(3));
fill(3);
fputc(c,fp);
break;
case('4'):
sound(fre(4));
fill(4);
fputc(c,fp);
break;
case('5'):
sound(fre(5));
fill(5);
fputc(c,fp);
break;
case('6'):
sound(fre(6));
fill(6);
break;
case('7'):
sound(fre(7));
fill(7);
fputc(c,fp);
break;
case('8'):
sound(fre(8));
fill(8);
fputc(c,fp);
break;
case('r'):
replay();
break;
case('R'):
replay();
break;
}
c = getch();
}
nosound();
}
#include <dos.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
float fre(int k)
{
float step,note[10];
int a;
step=pow(2,1/12.);
note[0]=385*step*step*step;
note[1]=note[0]*step*step;
note[2]=note[1]*step*step;
note[3]=note[2]*step;
note[4]=note[3]*step*step;
note[5]=note[4]*step*step;
note[6]=note[5]*step*step;
note[7]=note[6]*step;
a=k-1;
return(note[a]);
}
void fill(int j)
{ int a;
a=j;
setfillstyle(1,a + 1);
bar(80+(a-1)*60,200,80 + a*60,375);
}
void replay()
{
char c1;
FILE *fp1;
fp1=fopen("f:\\play\\music.dat","rb");
if(fp1==NULL)
{
printf("Open file error!\n");
exit(0);
}
else
{
while(!feof(fp1))
{
c1=fgetc(fp1);
switch(c1)
{
case('1'):
sound(fre(1));
delay(100);
fill(1);
delay(100);
break;
case('2'):
sound(fre(2));
delay(100);
fill(2);
delay(100);
break;
case('3'):
sound(fre(3));
delay(100);
fill(3);
delay(100);
break;
case('4'):
sound(fre(4));
delay(100);
fill(4);
delay(100);
break;
case('5'):
sound(fre(5));
delay(100);
fill(5);
delay(100);
break;
case('6'):
sound(fre(6));
delay(100);
fill(6);
delay(100);
break;
case('7'):
sound(fre(7));
delay(100);
fill(7);
delay(100);
break;
case('8'):
sound(fre(8));
delay(100);
fill(8);
delay(100);
break;
}
}
}
}
void main()
{
//float step;
int i,k;
int gd=DETECT,gm;
char c;
FILE *fp;
initgraph(&gd,&gm,"");
cleardevice();
fp=fopen("F:\\play\\music.dat","wb");
if(fp==NULL)
{
printf("File open error!");
exit(0);
}
setcolor(BLUE);
settextstyle(DEFAULT_FONT,HORIZ_DIR ,1);
outtextxy(100,150,"1-DO");
outtextxy(160,150,"2-RE");
outtextxy(220,150,"3-MI");
outtextxy(280,150,"4-FA");
outtextxy(340,150,"5-SO");
outtextxy(400,150,"6-LA");
outtextxy(460,150,"7-SE");
outtextxy(520,150,"8-DO+");
setcolor(RED);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(100,90,"Quit");
outtextxy(480,90,"Replay");
outtextxy(290,90,"Stop");
setcolor(11);
setlinestyle(0,0,1);
for(i=80;i<=530;i+=60)
{
rectangle(i,200,i+60,375);
}
c = getch();
while( !(c=='q'||c=='Q') )
{
switch(c)
{
case('s'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('S'):
nosound();
k=fclose(fp);
if(k!=0)
{
printf("File close error!\n");
exit(1);
}
break;
case('1'):
sound(fre(1));
fill(1);
fputc(c,fp);
break;
case('2'):
sound(fre(2));
fill(2);
fputc(c,fp);
break;
case('3'):
sound(fre(3));
fill(3);
fputc(c,fp);
break;
case('4'):
sound(fre(4));
fill(4);
fputc(c,fp);
break;
case('5'):
sound(fre(5));
fill(5);
fputc(c,fp);
break;
case('6'):
sound(fre(6));
fill(6);
break;
case('7'):
sound(fre(7));
fill(7);
fputc(c,fp);
break;
case('8'):
sound(fre(8));
fill(8);
fputc(c,fp);
break;
case('r'):
replay();
break;
case('R'):
replay();
break;
}
c = getch();
}
nosound();
}
#13
fp=fopen("F:\\play\\music.dat","wb");
这个文件路径是我机器上的,你自己路径自己去设置吧…………
这个文件路径是我机器上的,你自己路径自己去设置吧…………
#14
getch以后sleep一下不就延时了?
#15
可以响应 r 和 R 两个键, 但得先按 s 和 S 键……
#16
是asc转化么?
要一个:
qingyuan18@126.com
要一个:
qingyuan18@126.com
#17
while(c=getch(),c!='q'&&c!='Q')
===================================
c=getch();
while( !(c=='q'||c='Q') )
看看是不是这个问题。我没有tc,不能帮你调试。
===================================
c=getch();
while( !(c=='q'||c='Q') )
看看是不是这个问题。我没有tc,不能帮你调试。
#18
十万火急!!!!!!!!!!!!!1
我是个新手!
请问如何用C语言编写一个 记事本 ?
我是个新手!
请问如何用C语言编写一个 记事本 ?