C语言基础:头歌练习数组练习

(字符串插入)

任务描述

题目描述:输入两个字符串ab,将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;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值