C语言编程题集锦

题目1

有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

核心思路:
定义一个数组group[n],再定义一个数组buf[n+m]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*1、用户键入数组元素个数和移动步数*/
    int count = 0 ;    //数组中元素的个数
    int step = 0 ;     //移动的步数
    printf("请输入整数的个数n:") ;
    scanf("%d",&count) ;
    printf("请输入移动的步数m:") ;
    scanf("%d",&step) ;

    char group[count] ;      //数组1 
    char buf[count+step] ;   //数组2,用于解决偏移越界问题

    /*2、初始化数组1*/
    for(int i=0 ; i<count ; i++)
    {
        group[i] = rand()%100 ;  //随机生成0~99的数   
    }
    //打印数组1
    for(int i=0 ; i<count ; i++)
    {
        printf("%d ",group[i]) ;
    }
    printf("\n") ;

    /*3、根据数组1偏移指定步数,初始化数组2*/
    //数组2从下标step开始,赋数组1的值
    for(int i=0 ; i<count ; i++)
    {
        buf[step+i] = group[i] ;
    }
    //数组2下标0~step的元素,赋值数组1的后step个元素
    for(int i=0 ; i<step ; i++)
    {
        buf[i] = group[count-step+i] ;
    }

    //打印数组2
    for(int i=0 ; i<count ; i++)
    {
        printf("%d ",buf[i]) ;
    }
    printf("\n") ;
}

运行结果:

题目2

输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换。

核心思路:
定义4个局部变量,分别临时存放最大数、最大数的位置、最小数、最小数的位置。
#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*1、初始化数组*/
    int group[10] ;
    for(int i=0 ; i<10 ; i++)
    {
        group[i] = rand()%100 ;  //随机生成0~99的数   
    }

    //打印数组
    printf("处理前:") ;
    for(int i=0 ; i<10 ; i++)
    {
        printf("%d ",group[i]) ;
    }
    printf("\n") ;

    //定义局部变量
    int max = group[0] ;   //最大数
    int min = group[0] ;   //最小数
    int max_local = 0 ;    //最大数的数组下标
    int min_local = 0 ;    //最小数的数组下标
    /*2、遍历数组,记录最大数、最大数的位置、最小数、最小数的位置*/
    for(int i=0 ; i<9 ; i++)
    {
        if(group[i+1]>group[max_local])
        {
            max_local = i+1 ;   //最大数的位置
            max = group[i+1] ;  //最大数
        }

        if(group[i+1]<group[min_local])
        {
            min_local = i+1 ;   //最小数的位置
            min = group[i+1] ;  //最小数
        }
    }

    //交换最小数和第一个数的位置
    group[min_local] = group[0] ;
    group[0] = min ;

    //交换最大数和最后一个数的位置
    group[max_local] = group[9] ;
    group[9] = max ;

    //打印交换后的数组
    printf("处理后:") ;
    for(int i=0 ; i<10 ; i++)
    {
        printf("%d ",group[i]) ;
    }

    printf("\n") ;
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值