头歌
1.输入3行,每行n个字符串,按由小到大的顺序输出
注意比较顺序,12,13,23的比较顺序才能得到1<2<3的效果。
输出用puts函数,不用循环printf,更加方便。
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[100],arr2[100],arr3[100],arr4[100];
fgets(arr1,sizeof(arr1),stdin);
fgets(arr2,sizeof(arr2),stdin);
fgets(arr3,sizeof(arr3),stdin);
arr1[strcspn(arr1, "\n")] = '\0';
arr2[strcspn(arr2, "\n")] = '\0';
arr3[strcspn(arr3, "\n")] = '\0';
if((strcmp(arr1,arr2))>0)
{
strcpy(arr4,arr2);
strcpy(arr2,arr1);
strcpy(arr1,arr4);
}
if((strcmp(arr1,arr3))>0)
{
strcpy(arr4,arr3);
strcpy(arr3,arr1);
strcpy(arr1,arr4);
}
if((strcmp(arr2,arr3))>0)
{
strcpy(arr4,arr3);
strcpy(arr3,arr2);
strcpy(arr2,arr4);
}
puts(arr1);
puts(arr2);
puts(arr3);
return 0;
}
2.字符串统计
输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。
思路:通过统计空格数来计算每个字符串长度,以找到最长字符串。
#include <stdio.h>
#include <string.h>
int main()
{
char arr[200];
int i, m, c, j = 0;
int arr2[200];
int b = 0;
int len;
while (fgets(arr, sizeof(arr), stdin))
{
arr[strcspn(arr, "\n")] = '\0';
if (strcmp(arr, "stop") == 0)
{
break;
}
b = 0;
j = 0;
len = strlen(arr);
for (i = 0; i < len; i++)
{
if (arr[i] == ' ')
{
arr2[b] = i;//记录空格下标
b++;
}
else
{
j++;//记录字符长度
}
}
if (arr[len - 1] != ' ')
{
arr2[b] = len;
b++;
}
int maxLen = 0;
int maxStart = 0;
for (m = 0; m < b - 1; m++)
{
c = arr2[m + 1] - arr2[m] - 1;//计算中间字符长度
if (c > maxLen)
{
maxLen = c;
maxStart = arr2[m] + 1;
}
}
if (b <= 1)
{
printf("%d ",len);
for(i=0;i<len;i++)
{
printf("%c",arr[i]);
}
printf("\n");
}
if(b>1)
{
printf("%d ", j);
if (maxLen > 0)
{
for (i = maxStart; i < maxStart + maxLen; i++)
{
printf("%c", arr[i]);
}
printf("\n");
}
}
}
return 0;
}
3.字符插入
输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。
警告:该方法不正规,没有往字符数组中插入,而是分开打印以达到题目要求。
#include <stdio.h>
#include<string.h>
int main()
{
char a[100];
char b[100];
char max,min;
int i,m;
fgets(a,sizeof(a),stdin);
fgets(b,sizeof(b),stdin);
a[strcspn(a,"\n")]='\0';
b[strcspn(b,"\n")]='\0';
max=b[0];
for(i=1;b[i]!='\0';i++)
{
if(b[i]>=max)
{
max=b[i];
}
}
min=a[0];
for(i=0;a[i]!='\0';i++)
{
if(a[i]<=min)
{
min=a[i];
m=i;
}
}
for(i=0;i<=m;i++)
{
printf("%c",a[i]);
}
printf("%c",max);
for(i=m+1;a[i]!='\0';i++)
{
printf("%c",a[i]);
}
return 0;
}