/*MP3的基本歌曲信息存在了MP3文件的最后128个字节里其结构是: 1-3 TAG 标签) 4-33 歌曲名(Take Me To Your Heart ) 34-63 歌手名(Michael Learns to Rock) 64-93 专辑名(Take Me to Your Heart) 94-97 年份(2004) 98-125 备注() 126 保留位,这时为0,则说明有音轨,下一位就是音轨 127 保留位,为音轨(第几首歌)(OC) 128 保留位 (风格)(66) */#include<stdio.h>#include<stdlib.h>struct MUSIC_TITAL_INFO{ char ID3v1TAG[3]; //TAG char MUSIC_NAME[30]; //存储标题信息 char Artist[30]; //存储歌手信息 char Album[30]; //存储专辑信息 char YEAR[4]; //存储年代信息 char Comments[28]; //存储备注信息,28个字节(有时为30字节) char Genre; //存储音乐风格信息,保留位,1个字节 char Reserved; //保留位,1个字节(有时没有意思 char Track; //音轨(曲号)保留位,1个字节(有时没有)}m;void main(){ FILE *fp; if((fp=fopen("E:\\一生所爱.mp3","r"))==NULL) { printf("打开文件失败!/n"); exit(0); } if(!fseek(fp,-128,SEEK_END)) { fread(&m,sizeof(struct MUSIC_TITAL_INFO),1,fp); printf("TAG: %.s\nName: %30s\nArtist: %30s\nAlbum: %30s\nYear: %4s\nComment: %28s\nGenre: %c\nReserved: %c\nTrack: %c\n",m.ID3v1TAG,m.MUSIC_NAME,m.Artist,m.YEAR,m.Album,m.Comments,m.Genre,m.Reserved,m.Track); } else { printf("读取失败!/n"); }}2
/*在十个数字0,1,2,3,4,5,6,7,8,9文曲星会随机产生2个数让你来猜 你最多只有6次机会例如 文曲星 随即产生 12这2个排列好的2位数字然后 猜数第一次 输入 01 那么 文曲星会返回 0A1B (xAxB A代表你猜中了多少个数字并且位置也是正确的,B代表你猜中了多少个数字但是位置是错误的),然后根据0A1B这个信息 继续猜 直到猜对为止(即2A0B).就这样,每次输入2个数字 文曲星都会返回 xAxB 但最多只能猜6次
*/
#include<stdio.h>#include<time.h>
#include<stdlib.h>
int random[2];int A=0;int B=0;void P_rand(){ int number_1 = 0; int number_2 = 0; srand((unsigned)time(NULL)); while(1) { number_1 = rand()%10; number_2 = rand()%10; if(number_1 != number_2) { random[0] = number_1; random[1] = number_2; break; } }}void main(){ P_rand(); printf("输入您猜的两位数,以,隔开\n"); for(int i=0;i<6;i++){ int Guess_num_1 = 0; int Guess_num_2 = 0; A=0; B=0; scanf("%d,%d",&Guess_num_1,&Guess_num_2); if(Guess_num_1 == random[0]) { A++; } if(Guess_num_2 == random[1]) { A++; } if(Guess_num_1 == random[1]) { B++; } if(Guess_num_2 == random[0]) { B++; } if(A == 2 && B == 0) { printf("2A0B,恭喜您!猜对了!!"); break; }else { printf("%dA%dB,对不起不正确\n",A,B); } }}3#include<stdio.h>#include<stdlib.h>/*例如输入当前时间2006年12月20日19时17分59秒,计算后输出时间是2006年12月20日19时18分00秒。程序要求:程序应该可以运行:通过控制台输入数据,输出数据通过printf给出;程序结构明了、逻辑清晰;请考虑闰年、月份(大小)等逻辑;程序功能完整;*/struct DATE{ int year; int month; int day; int hour; int minute; int secs;}date1,date2; int _year; int _month; int _day; int _hour; int _minute; int _secs;void main(){ struct DATE outPut(struct DATE date); printf("请输入当前一个日期:\n"); scanf("%d年%d月%d日%d时%d分%d秒",&_year,&_month,&_day,&_hour,&_minute,&_secs); date1.year = _year; date1.month = _month; date1.day = _day; date1.hour = _hour; date1.minute = _minute; date1.secs = _secs; date2=outPut(date1); printf("%d年%d月%d日%d时%d分%d秒\n",date2.year,date2.month,date2.day,date2.hour,date2.minute,date2.secs); fflush(stdin);}int IS_Leap_Year(struct DATE date){ if((date.year%4==0&&date.year%100!=0)||date.year%400==0){ return 1; }else{ return 0; }}struct DATE outPut(struct DATE date){ int IS_Leap_Year(struct DATE date); int is_Leap_Year=IS_Leap_Year(date); if(date.secs == 59) { date.secs=0; date.minute++; if(date.minute == 60) { date.minute=0; date.hour++; if(date.hour==24) { if(1 == date.month||3 == date.month||5 == date.month||7 == date.month||8 == date.month||10 == date.month) { if(31 == date.day) { date.day = 1; date.month++; date.hour=0; } }else if(4 == date.month||6 == date.month||9 == date.month||11 == date.month) { if(30 == date.day) { date.day=1; date.month++; date.hour=0; } }else if(2 == date.month) { if(1 == is_Leap_Year) { if(29 == date.day) { date.day=1; date.month++; date.hour=0; } }else if(0 == is_Leap_Year) { if(28 == date.day) { date.day=1; date.month++; date.hour=0; } } }else if(12 == date.month) { if(31 == date.day) { date.day=1; date.month=1; date.year++; date.hour=0; } } } } }else { date.secs++; } return date;} 4 /*•例如输入当前时间2006年12月20日19时17分59秒,计算后输出时间是2006年12月20日19时18分00秒。 •程序要求: •程序应该可以运行:通过控制台输入数据,输出数据通过printf给出; •程序结构明了、逻辑清晰; •请考虑闰年、月份(大小)等逻辑; •程序功能完整; */#include<stdio.h>#include<stdlib.h>struct Array{ int a; char b;} array;int num[200];FILE *fb;FILE *fb2;void main(){ float avg_sum_array=0; int sum_array=0;//奇数之和 int sum = 0;//各位数的和 int unit = 0;//个位数 int ten = 0;//十位数 int hundred = 0;//百位数 int thousand = 0;//千位数 int i = 0;//数组下标 int count = 0;//计算是奇数的个数 if((fb = fopen("C:\\Source.txt","r")) == NULL) { printf("文件打开未成功!输入任意键推出程序!"); getchar(); exit(1); }else { while(!feof(fb)) { fscanf(fb,"%d%c",&array.a,&array.b); num[i]=array.a; i++; } } for(int j = 0;j<i;j++) { printf("%d\n",num[j]); } printf("一共有%d个正整数!!\n",i); for(int k = 0;k<i;k++) { unit = num[k]%10; ten = (num[k]/10)%10; hundred = (num[k]/100)%10; thousand = (num[k]/1000); sum = unit+ten+hundred+thousand; if(sum%2 ==1) { sum_array+=num[k]; count++; } } avg_sum_array =(float)sum_array/i; if((fb2 = fopen("C:\\Dest.txt","w")) == NULL) { printf("文件打开未成功!输入任意键推出程序!"); getchar(); exit(1); }else { fprintf(fb2,"%d,%f",count,avg_sum_array); printf("文件写入成功!!!\n"); } printf("满足奇数的个数为:%d,平均数为:%f\n",count,avg_sum_array); fclose(fb); fclose(fb2);}