【问题描述】
有若干一班的学生,由输入指定其名字。每个名字为中间无空格的拼音,长度小于64个字符,不同名字之间有空格。还有若干二班的学生,由输入指定其名字,两组学生的数量相等。为了加强同学间的相互了解,两班各取一名学生组成一个两人值日小组,按照名字的字典序分别排列两组学生名单,然后按照两个序列的顺序,一个一班的学生与一个二班学生组合输出,安排做值日表。
【输入格式】
输入为三行。
第一行每班学生的人数n(1≤n≤200)。
第二行为n个一班学生的姓名,姓名由不含空格的小写字母组成,姓名之间由一个空格分隔。
第三行为n个二班学生的姓名,姓名由不含空格的小写字母组成,姓名之间由一个空格分隔。
【输出格式】
输出为n行,每行为一个值日小组名单,一班学生姓名在前,二班学生姓名在后,两人姓名由一个空格隔开。
【输入样例】
3
zhaolin zhaoli chenqun
zhangyue zhangli niujia
【输出样例】
chenqun niujia
zhaoli zhangli
zhaolin zhangyue
#include <stdio.h>
#include <string.h>
int main()
{
int n, i = 0, i1 = 0, i2 = 0, j = 0, u=0, b = 0, k=0, y = 0, v = 1, x=0,m = 0, z=0;
int shuzi = 0;
int e=0, a=0;
char s[201] = {0}, s1=0, s2=0;
int g=0, h=0, f=0;
char name1[201][65] = {0},name2[201][65]={0};
scanf("%d", &n);
for(v=1;v<=n;v++)
for (k = 1; k <= 65; k++)
{
scanf("%c", &name1[v][k]);
if (name1[v][k] == ' ')
{
v = v + 1;
k = 0;
}
if (name1[v][k] == '\n' && name1[v][k - 1] == '\n' && k != 2)
break;
}
v = 1;
for(v=1;v<=n;v++)
for (m = 1; m <= 65; m++)
{
scanf("%c", &name2[v][m]);
if (name2[v][m] == ' ')
{
v = v + 1;
m = 0;
}
if (name2[v][m] == '\n' && name2[v][m - 1] == '\n' && m != 2)
break;
}
for (u = 1; u <= n-1; u++)
for(v=1;v<=n-1;v++)
{
shuzi = strcmp(name1[u], name1[u+1]);
if (shuzi > 0)
{
strcpy(name1[0],name1[u]);
strcpy(name1[u+1], name1[u]);
strcpy(name1[u], name1[0]);
}
}
for (u = 1; u <= n-1; u++)
for(v=1;v<=n-1;v++)
{
shuzi = strcmp(name2[u], name2[u+1]);
if (shuzi > 0)
{
strcpy(name2[0], name2[u]);
strcpy(name2[u+1], name2[u]);
strcpy(name2[u], name2[0]);
}
}
for(b=1;b<=n;b++)
{
printf("%s %s", name1[b], name2[b]);
printf("\n");
}
return 0;
}
你试一下我这个呗 看着更简洁
#include<stdio.h>
#include<math.h>
int main(void)
{
char b[200][65],c[200][65];
int n,a,d,e;
scanf("%d",&n);
for(a=0;a<n;a++)
{
scanf("%s",&b[a][65]);
}
for(a=0;a<n;a++)
{
scanf("%s",&c[a][65]);
}
e=d=n;
for(a=0;a<n;a++)
{
printf("%s %s\n",&b[--d][65],&c[--e][65]);
}
return 0;
}