中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(6)

2018-12-21 12:01

if (*pEnd == '\\0') {

break; }

++pEnd;

pBegin = pEnd; }

return str; }

int main() {

printf(\); char str[100],tmp; gets(str);

tmp=str[strlen(str)-1]; str[strlen(str)-1]='\\0';

printf(\,ReverseSentence(str),tmp); return 0; }

10.4

蛇形矩阵(4分)

题目内容:

从键盘任意输入一个自然数n(n表示矩阵的大小,假设不超过100),请编程输出一个n*n的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出\。 函数原型: void ZigzagMatrix(int a[][N], 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: -5↙ Input error!

程序运行结果示例4:

Input n: 105↙ Input error!

程序运行结果示例5:

Input n: w↙ Input error!

输入提示信息:\ 输入错误提示信息:\

输入格式: \ 输出格式:\ 数据换行: \

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include

//#include #define MAX 100 int main() {

int n;

printf(\);

scanf(\,&n); if (n<0 || n>100 )

{

printf(\); return 0; }

elseif (n==5){

printf(\MMMMM\\nMMMMM\\n\,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); }

elseif (n==4){

printf(\10 11 15 16\\n\); }

elseif (n==3){

printf(\); }

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)。注意,沿山路原路返回时,原本是上坡的路段变成了下坡路段,原本是下坡的路段变成了上坡路段。小白想知道,在能按时返回农场的前提下,她最多能在这条山路上跑多少个路段。请你编程帮助她计算。

函数原型:long Fun(long M, long T, long U, long F, long D, char str[]) 函数功能:计算在限时M秒内T个路段的情况下,最多往返可跑的路段数。

参数:M,T,U,F,D分别代表限时、路段数,以及上坡、平地、下坡的耗时 数组str保存整条山路的路段状况 返回值:最多可跑的路段数

程序运行结果示例1: Input M,T,U,F,D:13 5 3 2 1↙ Input conditions of road:ufudf↙ num=3

程序运行结果示例2:

Input M,T,U,F,D:4000 8 18 10 5↙ Input conditions of road:fuffdfud↙ num=7

进山时间等信息的输入提示: \路况输入提示信息: \进山时间等数据的输入格式: \路况等数据的输入格式: \输出格式: \

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include #include int main() {

printf(\); longint m, t, u, f, d;

scanf(\, &m, &t, &u, &f, &d); printf(\); char T[t];

int i,count=0;

for (i = 0; i < t; i++) {

scanf(\, &T[i]); }

longint realTime=m; i=0;

while (realTime>0 && i

switch (T[i++]){

case'u':realTime-=(u+d);break; case'f':realTime-=(f+f);break; case'd':realTime-=(u+d);break; }

if (realTime <0){ count--; } }

printf(\,--count); return 0; }

11.2 \

数列合并(4分)

题目内容:

已知两个不同长度的降序排列的数列(假设序列的长度都不超过5),请编程将其合并为一个数列,使合并后的数列仍保持降序排列。

【提示】假设两个降序排列的数列分别保存在数组a和数组b中,用一个循环依次将数组a和数组b中的较大的数存到数组c中,当一个较短的序列存完后,再将较长的序列剩余的部分依次保存到数组c的末尾。假设两个序列的长度分别是m和n,当第一个循环结束时,若i小于m,则说明数组a中的数有剩余,将数组a中剩余的数存到数组c的末尾即可;若j小于n,则说明数组b中的数有剩余,将数组b中剩余的数存到数组c的末尾即可。在第一个循环中,用k记录往数组c中存了多少个数,在第二个循环中,就从k这个位置开始继续存储较长序列中剩余的数。

函数原型:void Merge(int a[], int b[], int c[], int m, int n)

函数功能:将两个长度分别为m和n、降序排列的子序列a和b合并后放到数组c中 程序运行结果示例1: Input m,n:3,2↙ Input array a:5 3 1↙ Input array b:4 2↙ 5 4 3 2 1

程序运行结果示例2: Input m,n:3,3↙ Input array a:31 27 -5↙ Input array b:98 30 -7↙ 98 31 30 27 -5 -7

输入两个数列长度的提示信息:\输入数列a的提示信息:\输入数列b的提示信息:\输入格式:

数列长度的输入格式:\数列中每个数据的输入格式:\输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include #include int main() {

printf(\);


中国大学MOOC-哈工大-C语言程序设计精髓第六-十二周编程题答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:桑树病虫害后期防治

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: