《C语言及程序设计》实践参考——数组大折腾

返回:贺老师课程教学链接   项目要求


【项目1 - 数组大折腾】
(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。

int main( )
{
    int a[20]={...};  //初始化前10个元素
    //键盘输入后10个元素的值
    		
    //由前往后输出数组中所有元素的值
    printf("由前往后,数组中的值是:\n");


    return 0;
}

[参考解答]

#include<stdio.h>
int main( )
{
    int i;
    int a[20]= {13,45,89,32,54,21,90,723,65,45}; //初始化前10个元素
    //键盘输入后10个元素的值
    printf("请输入10个整数\n");
    for(i=10; i<20; ++i)
        scanf("%d", &a[i]);

    //由前往后输出数组中所有元素的值
    printf("由前往后,数组中的值是:\n");
    for(i=0; i<20; ++i)
    {
        printf("%d\t", a[i]);
        if((i+1)%5==0)
            printf("\n");
    }
    return 0;
}


(2)创建一个长度为10的整型数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数据加倍,输出改变后的值。
[参考解答]

#include<stdio.h>
int main( )
{
    int i;
    int a[10]= {13,45,89,32,54,21,90,723,65,45}; //初始化前10个元素

    //由后往前输出数组中所有元素的值
    printf("由后往前,数组中的值是:\n");
    for(i=9; i>=0; --i)
        printf("%d\t", a[i]);
    printf("\n");

    //将所有元素值加倍后保存在数组中
    for(i=0; i<10; ++i)
        a[i]*=2;  //或a[i]=a[i]*2;

    //输出改变后的值
    printf("由前往后,数组中改变了的值是:\n");
    for(i=0; i<10; ++i)
        printf("%d\t", a[i]);
    printf("\n");
    return 0;
}



(3)创建一个长度为16的整型数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值。输出如图示。


[参考解答]

#include<stdio.h>
int main( )
{
    int i;
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,}; //初始化

    //输出数组中元素值为3的倍数的数
    printf("数组中,元素值为3的倍数的数是:\n");
    for(i=0; i<16; ++i)
    {
        if(a[i]%3==0)
            printf("a[%d]  %d\n", i, a[i]);
    }

    //输出下标为3的倍数的元素值
    printf("下标为3的倍数的元素值是:\n");
    for(i=0; i<16; ++i)
    {
        if(i%3==0)
            printf("a[%d]  %d\n", i, a[i]);
    }
    return 0;
}

这个程序的局部改进还可以是:

    printf("下标为3的倍数的元素值是:\n");
    for(i=0; i<16; i+=3) 
        printf("a[%d]  %d\n", i, a[i]);


(4)创建一个长度为16的整型数组a并初始化,删除数组中所有能被3整除的元素(数组中实际有效使用的元素将不足16),输出删除后数组中的全部元素。

[参考解答]

#include<stdio.h>
int main( )
{
    int i,j;
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187,23}; //初始化

    //删除所有能被3整除的数
    for(i=0,j=0; i<16; ++i)
    {
        if(a[i]%3)       //等同于(a[i]%3!=0)
            a[j++]=a[i];
    }

    //输出剩余的元素(共有j个)
    printf("删除所有能被3整除的数后,剩余的数是:\n");
    for(i=0; i<j; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}



(5)创建一个长度为16的整型数组a并初始化前15个元素,输入一个整数b,将b插入到a[0]位置(原有的数据往后“移动”)。
[参考解答]

#include<stdio.h>
int main( )
{
    int i,b;
    int a[16]= {13,45,89,332,54,221,90,723,65,45,123,47,96,48,187}; //初始化

    scanf("%d", &b);

    //给b空出位子来
    for(i=15; i>0; --i)
    {
        a[i]=a[i-1];
    }

    a[0] = b;

    //输出剩余的元素(共有j个)
    printf("插入后的数组是:\n");
    for(i=0; i<16; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值