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
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
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 printf(\);