帮我看看吧,做到数组的题之后一个都没有输出成功过。代码啥也输出不出来。
#include <stdio.h>
#include <string.h>
int main(void)
{
/*********Begin*********/
int i,j,t,max,min;
char a[100],b[100];
scanf("%s\n",&a[100]);
scanf("%s\n",&b[100]);
for(i=0;i<100;i++) /*找出b[100]数组中最大值,并标记其下标*/
{
if(b[i]!='\0')
{
if(b[i]>t)
{
t=b[i];
max=i;
}
}
}
for(i=0;i<100;i++) /*找出a[100]中数组最小值,并标记其下标*/
{
if(a[i]!='\0')
{
if(a[i]<t)
{
t=a[i];
min=i;
}
}
}
for(j=100;j>min+1;j--) /*将a[100]数组中min下标以后的字符向后顺移一位*/
a[j]=a[j-1];
a[min+1]=b[max]; /*将b[100]中的最大值赋给a[100]中的最小值的后一位*/
printf("%s",a[100]); /*输出a[100]数组*/
/*********End**********/
return 0;
解答如下
#include<stdio.h>
int main()
{
char a[100],b[100];
gets(a);
gets(b);
char max=b[0];
char min=a[0];
int j,posmin=0;
for(j=1; a[j]!='\0'; j++)
{
if(a[j]<min)
{
min=a[j];
posmin=j;
}
}
for(j=1; b[j]!='\0'; j++)
{
if(b[j]>max)
{
max=b[j];
}
}
for(j=0; a[j]!='\0'; j++)
{
printf("%c",a[j]);
if(j==posmin)
{
printf("%c",max);
}
}
return 1;
}
字符串遍历,找出b中的最大字符,遍历字符a,找出最小字符所在的位置,将a中字符从min位置开始后移1位,将b最大字符插入a[min+1]位置。
代码修改如下:
#include <stdio.h>
#include <string.h>
int main()
{
/*********Begin*********/
int i=1,j=1,max=0,min=0;
char a[100]={0},b[100]={0};
scanf("%s",a);
scanf("%s",b);
while(b[i] != '\0')/*找出b[100]数组中最大值,并标记其下标*/
{
if(b[i] > b[max])
max = i;
i++;;
}
while(a[j] != '\0') /*找出a[100]中数组最小值,并标记其下标*/
{
if(a[j]<a[min])
min = j;
j++;
}
//将a中的数组后移
for(i=strlen(a);i>min+1;i--)
a[i] = a[i-1];
a[min+1] = b[max];
printf("%s\n",a);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!