1、C语言Description定义一个学生结构体,含学号(一维字符数组)、姓名、成绩(整型)。从键盘输入n(n20),再输入n个学生的信息,按学生成绩从小到大顺序输出学生信息。Input多组测试数据,每组输入一个n,接着输入n个学生的信息。Output按成绩从小到大顺序输出学生信息。Sample Input41001Li761002Zhang921003Liu851004Wang70Sample Output1004 Wang 701001 Li 761003 Liu 851002 Zhang 92#include #include struct student char number20; c
2、har name20; int score; ; int main() struct student stu22; int n,i,j; int t; char name122, number122; while(scanf(%d,&n)!=EOF) for(i=1;i=n;i+) scanf(%s%s%d,stui.number,stui.name,&stui.score); for(j=1;j=n;j+) for(i=1;istui+1.score) t=stui.score; stui.score=stui+1.score; stui+1.score=t; strcpy(name1, s
3、tui.name); strcpy(stui.name, stui+1.name); strcpy(stui+1.name, name1); strcpy(number1,stui.number); strcpy(number1,stui.number); strcpy(stui.number,stui+1.number); strcpy(stui+1.number,number1); for(i=1;i=n;i+) printf(%s %s %dn,stui.number,stui.name,stui.score); 结构体:求最高分和最低分Time Limit: 1 Sec Memory
4、Limit: 64 MBSubmit: 3212 Solved: 2216Description定义一个学生结构体,含学号(字符型)、姓名、成绩(整型)。从键盘输入数字n(n20),并输入n个学生的信息,输出最高分和最低分同学的信息。Input多组测试数据,每组输入一个n,接着输入n个学生的信息。Output输出最高分和最低分同学的学号、姓名、成绩。Sample Input41001Li761002Zhang921003Liu851004Wang70Sample Output1002 Zhang 921004 Wang 70#includestruct studentint num;char
5、name10;int cj; ; int main() struct student a10; int n,m,j,k,h,i; while(scanf(%d,&n)!=-1) for(i=0;in;i+) scanf(%d%s%d,&ai.num,ai.name,&ai.cj); m=0; h=0;j=a0.cj; for(i=0;in;i+) if(jai.cj) h=i; j=ai.cj; for(i=0;iai.cj) m=i; k=ai.cj; printf(%d %s %dn,ah.num,ah.name,ah.cj) ; printf(%d %s %dn,am.num,am.na
6、me,am.cj); 结构体:计算学生平均分Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4386 Solved: 2589Description定义一个学生结构体,含学号(字符型)、姓名、2门课程的成绩。从键盘输入3个学生的信息,计算并输出每个学生的平均成绩。 Input按学号、姓名、成绩1、成绩2的顺序输入学生信息Output输出每个学生的平均分Sample Input101Xue8790102Lin9892103Liu8983Sample Outputave0=88.5ave1=95.0ave2=86.0#include struct stud
7、ent double num; char name20; int s1,s2; double average; ; int main() int i; struct student s; i=0; while(scanf(%lf%s%d%d,&s.num,s.name,&s.s1,&s.s2)!=EOF) s.average=(s.s1+s.s2)/2.0; printf(ave%d=%.1lfn,i,s.average); i+; return 0; 深入浅出学算法004-求多个数的最小公倍数Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1101
8、Solved: 306Description求n个整数的最小公约数Input多组测试数据,先输入整数T表示组数然后每行先输入1个整数n,后面输入n个整数k1 k2.knOutput求k1 k2 .kn的最小公倍数Sample Input13 12 18 6Sample Output36HINTSource#include int main() int lcm(int m,int n); int T,n,a100,i,d; while(scanf(%d,&T)!=EOF) while(T-) scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); d = a0;
9、for(i=1;in) t=m; m=n; n=t; x=m;y=n; while(n0&m0) n=n%m; if(n=0)break; m=m%n; if(n=0)a=m; else if(m=0)a=n; b=x/a*y; return b; 或者最大公约数#includeint main () int n,a,b,c,i; while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d%d,&a,&b); c=a%b; while(c!=0) a=b;b=c;c=a%b; printf(%dn,b); 求最小公倍数只需设一个原来两数乘积,再除以最大公约
10、数 深入浅出学算法020-排队购票Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1076 Solved: 678Description一常球赛开始前,售票工作正在进行中。每张球票为50元,现有k(1 = k = 30)人排队购票,其中n人手持50元的钱,剩余m人手持100元的钱,假设开始时售票处没有钱,求出售票处不出现找不开钱的不同排队种数(拿同样钞票面值的人换位置视为同一种排队)Input多组测试数据,先输入整数T表示组数,然后每组输入2个整数n和mOutput对于每组测试数据输出1行,值为题目描述中的排队种数Sample Input21 21 1
11、Sample Output01HINTSource#include #include #include using namespace std; const int N = 30 + 5 ; int dpNN; int T ; int n,m; int main() scanf(%d,&T); while( T -) memset(dp,0,sizeof(dp); int flag = 0 ; scanf(%d%d,&n,&m); if(n m )flag = 1 ; for(int i = 0 ; i = n ; i+) for(int j = 0 ; j j-1) dpij += dpij
12、-1; /* for(int i = 0 ; i = n ; i +) for(int j = 0 ; j = m ; j+ ) printf(dp%d%d=%dn,i,j,dpij); */ printf(%dn,dpnm); return 0 ; 数组中删数多组测试,每组第一行输入1个整数n(n20),然后是n个整数 第二行输入1个整数m 删除在第一行的n个整数中的数字m(多个的话都要删除),然后按照顺序输出剩下的数, 5 1 2 3 4 331 2 4#includeint main() int t,n,m,i,j,a100; while(scanf(%d,&n)!=EOF) for(i
13、=0;in;i+) scanf(%d,&ai); scanf(%d,&m); t=0; for(i=0;in;i+) if(ai!=m) t+; if(t=1) printf(%d,ai); else printf( %d,ai); printf(n);return 0;数组中插入一个数3 1 2 53 11 2 3 52#includeint main() int n,m,k,a100,i,t,j,p; while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d,&ai); scanf(%d,&m); scanf(%d,&k); for(i=0;i=n;
14、i+) if(mi;j-) aj=aj-1; break; aj=m; for(p=0;pn;p+) printf(%d ,ap); printf(%d,an); printf(n); printf(%d,ak); printf(n); return 0;字符倒序输出#include#includechar a100;int main() int i,n; while(gets(a) n=strlen(a); n-; if(n=0;n-) printf(%c,an); printf(n); return 0;数字大小排序#include int main() int n,m,j,i,t,k,a
15、100; while(scanf(%d,&n)!=EOF) for(i=0;in;i+) scanf(%d,&m); for(j=0;jm;j+) scanf(%d,&aj); for(k=0;km;k+) for(j=k+1;jm;j+) if(akaj) t=aj; aj=ak; ak=t; for(j=0;jm-1;j+) printf(%d ,aj); printf(%dn,aj); 老外买瓷砖 #include void f(int* a,char* s) while(*s) switch(*s) case h: case H: case A: case a: a0+;break;
16、case E: case e: a1+;break; case Y: case y: case I: case i: a2+;break; case O: case o: a3+;break; case U: case u: a4+;break; s+; int main() char s200; int a5; int n,i,j; scanf(%d,&n); getchar(); for(i=0;in;i+) for(j=0;j5;j+) aj=0; gets(s); f(a,s); printf(a:%dne:%dni:%dno:%dnu:%dn,a0,a1,a2,a3,a4); ret
17、urn 0;数字金字塔#includeint main() int i,j,n; printf(请输入金字塔的层数:n); scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(%d,i); printf(n); return 0;Problem E: 生日礼物Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 823 Solved: 240Description 小明的生日比较特别,是2月29日,所以他经常需要等4年才有一次生日。为此,
18、每次的生日他会收到爷爷奶奶爸爸妈妈哥哥姐姐给他的礼物,但其中一份礼物比较特别。后来小明发现一个规律,可以知道其中最特别的礼物是谁送的。那就是每次装蛋糕的盒子上印的几个英文字母可以看出来。如果是爷爷送的,上面会印着“grandfather,奶奶送的话会印“grandmother”,爸爸送的话会印“father”,妈妈送的话会印“mother”,哥哥送的话会是“brother”,姐姐送的话会印“sister”。Input 多组测试数据,先输入一个整数T,表示组数,然后输入t行,每行是蛋糕盒上印的英文字母Output 对于每组测试数据,请输出这年特别礼物是谁送的,如果是爸爸送的,就输出“baba”,
19、爷爷奶奶妈妈哥哥姐姐送的依次输出“yeye”“nainai”“mama”“gege”“jiejie“Sample Input3grandmothermotherfatherSample Outputnainaimamababa#include #include int main() int t,i; char a100; scanf(%d,&t); getchar (); for(i=0;it;i+) gets(a); if(strcmp(a,grandmother)=0) printf(nainai); if(strcmp(a,mother)=0) printf(mama); if(strc
20、mp(a,father)=0) printf(baba); if(strcmp(a,grandfather)=0) printf(yeye); if(strcmp(a,brother)=0) printf(gege); if(strcmp(a,sister)=0) printf(jiejie); printf(n); return 0; 今天是近年第几天#include int f(int n); int main() int a,b,c; while(scanf(%d-%d-%d,&a,&b,&c)!=EOF) if(f(a)=1) int m13; m1=0; m2=31; m3=60;
21、m4=91; m5=121; m6=152; m7=182; m8=213; m9=244; m10=274; m11=305; m12=335; b=mb; printf(%dn,b+c); else int m13; m1=0; m2=31; m3=59; m4=90; m5=120; m6=151; m7=181; m8=212; m9=243; m10=273; m11=304; m12=334; b=mb; printf(%dn,b+c); return 0; int f(int n) if(n%4=0&n%100!=0)|n%400=0) return 1; else return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1