#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void input(char *p[],int n){
int j;
for(j=0;j<n;j++){
//改为gets(p[j]);只能处理n-1个?因为有回车符被读取了 不过gets(可以处理进来空格..)
gets(p[j]);
}/*for(j=0;j<n;j++){
printf("%s",p[j]);
}*/
}
void sort(char *p[],int n){
char *temp;
int m,i;
//冒泡
for(m=1;m<=n;m++){
for(i=0;i<=n-2;i++){
if(strcmp(p[i],p[i+1])>0){
temp=p[i+1];
p[i+1]=p[i];
p[i]=temp;
}
}
}
}
void put(char *p[],int n){
int k;
for(k=0;k<n;k++){
printf("%s",p[k]);
if(k!=n-1)
printf("\n");
}
}
int main(){
int n,i;
scanf("%d",&n);
char *p[n];
for(i=0;i<n;i++){
p[i]=(char *)malloc(5000);
}
input(p,n);
sort(p,n);
put(p,n);
return 0;
}
//学习通按姓名排序问题
不足
scanf("%d",&n); 这里输入整数n以后会输入一个回车,回车被gets读到了,当作一个空字符串。
修改方法:scanf("%d\n",&n) 或 scanf("%d",&n); getchar(); 吃掉回车
2.递归之逆序输出
2.![在这//想到师兄的递归逆序数组,是不是在这里得出135可以递归叫数
#include<stdio.h>
#include<string.h>
char *str[10]={"ling1","yi","er","san","si","wu","liu","qi","ba","jiu"};
void digui(int k,int cnt)
{ if(k==0) return ;
digui(k/10,cnt+1);
printf("%s",str[k%10]);
if(cnt!=0) printf(" ");
}
int count(char m[])
{ int i,sum=0;
int j=strlen(m);
for(i=0;i<=j-1;i++)
{
sum+=m[i]-'0';
}
return sum;
}
int main()
{
char m[100000];
gets(m);
int j=strlen(m);
int a=count(m);
digui(a,0);
}
3天梯1009
```java
/*Hello World Here I Come
输出样例:
Come I Here World Hello*/
//用指针数组,记得开空间
#include<stdio.h>
#include<stdlib.h>
int main(){
char *m[100],n;
int i;
for(i=0;i<=50;i++)
{
m[i]=(char *)malloc(20);
}
for(i=0;;i++)
{
scanf("%s",m[i]);
//最后一个不以空格结尾
n=getchar();
if(n!=' ') break;
}
for(int t=i;t>=0;t--)
{
printf("%s",m[t]);
if(t!=0) printf(" ");
}
return 0;
}
ps:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。