C语言,输入一个数字n,再输入n个小写字母,将这个n个小写字母从小到大输出。顺便我的代码问题在哪,谢谢
#include<stdio.h>#include<string.h>intmain(){chars[20];intj,i,t,n;scanf("%d",&n);for(...
#include <stdio.h>#include <string.h>int main(){ char s[20]; int j,i,t,n; scanf("%d",&n); for(i=0; i<n; i++) scanf("%c",&s[i]); for(i=0; i<n-1; i++) for(j=0; j<n-1-i; j++) if(s[j]>s[j+1]) { t=s[j]; s[j]=s[j+1]; s[j+1]=t; } if(n%2==0) { for(j=0; j<n/2; j++) printf("%c ",s[j]); printf("\n"); for(j=n/2; j<n; j++) printf("%c ",s[j]); }else{ for(j=0; j<(n/2)+1+1; j++) printf("%c",s[j]); printf("\n"); for(j=(n/2)+1; j<n; j++) printf("%c",s[j]); } return 0;}
展开
2个回答
2018-09-16 · 知道合伙人互联网行家
关注
展开全部
第一题:count 统计数字
输入一个数n(n<=200000)和n个自然数(每个数都不超过1.5*10^9),请统计出这些自然数各自出现的次数,按顺序从小到大输出。输入数据保证不相同的数不超过10000个。
样例输入:
8
2
4
2
4
5
100
2
100
样例输出:
2 3
4 2
5 1
100 2
第二题:expand 字符串的展开
我们可以用减号对连续字母或数字进行缩写,于是字符串a-dha3-68就可以展开为abcdha34568。
输入三个参数p1,p2,p3,再输入一个仅由数字、小写字母和减号组成的字符串(长度不超过100),请按参数展开此字符串
各个参数的意义如下:
参数p1=1 -> 所有填充的字母都写成小写;
参数p1=2 -> 所有填充的字母都写成大写;
参数p1=3 -> 所有填充的字母和数字都用星号代替;
参数p2=k -> 同一个填充字符连续写k遍;
参数p3=1 -> 顺序填充;
参数p3=2 -> 逆序填充。
另外,如果减号两边的字符一个是数字一个是字母,或者减号右边的ASCII码没左边的大,则该处不变
样例输入1:
1 2 1
abcs-w1234-9s-4zz
样例输出1:
abcsttuuvvw1234556677889s-4zz
样例输入2:
2 3 2
a-d-d
样例输出2:
aCCCBBBd-d
样例输入3:
3 4 2
di-jkstra2-6
样例输出3:
dijkstra2************6
第三题:game 矩阵取数游戏
一个n行m列的矩阵,每次你需要按要求取出n个数,m次正好将所有数取完。每取出一个数你都会有一个得分,请求出最终的得分最大是多少。
每一次取数的要求:每一行中恰好取一个数,且只能取剩下的数中最左边或最右边位置上的数
每取一个数的得分:所取数的数值乘以2^i,i表示这是第i轮取数。
矩阵中的数为不超过100的自然数,1<=n,m<=80
样例输入:
2 3
1 2 3
3 4 2
样例输出:
82
样例说明:
1*2+2*2 + 2*4+3*4 + 3*8+4*8 = 82
第四题:core 树网的核
树上的任两点间都有唯一路径。定义某一点到树上某一路径的距离为该点到路径上所有点的路径长度中的最小值。定义树中某条路径的“偏心距”为所有其它点到此路径的距离的最大值。定义树的直径为树的最长路径(可能不唯一)。给出一个有n个节点的无根树,请找出某个直径上的一段长度不超过s的路径(可能退化为一个点),使它的偏心距最小。请输出这个最小偏心距的值。
题目已经告诉你如下定理:树的所有直径的中点必然重合(这个中点可能在某条边上)。其实这个结论很显然嘛,因为如果中点不重合的话必然可以找到一条更长的路。
5<=n<=300,0<=s<=1000,边权是不超过1000的正整数
输入一个数n(n<=200000)和n个自然数(每个数都不超过1.5*10^9),请统计出这些自然数各自出现的次数,按顺序从小到大输出。输入数据保证不相同的数不超过10000个。
样例输入:
8
2
4
2
4
5
100
2
100
样例输出:
2 3
4 2
5 1
100 2
第二题:expand 字符串的展开
我们可以用减号对连续字母或数字进行缩写,于是字符串a-dha3-68就可以展开为abcdha34568。
输入三个参数p1,p2,p3,再输入一个仅由数字、小写字母和减号组成的字符串(长度不超过100),请按参数展开此字符串
各个参数的意义如下:
参数p1=1 -> 所有填充的字母都写成小写;
参数p1=2 -> 所有填充的字母都写成大写;
参数p1=3 -> 所有填充的字母和数字都用星号代替;
参数p2=k -> 同一个填充字符连续写k遍;
参数p3=1 -> 顺序填充;
参数p3=2 -> 逆序填充。
另外,如果减号两边的字符一个是数字一个是字母,或者减号右边的ASCII码没左边的大,则该处不变
样例输入1:
1 2 1
abcs-w1234-9s-4zz
样例输出1:
abcsttuuvvw1234556677889s-4zz
样例输入2:
2 3 2
a-d-d
样例输出2:
aCCCBBBd-d
样例输入3:
3 4 2
di-jkstra2-6
样例输出3:
dijkstra2************6
第三题:game 矩阵取数游戏
一个n行m列的矩阵,每次你需要按要求取出n个数,m次正好将所有数取完。每取出一个数你都会有一个得分,请求出最终的得分最大是多少。
每一次取数的要求:每一行中恰好取一个数,且只能取剩下的数中最左边或最右边位置上的数
每取一个数的得分:所取数的数值乘以2^i,i表示这是第i轮取数。
矩阵中的数为不超过100的自然数,1<=n,m<=80
样例输入:
2 3
1 2 3
3 4 2
样例输出:
82
样例说明:
1*2+2*2 + 2*4+3*4 + 3*8+4*8 = 82
第四题:core 树网的核
树上的任两点间都有唯一路径。定义某一点到树上某一路径的距离为该点到路径上所有点的路径长度中的最小值。定义树中某条路径的“偏心距”为所有其它点到此路径的距离的最大值。定义树的直径为树的最长路径(可能不唯一)。给出一个有n个节点的无根树,请找出某个直径上的一段长度不超过s的路径(可能退化为一个点),使它的偏心距最小。请输出这个最小偏心距的值。
题目已经告诉你如下定理:树的所有直径的中点必然重合(这个中点可能在某条边上)。其实这个结论很显然嘛,因为如果中点不重合的话必然可以找到一条更长的路。
5<=n<=300,0<=s<=1000,边权是不超过1000的正整数
展开全部
#include <stdio.h>
#include <string.h>
int main()
{
char s[20];
int j, i, t, n;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf(" %c", &s[i]);//<===========
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j] > s[j + 1])
{
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
}
if (n % 2 == 0)
{
for (j = 0; j < n / 2; j++)
printf("%c ", s[j]);
printf("\n");
for (j = n / 2; j < n; j++)
printf("%c ", s[j]);
}
else
{
for (j = 0; j < (n / 2) + 1 + 1; j++)
printf("%c", s[j]);
printf("\n");
for (; j < n; j++)//<============
printf("%c", s[j]);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询