回复 楼主 吕宏
我就想要这个样的,然而不会做
求个思路
程序代码:#include <stdio.h>
#include <string.h>
#include <windows.h> //这个头文件暂时没用,不用管,准备最后实在不好消除回车,先用fflush(stdin);调试下用的,这个动作不太好,最好不用
#define M 30
#define N 30
int main()
{
int i=0,j=0,k=0,m=M,n=0;
char arr[M][N];
char (*p)[M];
int num[N]={0} //统计每行字符串的长度
p=arr;
printf("请输入要输入字符串的行数,该数字要小于%d:",m);
do{
scanf("%d",&n);
}while(n>M);
getchar(); //吸收回车
for(i=0;i<n;i++)
{
printf("请输入第%d行字符串:\n",i+1);
gets(p[i]);
for(j=0;j<N;j++)
{
if(*(p[i]+j)='\n')
{
num[i]=j+1; //统计每行字符串的长度
break;
}
getchar();
}
printf("第%d行字符串:",i+1);
puts(p[i]);
}
// fflush(stdin);
//进行n-1次连接
for(i=0;i<n;i++)
{
for(j=num[i];j<N;j++)
{
k=0;
*(p[k]+j+i)=*(p[k+i]+k);
k++;
}
}
puts(p[0]);
return 0;
}
[此贴子已经被作者于2016-5-17 10:43编辑过]
程序代码:#include <stdio.h>
#include <string.h>
#include <windows.h>
#define M 30
#define N 30
int main()
{
int i=0,j=0,k=0,m=M,n=0;
char arr[M][N];
char (*p)[M];
int num[N]={0},sum=0; //统计字符串的长度
p=arr;
int _exit=0;
do{
system("cls");
printf("请输入要输入字符串的行数,该数字要小于%d:",m);
do{
scanf("%d",&n);
}while(n>M);
getchar(); //吸收回车
for(i=0;i<n;i++)
{
printf("请输入第%d行字符串:\n",i+1);
gets(p[i]);
//判断每行字符串的长度
/* for(j=0;j<N;j++)
{
if(*(p[i]+j)='\0')
{
num[i]=j+1; //统计每行字符串的长度
break;
}
}
*/
num[i]=strlen(p[i]);
printf("长度%d的第%d行字符串:",num[i],i+1);
puts(p[i]);
}
//进行n-1次连接
/* for(i=0;i<n;i++)
{
for(j=num[i];j<N;j++)
{
k=0;
*(p[k]+j+i)=*(p[k+i]+k);
k++;
}
} */
for(i=0;i<n;i++)
{
strcat(p[i],p[i+1]);
strcat(p[i],p[i+2]);
}
//统计连接后字符串总长度
// for(k=0;k<n;k++)
// sum+=num[k];
//输出连接后的字符串
puts(p[0]);
printf("非0再次运行,0退出");
scanf(" %d",&_exit);
}while(_exit!=0);
return 0;
}
[此贴子已经被作者于2016-5-17 11:10编辑过]