(字符串插入)
任务描述
题目描述:输入两个字符串a
和b
,将b
串中的最大字符插入到a
串中最小字符后面。
样例输入:
MynameisAmy
MynameisJane
样例输出:
MynameisAymy
题目分析:a字符串中最小的字符是A(ASCII码表对应的数字大小),b字符串最大的字符是y
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX 100
int main(void)
{
/*********Begin*********/
char a[MAX], b[MAX];
int i, j, n, m, min, max;
gets(a);
m = strlen(a);//计算数组长度
for (i = 0, min = 0; i < m; i++)
{
if (a[i] < a[min])//默认第一个字符最小,后面依次与他比,比他小,交换下标
min = i;
}
gets(b);
n = strlen(b);
for (i = 0, max = 0; i < n; i++)
{
if (b[i] > b[max])//同理找出最大的下标
max = i;
}
for (j = m + 1; j > min; j--)//把min之后的字符向后移一位,包括‘\0'
a[j] = a[j - 1]; //相当于把'\0'后面那一位不知道的往前移到min后面一位,最后被取代
a[j + 1] = b[max];
puts(a);
/*********End**********/
return 0;
}
调试结果如下
(字符统计 )
任务描述
题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。
样例输入:
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
样例输出:
6
9
代码如下:
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n, i, j, count;
char s[50][50];//二维数组接收两行字符串
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", &s[i]);//第一行输入第一个字符串,第二行输入第二行字符串
}
for (i = 0; i < n; i++)
{
count = 0;//统计数字个数,一行扫描完立即清零
for (j = 0; s[i][j] != '\0'; j++)//逐行扫描
if (s[i][j] >= '0' && s[i][j] <= '9')
count++;
printf("%d\n", count);
}
/*********End**********/
return 0;
}
(字符逆序 )
任务描述:
题目描述:输入一个字符串,输出反序后的字符串。
样例输入:
123456abcdef
样例输出:
fedcba654321
#include<stdio.h>
#include<string.h>
int main(void)
{
/*********Begin*********/
void inverse(char str[]);
char str[100];
scanf("%s",str);
inverse(str);
printf("%s\n",str);
/*********End**********/
return 0;
}
void inverse(char str[])
{
char t;
int i,j;
for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)
{
t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}