数组
实验纲要
实验目的:
(1)掌握一维数组的基本操作;
(2)掌握二维数组的基本操作;
实验环境:安装有Microsoft VC++6.0的PC机
实验内容:完成课件中的相关习题
实验学时:4学时
内容讲解
数组的定义
---可以存储多个数据值的数据结构;
---每一个数据值的数据类型相同;
数组的下标:
数组的下标从0开始:例如:int a[5];它的5个元素分别为: a[0],a[1],a[2],a[3],a[4];
一维数组的声明
数组在声明的时候必须用常量指定其大小【C89】
int n;scanf(“%d”,&n);int a[n];
( × )
int n=10;int a[n];
(×)
const int n=10;int a[n];
(√)
inta[10];
(√)
int a[]={1,2,3,4,5};
(√)
#define N 5……int a[N];
(√)
二维数组的声明
int a[][5];
( × )
int a[3][];
(×)
int a[3][5];
(√)
int a[][5]={1,2,3,4,5,6,7,8,9,10};
(√)
int a[2][]={1,2,3,4,5,6,7,8,9,10};
( × )
二维数组的存储顺序:
int a[3][4];
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
字符数组
1、声明
如char a[5],b[2][3];等
2、赋值
逐一赋值(一个字符一个字符的赋值)
char a[5]={'a','b','c','d','e'}; (√)
char a[5]={'a','b','c','d','e','f'};(×)
char a[5]={'a','b','c'}; (√)
a[0]
a[1]
a[2]
a[3]
a[4]
a
b
c
d
e
a[0]
a[1]
a[2]
a[3]
a[4]
a
b
c
\0
\0
用字符串常量赋值
char b[]="abcde";(√)
char b[6]="abcde";(√)【等价】
char b[6]={"abcde"};(√)
char b[5]="abcde";(×)
b[0]
b[1]
b[2]
b[3]
b[4]
b[5]
a
b
c
d
e
\0
字符数组输入
采用逐一输入
char a[5];
for(int i=0;i<5;i++)
{
scanf("%c",&a[i]);
//a[i]=getchar();
}
采用scanf函数输入
char a[5];
scanf("%s",a);
注意:
(1) a前面没有地址符&;
(2) 采用scanf输入,一旦遇到空格OR回车OR制表符等,即表示输入结束;
如我们从键盘上输入 ab cde,那么数组a的值为ab
(3)采用gets函数输入
char a[5];
gets(a);
注意:
采用gets()函数输入,仅在遇到回车时,才表示输入结束。
如我们从键盘上输入ab cde,则输入a的值为:
ab cde
字符数组输出
习题1
从键盘上输入六个整数,存放到整型数组arr中,再从键盘上输入一个整数,存放到整型变量n中。
要求:
编程查找整数n是否在数组arr中出现过。若出现,则输出第一次出现的位置,否则,输出no found
习题2
编程实现将原数组中的元素逆序存储:例如原数组a[]={5,2,7,4} ,则逆序后的数组a[]={4,7,2,5}.
要求:
(1)分别输出逆序前、后数组各元素的数值;
(2)逆序实现不要借助其他数组;
习题3
输出数组中的元素(重复的元素只输出一次):
例如数组int a[]={1,1,2,3,26,3,4,5,8,7,7,4};则应输出 1 2 3 26 4 5 8 7
习题4
编写一个程序,将用户输入的十进制正整数转换成任意进制(2~16)的数(将结果存储在一维数组中,最后显示结果)
习题5
假设共有3名学生,每名学生都有5门成绩(语文、数学、英语、化学、物理)。
要求:
(1)从键盘上输入每位学生的5门课程成绩;
(2)输出每位同学的总成绩和平均分;
习题6
使用二维数组打印如下图形(杨辉三角)。
习题7
编写一个程序,将两个字符串连接起来。
注意:不要用strcat函数。
习题8
编写程序,读入一个以符号"!"结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的