关于C语言函数的题 求解

任意输入两个字符串(如:"abc 123"和"china"),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组,并输出。

main()

{ char a[10],b[10];

int c,d,k;

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);

}

程序中的strlen是库函数,功能是求字符串的长度,它的原型保存在头文件"string.h"中。调试时注意库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>               //exit函数头文件

int main(void)


char a[30],b[30];             //存放字符串数组,数组长度可以稍微长点
char ch;                      //存放临时字符
int length_a,length_b;        //统计字符串长度
int i = 0,j = 0;

//scanf("%s",&a); 
//为什么不用scanf %s:scanf遇到空格即停止,所以如果输入abc 123的话只会存入abc.下面用条件语句实现

//存入字符串a
printf("请输入字符串a并按enter键结束:");
while((ch = getchar()) != '\n')
{
i++;
if(i > 30)
{
printf("输入的字符串太长,请按enter键退出重试。\n");
exit(1);
}
else
a[j++] = ch;
}
a[j] = '\0';       //添加字符串结束标识

i = 0;             //重置计数变量
j = 0;

//存入字符串b
printf("请输入字符串b并按enter键结束:");
while((ch = getchar()) != '\n')
{
i++;
if(i > 30)
{
printf("输入的字符串太长,请按enter键退出重试。\n");
exit(1);
}
else
b[j++] = ch;
}
b[j] = '\0';

//得出两字符串长度
length_a = strlen(a);
length_b = strlen(b);

printf("您输入的a、b字符串依次为:\n");
printf("a:%s\n",a);
printf("b:%s\n",b);

//如果a长度大于b长度,则交换
if(length_a > length_b)
{
printf("\na较长,需交换,交换后的结果为:\n");
for(i = 0; i < length_a;i++)
{
ch = a[i];
a[i] = b[i];
b[i] = ch;
}
for(i = length_a; i < length_b; i++)
{
b[i] = a[i];
}
a[length_b] = '\0';
b[length_a] = '\0';
}
else
printf("\na较短,不需交换,结果仍为:\n");
printf("a:%s\n",a);
printf("b:%s\n\n",b);

return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-03
#include <string.h>
#include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

 
int main(int argc, char** argv) {
 char a[10],b[10];

int c,d,k;

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<c;k++)

{char ch=a[k];a[k]=b[k];b[k]=ch;}

printf("a=%s\n",a);

printf("b=%s\n",b);


system("PAUSE");
return 0;
}

 

for(k=0;k<c;k++)

 

{char ch=a[k];a[k]=b[k];b[k]=ch;}

这一段修改

第2个回答  2016-06-03
#include <stdio.h>
#include<string.h>
int main()

{ char a[10],b[10],c[10];

int c,d,k;

scanf("%s",a);

scanf("%s",b);

printf("a=%s,b=%s\n",a,b);

c=strlen(a);

d=strlen(b);

if(c>d)

{
    strcpy(c,a);
    strcpy(a,b);
    strcpy(b,c);
}

printf("a=%s\n",a);

printf("b=%s\n",b);

}

本回答被网友采纳