08dayC语言

本文通过多个实例深入探讨了C语言中二维数组的应用,包括查找最大最小值、输出特定图案,以及字符串的处理技巧,如遍历替换、排序和去除空格。

一、定义一个 3 行 3 列的二位数组,求二维数组 a 中的最大值和最小值。 

输出数组,并输出最大值和最小值。

#include <stdio.h>
/*
定义一个 3 行 3 列的二位数组,求二维数组 a 中的最大值和最小值。 
输出数组,并输出最大值和最小值。
*/
int main()
{
    int i,j,x,y,temp,temp1;
    int min,max;
    int a[3][3]={17, 45, 2, 57, 90, 13, 75, 8, 34};
    printf("输出数组\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {    
            printf("%-5d",a[i][j]);        
        }
        printf("\n");
    }
    min=a[0][0];
    max=a[0][0];
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            if(min>a[i][j])
            {
                min=a[i][j];
            }
            if(max<a[i][j])
            {
                max=a[i][j];
            }            
        }
    }
    printf("输出最小值:%d,最大值:%d",min,max);
    return 0;
}

 二、使用二维数组编程输出如下图像 

8
8 8
8 8 8
8 8 8 8
8 8 8 8 8

#include <stdio.h>
/*
使用二维数组编程输出如下图像 
8
8 8 
8 8 8 
8 8 8 8 
8 8 8 8 8
*/
int main()
{
    int i,j;
    int a[5][5];
    for(i=0;i<5;i++)
    {
        for(j=0;j<=i;j++)
        {
            a[i][j]=8;
            printf("%d ",a[i][j]);    
        }    
        printf("\n");    
    }    
    return 0;
} 

 

 三、输入一个字符串,然后将每一个字符打印显示,中间加一个空格。

#include <stdio.h>
#include <string.h>
#define N 32
/*
输入一个字符串,然后将每一个字符打印显示,中间加一个空格。
*/ 
int main()
{
    int i,len;
    char str[N],temp;
    gets(str);
    len=strlen(str);
    for(i=len-1;i>=0;i--)
    {
        str[2*i]=str[i];
        str[2*i + 1]=' '; 
    }
    str[len*2]='\0';
    puts(str);
    return 0;    
} 

 

 四、进行字符串遍历,实现字符串格式替换。 

处理一个字符串"abccdeffghijkvssclmnocpqfrstuvcfwxyz",
将里面的特殊符号转义为表情。
s 转为 ^_^ f 转为 @_@ c 转为 T_T

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
/*
进行字符串遍历,实现字符串格式替换。 
处理一个字符串"abccdeffghijkvssclmnocpqfrstuvcfwxyz",
 将里面的特殊符号转义为表情。 
s 转为 ^_^ f 转为 @_@ c 转为 T_T
*/
int main()
{
    int i,k=0;
    char a[N],b[N];
    gets(a);
    int len=strlen(a); 
    for(i=0;i<len;i++)
    {
        if(a[i]=='c')
        {
            b[k++]='T';
            b[k++]='_';
            b[k++]='T';
//            printf("T_T");            
        }
        else if(a[i]=='s')
        {
            b[k++]='@';
            b[k++]='_';
            b[k++]='@';
//            printf("@_@");            
        }
        else if(a[i]=='f')
        {
            b[k++]='^';
            b[k++]='_';
            b[k++]='^';
//            printf("^_^");            
        }    
        else
        {
            b[k++]=a[i];
//            printf("%c", a[i]);
        }
    }
     printf("%s",b);
    return 0;
}

 

五、输入 5 字符串,将它们排序后输出。 

输入了 5 个字符串:"dead","alex","can","best","effort"
程序最终输出为: alex, best, can, dead, effort

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
/*
输入 5 字符串,将它们排序后输出。 
输入了 5 个字符串:"dead","alex","can","best","effort" 
程序最终输出为: alex, best, can, dead, effort
*/ 
int main()
{
    char a[N][N];
    char temp[N];
    int i,j;
    for (i = 0; i < 5; i++)
    {
        printf("请输入字符串:");
        scanf("%s",a[i]);
    }    
    for(i=0;i<4;i++)
    {
        for(j=0;j<4-1;j++)
        {
            if(strcmp(a[j],a[j+1])>0)
            {
            strcpy(temp,a[j]);
            strcpy(a[j],a[j+1]);
            strcpy(a[j+1],temp);
            }
        }
    }
    for(i=0;i<5;i++)
        printf("%s ",a[i]);
    return 0;
}

 六、去除字符串两端的空格。

用户输入 " i am fine " 则有效的输入是 "i am fine"

#include <stdio.h>
#include <string.h>
#define N 32
/*
去除字符串两端的空格。 
用户输入 " i am fine " 
则有效的输入是 "i am fine"
*/
int main()
{
    int i,x,y,k=0;
    char a[N],b[N];
    gets(a);
    int len=strlen(a);
    for(i=0;i<len;i++)
    {
        if(a[i]!=' ')
        {
            x=i;break;
        }
    }
    for(i=len-1;i>=x;i--)
    {
        if(a[i]!=' ')
        {
            y=i;break;    
        }
    }
    for(i=x;i<=y;i++)   
        {
            b[k++]=a[i]; 
            
        }
        printf("%s",b);
        printf("\n");
    return 0;
}

 

转载于:https://www.cnblogs.com/zhujiankang/p/11253916.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值