《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;
}
时间: 2024-09-20 10:59:26

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

2014秋C++第13周项目1参考-数组大折腾

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1 - 数组大折腾](1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. 参考解答: #include <iostream> using nam

C++第14周项目1——数组大折腾

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目1 - 数组大折腾]创建一个长度为20的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入,使后10个元素获得值,将所有元素值加倍后保存在数组中,最后由前往后输出数组中所有元素的值,再由后往前输出数组中所有元素的值,再输出数组中的所有偶数,以及下标为3的倍数的元素值. 报告模板及部分代码如下: /* * 程序的版权和版本声明部分 * Copyrig

《C语言及程序设计》实践参考——数组的排序

返回:贺老师课程教学链接  项目要求 [项目3 - 数组的排序](1)编写函数,完成冒泡排序要求不能改变下面的main函数. //两个函数bubble_sort和output_array的声明 int main( ) { int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76}; int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73}; bubble_so

《C++语言基础》实践参考——我的数组类

返回:贺老师课程教学链接 [项目2-我的数组类]下面的程序,因为存在指针类型的数据成员,需要能完成深复制的构造函数.请补充完整构造函数和析构函数(其他不必动).其中,构造函数要完成下面三个任务:(1)为各成员函数赋值,按照深复制原则,其中arrayAddr应该是为保存数据新分配的连续空间的首地址:(2)MyArray(int *a, int n)中,要将a指向的数组中的数值,逐个地复制到新分配的arrayAddr指向的空间中:(3)getMax( )函数采取的策略是直接返回max(所以,计算ma

《C++语言基础》实践参考—— 链表类

返回:贺老师课程教学链接  项目要求 [项目 - 链表类]动态链表也是程序设计中的一种非常有用的数据结构.可以说,是否能够理解有关操作的原理,决定了你是否有资格称为"科班"出身.在后续的专业基础课中,相关的内容还会从不同的角度,反复地认识,反复地实践.不过,在现阶段多些体验,也是很有必要的了.(1)阅读下面的程序,回顾一下动态链表,阅读程序过程中,请用笔画一画形成链表的过程中指针值的变化. #include <iostream> using namespace std; s

《C++语言基础》实践参考——指向学生类的指针

返回:贺老师课程教学链接 [项目4-指向学生类的指针] 设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1.3.5个学生的信息: 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中

Raptor实践参考:大或小

返回->课程主页 2-1 大或小 从键盘输入任意整数N,当N小于或等于0时显示"low!",否则显示"high!" [参考解答]

《C++语言基础》实践参考——小玩文件

返回:贺老师课程教学链接  项目要求 [项目1 - 小玩文件](1)下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整. #include <iostream> #include <cstdlib> #include _____________ // (1) using namespace std; int main() { fstream file; file.open("abc.txt", _________); // (2) if

《C++语言基础》实践参考——有些数的阶乘不算了

返回:贺老师课程教学链接 项目要求 [项目2-有些数的阶乘不算了] 求n!的函数,当用户的输入为负数,以及输入数太大时(例如大于12),使用异常处理机制予以拒绝,并给出恰当的提示. [参考解答] #include <iostream> using namespace std; int fac(int n) { int result=1; if(n<0) throw string("Argument cannot be negative"); else if(n>