0
点赞
收藏
分享

微信扫一扫

软考中级 --网络工程师真题试卷 2023下半年

天涯学馆 03-23 12:30 阅读 2

目录

一、数组的概念

二、数组的类型

三、一维数组

        3.1 一维数组的创建

        3.2 一维数组的初始化

        3.3 一维数组的访问

        3.4 一维数组在内存中的存储

四、二维数组

        4.1 二维数组的创建

        4.2 二维数组的初始化

        4.3 二维数组的访问

        4.4 二维数组在内存中的存储

五、变长数组 

六、sizeof计算数组的大小

七、字符串数组

        7.1 字符串数组的创建

        7.2 字符串数组的初始化

        7.3 字符串数组的输入

        7.4 字符串数组的输出

        7.5 字符串数组经典应用

八、指针数组

        8.1 指针数组

        8.2 指针数组模拟实现二维数组

九、函数指针数组

        9.1 函数指针数组

        9.2 转移表 

 十、结构体数组

十一、一维数组_例题

十二、二维数组_例题

十三、字符数组_例题

十四、图片 


一、数组的概念

二、数组的类型

三、一维数组

3.1 一维数组的创建

#include <stdio.h>
int main()
{
	int arr1[10];//定义可存放10个整型的一维数组
	char arr2[4];//定义可存放4个字符的一维数组
	float arr3[6];//定义可存放6个单精度浮点型的一维数组
	//...
	return 0;
}

3.2 一维数组的初始化

#include <stdio.h>
int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6 ,7, 8, 9,10 };//完全初始化
	int arr2[10] = { 0 };//不完全初始化
	int arr3[] = { 1, 2, 3, 4 };//省略数组大小的初始化,数组大小为4
	return 0;
}

3.3 一维数组的访问

//一维数组的输入和输出
#include <stdio.h>
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
		printf("%d ", arr[i]);
	}
	return 0;
}

3.4 一维数组在内存中的存储

//验证一维数组在内存中的存储方式
#include <stdio.h>
int main()
{
	char arr[5] = { '0', '1', '2', '3', '4'};//字符数组,每个元素占一个字节
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		printf("arr[%d]=%p\n", i, &arr[i]);
	}
	return 0;
}

 

四、二维数组

4.1 二维数组的创建

#include <stdio.h>
int main()
{
	int arr[3][5];//定义三行五列的整型二维数组
	char arr2[4][6];//定义4行6列的字符二维数组
	float arr3[2][4];//定义2行4列的浮点数二维数组
	//...
	return 0;
}

4.2 二维数组的初始化

#include <stdio.h>
int main()
{
	int arr1[3][4] = { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } };//完全初始化
	int arr2[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//完全初始化

	int arr2[3][4] = { { 1 }, { 2, 3 }, { 4, 6, 8 } };//不完全初始化
	int arr3[3][4] = { 0, 1, 2 };//不完全初始化

	int arr4[][4] = { 1, 2 };//数组为1行4列
	int arr5[][4] = { { 1 }, { 3 }, { 2 , 5 } };//数组为3行4列
	return 0;
}

4.3 二维数组的访问

//二维数组的输入和输出
#include <stdio.h>
int main()
{
	int arr[3][4] = { 0 };
	int i = 0;//循环变量
	for (i = 0; i < 3; i++)
	{
		int j = 0;//循环变量
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &arr[i][j]);
			printf("%d ", arr[i][j]);
		}
		//换行
		printf("\n");
	}
	return 0;
}

4.4 二维数组在内存中的存储

//验证二维数组在内存中的存储方式
#include <stdio.h>
int main()
{
	char arr[2][3] = { { '1', '2', '3' }, { '2', '3', '4' }};//字符数组,每个元素占一个字节
	int i = 0;//循环变量
	for (i = 0; i < 2; i++)
	{
		int j = 0;//循环变量
		for (j = 0; j < 3; j++)
		{
			printf("arr[%d][%d]=%p\n", i, j, &arr[i][j]);
		}
	}
	return 0;
}

 

五、变长数组 

六、sizeof计算数组的大小

七、字符串数组

7.1 字符串数组的创建

7.2 字符串数组的初始化

#include <stdio.h>
int main()
{
    //一维字符串
	//方法一:用双引号初始化
	char arr1[4] = "abc";//完全初始化  a b c \0
    char arr2[4] = "ab";//不完全初始化 a b \0
    char arr3[] = "ab"//字符串数组大小为3

	//方法二:用大括号的初始化
	char arr4[4] = { 'a', 'b', 'c', '\0' };//完全初始化
	char arr5[4] = { 'a', 'b', '\0'};//不完全初始化
    char arr6[] = { 'a', 'b', '\0'};//字符串数组大小为3
 
    char arr7[4] = { 'a', 'b', 'c', 'd' };//不是字符串数组,因为数组中没有\0
	char arr8[4] = { 'a', 'b'};//不是字符串数组,因为数组中没有\0
    char arr9[] = { 'a', 'b'};//不是字符串数组,因为数组中没有\0                  
	return 0;
}

7.3 字符串数组的输入

#include <stdio.h>
int main()
{
	char arr1[10] = { '0'};
	//输入方法一:
	scanf("%s", arr1);//"hello world",只会读取hello
	//输入方法二:
	gets(arr1);//"hello world",全部读取
	return 0;
}

7.4 字符串数组的输出

#include <stdio.h>
int main()
{
	char arr1[10] = "abcde";
	//输出方法一:
	printf("%s\n", arr1);//不会自动换行,打印时加\n
	//输出方法二:
	puts(arr1);//会自动换行
	return 0;
}

7.5 字符串数组经典应用

//【实现:多个字符从两端移动,向中间汇聚】
//##########################
//Y########################!
//Yo######################!!
//You####################!!!
//You ##################!!!!
// ...
//You are the best!!!!!!!!!!

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int main()
{
	char arr1[] = "You are the best!!!!!!!!!!";
	char arr2[] = "##########################";
	//计算数组arr2的元素个数
	int sz = sizeof(arr2) / sizeof(arr2[0]);
	//再屏幕上先打印数组arr2的内容
	printf("%s\n", arr2);
	int left = 0;
	int right = sz - 2;//字符串的末尾隐藏着一个\0
	while (left <= right)
	{
		//睡眠1000毫秒
		Sleep(700);//sleep的第一个字母大写!

		arr2[left] = arr1[left];
		arr2[right] = arr1[right];

		//清屏
		system("cls");//system函数是库函数,执行系统命令,cls清理控制台屏幕

		//再次在屏幕上打印数组arr2
		printf("%s\n", arr2);

		//调整
		left++;
		right--;
	}
	return 0;
}

八、指针数组

8.1 指针数组

#include <stdio.h>
int main()
{
	int arr1[] = { 1, 2, 3 };
	int arr2[] = { 2, 3, 4 };
	int arr3[] = { 3, 4, 5 };

	int* arr[3] = { arr1, arr2, arr3 };//一维指针数组
	//由于数组名是数组首元素的地址,每个数组首元素的地址是int*类型的
	//所以arr指针数组语法中的tpye部分要写成int*
	return 0;
}

8.2 指针数组模拟实现二维数组

#include <stdio.h>
int main()
{
     int arr1[] = {1,2,3,4,5};
     int arr2[] = {2,3,4,5,6};
     int arr3[] = {3,4,5,6,7};
     
     int* parr[3] = {arr1, arr2, arr3};//一位指针数组
     int i = 0;
     int j = 0;
     for(i=0; i<3; i++)
     {
         for(j=0; j<5; j++)
         {
             printf("%d ", parr[i][j]);
         }
         printf("\n");
     }
     return 0;
}

九、函数指针数组

9.1 函数指针数组

#include <stdio.h>

int Add(int x, int y)
{
	//...
	return x + y;
}

int Sub(int x, int y)
{
	//...
	return x - y;
}

int Mul(int x, int y)
{
	//...
	return x * y;
}

int main()
{
	int (*arr[3])(int, int) = { Add, Sub, Mul };//函数指针数组
                                                //arr是数组名,[3]表示数组大小
    //int ret = (arr+1)(2, 3);//err
	//int ret = (*(arr + 1))(2, 3);
	int ret = arr[1](2, 3);//下标直接访问
	printf("%d\n", ret);
	return 0;
}

9.2 转移表 

#include <stdio.h>

int add(int a, int b)
{
	return a + b;
}

int sub(int a, int b)
{
	return a - b;
}

int mul(int a, int b)
{
	return a * b;
}

int div(int a, int b)
{
	return a / b;
}

int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
	do
	{
		printf("*************************\n");
		printf(" 1:add 2:sub \n");
		printf(" 3:mul 4:div \n");
		printf(" 0:exit \n");
		printf("*************************\n");
		printf("请选择:");
		scanf("%d", &input);
		if ((input <= 4 && input >= 1))
		{
			printf("输⼊操作数:");
			scanf("%d %d", &x, &y);
			ret = p[input](x, y);
			printf("ret = %d\n", ret);
		}
		else if (input == 0)
		{
			printf("退出计算器\n");
		}
		else
		{
			printf("输⼊有误\n");
		}
	} while (input);
	return 0;
}

 十、结构体数组

//首先声明结构体类型
struct stu
{
	char name[20];
	int age;
};
 
//定义结构体数组,并初始化
struct stu mate[3]={{"Allen",18},{"Smith",19},{"Grace",18}};

十一、一维数组_例题

[NOIP2013]记数问题_牛客题霸_牛客网 (nowcoder.com)

逆序输出_牛客题霸_牛客网 (nowcoder.com)

N个数之和_牛客题霸_牛客网 (nowcoder.com)

最高分与最低分之差_牛客题霸_牛客网 (nowcoder.com)

争夺前五名_牛客题霸_牛客网 (nowcoder.com)

有序序列合并_牛客题霸_牛客网 (nowcoder.com)

有序序列判断_牛客题霸_牛客网 (nowcoder.com)

有序序列插入一个整数_牛客题霸_牛客网 (nowcoder.com)

序列中删除指定数字_牛客题霸_牛客网 (nowcoder.com)

序列中整数去重_牛客题霸_牛客网 (nowcoder.com)

小乐乐查找数字_牛客题霸_牛客网 (nowcoder.com)

筛选法求素数_牛客题霸_牛客网 (nowcoder.com)

十二、二维数组_例题

回型矩阵_牛客题霸_牛客网 (nowcoder.com)

蛇形矩阵_牛客题霸_牛客网 (nowcoder.com)

井字棋_牛客题霸_牛客网 (nowcoder.com)

扫雷_牛客题霸_牛客网 (nowcoder.com)

十三、字符数组_例题

[NOIP2018]标题统计_牛客题霸_牛客网 (nowcoder.com)

[NOIP2008]笨小猴_牛客题霸_牛客网 (nowcoder.com)

添加逗号_牛客题霸_牛客网 (nowcoder.com)

字符串操作_牛客题霸_牛客网 (nowcoder.com)

简写单词_牛客题霸_牛客网 (nowcoder.com)

十四、图片 

 本篇已完结。。。。。。

举报

相关推荐

0 条评论