山东科技大学OJ部分题目记答案
更新时间:2024-06-07 23:20:01 阅读量: 综合文库 文档下载
- 山东科技大学oj题库推荐度:
- 相关推荐
//////////Problem D: 货币兑换 Description
给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。 要计算的外币有三种:美元、欧元、日元。 Input
输入有三行。
第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动范围为(0,10000)。 第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0 输出为两行。 第一行为金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。 第二行为金额为y的人民币兑换成美元、欧元、日元的金额,用空格分开。 所有金额精确到小数点后两位。 Sample Input 668.5200 908.0685 7.9852 1500 1500 Sample Output 10027.80 13621.03 119.78 #include double i,j,k,a,b,c,d,e,f; double x,y; scanf (\ scanf (\ a=x/100*i;b=y/100*j;c=x/100*k; d=y*100/i;e=y*100/j;f=y*100/k; printf (\ printf (\} ////Problem E: 求字符的值//// Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。 Input 输入为3个字符。 Output 输出为3行。 每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。 Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 #include char x,y,z; scanf (\ printf (\ printf (\ printf (\ } Problem A: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。 Input 输入只有一行,三个整数m、n和x,且0 输出金额,精确到分。 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。 #include scanf (\if (m*x>=n) s=m*x*0.88; else s=m*x; printf (\ } Problem C: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。 Input 一个整数x,100<=x<=999。 Output x是水仙花数,则输出“YES”,否则为“NO”。 #include int x,a,b,c; scanf (\ a=x; b=x/10; c=x/100; if(a*a*a+b*b*b+c*c*c==x) printf (\ else printf (\} Problem A: 多少张钞票 Description 客户去商店买东西时,不超过100美金的账单喜欢用现金支付。商店喜欢用最少的钞票给付客户的找零。请你编写一个程序帮助商店计算出:当客户买了x元商品给了一张100美元的钞票后,商店应该付给客户多少张20美元、10美元、5美元和1美元的钞票,使得钞票总数最少。假设不存在其他面值的钞票,也不会有几角几分的价格,商店的各种钞票总是够用的。 Input 输入一个整数x,0 按顺序输出20美金、10美金、5美金和1美金面值的钞票张数。输出格式见sample。 Sample Input 7 Sample Output $20 bills: 4 $10 bills: 1 $5 bills: 0 $1 bills: 3 #include {int x,s,a,b,c,d; scanf (\s=100-x; a=s/20; b=(s-20*a)/10; c=(s-20*a-10*b)/5; d=s-20*a-10*b-c*5; printf (\printf (\printf (\printf (\} Problem B: 自动拨出电话的程序 Sample Input (0532)621-15486 Sample Output 008653262115486 HINT 这是个可以用scanf()解决的问题,请注意电话号码都是数字这个规律。 #include int a,b,c; scanf(\ printf(\} ///////Problem C: 求1+2+...+n=? Description 给定一个n,求出s = 1+2+3+...+n的值。 Input 输入只有一行,包含一个正整数n(n<=232)。 Output 输出一行,为1+2+...+n的值。 Sample Input 10 Sample Output 55 HINT n的数据范围大,需注意数据类型的选择和计算次序,以避免数据溢出。 #include unsigned long long int n,s,i; scanf(\ if(n%2==0) s=n/2*(n+1); else s=(n+1)/2*n; printf (\} /////////////Problem D: 2的多少次幂 Description 从键盘输入一个数x,x是2的整数次幂(x=2y),请编程求出y的值。 Input 一个非负有理数x,x在[0,2256]范围内。 Output 一个整数y。 #include scanf (\ n=(log10(x))/(log10(2)); printf (\} ////Problem A: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n 输入三个整数,依次为k、m、 n。 Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 #include int k,m,n,i=0,j; scanf (\ for (j=1;j<=k;j++) { if ((j%m==0&&j%n!=0)||(j%m!=0&&j%n==0)) {i++; if(i==1) printf (\ else printf (\ } } /////Problem B: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。 Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。 输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。 Sample Input 3 0 1 -1 Sample Output The maximum number is 1. The minimum number is -1. #include int i,n,m,max,min; scanf (\ min=max; for(i=1;i {scanf (\ if (m>max) max=m; if(m printf(\} Problem C: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之间的输入是非法数据,输出“Error”。 Input 输入多行,每行一个整数。 Output 输入所对应的成绩等级。 #include int n; while (scanf (\ { if (n==100) printf (\ else if(n<0||n>100) printf (\ else switch (n/10) {case 9:printf (\ case 8:printf (\ case 7:printf (\ case 6:printf (\ default :printf (\ } } return 0; } /////Problem E: A+B Problem (II) : Input/Output Pratice Description 计算a+b,0<=a,b<1000。 Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。 Output 每行输出一个a+b的和,顺序与输入对应。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N给出了测试样例数,用for循环处理方便。 #include int N,i,j; scanf(\ int a[N][2]; for (i=0;i for (j=0;j<2;j++) scanf (\ } for (i=0;i printf (\} Problem A: A+B Problem (III) : Input/Output Pratice Description 计算a+b,0<=a,b<1000。 Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。 Sample Input 1 2 10 20 0 0 Sample Output 3 30 #include scanf(\ if(a==0&&b==0) break; else printf(\ } } Problem C: 只有一个二元运算符的表达式运算 Description 编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。 Input 每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。 输入以a和b为0,且用一个空格分开结束。 Output 每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。 HINT 教材上有非常相似的例题可以参考。 #include int a,b; char i; while(1) {scanf (\ if(a==0&&b==0&&i==32) break; else {switch(i) { case '+':printf(\ case '-':printf(\ case '*':printf(\ case '/':printf(\ case '%':printf(\ default:printf(\ } } } } Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。 Input 输入为两个整数m和n,满足0<=m<=n<=100。 Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。 输出的所有数在两行“=====”之间。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。 #include int m,n,i,j,k; scanf(\ printf(\ for(i=n;i>=m;i--) { k=0; for(j=1;j printf(\ } printf(\} Problem E: 十进制整数转二进制 Description 给出一个十进制的非负整数x,x<=216,把它转换成二进制数输出。 Input 输入为多行,每行一个整数x,至读入EOF结束。 Output 每行输出x对应的二进制数值。 #include int i,j,m,n,k; int a[17]; while(scanf(\ {if(n==0) printf(\ else { for(m=0;m<=16;m++) { i=n%2; j=n/2; n=j; a[m]=i; } for(m=16;m>=0;m--) { if(a[m]==1) {k=m; break;} } for(m=k;m>=0;m--) printf(\ printf(\ } } } /////Problem F: 辗转相除法 最大公约数的算法 Description 辗转相除法,也称欧几里得算法,是求最大公约数的算法。Input 输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据范围。输入至EOF结束。 Output 每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。 从数论上的整除定义出发:若a整除b(b除以a没有余数),则b是a的倍数,a是b的约数,这里要求b不为0。因此0是任意整数的倍数,但是0不能是约数。 #include { int a,b,c,m,t; while(scanf(\ { if(a==0&&b!=0) printf(\ else if(a!=0&&b==0) printf(\ else { if(a while(c!=0) { a=b; b=c; c=a%b; } printf(\ ////Problem A: 简单的整数排序 Description 对给出的若干整数按从小到大排序。 Input 输入的第一个数为n(n<=1000),后接n个整数。 Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。 Sample Input 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1 2 3 3 5 5 6 7 8 9 #include int i,j,n,t; int a[1000]; scanf(\ for(i=0;i scanf(\ for (i=1;i for(j=0;j {t=a[j]; a[j]=a[j+1];a[j+1]=t; } for(i=0;i printf(\ else printf(\ } } /////Problem B: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)? Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。 Output 输出为n行,每行为第m个月后的兔子总数。 Sample Input 6 1 2 3 4 5 10 Sample Output 1 2 3 5 8 89 HINT 当n较大时,菲波那契序列的第n项值和计算量都是很大的,可以先计算出菲波那契序列并用数组存储下来,然后查询出每月兔子数,避免重复运算。 #include { int i,j,k,n; int a[50]={0,1,2},b[50]; for(i=3;i<=45;i++) a[i]=a[i-1]+a[i-2]; scanf(\ for(k=0;k scanf(\ for(k=0;k printf(\} //////Problem C: 产生等差序列之一 Description 根据给出的初始数、公差和序列长度求等差序列。 Input 输入为一行,格式见sample。其中,start为初始数,step为公差,times为序列长度。满足,times>0,step不为0。 Output 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 Sample Input start = 1, step = 2, times = 100 Sample Output 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 HINT Append Code #include int i,j,k,n; char d[100],b[100],c[100]; int a[1000]; scanf(\ for(n=0;n a[n]=i+j*n; } for(n=0;n if(n==k-1) printf(\ else printf(\ } } ////Problem D: 产生等差序列之二 Description 根据给出的初始数、公差和终止条件求等差序列。 Input 输入为一行,格式见sample。其中,start为初始数,step为公差,end为终止条件。满足,step不为0,并且start和end的大小关系与step的方向一致。end不一定是序列的最后一个数。 Output 把这个等差序列输出在一行里,序列两数之间用一个空格分隔。 Sample Input start = 1, step = 2, end = 200 Sample Output 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 #include int i,j,k,b,n; int a[1000]; scanf(\ a[0]=i; if(j>=0) for(n=0;a[n]<=k;n++) a[n+1]=i+(n+1)*j; else for(n=0;a[n]>=k;n++) a[n+1]=i+(n+1)*j; for(b=0;b printf(\ else printf (\} ////Problem A: 字符串的逆序 Sample Input abcde Sample Output edcba #include {int i,j; char s[101]; scanf(\ i=strlen(s); for(j=i-1;j>=0;j--)printf(\ Problem B: 去行首行尾的空白符 Description 在C语言中,将ASCII字符集中的制表符('\\t')、回车符('\\r')、换行符('\\n')、垂直制表符('\\v')、换页符('\\f')和空格字符(' ')称作空白符。 你的任务是读入每行字符串,去掉行首和行尾的连续空白符,但是在任意非空白符中间的空白符不要去除。 Input 输入为多行,每行为一个串(不超过100个字符),至某行输入的非空白符仅为“END”结束。 Output输出为多行,为每行输入的去掉前后空白符的串。“END”也输出。 #include int i,j=0,k,m,n,a; char s[1224][123]={{0},{0}},b[1234]={0}; for(i=1;strcmp(s[i-1]+j,\ { gets(s[i]); for(j=0;isspace(s[i][j])!=0;j++); for(n=strlen(s[i])-1;isspace(s[i][n])!=0;n--); s[i][n+1]='\\0'; puts(s[i]+j); } } /////Problem C: 回文 Input 输入为多行,到文件末尾结束。每行为一个串,且不会超过1000个字符,且全部由可显示的ASCII码字符组成。Output当一个串中的字母和数字部分能够构成一个回文,即输出“Yes.”;否则输出“No.”。 HINT 首先要考虑如何去除空白符(空格、回车、换行、制表符等),标点和各种符号(如“,!\和“#@<>{}”等),并且把串中的英文字符统一大小写,最后才能进行回文判定。 请注意,用gets()和scanf()判断文件尾的方法是不一样的。gets()函数的返回值请查阅C语言的语法手册。 #include int i,j,k; char a[1001],b[1001]; while(gets(a)!=NULL) { for(i=0,j=0;a[i]!='\\0';i++) { if(isalnum(a[i])!=0) { b[j]=a[i]; j++; } } for(i=0,k=0;i if(tolower(b[i])==tolower(b[j-1-i])) k++; } if(k==ceil(j/2.0)) printf(\ else printf(\ } } Problem D: Matrix Problem : Array Pratice Description 求一个m×n阶矩阵A的转置矩阵AT。矩阵A的每个元素都在int类型的范围之内。 Input 输入的第一行为一个整数M(M>0),后面有M组输入数据。每组数据以两个正整数m和n开始,满足0 输出为多组,每组输出A的转置矩阵AT。矩阵的输出为:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。每两组输出之间用一个空行分隔开。 Sample Input 1 3 3 1 2 3 4 5 6 7 8 9 Sample Output 1 4 7 2 5 8 3 6 9 HINT 二维数组存储矩阵。 #include int i,j,c,d,m,n; int a[100][100],b[100][100]; scanf(\ for(d=0;d {scanf(\ for(i=0;i scanf(\ for(i=0;i printf(\ else printf (\ printf(\ } printf(\} } Problem A: 编写函数maxValue(编程题) Description 编写一个函数maxValue,求三个整数的最大值,其原型为: int maxValue(int a,int b,int c); 其中a、b、c是参与比较的三个整数,返回值是三个数的最大值。 Input 输入三个int类型的整数,两两之间用空格隔开。 Output 输出三个整数的最大值。 Sample Input 1 2 3 Sample Output 3 HINT Append Code append.c, #include int maxValue(int a,int b,int c) { int x; x=a>b?a:b; if(x int main() { int x,y,z; scanf(\ printf(\ return 0; } Problem B: 编写函数myFloor和myCeil(编程题) 取整函数有四个,分别是 fix, floor, ceil, round。这里要求你编写myFloor和myCeil函数,它们的原型分别是: int myFloor(double data); int myCeil(double data); 其中myFloor函数的结果是不大于data的最大整数,myCeil函数的结果是不小于data的最小整数。 注意:不能使用math.h和stdlib.h两个头文件。 Input 输入有多行,每行是一个需要转换的实数。 Output 输出为多行,与上述输入一一对应。每行先输出floor函数的结果,再输出ceil函数的结果。两者之间用一个空格隔开。取整之后的结果不超出int类型的表示范围。 Sample Input 1.3 -1.5 2 Sample Output 1 2 -2 -1 2 2 HINT Append Code append.c, #include int myFloor(double data) { int i; if(data>0) for(i=0;;i++) {if(data-i>=0&&data-i<1) break; } else for(i=0;;i--) {if(i-data<=0&&i-data>-1) break; } return i; } int myCeil(double data) { int i; if(data>0) for(i=0;;i++) {if(i-data>=0&&i-data<1) break; } else for(i=0;;i--) {if(data-i<=0&&data-i>-1) break; } return i; } int main() { double data; while (scanf(\ { printf(\ } return 0; } Problem C: 求字符串的长度(编程题) Description 编写一个求字符串长度的函数,其原型如下: int strlen(char str[]); 其中str[]表示待求长度的字符串,返回值是str[]的长度。 注意:主函数已经给出,只需提交strlen()函数及必要的头文件包含命令。 Input 输入为多行。第一行N>0表示有N个测试用例,后面有N行,每行包含一个字符串(不超过1000个字符)。 Output 输出为多行,每行对应于一个测试用例。每行的格式为: case i:lenght=j. 其中i表示测试用例编号(从1开始),j表示相应的字符串长度。, #include int i; for(i=0;str[i]!='\\0';i++); return i; } int main() { int i,N; char str[1001]; scanf(\ getchar(); gets(str); printf(\ for (i=2;i<=N;i++) { gets(str); printf(\ } return 0; } Problem B: 你交换了吗?之二(函数) Description 从标准输入读取两个整数,按先小后大的次序输出,并且输出是否交换过位置。 注意:a和b相等时不产生交换。 请注意阅读append.c里的代码! Input 两个较小的整数a,b,用空格分开。 Output 输出有两种情况: 1) “a b NO”, 当a,b没有交换过 2) “b a YES”, 当a,b交换过 Sample Input 5 3 Sample Output 3 5 YES #include int is_swapped(int *p1,int *p2) { if(*p1>*p2) return 1; else return 0; } int main() { int a, b; scanf(\ if(is_swapped(&a, &b)) printf(\ else printf(\} Problem C: 编写函数unionSet(编程题) Description 编写一个函数unionSet,对2个集合求并集。其原型为: int unionSet(int setA[],int setB[],int numA,int numB); 其中setA和setB是两个待合并的集合,numA和numB分别是2个集合的元素个数。该函数将两个集合合并后,放在数组setA中,返回值为并集中的元素个数。 Input 输入为2行,每行是一个集合,每行的输入以数值0作为结束,个数不超过100个。2个集合合并后的元素取值均在[1,100]内。 Output 输出2个集合求并后的结果,两两之间用一个空格隔开。输出时,先输出第一个集合中的元素,再输出从第2个集合中合并过来的元素。见样例。 Sample Input 1 2 3 4 5 7 0 2 4 6 8 19 0 Sample Output 1 2 3 4 5 7 6 8 19 HINT Append Code append.c, #include int unionSet(int setA[],int setB[],int numA,int numB) { int i,j,k,m=0; for(i=0;setB[i]!=0;i++) {k=0; for(j=0;j if(setA[j]!=setB[i]) k++; } if(k==numA) { m++; setA[numA+m-1]=setB[i]; } } return numA+m; } int main() { int setA[101],setB[101],numA,numB,i; numA=numB=0; scanf(\ while (setA[numA]!=0) { numA++; scanf(\ } scanf(\ while (setB[numB]!=0) { numB++; scanf(\ } numA=unionSet(setA,setB,numA,numB); printf(\ for (i=1; i printf(\ return 0; } Problem A: 结构体的使用(编程题) Description 设有结构体定义如下: typedef struct Student { char major[50];//专业 char name[50];//姓名 int score[3];//3门课程的成绩 } STU; 编写一个子函数,输出每个学生的总分,函数原型如下: void printInfo(STU students[],int num); 其中students[]是由num个STU类型的结构体组成的数组。 输出格式见下。 注意:主函数已经给出,提交时需提交以下内容:上述结构体STU的定义(直接复制上就可以,要放在头文件包含命令之后)、必要的头文件包含命令以及printInfo函数的代码。 Input 输入为多行。第一行N>0表示有N个学生的信息。之后有N行,每一行包含5个部分,分别表示每位学生的专业、姓名和3门课程的成绩,两两之间用空格隔开。成绩为正整数。 Output 输出为N行,每一行为一名学生的信息,格式为: major,name:totalSocre. 其中major表示学生的专业,name表示学生的姓名,totalScore表示该生的总分。所有的标点符号均为半角字符。 Sample Input 3 Computer Tom 100 98 89 Information Jack 98 89 87 Management Mary 89 89 89 Sample Output Computer,Tom:287. Information,Jack:274. Management,Mary:267. HINT Append Code append.c, #include char major[50]; char name[50]; int score[3]; } STU; void printInfo(STU students[],int num) { int i,j; int s; for(i=0;i for(j=0;j<3;j++) s+=students[i].score[j]; printf(\ printf(\ } } int main() { int i,N; scanf(\ STU stus[N]; getchar(); for (i=0;i scanf(\ scanf(\ } printInfo(stus,N); return 0; } Problem B: 谁能上春晚?(编程题) Description 科大电视台将在2013年2月10日举办一场大型春节晚会。为了选拔好节目,科大电视台将于近日举办一次“直通科大春晚”的节目,届时将有M名选手和N名评委参加,并选拔排名前三甲的选手参加春晚。 选手的排序原则是:对每名选手,N个评委的评分需要去掉一个最高分和一个最低分,然后求其平均分,按照平均分进行递减排序。假定任意2名选手的平均得分都不相同。 现在,已知每位评委给每名参数选手的评分,需要你来编写一个程序,输出能够参加春晚的三名选手的名字和得分。 为方便起见,本题要用到如下结构体定义: typedef struct { int score[10];//选手的10个得分,得分与评委一一对应 double aver;//选手的平均分 char name[81];//选手的姓名 } Choice; 要求你编写两个函数。一个是 int inputChoice(Choice peo[],int M,int N); 用于输入M名选手的信息。其中peo[]是存储选手信息的结构体数组,M和N分别是选手数和评委数。 第二个是 int sort(Choice peo[],int M,int N); 用于对M名选手根据平均得分排成递减序。其中peo[]是由inputChoice函数输入的M名选手的结构体数组,M和N是选手数和评委数。 main函数已经给出,提交时,只需提交必要的编译预处理命令、结构体定义(直接复制上面的定义语句即可)以及你所编写的函数。 Input 输入的第一行是M和N,表示有M名选手和N名评委。其中3 之后是M行输入,每行以选手的名字为开头(选手名字不超过80个字符,且不含任何空白符),之后是一个空格以及N个得分,得分两两之间用一个空格隔开。 Output 输出为三行,每行是一个能够上春晚的选手的名字和得分,名字和得分用一个空格隔开。输出顺序为冠军、亚军和季军。 Sample Input 4 5 Jack 91 92 93 94 95 Tom 85 84 83 82 81 Mary 92 92 92 92 92 Smith 73 73 73 73 73 Sample Output Jack 93.00 Mary 92.00 Tom 83.00 HINT Append Code append.c, #include int score[10]; double aver; char name[81]; } Choice; int inputChoice(Choice peo[],int M,int N) { int k,j; for(k=0;k int sort(Choice peo[],int M,int N) { int j,k,a,b,m,n; double s; Choice t; for(k=0;k return 0; } int main() { Choice peoples[30]; int M,N,i; scanf(\ inputChoice(peoples,M,N); sort(peoples,M,N); for (i=0; i<3; i++) printf(\ return 0; } ////Problem B: 填空题:顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。 Input 两个字母st和ed,都是大写字母,用一个空格分开。 Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。 例如: 输入为A和E,则输出为BCD; 输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出, 只有一个空行。 最后要输出一行(行尾不回车): ***END*** Sample Input A C Sample Output B ***END*** HINT Append Code #include int i; char st, ed; scanf(\ for(i = st+1; i!=ed&&st printf(\ return 0; } Problem D: 输出金字塔(填空) Input 输入只有一行,包含一个正整数n和一个字符ch,两者用一个空格隔开。其中n表示金字塔的行数,ch表示构成金字塔的字符。 Output n行字符ch组成的金字塔,每行要居中。样例所示。 Sample Input 5 * Sample Output * *** ***** ******* ********* #include int i,j,n; char ch; scanf(\ for (i=1; i<=n; i++) { for (j=1; j<=n-i; j++) putchar(' '); for (j=1;j<2*i; j++) putchar(ch); if (i putchar('\\n'); } return 0; } Problem E: 求数组中的最大值(填空) 现有一个不超过1000个整数组成的数组,其中可能有重复数据出现。要求编写一个程序,求该数组中的最大值以及最大值所在的所有下标。部分程序已经给出,请填充空白语句,并提交填充后的完整程序。 部分程序如下: Input 输入分为2行:第一行是一个正整数0 Output 输出是一行,其格式为: maximum number is ?, whose positions are:* 其中“?”代表最大值(唯一的),“*”代表最大值所在的位置。如果最大值出现多次,则需输出所有的下标,下标两两之间由半角的逗号“,”隔开。 Sample Input 9 1 2 3 9 5 8 7 8 9 Sample Output maximum number is 9, whose positions are:3,8 HINT Append Code #include int array[1000],N,maxIndex[1000],max,i,numOfMax; scanf(\ for (i=0;i scanf(\ max=array[0]; numOfMax=0; maxIndex[numOfMax++]=0;
正在阅读:
山东科技大学OJ部分题目记答案06-07
2018两学一做入党积极分子思想汇报10-18
九年级数学上册 22.1 二次函数的图象和性质(第5课时)同步练习(新版)新人教版11-19
三级英语考试复习题10-26
全等三角形难题集锦超级好06-25
四上第七单元练习题04-06
外研版三起英语四下M3测试题及答案试题12-07
【精选20份合集】2022-2022学年河北省重点初中中考化学六校联考04-17
文化产业政策02-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 山东
- 题目
- 答案
- 部分
- 大学
- 科技
- 广东省深圳市2017届高三第二次调研考试文综试卷(含答案) - 图
- 包材产品HACCP计划
- 2018最新充电桩合作协议范本
- Module1-2
- HXD3型交流传动电力机车转向架
- XX-2019高一生物上学期10月月考试题(有答案河北唐山一中)
- 检验员岗位资格考试-图纸理解部分考试纲要更新
- 利用现金流量表分析 - 图文
- 美国内战后西部开发对中国的启示
- 《公共政策学》讲义
- 单层厂房排架结构中
- 突发事件自救与互救急救知识试题与答案
- 高职教育“四观”发展思路探略
- 北京自助游最新全面攻略
- 感觉统合失调及早期干预专题(完整)
- 民航地勤服务2013试题
- 施工组织设计模板(2)
- 房地产项目投资分析报告模版范本 - 图文
- 人教版四年级上册语文阅读周练第九、十周
- 受限空间考试题库100道(含答案)006