精华内容
下载资源
问答
  • 第 53套试题说明***********************************第题(30分)给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次...

    d994b863ba883f07beb9bc7070ca043c.png

    第 53套

    试题说明

    ***********************************

    第一题(30分)

    给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中

    从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次

    为:10、8、6、4、2。

    请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结

    果。

    注意:源程序存放在考生文件夹下的BLANK1.C中。

    不得增行或删行,也不得更改程序的结构!

    ***********************************

    第二题(30分)

    给定程序MODI1.C中函数fun的功能是: 将s所指字符串中位于奇数位置的字符

    或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。

    例如, 字符串中的数据为: AABBCCDDEEFF,

    则输出应当是:ABBCDDEFF。

    请改正函数fun中指定部位的错误, 使它能得出正确的结果。

    注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!

    ***********************************

    第三题(40分)

    请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序

    依次放到一维数组中。

    例如, 二维数组中的数据为:

    33 33 33 33

    44 44 44 44

    55 55 55 55

    则一维数组中的内容应是:

    33 44 55 33 44 55 33 44 55 33 44 55。

    注意:部分源程序在文件PROG1.C中。

    请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入

    你编写的若干语句。

    2829f2ca24f0d0090cbba57f30759f23.png

    计算机考试二级C语言上机试题下[23].doc

    下载Word文档到电脑,方便收藏和打印[全文共675字]

    编辑推荐:

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    下载Word文档

    展开全文
  • 一维数组逆置

    千次阅读 2018-03-08 15:57:56
    #include using namespace std; void reverse(int a[],int n) ... cout请输入十个数组元素 :"; for(int i = 0;i;++i) { scanf("%d",&a[i]); } reverse(a,n); for(int i = 0;i;++i) { cout[i]; } cout; }
    #include<iostream>
    using namespace std;
    void reverse(int a[],int n)
    {
    	for(int i = 0;i<n/2;++i)
    	{
    		swap(a[i],a[n-i-1]);
    	}
    }
    
    
    void main()
    {
    	int a[10];
    	int n = sizeof(a)/sizeof(a[0]);
    	cout<<"请输入十个数组元素 :"<<endl;
    	for(int i = 0;i<n;++i)
    	{
    		scanf("%d",&a[i]);
    	}
    	reverse(a,n);
    	for(int i = 0;i<n;++i)
    	{
    		cout<<a[i]<<" ";
    	}
    	cout<<endl;
    }

    展开全文
  • 一维数组的创建和初始化 创建: int arr[10]; 数组的初始化有三种方法: 1 直接初始化 //代码1 int arr[10] = { 0 }; //代码2 int arr[10] = { 0,1,2,3,4,5,6,7,8,9 }; 2 for循环初始化 void ...

    一维数组的创建和初始化

    创建:

        int arr[10];

    数组的初始化有三种方法:

    1 直接初始化
        //代码1
        int arr[10] = { 0 };
        //代码2
        int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
    2 for循环初始化
        void InitArr(int arr[], int sz)
        {
            for (int i = 0; i < sz; i++)
                arr[i] = i;
        }

    注:上述代码中的sz是在主函数中算出来,然后传过来的,它表示数组中元素的个数,该参数不能在初始化函数中计算,因为数组穿过去的是首元素的地址,假如在初始化函数中计算,结果为1,而不是数组中元素的个数。

    3 memset()函数初始化
        void InitArr(int arr[], int sz)
        {
            memset(arr, 0, 40);
        }

    注:该函数的原型为

        void *memset(void *ptr, int value, size_t num)

    地址ptr开始的num个字节赋值value,是逐个字节赋值,ptr开始的num个字节中的每个字节都赋值为value。后面的40为数组arr的字节。

    • 若ptr指向char型地址,value可为任意字符值;
    • 若ptr指向非char型,如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转化成二进制后每一位都是一样的;
      假如需要赋值0~9,只能使用for循环。

    一维数组的清空

    数组的清空救比较简单了,就是把每个元素都变为0,可以变相理解为初始化为0。

        void EmptyArr(int arr[])
        {
            memset(arr, 0, 40);
        }

    一维数组的逆置

    将数组的首尾元素换位置即可
        void ReverseArr(int arr[], int sz)
        {
            for (int i = 0; i < sz / 2; i++)
            {
                int tmp = arr[i];
                arr[i] = arr[sz - 1 - i];
                arr[sz - 1 - i] = tmp;
            }
        }

    注: 上述方法中需要注意的是循环到数组一半长度就必须终止,要不然就又换回去了,和原数组一样。

    一维数组的访问

    1 直接访问
        void PrintArr(int arr[], int sz)
        {
            for (int i = 0; i < sz; i++)
                printf("%d ", arr[i]);
        }
    2 通过指针访问
        void PrintArr(int arr[], int sz)
        {
            int *p = arr;
            for (int i = 0; i < sz; i++)
                printf("%d ", *(p+i));
        }

    注:上述代码将arr数组首个元素的地址赋给指针变量p,p+i表示第i个元素的地址,然后解引用*(p+i),就得到了第i个元素的数值。

    一维数组的存储

        #include <stdio.h>
    
        int main()
        {
            int arr[10] = { 0 };
            for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
            {
                printf("&arr[%d] = %p\n", i, &arr[i]);
            }
            return 0;
        }

    注:int类型占四个字节,所以一维数组在内存中是连续存放的。

    主函数

        int main()
        {
            int arr[10] = { 0 };
            int sz = sizeof(arr) / sizeof(arr[0]);
            InitArr(arr, sz);
            PrintArr(arr, sz);
            printf("\n");
            ReverseArr(arr, sz);
            PrintArr(arr, sz);
            printf("\n");
            return 0;
        }

    附:

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
    
        void InitArr(int arr[], int sz)
        {
            for (int i = 0; i < sz; i++)
                arr[i] = i;
        }
    
        void PrintArr(int arr[], int sz)
        {
            int *p = arr;
            for (int i = 0; i < sz; i++)
                printf("%d ", *(p+i));
        }
    
    
        void EmptyArr(int arr[], int sz)
        {
            memset(arr, -1, 40);
        }
    
        void ReverseArr(int arr[], int sz)
        {
            for (int i = 0; i < sz / 2; i++)
            {
                int tmp = arr[i];
                arr[i] = arr[sz - 1 - i];
                arr[sz - 1 - i] = tmp;
            }
        }
    
        int main()
        {
            int arr[10] = { 0 };
            int sz = sizeof(arr) / sizeof(arr[0]);
            InitArr(arr, sz);
            PrintArr(arr, sz);
            printf("\n");
            ReverseArr(arr, sz);
            PrintArr(arr, sz);
            printf("\n");
            return 0;
        }

    展开全文
  • c语言一维数组(3)

    2020-12-03 18:05:31
    (2)数组的存储: a.例:将个十进制数转换为二进制 #include<stdio.h> int main(void) { int a[20],i=0,m; scanf("%d",&m); if(m==0) printf("0"); while(m) { a[i++]=m%2; m/=2; } while...

    (2)数组的存储:

    a.例:将一个十进制数转换为二进制

    #include<stdio.h>
    int main(void)
    {
        int a[20],i=0,m;
        scanf("%d",&m);
        if(m==0)
            printf("0");
        while(m)
        {
            a[i++]=m%2;
            m/=2;
        }
        while(i)
            printf("%d ",a[i--]);
    }

    (3)一维数组的排序

    a.选择排序(排列n个元素)

    框架

    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }

    b.插入排序(排列n个元素)

    框架

    for(i=1;i<n;i++)
    {
        t=a[i];
        j=i-1;
        while(j>=0 && t<a[j])
        {
            a[j+1]=a[j];
            j--;    
        }
        a[j+1]=t;
    }

    (4)一维数组的查找

    a.顺序查找:若有n个元素,依次由左向右进行查找,若找到则终止

    int a[10],i,t;
    /*随机数赋值*/
    scanf("%d",&t);
    for(i=0;i<10;i++)
    {
        if(a[i]==t)
        {
            printf("%d",i);
            break;
        }
        if(i==10)
            printf("未找到")
    }

    b.二分法查找(折半查找,只能查找有序表)

    int a[10],i,j,t,mid;
    /*随机数赋值*/
    /*排序*/
    scanf("%d",&t);
    i=0;j=9;
    while(i<=j)
    {
        mid=(i+j)/z;
        if(a[mid]==t)
        {
            printf("%d",a[mid]);
            break;
        }
        else
        {
            if(t<a[mid])
                j=mid+1;
            else
                i=mid-1;
        }
        if(i>j)
            printf("未找到")
        
    }

    (5)一维数组元素的删除

    a.本质:覆盖

    b.程序:

    for(i=0;i<10;i++)
    {
        if(a[i]!=t)
            a[j++]=a[i];
    }

    (6)一维数组的移动

    a.(a)数组逆置

    /*方法一*/
    i=0,j=10-1;
    while(i<j)
    {
        t=a[i];
        a[i]=a[j];
        a[i]=t;
        i++;
        j--;
    }
    /*方法二*/
    for(i=0;i<10/2;i++)
    {
        t=a[i];
        a[i]=a[10-i-1];
        a[10-i-1]=t;
    }

    b.数组的平移

    (a)移动数组  将下标0->p(包含p,p小于数组长度-1)的元素平移到数组尾部

    for(i=0;i<10;i++)
    {
        t=a[0];
        for(j=1;j<10;j++)
        {
            a[j-1]=a[j];
            a[9]=t;
        }
    }

    (b)移动到首部

    for(i=0;i<10;i++)
    {
        t=a[9];
        for(j=0;j<10;j++)
        {
            a[j+1]=a[i];
        }
        a[0]=t;
    }

     

    展开全文
  • c语言数组逆置

    千次阅读 2018-02-04 18:17:13
    数组逆置的思想:将数组中存放的值按逆序排列; 例如:arr[5]={1,2,3,4,5}; 经过逆序arr[5]={5,4,3,2,1}; 代码如下: #include void Reverse(int *arr, int len) //逆置功能函数, {  int tmp; //...
  • c语言维数组

    2019-10-25 16:36:06
    if else switch for while do while 字符串:""包括的字符集和,隐式包含’\0’即0 0的形式:0,’\0’,NULL,false %s:输出字符串 int main() { int arr[4];...//指向数组的指针,简称数组指针 p1 = brr[0];...
  • c语言实现数组逆置

    千次阅读 2016-11-06 20:08:20
    c语言实现数组逆置 #include #include void swap(int *a ,int *b) { int tmp = *a; *a = *b; *b = tmp; } void show(int arr[], int len) { assert(arr); assert(len > 0); int i = 0; for (; i ; i++){...
  • 数组逆置C语言解法python解法5. 冒泡排序法C语言解法python解法: 1. 数组的定义方式 方式1: 类型 名称 空间大小(一共十个单元,每个单元都是 int 类型,所以每个单元是 4 字节) 具体的值 方式2: int arr[] ...
  • #include<stdio.h> void reverse(int* arr, int sz) { int tmp; int left = 0; int right = sz - 1; while (left<right) { tmp = arr[left]; arr[left] = arr[right];... int arr[10] = { 1,2
  • C语言求解数组元素逆置的四种方法

    千次阅读 2019-12-23 11:26:30
    1、题目描述 将个长度为10的整型数组中的值按逆序重新存放。 如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1。 2、方法1 思路:直接倒序输出 #include <stdio.h> int main(){ int a[10...
  • 【汇编程序】实现一维数组逆置

    千次阅读 2019-04-14 17:00:08
    程序需求:编程写个完整的程序,将数组array中的元素按逆序存放,要求程序中附加的变量最少。数据段的定义如下: .data array dword 12,4, 168,122,-33,56,78,99,345, 66,-5 编程思路:设置2个指针,分别指向第...
  • 维数组逆置

    2020-10-29 20:14:05
    个二维数组进行逆置: 最大的问题是:如何保证不越界? A[j][i] A[i][j] 的转换,如果i 和 j相等的话就很好操作,但是假如i 和 j不相等呢?这个时候就会造成越界的操作。如果用C语言进行操作,确实会造成不小...
  • 数组逆置方法总结

    千次阅读 2017-02-16 22:23:06
    参考自:http://www.cnblogs.com/tinaluo/p/5267779.html今天总结一下数组逆置方法。这里列出两种方法,种是循环迭代的方式:思路就是第个和倒数第个交换、第二个和倒数第二个交换...依次进行下去;另种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,203
精华内容 481
关键字:

c语言一维数组逆置

c语言 订阅