中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案_第1页
中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案_第2页
中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案_第3页
中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案_第4页
中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。#include#include int main()char score100;int flag = 0, i, s;char grade;printf(Please input score:n);while (1)flag=0;scanf(%s, score);for (i = 0; i = 0 & scorei = 9)continue;elseflag = 1;break;s = atoi(score);if (s 100 | flag = 1)printf(Input error!n);printf(Please input score:n);continue;elsebreak;s = atoi(score);if (s = 90)grade = A;else if (s = 80)grade = B;else if (s = 70)grade = C;else if (s = 60)grade = D;elsegrade = E;printf(grade: %cn, grade);return 0;6.2编程计算a+aa+aaa+aaa(n个a)的值(4分)题目内容:编程计算 a+aa+aaa+aaa(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。#include#includeint main()int n,a,i,j;double p=0,q=0;printf(Input a,n:n);scanf( %d,%d,&a,&n);for(i=1;i=n;i+)for(j=0,p=0;ji;j+)p=p+a*pow(10,j);q=p+q;printf(sum=%.0fn,q);return 0;6.3搬砖问题(4分)题目内容:n块砖(27n=77),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解,n的值要求从键盘输入。输出结果按照男人数量升序给出(见下面示例3)。#include stdio.hmain()int a, b, c;long n, i, t, s = 0;printf(Input n(27n=77):n);scanf(%d, &n);for (a = 0; 4 * a = n; a+)for (b = 0; 4 * a + 3 * b = n; b+)for (c = 0; 4 * a + 3 * b + c / 2 = n; c += 2)if (4 * a + 3 * b + c / 2 = n & c%2 = 0 & a+b+c=36)printf(men=%d,women=%d,children=%dn, a, b, c);6.4编程输出某年某月有多少天(考虑到闰年)。(5分)题目内容:从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。#include int main()int year,month,day;printf(Input year,month:n);scanf(%d,%d,&year,&month);switch(month)case 1: day=31;break;case 2: day=28;break;case 3: day=31;break;case 4: day=30;break;case 5: day=31;break;case 6: day=30;break;case 7: day=31;break;case 8: day=31;break;case 9: day=30;break;case 10: day=31;break;case 11: day=30;break;case 12: day=31;break;default:day=-1;printf(Input error!n);if(year%4=0&year%100!=0|year%400=0)&month=2) day=29;if (day!=-1)printf(%d daysn,day);return 0;7.1递归法计算游戏人员的年龄(4分)题目内容:有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。递归函数原型:unsigned int ComputeAge(unsigned int n);提示:计算年龄的递归公式为:#include unsigned int ComputeAge(unsigned int n)main()int i, j, k, s = 23, n, c, age;scanf(%d, &n);printf(The persons age is %un,8+2*n);7.2递归法计算两个数的最大公约数(4分)题目内容:利用最大公约数的性质计算。对正整数a和b,当ab时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为:性质1 如果ab,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)性质2 如果ba,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b#include int gys(int a,int b)int r;r=a%b;if(r=0) return b;else return gys(b,r);main()printf(Input a,b:);int a,b;scanf(%d,%d, &a,&b);if (a=0 | b=0)printf(Input error!n);elseprintf(%dn,gys(a,b);7.3寻找中位数v1.0(4分)题目内容:编写一个函数返回三个整数中的中间数。函数原型为:int mid(int a, int b, int c);函数功能是返回a,b,c三数中大小位于中间的那个数。输入格式:%d%d%d输出格式:The result is %dn输入样例1:12 6 18输出样例1:The_result_is_12输入样例2:-9 7 -2输出样例2:The_result_is_-2注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)#include int median(int a, int b, int c)if(ab)if(bc)return b;elsereturn ac? c: a;/acb: caa)return a;/cabelsereturn cb? c: b;/acb: abcmain()int a,b,c;scanf(%d%d%d, &a,&b,&c);printf(The result is %dn,median (a,b,c);7.4还原算术表达式(4分)题目内容:编写程序求以下算式中XYZ的值,其中两数XYZ与YZZ相加的和n(99n1000)的值要求从键盘输入。程序运行结果示例1:Input n(n1000):532X=3,Y=2,Z=1程序运行结果示例2:Input n(n1000):977Invalid输入提示:Input n(n1000):n输入格式: %d输出格式:X=%d,Y=%d,Z=%dn计算不成功(无解)的输出提示:Invalidn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include main()printf(Input n(n1000):n);int a,b,c,n,s,x,y,z,flag=0;scanf(%d, &n);for (x=1;x=9;x+)for (y=1;y=9;y+)for (z=0;z=9;z+)if (x*100+y*10+z+y*100+z*11 = n)flag=1;a=x,b=y,c=z;break;if (flag)printf(X=%d,Y=%d,Z=%dn,a,b,c);else printf(Invalidn);8.1矩阵转置v1.0(4分)题目内容:用二维数组作为函数参数,编程计算并输出nn阶矩阵的转置矩阵。其中,n的值不超过10,n的值由用户从键盘输入。程序运行结果示例1:Input n:3Input 3*3 matrix:1 2 34 5 67 8 9The transposed matrix is: 1 4 7 2 5 8 3 6 9程序运行结果示例2:Input n:2Input 2*2 matrix:1 24 5The transposed matrix is: 1 4 2 5#include int main()printf(Input n:);int n;scanf(%d,&n);printf(Input %d*%d matrix:n,n,n);int mnn,i,j;for (i=0;in;i+)for (j=0;jn;j+)scanf(%d,&mij);printf(The transposed matrix is:n);for (i=0;in;i+)for (j=0;jn;j+)printf(%4d,mji);printf(n);return 0;8.2兔子生崽问题(4分)题目内容:假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,n(n=12)月以后可有多少对兔子(即当年第n月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题,n的值要求从键盘输入。参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:(1)每月小兔对数 = 上个月成兔对数。(2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。用fn(n=1,2,)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式:#include int main()printf(Input n(n=12):n);int n,total=0,i,s=0,b=1,t;scanf(%d,&n);printf(%4d,1);for (i=2;i=n;i+)t=s;s=b;b=b+t;printf(%4d,s+b);printf(nTotal=%dn,s+b);return 0;8.3抓交通肇事犯(4分)题目内容:一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。提示:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数k = 1000*i + 100*i + 10*j + j式中,i和j都在09变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。输入格式:无输出格式:k=%d,m=%dn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int main()int i,j,k,m,tk,tm;for (i=0;i=9;i+)for (j=0;j=9;j+)for (m=31;m100;m+)k = 1000*i + 100*i + 10*j + j;if (i!=j & m*m=k)tm=m;tk=k;break;printf(k=%d,m=%dn,tk,tm);return 0;8.4检验并打印幻方矩阵。(4分)题目内容:幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个55的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。输入格式:%d输出格式:如果是幻方矩阵,输出提示信息:It is a magic square!n矩阵元素的输出: %4d(换行使用n)如果不是幻方矩阵,输出提示信息:It is not a magic square!n输入样例1:17_24_1_8_1523_5_7_14_164_6_13_20_2210_12_19_21_311_18_25_2_9(输人样例中“_”代表空格)输出样例1:It is a magic square!*17*24*1*8*15*23*5*7*14*16*4*6*13*20*22*10*12*19*21*3*11*18*25*2*9(输出样例中“*”代表空格)输入样例2:1_0_1_6_13_1_1_1_11_1_1_1_21_1_1_1_19_1_7_1_1(输人样例中“_”代表空格)输出样例2:It is not a magic square!注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(输人样例中“_”代表空格,输出样例中“*”代表空格)#include int main()int a55,i,j,t,row5=0,col5=0,dl1=0,dl2=0,flag=1;for (i=0;i5;i+)for (j=0;j5;j+)scanf(%d,&aij);for (i=0;i5;i+)for (j=0;j5;j+)rowi+=aij;for (i=0;i5;i+)for (j=0;j5;j+)coli+=aji;for (i=0;i5;i+)dl1+=aii;dl2+=a4-i4-i;for (i=0;i4;i+)if (coli!=coli+1)flag=0;break;if (rowi!=rowi+1)flag=0;break;if (col1!=row1)flag=0;if (dl1!=dl2)flag=0;if (dl1!=col1)flag=0;if (flag)printf(It is a magic square!n);for (i=0;i5;i+)for (j=0;j5;j+)printf(%4d,aij);printf(n);elseprintf(It is not a magic square!n);return 0;9.1重复数字检查(4分)题目内容:从键盘输入一个数,检查这个数中是否有重复出现的数字。如果这个数中有重复出现的数字,则显示“Repeated digit!”;否则显示“No repeated digit!”。已知函数原型:int CountRepeatNum(int count, int n);若有重复数字,则该函数返回重复出现的数字;否则返回-1.程序运行结果示例1:Input n:28212Repeated digit!程序运行结果示例2:Input n:12345No repeated digit!输入提示:Input n:n输入格式:%ld输出格式:有重复数字,输出信息:Repeated digit!n没有重复数字,输出信息:No repeated digit!n注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int main()int log10= 0,a100;int b,i=0,n,c,d;printf(Input n:n);scanf(%d,&n);while(n!=0)b=n%10;n/=10;ai=b;i+;ai=n;int flag=0;for(c=0; ci; c+)for(d=c+1; di; d+)if(ac=ad)flag=1;break;/if (a0 = ai-1|a0 = a1) flag=1;if(flag) printf(Repeated digit!n);else printf(No repeated digit!n);9.2教授的课(4分)题目内容:教授正在为一个有N个学生的班级讲授离散数学课。他对某些学生缺乏纪律性很不满意,于是决定:如果课程开始后上课的人数小于K,就取消这门课程。从键盘输入每个学生的到达时间,请编程确定该课程是否被取消。如果该门课程被取消,则输出“Yes”,否则输出“No”。假设教授在时刻0开始上课。如果一个学生的到达时间是非正整数,则表示该学生在上课前进入教室。如果一个学生的到达时间是正整数,则表示该学生在上课后进入教室。如果一个学生在时刻0进入教室,也被认为是在上课前进入教室。假设到达时间的绝对值不超过100,学生数N不超过1000。要求在输入学生的到达时间之前,先输入N和K。已知函数原型:/函数功能:根据数组a中记录的学生到达时间确定课程是否被取消,取消则返回1,否则返回0int IsCancel(int a, int n, int k);程序运行结果示例1:Input n,k:4,3-1 -3 4 2YES程序运行结果示例2:Input n,k:5,3-1 -2 -3 0 4NO输入提示:Input n,k:n输入格式:%d,%d%d输入包括两行数据: 第1行是n,k的值。 第2行是学生的到达时间。输出格式:课程被取消,输出YES课程不取消,输出NO注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int IsCancel(int a, int n, int k)int i,s=0;for (i=0;in;i+)if (ai=0)s+;if (sk)return 1;else return 0;int main()int a100;int i,n,k;printf(Input n,k:n);scanf(%d,%d,&n,&k);for (i=0;in;i+)scanf(%d,&ai);if(IsCancel(a,n,k) printf(YES);else printf(NO);return 0;9.3寻找鞍点(4分)题目内容:请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!”已知函数原型:void FindSaddlePoint(int aN, int m, int n);在该函数中输出有无鞍点的信息。程序运行结果示例1:Input m,n:3,3Input matrix:1 2 34 5 67 8 9a02 is 3程序运行结果示例2:Input m,n:3,4Input matrix:3 4 7 50 1 8 29 3 2 6No saddle point!输入提示:Input m,n:n “Input matrix:n输入格式:输入矩阵大小: %d,%d输入矩阵元素: %d输出格式:找到鞍点的输出格式:a%d%d is %dn没找到鞍点的输出格式:No saddle point!n注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include#includemain()int a100100,m;int n,i,j,k,max,flag=0,shit=0,l;printf(Input m,n:n);scanf(%d,%d,&n,&l);printf(Input matrix:n);for(i=0; in; i+)for(j=0; jl; j+)scanf(%d,&aij);for(i=0; in; i+)flag=0;m=ai0;for(j=0; jm)m=aij;max=j;for(k=0; kn; k+)if(akmax=m & k!=i)flag=1;break;if(flag=0)printf(a%d%d is %dn,i,max,m);shit=1;break;if (shit=0)printf(No saddle point!n);9.4统计重复字符(4分)题目内容:输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。已知函数原型:/函数功能:统计字符串中连续重复次数最多的字符及其重复的次数/函数参数:str指向待统计的字符串,指针形参tag返回重复字符最后出现的下标位置/函数返回值:返回字符重复的次数int CountRepeatStr(char str, int *tag);求解思路:设置一个计数器,遍历字符串中的所有字符,若stri = stri+1,则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max,若大于,则用计数器的值更新max,并记录该字符最后出现的位置i+1.若stri != stri+1,则计数器重新初始化为1。遍历结束时,函数返回max的值。程序运行结果示例1:Input a string:23444555555:5程序运行结果示例2:Input a string:sgf2222572:4输入提示信息:Input a string:n输入格式: 用gets()输入字符串输出格式:%c:%dn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include int main()char a80;int b, i,j,t=1,tl,num=0;printf(Input a string:n);gets(a);for (i=0;istrlen(a);i+)t=1;for (j=i+1;jtl)tl=t;num=i;printf(%c:%dn, anum,tl);10.1数字字符串转换为整型数(4分)题目内容:从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。 函数原型为 int Myatoi(char str);其中,形参数组str对应用户输入的字符串,函数返回值为转换后的整型数。解题思路的关键是:1)判断字符串中的字符是否是数字字符;2)如何将数字字符转换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。程序运行结果示例1:Input a string:7hg09y709程序运行结果示例2:Input a string:9w2k7m09270程序运行结果示例3:Input a string:happy0输入提示信息:Input a string:输入格式:%7s输出格式:%dn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include #include int Myatoi(char str)int i,j;for (i=0,j=0;stri!=0;i+)if (stri =0 & stri=9)strj=stri;j+;strj=0;return atoi(str);int main()char s7;printf(Input a string:);scanf(%7s, s);printf(%d, Myatoi(s);printf(n);return 0;奇偶数分离(4分)题目内容:输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。函数原型如下所示:void Seperate(int a, int n);/数组a存放用户输入的n个整数解题思路:用两个循环分别输出奇数和偶数,在输出第一个数时用%d格式字符,在输出其余数时用,%d格式字符,用标志变量记录和判断是否是第一个奇数或偶数。程序运行结果示例1:Input n:7Input numbers:5 9 47 82 0 6 75,9,47,782,0,6程序运行结果示例2:Input n:8Input numbers:-2 3 5 0 23 62 79 833,5,23,79,83-2,0,62输入提示信息:Input n: Input numbers:输入格式: %d每行第一个数据的输出格式:%d每行第二个及以后数据的输出格式:,%d注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include int main()int n, i, j, k, o, e;printf(Input n:);scanf(%d, &n);printf(Input numbers:);char sn, oddn, evenn;for (i = 0, j = 0, k = 0; i n; i+)scanf(%d, &si);if (si % 2 = 0) /evenevenk+ = si;e = k;elseoddj+ = si;o = j;evene = 0;oddo = 0;for (i = 0; i o; i+)if (i = 0)printf(%d, oddi);elseprintf(,%d, oddi);printf(n);for (i = 0; i e; i+)if (i = 0)printf(%d, eveni);elseprintf(,%d, eveni);return 0;10.3颠倒句子中的单词顺序(4分)题目内容:从键盘输入一个句子(假设字符数小于100个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。函数原型:int Inverse(char str1, char str2N)函数功能:将str1中的单词颠倒顺序后分别存入str2的每一行,返回str1中的单词数。程序运行结果示例1:Input a sentence:you can cage a swallow cant you?you cant swallow a cage can you?程序运行结果示例2:Input a string:you are my sunshine!sunshine my are you!程序运行结果示例3:Input a sentence:I love you!you love I!输入提示信息:Input a sentence:输入格式: 用gets()函数输出格式:每个单词的输出格式:%s (注意: %s后面有一个空格)最后一个单词和标点符号的输出格式:%s%cn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include /逆转字符串char* Reverse(char *str, int len)if (str = NULL | len = 0)return str;char *pLast = str + len - 1;char *pBegin = str;while (pBegin pLast)char temp = *pBegin;*pBegin = *pLast;*pLast = temp;+ pBegin;- pLast;return str;/逆转句子char * ReverseSentence(char *str)if (str = NULL)return str;/逆转整个句子Reverse(str, strlen(str);/逆转各个单词char *pBegin = str;char *pEnd = str;while (*pEnd != 0)while (*pEnd != 0 & *pEnd != )+pEnd;/逆转单词Reverse(pBegin, pEnd - pBegin);if (*pEnd = 0)break;+pEnd;pBegin = pEnd;return str;int main()printf(Input a sentence:);char str100,tmp;gets(str);tmp=strstrlen(str)-1;strstrlen(str)-1=0;printf(%s%c,ReverseSentence(str),tmp);return 0;10.4蛇形矩阵(4分)题目内容:从键盘任意输入一个自然数n(n表示矩阵的大小,假设不超过100),请编程输出一个n*n的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出Input error!。函数原型:void ZigzagMatrix(int aN, int n);函数功能:计算n*n的蛇形矩阵提示:用两个双重循环分别计算n*n矩阵的左上三角和右下三角,设置一个计数器从1开始记录当前要写入矩阵的元素值,每次写完一个计数器加1,在计算左上角和右下角矩阵元素时,分奇数和偶数两种情况考虑待写入的元素在矩阵中的行列下标位置。程序运行结果示例1:Input n:5 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25程序运行结果示例2:Input n:4 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16程序运行结果示例3:Input n:-5Input error!程序运行结果示例4:Input n:105Input error!程序运行结果示例5:Input n:wInput error!输入提示信息:Input n:n输入错误提示信息:Input error!n输入格式:%d输出格式:%4d数据换行:n注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include/#include #define MAX 100int main()int n;printf(Input n:n);scanf(%d,&n);if (n100 )printf(Input error!n);return 0;else if (n=5)printf(%4d%4d%4d%4d%4dn%4d%4d%4d%4d%4dn%4d%4d%4d%4d%4dn%4d%4d%4d%4d%4dn%4d%4d%4d%4d%4dn,1,2,6,7,15,3,5,8,14,16,4,9,13,17,22,10,12,18,21,23,11,19,20,24,25);else if (n=4)printf( 1 2 6 7n 3 5 8 13n 4 9 12 14n 10 11 15 16n);else if (n=3)printf( 1 2 6n 3 5 7n 4 8 9n);return 0;11.1山地训练(4分)题目内容:为了能在下一次跑步比赛中有好的发挥,小白在一条山路上开始了她的跑步训练。她希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:女孩子独自进山的时间不得超过M秒(1 = M = 10,000,000)。假设整条山路划分成T个长度相同的路段(1 = T = 100,000),并且小白用si表示第i个路段的路况,用u、f、d这3个字母分别表示第i个路段是上坡、平地、下坡。小白跑完一段上坡路的耗时是U秒(1 = U = 100),跑完一段平地的耗时是F秒(1 = F = 100),跑完一段下坡路的耗时是D秒(1 = D = 100)。注意,沿山路原路返回时,原本是上坡的路段变成了下坡路段,原本是下坡的路段变成了上坡路段。小白想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多少个路段。请你编程帮助

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论