歌曲排行榜c語言
⑴ 如何用c語言編寫歌曲
我們知道,音樂是音高和音長的有序組合,設計微機音樂最重要的就是如何定義音高和音長,以及如何讓揚聲器發出指定的音符。下面給出音符與頻率的關系表。C語言提供的三個函數sound( )、nosound( )和clock( )可以很方便地解決上述的問題。sound( )函數可以用指定頻率打開PC機揚聲器直到用nosound( )函數來關閉它; clock( )函數正好用來控制發聲時間,而且它不受PC機主頻高低的影響。下面這段程序可使微機發出c調1的聲音。
音符與頻率關系表
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 262 294 330 349 392 440 494
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 523 587 659 698 784 880 988
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 1047 1175 1319 1397 2568 1760 1976
#include<stdio.h>
#include<dos.h>
void pause(int);
void sound1(int,int);
void main(void)
{
int i,freq,speed=5;
int time=4*speed;
char *qm="iddgwwwQQgfff dddfghhhggg ddgwwwqqgfff\
ddffhjqqqqq wpggjhgddgqq hhqwwqjjjggg\
ddgwwwqqqgfff ddffhjqqqqqq";/*定義歌曲*/
while (*qm++ !='\0'){
i=1;
switch(*qm){
case 'k':
time=1*speed; i=0;
break;
case 'i':
time=6*speed; i=0;
break;
case 'o':
time=10*speed; i=0;
break;
case 'p':
pause(time); i=0;
break;
case 'a':
freq=523;
break;
case 's':
freq=587;
break;
case 'd':
freq=659;
break;
case 'f':
freq=698;
break;
case 'g':
freq=784;
break;
case 'h':
freq=880;
break;
case 'j':
freq=988;
break;
case 'z':
freq=262;
break;
case 'X':
freq=294;
break;
case 'c':
freq=330;
break;
case 'v':
freq=349;
break;
case 'b':
freq=392;
break;
case 'n':
freq=440;
break;
case 'm':
freq=494;
break;
case 'q':
freq=1047;
break;
case 'w':
freq=1175;
break;
case 'e':
freq=1319;
break;
case 'r':
freq=1397;
break;
case 't':
freq=2568;
break;
case 'y':
freq=1760;
break;
case 'u':
freq=1976;
break;
default:
i=0;
break;
}
if(i)
sound1(freq,time);
}
}
void sound1(int freq,int time) /*freq為頻率,time為持續時間*/
{
union{
long divisor;
unsigned char c[2];
}count;
unsigned char ch;
count.divisor=1193280/freq; /* 1193280 是系統時鍾速率*/
outp(67,182);
outp(66,count.c[0]);
outp(66,count.c[1]);
ch=inp(97);
outp(97,ch|3);
pause(time);
outp(97,ch);
}
void pause(int time)
{
int t1,t2;
union REGS in,out;
in.h.ah=0X2c;
int86(0X21,&in,&out); /* 取當前時間*/
t1=t2=100*out.h.dh+out.h.dl; /*out.h.dh 為秒值,out.h.dl 為1/100 秒值*/
while(t2-t1<time)
{
int86(0X21,&in,&out);
t2=100*out.h.dh+out.h.dl;
if (t2<t1)t2+=6000; /* 增加一分鍾*/
}
}
⑵ 求助:用C語言製作一個歌曲信息管理系統
30 分太少了.高點,這要花好多時間呢,又沒有現成的.
己成功運行,排序是根據歌曲名排猜信判的。
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define M 50 /*定義常數表示記錄數*/
typedef struct /*定義數據結構*/
{ char songname[20];/*歌曲名*/
char name[20]; /*作坦蠢者*/
char singer[20]; /*演唱者*/
char year[20]; /*年月日*/
}SONG;
/******以下是函數原型*******/
int enter(SONG t[]); /*輸入記錄*/
void list(SONG t[],int n); /*顯示記錄*/
void search(SONG t[],int n); /*查找顯示記錄*/
int delete(SONG t[],int n); /*刪除記錄*/
int add(SONG t[],int n); /*插入記錄*/
void save(SONG t[],int n); /*記錄保存為文件*/
int load(SONG t[]); /*從文件中讀記錄*/
void display(SONG t[]); /*按序號查找顯示記錄*/
void sort(SONG t[],int n); /*按姓名排序*/
void qseek(SONG t[],int n); /*快速查找記錄*/
void print(SONG temp); /*顯示單條記錄*/
int find(SONG t[],int n,char *s,char ch) ; /*查找函數*/
int menu_select(); /*主菜單函數*/
/******主函穗改數開始*******/
main()
{
int i;
SONG adr[M]; /*定義結構體數組*/
int length; /*保存記錄長度*/
clrscr(); /*清屏*/
for(;;)/*無限循環*/
{
switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/
{
case 0:exit(0); /*如返回值為0則程序結束*/
case 1:length=enter(adr);break;/*輸入記錄*/
case 2:list(adr,length);break; /*顯示全部記錄*/
case 3:search(adr,length);break; /*查找記錄*/
case 4:length=delete(adr,length);break; /*刪除記錄*/
case 5:length=add(adr,length); break; /*插入記錄*/
case 6:save(adr,length);break; /*保存文件*/
case 7:length=load(adr); break; /*讀文件*/
case 8:display(adr);break; /*按序號顯示記錄*/
case 9:sort(adr,length);break; /*快速查找記錄*/
}
printf("i=%d",length);
getch();
}
}
/*菜單函數,函數返回值為整數,代表所選的菜單項*/
int menu_select()
{
char s[3];
int c;
clrscr(); /*清屏*/
/*讀入任意字元*/
printf("\n\n\n\n\n");
printf("********************MENU*********************\n\n");
printf(" 1. Enter record\n");
printf(" 2. List the file\n");
printf(" 3. Search record on name\n");
printf(" 4. Delete a record\n");
printf(" 5. add record \n");
printf(" 6. Save the file\n");
printf(" 7. Load the file\n");
printf(" 8. display record on order\n");
printf(" 9. sort record by songname\n");
printf(" 0. Quit\n");
printf("***********************************************\n");
do{
printf("\n Enter you choice(0-9):"); /*提示輸入選項*/
gets(s); /*輸入選擇項*/
c=atoi(s); /*將輸入的字元串轉化為整型數*/
}while(c<0||c>9); /*選擇項不在0~9之間重輸*/
return c; /*返回選擇項,主程序根據該數調用相應的函數*/
}
/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/
int enter(SONG t[])
{
int i;
char *s;
clrscr();
for(i=0;i<M;i++)
{
printf("\nplease input record or \n direct press q to exit with songname\n\n"); /*提示輸入記錄*/
printf("\nEnter songname: ");
gets(t[i].songname);
if(t[i].songname[0]=='q'&&t[i].songname[1]=='\0')
break;
printf("\nEnter name: ");
gets(t[i].name);
printf("\nEnter singer: ");
gets(t[i].singer);
printf("\nEnter year: ");
gets(t[i].year);
clrscr();
printf("\n Songname name singer Year_month\n");
printf("|---------------------------------------------------------------------------|\n");
printf("| %-16s| %-16s| %-16s| %-16s|\n",t[i].songname,t[i].name,t[i].singer,t[i].year);
printf("|---------------------------------------------------------------------------|\n");
}
return i; /*返回記錄條數*/
}
/*顯示記錄,參數為記錄數組和記錄條數*/
void list(SONG t[],int n)
{
int i;
clrscr();
printf("\n\n***********************************ADDRESS*********************************\n");
printf("\n Songname name singer Year_month\n");
printf("|---------------------------------------------------------------------------|\n");
for(i=0;i<n;i++) {
printf("| %-16s| %-16s| %-16s| %-16s|\n",t[i].songname,t[i].name,t[i].singer,t[i].year);
printf("|---------------------------------------------------------------------------|\n");
if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/
{
printf("Press any key continue...\n"); /*提示信息*/
getch(); /*壓任意鍵繼續*/
}
}
printf("\n\n************************************END***********************************\n");
getch();
}
/*查找記錄*/
void search(SONG t[],int n)
{
char s[20]; /*保存待查找姓名字元串*/
int i; /*保存查找到結點的序號*/
char ch;
clrscr(); /*清屏*/
do{
printf("Search by:\n");
printf("\n 1.By songname");
printf("\n 2.By name");
printf("\n 3.By singer");
printf("\n 0.Return to menu\n");
ch=getche();
}while(ch<48||ch>51);
switch(ch){
case '0':
return;
case '1':
printf("please enter songname to search.\n");
break;
case '2':
printf("please enter name to search.\n");
break;
case '3':
printf("please enter songname to search.\n");
break;
}
gets(s);
i=find(t,n,s,ch); /*調用find函數,得到一個整數*/
if(i>n-1) /*如果整數i值大於n-1,說明沒找到*/
printf("not found\n");
else
print(t[i]); /*找到,調用顯示函數顯示記錄*/
printf("i=%d,n=%d",i,n);
getch();
}
/*顯示指定的一條記錄*/
void print(SONG temp)
{
clrscr();
printf("\n\n*******************************************************************************\n");
printf("\n Songname name singer Year_month\n");
printf("|---------------------------------------------------------------------------|\n");
printf("| %-16s| %-16s| %-16s| %-16s|\n",temp.songname,temp.name,temp.singer,temp.year);
printf("|---------------------------------------------------------------------------|\n");
printf("\n\n\n***************************************END*************************************\n");
}
/*查找函數,參數為記錄數組和記錄條數以及姓名s */
int find(SONG t[],int n,char *s,char ch)
{
int i;
/*從第一條記錄開始,直到最後一條*/
switch (ch){
case '1':
for(i=0;i<n;i++)
if(strcmp(s,t[i].songname)==0)
return i;
break;
case '2':
for(i=0;i<n;i++)
if(strcmp(s,t[i].name)==0)
return i;
break;
case '3':
for(i=0;i<n;i++)
if(strcmp(s,t[i].singer)==0)
return i;
break;
}
return i;
}
/*刪除函數,參數為記錄數組和記錄條數*/
int delete(SONG t[],int n)
{
char s[20]; /*保存待查找姓名字元串*/
int i,j; /*保存查找到結點的序號*/
char ch;
clrscr(); /*清屏*/
do{
printf("\nDelete by:\n");
printf("\n 1.By songname");
printf("\n 2.By name");
printf("\n 3.By singer");
printf("\n 0.Return to menu\n");
ch=getche();
}while(ch<48||ch>51);
switch(ch){
case '0':
return 0;
case '1':
printf("\nplease enter songname to search: ");
break;
case '2':
printf("\nplease enter name to search: ");
break;
case '3':
printf("\nplease enter songname to search: ");
break;
}
gets(s);
i=find(t,n,s,ch); /*調用find函數*/
if(i>n-1) /*如果i>n-1超過了數組的長度*/
printf("no found not deleted\n"); /*顯示沒找到要刪除的記錄*/
else
{
print(t[i]); /*調用輸出函數顯示該條記錄信息*/
printf("Are you sure delete it(y/n)\n"); /*確認是否要刪除*/
ch=getche(); /*輸入一個整數0或1*/
if(ch=='y'||ch=='Y') /*如果確認刪除整數為1*/
{
for(j=i+1;j<n;j++) /*刪除該記錄,實際後續記錄前移*/
{
strcpy(t[j-1].songname,t[j].songname); /*將後一條記錄的姓名拷貝到前一條*/
strcpy(t[j-1].name,t[j].name);
strcpy(t[j-1].singer,t[j].singer);
strcpy(t[j-1].year,t[j].year);
}
n--; /*記錄數減1*/
}
}
return n; /*返回記錄數*/
}
/*保存函數,參數為結構體數組和記錄數*/
void save(SONG t[],int n)
{
int i;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,並判斷打開是否正常*/
{
printf("can not open file\n");/*沒打開*/
exit(1); /*退出*/
}
printf("\nSaving file\n"); /*輸出提示信息*/
for(i=0;i<n;i++)
{
fprintf(fp,"%-20s%-20s%-20s%-20s",t[i].songname,t[i].name,t[i].singer,t[i].year);/*格式寫入記錄*/
fprintf(fp,"\r\n"); /*將換行符號寫入文件*/
}
fclose(fp);/*關閉文件*/
printf("****save success***\n"); /*顯示保存成功*/
}
/*讀入函數,參數為結構體數組*/
int load(SONG t[])
{
int i,n;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/
{
printf("can not open file\n"); /*不能打開*/
exit(1); /*退出*/
}
fscanf(fp,"%d",&n); /*讀入記錄數*/
for(i=0;i<n;i++)
fscanf(fp,"%-20s%-20s%-20s%-20s",t[i].songname,t[i].name,t[i].singer,t[i].year);/*按格式讀入記錄*/
fclose(fp); /*關閉文件*/
printf("You have success read data from file!!!\n"); /*顯示保存成功*/
return n; /*返回記錄數*/
}
/*按序號顯示記錄函數*/
void display(SONG t[])
{
int id,n;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","rb"))==NULL) /*打開文件*/
{
printf("can not open file\n"); /*不能打開文件*/
exit(1); /*退出*/
}
printf("Enter order number...\n"); /*顯示信息*/
scanf("%d",&id); /*輸入序號*/
fscanf(fp,"%d",&n); /*從文件讀入記錄數*/
if(id>=0&&id<n) /*判斷序號是否在記錄范圍內*/
{
fseek(fp,(id-1)*sizeof(SONG),1); /*移動文件指針到該記錄位置*/
print(t[id]); /*調用輸出函數顯示該記錄*/
printf("\r\n");
}
else
printf("no %d number record!!!\n ",id); /*如果序號不合理顯示信息*/
fclose(fp); /*關閉文件*/
}
int add(SONG t[],int n)
{
SONG temp; /*新插入記錄信息*/
int i,j;
char s[20]; /*確定插入在哪個記錄之前*/
printf("\nplease input record or \n direct press q to exit with songname\n\n"); /*提示輸入記錄*/
printf("\nEnter songname: ");
gets(temp.songname);
if(temp.songname[0]=='q'&&temp.songname[1]=='\0')
return n;
printf("\nEnter name: ");
gets(temp.name);
printf("\nEnter singer: ");
gets(temp.singer);
printf("\nEnter year: ");
gets(temp.year);
clrscr();
printf("\n Songname name singer Year_month\n");
printf("|---------------------------------------------------------------------------|\n");
printf("| %-16s| %-16s| %-16s| %-16s|\n",temp.songname,temp.name,temp.singer,temp.year);
printf("|---------------------------------------------------------------------------|\n");
printf("please input locate name \n");
gets(s); /*輸入插入位置的姓名*/
i=find(t,n,s,'1'); /*調用find,確定插入位置*/
for(j=n-1;j>=i;j--) /*從最後一個結點開始向後移動一條*/
{
strcpy(t[j+1].songname,t[j].songname);
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].singer,t[j].singer);
strcpy(t[j+1].year,t[j].year);
}
strcpy(t[i].songname,temp.songname);
strcpy(t[i].name,temp.name);
strcpy(t[i].singer,temp.singer);
strcpy(t[i].year,temp.year);
n++; /*記錄數加1*/
return n; /*返回記錄數*/
}
/*排序函數,參數為結構體數組和記錄數*/
void sort(SONG t[],int n)
{
int i,j,flag;
SONG temp; /*臨時變數做交換數據用*/
for(i=0;i<n;i++)
{
flag=0; /*設標志判斷是否發生過交換*/
for(j=0;j<n-1;j++)
if((strcmp(t[j].songname,t[j+1].songname))>0) /*比較大小*/
{
flag=1;
strcpy(temp.songname,t[j].songname);
strcpy(temp.name,t[j].name); /*交換記錄*/
strcpy(temp.singer,t[j].singer);
strcpy(temp.year,t[j].year);
strcpy(t[j].songname,t[j+1].songname);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].singer,t[j+1].singer);
strcpy(t[j].year,t[j+1].year);
strcpy(t[j+1].songname,temp.songname);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].singer,temp.singer);
strcpy(t[j+1].year,temp.year);
}
if(flag==0)break; /*如果標志為0,說明沒有發生過交換循環結束*/
}
printf("sort sucess!!!\n"); /*顯示排序成功*/
}
⑶ c語言游戲排行榜怎麼弄
#include
#include
#include
#include
#include
char m;
int x,y,fx,fy,ta,blength=2;//為了方便,數組第0個元素不要了前滾兄,直接從1開始
//length>=1必須的
int sbody_move;
struct sbody
{
int bx;
int by;
}sbody[1801];
int ou(int n)
{
if(n%2==1) n=n+1;
return n;
}
void map()
{
//地圖20*60 活動空間18*58
printf("by qq1176611589 on 11.13\nYour body length=%d,goal=20\n",blength);
int i,a,b,pr=0;
for (i=1;i<=60;i++) //第一行全為「- 」
printf("-");
printf("\n");
for(i=1;i<=18;i++)//中間18行
{
printf("|");
for(a=1;a<=58;a++)//具體列印某個值
{
if(i==y && a==x) pr=1; //蛇頭
if(i==fy && a==fx) pr=1; //產生食物
else
{
for(b=1;b<=blength;b++)
{
if(sbody[b].bx==a && sbody[b].by==i)
{
pr=1;
break;
}
}
}
if(pr==0) printf(" ");
if(pr==1) printf("*");
pr=0;
}
printf("|");
printf("\n");
}
for (i=1;i<=60;i++) //最後一行全為慧襲「- 」
printf("-");
printf("\n");
}
void move()
{
sbody[sbody_move].bx=x;//擺動身體
sbody[sbody_move].by=y;
sbody_move-=1;
if(sbody_move<=0)
sbody_move=blength;
switch(m)//蛇頭坐標改變
{
case 's':y+=1;break;
case 'a':x-=2;break;
case 'd':x+=2;break;
case 'w':y-=1;
}
}
void s_introcer()//游戲初始化...
{
printf("by_Wang qq1176611589 on 11.13\nasdw控制移動方向,請切換成英文輸入法,身體長度達到20勝利\n");
system("pause");
m='d';
x=10;
y=10;
sbody[1].by=10;
sbody[1].bx=8;
sbody[2].by=9;
sbody[2].bx=8;
sbody_move=blength;
char ta;
}
void food()
{
int data,guess,ran,i;
srand((unsigned)time(NULL));
ran=rand();
f: //每個坐標必須為偶數
fy=ou(rand()%(17)+1); //data (1,17) x58 y18
fx=ou(rand()%(57)+1); //(1,57)
if(x==fx && y==fy) goto f; //food不能在頭上
for(i=1;i<=blength;i++)//food不能再身體上
{
if(sbody[i].bx==fx && sbody[i].by==fy)
{
goto f;
}
}
}
main()
{
system("mode con cols=65 lines=25");
s_introcer();//游戲初始化 打醬油的無傷大雅的開局介紹和進入游戲。
int win=0,de=1,i,gameover=0,fe=0;
for(;gameover==0;) //主程序 =====================
{
move();
if(x>58 || x18 || y<1)//判斷游戲是否結束 活動空間x58 y18 /判斷是否撞牆備坦
break;
for(i=1;i<=blength;i++)//判斷是否咬到自己
{
if(sbody[i].bx==x && sbody[i].by==y)
{
gameover=1;
break;
}
}
if(gameover==1) break;
system("cls");
if(kbhit())
{
ta=m;
m=getch();//判斷按下某鍵 asdw作為控制
if(m=='a' && ta=='d') m=ta;
if(m=='d' && ta=='a') m=ta;
if(m=='w' && ta=='s') m=ta;
if(m=='s' && ta=='w') m=ta;
de=0;
}
if(x==fx && y==fy)
{
blength+=1;
fe=0;
}
if(blength>=20)
{
win=1;
break;
}
map();
if(fe==0)
{
food();//如果食物不存在,產生食物。
fe=1;
}
if(de==1)
Sleep(80);
if(de==0)
de=1;
}
if(win==0) printf("=========Gameover.You fail!=========\n");
if(win==1) printf("=========Gameover.You win!=========\n");
system("pause");
}
⑷ 用C語言寫一個歌曲排行榜,讀取文件的時候一堆亂碼怎麼解決呢謝謝!!!
write()函數里寫用碰敗
fprintf
read()函數敬亮裡面讀用
fscanf,
對應使用呀,帥哥亮吵寬
⑸ 用C/C++設計歌曲排行榜系統,按照人氣指數將排名前十位的歌曲信息顯示並存儲到文件中。。。
這是我曾經用C語言寫的歌曲排行榜的程序,跟你要的略有出入,沒有涉及任何打開關閉文件的操作。不過我想打開關閉文件還是簡單的,相信朋友你這個應該還是會的。真的不會,可以上網搜搜,也可以那本程序書看看。在此,我就只提下方法:先以寫的方式打開一個文件,然後輸出時把結果寫入文件,最後在關閉文件就好了。當然文件與源代碼最好在同一個根目錄下,這樣操作相對簡單點。希望我的回答能夠幫到你,嘗試過還是不行的話,可以隨時聯系我^_^
#include<stdio.h>
#include<stdlib.h>
#define N 100
typedef struct song { /*歌曲信息的結構類型*/
int No; /*編號*/
char song_name[32]; /*歌曲名稱*/
char name[16]; /*歌手姓名*/
int num; /*票數*/
} SONG ;
void displayMenu();
int choiceItem();
int input(SONG s[ ]);
void browse(SONG s[ ], int n);
void Top10(SONG s[ ], int n);
void vote(SONG s[ ], int n);
int main()
{
SONG a[N]; /*存放參與排行榜的歌曲信息*/
int n, choice;
do{
choice = choiceItem(); /*獲取菜單選擇*/
switch (choice) {
case 1: n = input(a); break;
case 2: browse(a, n); break;
case 3: Top10(a, n); break;
case 4: vote(a, n); break;
}
} while (choice!=0);
printf("\n\nBye!!");
return 0;
}
void displayMenu() /*顯示菜單*/
{
printf("\n============ Menu ============\n");
printf("\n 1..........Input informations\n");
printf("\n 2..........Browse informations\n");
printf("\n 3..........Print Top10\n");
printf("\n 4..........Vote\n");
printf("\n 0..........Exit \n");
printf("\nChoice:");
}
int choiceItem() /*選擇菜單項*/
{
int choice;
char line[80];
do{
displayMenu();
gets(line);
choice = atoi(line);
} while (choice<0 || choice>4);
return choice;
}
int input(SONG s[ ]) /*輸入歌曲信息*/
{
char buf[256];
int i = 0;
while ( 1 )
{
printf("\nPlease Input No Song_Name Singer_Name \n");
gets(buf); /*讀入一行*/
if (buf[0] == '\0') break; /*空行*/
sscanf( buf, "%d%s%s", &s[i].No, s[i].song_name, s[i].name); /*分解數據*/
s[i++].num = 1;
}
return i;
}
void browse(SONG s[ ], int n) /*瀏覽歌曲信息*/
{
int i;
printf("\n Num\tSong_Name\tSinger_Name\n");
for (i=0; i<n; i++)
printf(" %d\t%s\t%s\n", s[i].No, s[i].song_name, s[i].name);
}
void Top10(SONG s[ ], int n) /*排序*/
{
int i, j, k;
SONG temp[N], t;
for (i=0; i<N; i++) /*復制*/
temp[i] = s[i];
for (i=0; i<n-1; i++) /*選擇排序*/
{
k = i;
for (j=j+1; j<n; j++)
if (temp[k].num<temp[j].num) k = j;
if (k!=i)
{
t = temp[i];
temp[i] = temp[k];
temp[k] = t;
}
}
printf("\n Song_Name\tSinger_Name\n");
for (i=0; i<10 && i<n; i++) /*輸出前10名*/
printf(" %s\t\t%s\n", temp[i].song_name, temp[i].name);
}
void vote(SONG s[ ], int n) /*投票*/
{
int i;
char buf[80];
printf("\nEnter song'No :"); /*輸入歌曲編號*/
gets(buf);
for (i=0; i<n; i++) /*查找相應的歌曲並累加票數*/
if (s[i].No==atoi(buf))
{
s[i].num++;
printf("\nVote OK\n");
break;
}
if (i==n)
printf("Error No.\n");
}
⑹ C語言,就是青年歌手參加歌曲大獎賽,有10個評委進行打分,試編程求這位選手的平均得分。
i應該是整形,所以銀禪腔應該將其定義為int i。修改後代碼為:
#include <stdio.h>
int main()
{
float x[10],avg,max,min,sum,a;
for (int i=0;i<10;i++)
{
scanf(" %f",&x[10]);
if( i==0)
{
max=x[0];
min=x[0];
}
if (x[i]>max) max=x[i];
if (x[i]<min) min=x[i];
sum+=x[i];
}
a=(sum-max-min)/8;
printf("%.2f",a);
}
(6)歌曲排行榜c語言擴展閱讀:
for循環注意事項
1、for循環中的變數可以是一個也可以是多個,不要局限於一個變數處理到底,那樣有時會很單調,當程序適合把多個變數組成循環時,用多個for語句來表示就是有些浪費;
2、for循環中語句可以為語句體, 語句體外加大括弧"{}"將參加循環的語句括起來。for循環的三個表鋒衫達式都是逗號表達式,這樣來說,其實每個分號表達式可以由幾個逗號表達式構成,中間用",」隔開,最後以「;」結束。
3、for循環襲肢中的"單次表達式"、"條件表達式"和"循環體語句"都是選擇項, 即可以預設成只剩下「;」的空語句, ";"不能預設的原因是編譯格式如此,預設了編譯器不認識而會報錯。
網路-for循環