11月7号作业

本文通过四个实际案例,详细介绍了C语言中如何操作数组,包括查找最大值及其次大值、统计小写字母数量、字符串插入操作以及实现冒泡排序和选择排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目: 

         1.定义一个int类型的二维数组,里面只能存储正整数,求第二大值,输出最大值以及行号和列号
         2.从终端中输入一串字符以'\n'结尾,计算小写字符的个数,分别有多少个。
            例如 aaAcF123---->结果 a有2个 c有1个
         3.终端输入一个位置,要求从指定位置插入
            char dest[30] = "12345";
            例子:n=0-->abc12345 n=1--> 1abc2345 n=3-->123abc45
            1)用辅助数组
            2)只用一个数组实现
         4.终端输入数组,实现冒泡排序和选择排序的代码。

代码:

 #include<stdio.h>
 #include<string.h>                             
 int main(int argc, const char *argv[])
 {

    /******题目一*******/                                                                                           
#if 0
    int a[2][4]={{23,6,87,54},{1,33,0,22}};
    int max_h=0,max_l=0;
    int max2_h=0,max2_l=0;
    int temp;
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(a[i][j]>a[max_h][max_l])
            {
                max_h=i;
                max_l=j;
            }
        }
    }
    printf("最大值为:%d;行标:%d;列标:%d\n",a[max_h][max_l],max_h,max_l);
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<4;j++)
        {
            if(i==max_h&&j==max_l)continue;
            if(a[i][j]>a[max2_h][max2_l])
            {
                max2_h=i;
                max2_l=j;
            }

        }
    }
    printf("第二大值为:%d;行标:%d;列标:%d\n",a[max2_h][max2_l],max2_h,max2_l);
#endif
/******题目二*******/
#if 0
    int a[32]={0};
    char str[32];
    int i=0;
    gets(str);
    while(str[i])
    {
        if(str[i]>='a'&&str[i]<='z')a[str[i]-'a']++;
        i++;
    }
    for(int i=0;i<32;i++)
    {
        if(a[i]>0)printf("%c有%d个\n",'a'+i,a[i]);
    }
#endif
/******题目三*******/
#if 0
    char s1[32]="12345";
    char s2[4]="abc";
    int n;
    printf("从下标:");
    scanf("%d",&n);
    printf("位置插入\n");
    for(int i=4;i>=n;i--)s1[i+3]=s1[i];
    for(int j=0;j<3;j++)s1[n+j]=s2[j];
    s1[8]='\0';
    puts(s1);
#endif
/******题目四*******/
#if 1
    int a[10];
    int len=10;
    int temp,max;

    printf("请输入数据:");
    printf("\n");
    for(int i=0;i<len;i++)scanf("%d",&a[i]);
    for(int i=0;i<len-1;i++)
    {
        for(int j=0;j<len-i-1;j++)
        if(a[j]<a[j+1])
        {
            temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
    printf("冒泡排序结果:");
    for(int i=0;i<len;i++)printf("%-4d",a[i]);
    printf("\n");

    printf("请输入数据:");
    printf("\n");
    for(int i=0;i<len;i++)scanf("%d",&a[i]);
    for(int i=0;i<len-1;i++)
    {
        max=i;
        for(int j=i;j<len;j++)
        {
            if(a[j]>a[max])max=j;
        }
        temp=a[i];
        a[i]=a[max];
        a[max]=temp;
    }
    printf("选择排序结果:");
    for(int i=0;i<len;i++)printf("%-4d",a[i]);
    printf("\n");


#endif

    return 0;
 }

运行结果:

结果一:
ubuntu@ubuntu:~$ gcc day5.c -o day5 
ubuntu@ubuntu:~$ ./day5
最大值为:87;行标:0;列标:2
第二大值为:54;行标:0;列标:3
ubuntu@ubuntu:~$ 

结果二:
ubuntu@ubuntu:~$ ./day5
aaAFcce123 agSE
a有3个
c有2个
e有1个
g有1个

结果三:
ubuntu@ubuntu:~$ ./day5
从下标:2
位置插入
12abc345
ubuntu@ubuntu:~$ ./day5
从下标:5
位置插入
12345abc

结果四:
ubuntu@ubuntu:~$ ./day5
请输入数据:
1 2 3 4 5 6 7 8 9 10 
冒泡排序结果:10  9   8   7   6   5   4   3   2   1   
请输入数据:
1 2 3 4 5 6 7 8 9 10
选择排序结果:10  9   8   7   6   5   4   3   2   1   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值