
任意输入两个字符串(如:“abc 123”和“china”),abc与123之间有一空格键
调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的...
调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。
#include <stdio.h>
#include <string.h>
void main()
{ char a[10],b[10];
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k<d;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
} 展开
#include <stdio.h>
#include <string.h>
void main()
{ char a[10],b[10];
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k<d;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf("a=%s\n",a);
printf("b=%s\n",b);
} 展开
2个回答
展开全部
几个问题 首先 scanf 函数是不能支持空格的 我先在你基础上修改,同样还是不支持空格的
其次你的数组越界问题
// ttt.cpp : 定义控制台应用程序的入口点。
//
#include <stdio>
#include <string>
#include "stdafx.h"
#include <cstring>
int _tmain(int argc, _TCHAR* argv[])
{
char a[10],b[10],f[10];
memset(&a,0,sizeof(a));
memset(&b,0,sizeof(b));
memset(&f,0,sizeof(f));
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c = strlen(a);
d = strlen(b);
if(c<d)
{
memset(&f,0,sizeof(f));
for(k = 0;k<d;k++)
{
f[k]=b[k];
}
memset(&b,0,sizeof(b));
for(k = 0;k<c;k++)
{
b[k]=a[k];
}
memset(&a,0,sizeof(a));
for(k = 0;k<d;k++)
{
a[k]=f[k];
}
}
printf("a=%s\n",a);
printf("b=%s\n",b);
int m;
scanf("%d",&m);
return 0;
}
这是 vs2008写的,不是很规范 ,但是能达到要求了
其次你的数组越界问题
// ttt.cpp : 定义控制台应用程序的入口点。
//
#include <stdio>
#include <string>
#include "stdafx.h"
#include <cstring>
int _tmain(int argc, _TCHAR* argv[])
{
char a[10],b[10],f[10];
memset(&a,0,sizeof(a));
memset(&b,0,sizeof(b));
memset(&f,0,sizeof(f));
int c,d,k,ch;
scanf("%s",&a);
scanf("%s",&b);
printf("a=%s,b=%s\n",a,b);
c = strlen(a);
d = strlen(b);
if(c<d)
{
memset(&f,0,sizeof(f));
for(k = 0;k<d;k++)
{
f[k]=b[k];
}
memset(&b,0,sizeof(b));
for(k = 0;k<c;k++)
{
b[k]=a[k];
}
memset(&a,0,sizeof(a));
for(k = 0;k<d;k++)
{
a[k]=f[k];
}
}
printf("a=%s\n",a);
printf("b=%s\n",b);
int m;
scanf("%d",&m);
return 0;
}
这是 vs2008写的,不是很规范 ,但是能达到要求了
追问
还是不能正确运行,我需要在VC6.0上运行的,可以吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询