第七章数组1一维数组1整形数组说明例如inta[10];
C语言程序设计 数组一(一维数组相关)
补充内容
随机函数用法举例: #include<stdio.h> #include<stdlib.h> #include<time.h> main() { int a[3][4],i,j; srand(time(0)); for(i=0;i<3;i++) { for(j=0;j<4;j++) a[i][j]=rand(); } for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%3d ",a[i][j]); printf("\n"); } }
#include<stdio.h> #define N 10 根据算法结论画出流程图如下: 程序 main() 设n=10 { int a[N],i,j,t; printf("input ten number:\n"); for(i=0;i<N;i++) 输入10个数给a[0]~ a[9] scanf("%d",&a[i]); printf("\n"); i由0到8共执行9次循环 for(i=0;i<N-1;i++) 进行9-i次比较 a[j]>a[j+1] for(j=0;j<N-1-i;j++) 假 { 真 if(a[j]>a[j+1])
a[jபைடு நூலகம்和 a[j+1] 交换
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
} printf("the sorted number:\n"); for(i=0;i<N;i++) printf("%5d",a[i]); }
数组(一维与二维)
• 例 有一个3×4的矩阵,求出其中最大值,以及它所在的行和列。 main() { int i,j,r=0,c=0,max; static int a[3][4]={{1,5,3,4},{9,8,7,6},{-8,20,1,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i; c=j; } printf(″max=%d,r=%d,c=%d\n″,max,r,c); }
注意:数组元素的下标(行 static 数据类型 二维数组名[常量][常量]={{常量列
表},…};
功能: 定义一个二维数组,并给每个数组元素赋初值。
(1)分行给二维数组赋初值。
static int a[3][4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (2)将所有数据写在一个花括弧内,按数组排列的顺序对各元素 赋初值。 static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以对部分元素赋初值。
数
组
一维数组的定义和引用
二维数组的定义和引用
字符数组
一维数组的定义和引用
1.1 一维数组的定义 格式: [存储类型] 数据类型 数组名[常量表达式]; 功能: 定义一个一维数组,常量表达式的值,就是数组元素的个 数。 例如:int a[10]; 表明数组名为a,此数组有10个元素.
说明:
(1)数组名规定和变量名相同,遵守标识符命名规则。 (2)数组名后是用方括弧括起来的常量表达式,不能为圆括弧。
2.4 二维数组应用举例 • 例 求一个3×3矩阵的主对角线之和。 main() { static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i==j) sum=sum+a[i][j]; printf(“sum=%d”,sum); } 运行结果: sum=15
一维数组及数组的常见操作
一维数组及数组的常见操作一维数组是一组相同类型的数据元素集合,存储在连续的内存空间中。
常见的一维数组操作包括:1. 声明数组:指定数组的类型和名称,例如:int[] arr;2. 创建数组:使用new关键字创建数组对象,并指定数组的长度,例如:arr = new int[5];3. 初始化数组:为数组元素赋初始值,可以通过循环遍历给数组元素逐个赋值,或者直接在声明数组时进行显示初始化,例如:int[] arr = {1, 2, 3, 4, 5};4. 访问数组元素:通过索引值来访问数组的元素,索引从0开始到数组长度-1,例如:int x = arr[3];5. 修改数组元素:通过索引值来修改数组的元素,例如:arr[2] = 10;6. 获取数组的长度:使用length属性获取一维数组的长度,例如:int length = arr.length;7. 遍历数组:使用循环遍历数组的所有元素,例如:for(inti=0; i<arr.length; i++) { System.out.println(arr[i]); }8. 搜索数组:可以使用循环遍历或者二分查找算法来搜索数组中的元素;9. 数组排序:可以使用各种排序算法对数组进行排序,例如冒泡排序、插入排序、选择排序、快速排序等;10. 数组拷贝:可以使用循环遍历或者System.arraycopy()方法将一个数组的元素复制到另一个数组;11. 数组的扩容:由于一维数组的长度在创建后固定不变,当需要添加新元素时,通常需要创建一个新数组,并将原数组的元素拷贝到新数组中;12. 数组的删除:可以通过创建新数组,并将原数组中需要保留的元素拷贝到新数组中,来实现删除数组元素的目的。
这些是一维数组的一些常见操作,还有其他一些操作和算法可以实现更复杂的功能。
C语言程序设计第七章数组
说明 定义数组a有5个元素,大括号只提供3个初值, 则将前三个元素依次赋值,后面元素值为0 等价于:int a[5]; a[0]=1; a[1]=2; a[2]=3; a[3]=a[4]=0;
一维数组的初始化
2020年8月13日星期四
一维数组的初始化
当给全部数组元素赋初值时,可以不指定数组长度
如 可以写成
7次
用变量j来表示第i趟比较的次数,则1<=j<=n-i
第每2次趟比较33的88是a44[99j-1]66和55 a[j771]663 1177233667 2277376760 337006 97
6次
第3趟
38 49 6153 16623557 26637550 336005 76 97
5次
第4趟
else grade = 'B'; ……
数组
}
第七章 数组
主要内容
一维数组 二维数组和多维数组 字符数组和字符串
2020年8月13日星期四
一维数组
主要内容
一维数组的定义 一维数组元素的引用 一维数组的初始化 一维数组举例
2020年8月13日星期四
一维数组的定义
2020年8月13日星期四
一维数组的定义方式: 合法标识符
printf("%d", a);
} • 数组元素a[i]表示数组的第i+1个分量, i表示数组元素相对于数组起始地址的偏移量
• 引用数组元素时,根据首地址和下标数,计算出该元素的 实际地址,取出该地址的内容进行操作。
一维数组的初始化
2020年8月13日星期四
一维数组的初始化 可以在定义数组的时候,给它赋初值
一# d维efi数ne N组10举例 Enter 10 integers:
C语言考试题库及答案
C语言考试题库及答案1. 以下不是C语言的特点的是( C )A、C语言简洁,紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言的移植性好2. 一个C程序是由()BA、一个主程序和若干个子程序组成B、一个或多个函数组成C、若干过程组成D、若干子程序组成3.以下描述正确的是( ) CA、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C、在do-while循环体中,不一定要有能使while后面表达式的值变成零(“假”)的操作。
D、do-while循环中,根据情况可以省略while。
4.以下对一维整形数组a的正确说明是( ) DA、int a(10);B、int n=10,a[n];C、int n;D、int a[10];5.以下对二维数组a的正确说明是( ) CA、inta[3][];B、float a(3,4);C、double a[1][4];D、float a(3)(4);6.数组名作为实参传给被调用的函数时,形参获得的是()CA、该数组第一个元素的值B、该数组所有元素的值C、该数组第一个元素的首地址D、该数组所有元素的首地址7. C程序的开始是从()AA、main()函数开始,直到main()函数结束B、第一个函数开始,直到最后一个函数结束C、第一个语句开始,直到最后一个语句结束D、main()函数开始,直到最后一个函数结束8.在C程序中,main()函数的位置()CA、必须作为第一个函数B、必须作为第二个函数C、可以任意D、必须放在它所调用的函数之后9. C编译程序是()CA、C语言的机器语言版本B、一组机器语言指令C、将C源程序编译成目标程序的程序D、是由自己编制的10.以下叙述中错误的是( )CA、C程序经过编译、连接之后形成一个真正可执行的二进制机器指令文件B、用C语言编写的程序称为源程序,它以ASCⅡ代码形式存放在文件中C、C语言中的每条可执行语句和非执行语句最终被转换成二进制的机器指令非执行的语句不转换:例如//和/**/是注释的意思D、C语言源程序经编译后生成后缀为.obj的目标程序1.以下不正确的C语言标识符是( )D字母,数字,下划线组成,但是不能以数字开头A、ABCB、abcC、a_bcD、ab.c12.一个C语言程序是由( ) BA、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成13.以下叙述错误的是( ) C算法可以没有输入输入,但是一定不能没有输出A、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有个相同的结果14.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+ i*f值的数据类型为( ) C强制类型转换A、intB、floatC、doubleD、不确定15.以下叙述中错误的是( )CA、结构化程序由顺序、分支、循环三种基本结构组成B、C语言是一种结构化程序设计语言C、使用三种基本结构构成的程序只能解决简单问题D、结构化程序设计提倡模块化的设计方法16.以下叙述中错误的是()CA、算法正确的程序最终一定会结束B、算法正确的程序可以有零个输入C、算法正确的程序可以有零个输出D、算法正确的程序对于相同的输入一定有相同的结果17.以下选项中关于程序模块化的叙述错误的是()BA、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序18. 关于C语言的符号常量,以下叙述中正确的是()CA、符号常量的名是标识符,必须大写B、符号常量的名是标识符,必须小写C、符号常量是指用一个符号名来代表一个常量D、符号常量的符号名必须是常量19.关于C语言的变量,以下叙述中错误的是()BA、所谓变量是指在程序运行过程中其值可以被改变的量B、变量所占的存储单元地址可以随时改变C、程序中用到的所有变量都必须先定义后使用D、由三条下划线构成的符号名是合法的变量名20.以下选项中合法的变量名是()CA、5aB、A%C、_10_D、sizeof21.在C语言中,char型数据在内存中的存储形式是( ) DA、补码B、反码C、源码D、ASCII码22.有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( ) 。
1213一维数组的定义,赋值,遍历
printf(“%d\n”,a[1]);
printf(“%d\n”,a[0]);
13
}
从键盘输入5个整数,保存到数组a中;再逆序 输出。
main()
{
int a[5];
scanf(“%d”,&a[0]);
scanf(“%d”,&a[1]);
scanf(“%d”,&a[2]);
scanf(“%d”,&a[3]);
20
课堂练习
– 2. 修改上例:
• 要求输出数组元素中所有5的倍数,怎么做?
21
课堂练习
– 3. 修改上例,要求实现求数组元素中所有下
标为偶数的元素的和怎么做?
22
小结
– 数组的定义、初始化、引用、输入、输出概念、 操作必须掌握
– 数组下标从0开始 – 数组名代表数组首地址,是一个常量 – C语言不允许动态定义数组,即定义数组时数
一维数组元素的查找
例:定义一个一维数组num, 再从键盘 上输入一个整数x,查找数组中是否有元 素的值与x相等。如果有,输出相应的下 标;如果没有,输出“该值在数组中不存 在” 。
26
一维数组元素的查找
#include <stdio.h> main() {
int num[10], x, i, j; for(i=0; i<10; i++)
outputScore(score,10);
//函数调用
}
void outputScore(int a[ ],int length) {
int i=0;
//函数定义
printf("学生成绩如下:\n"); for(i=0;i<length;i++)
711一维数组的定义定义方式类型说明符数组名整型常量
c
12
3
31
a
12
-1
3
b
2
-14 77
-1
76
main( ) { int i,j,k=0,a[8],b[5],c[8]; for(i=0;i<=7;i++) scanf("%d",&a[i]); for(i=0;i<=4;i++) scanf("%d",&b[i]); for(i=0;i<=7;i++) {for(j=0;j<=4;j++) if(a[i]= =b[ j]) break; if(j>4) { c[k]=a[i];k++;} } for(i=0;i<k;i++) printf("%5d",c[i]); printf("\n"); }
第7章
7.1
数 组
一维数组的定义和引用
7.1.1 一维数组的定义 定义方式: 类型说明符 数组名[整型常量表达式]; 例:int a[10]; 说明:①数组名的命名规则和变量名相同,遵循标识 符定名规则。 ②数组名后的常量表达式用[ ]括起来。 ③常量表达式表示元素的个数,即数组长度。 例:a[10]表示数组a中包括10个元素,分别为 a[0]~a[9]
a[0] a[2] a[4] a[6] a[8] a[1] a[3] a[5] a[7] a[9]
④常量表达式中可以包括常量和符号常量,不能包含 变量,即定义时必须确定数组的大小。
7.1.2 一维数组元素的引用 int n; 数组必须先定义,然后使用。C语言规定只能逐个 scanf("%d",&n); 引用数组元素而不能一次引用整个数组。 a[n]; 引用形式为: int 数组名 [下标]
一维数组的定义和引用
• unsigned int *p; p=sing; while (*p) { sound(*p++); delay(*p++);
nosound(); } }
§7.2 二维数组的定义和引用
• 7.2.1 二维数组的定义与引用
类型说明符 数组名[常量表达式][常量表
达式]
说明:元素的排列顺序是
按行存放的,这在数组初始化和指针表
9 8 8 8 8 8 8 5 55 5
8 9 5 5 5 5 5 8 44 4
5 5 9 4 4 4 4 4 82 2
4 4 4 9 2 2 2 2 28 0
2 2 2 2 9 0 0 0 00 8
0 0 0 0 09
输入n个数给a[1]到a[n] For j=1 to n-1
For i=1 to n-j
• 表示形式: 数组名[下标] • 下标可以是整型常量或表达式。例如: • a[0]=a[5]+a[7]-a[2*3]
• EG: main( ) {
• int i, a[10] ; • for (i=0;i<=9;i++) • a[i]=i ; • for (i=9;i>=0;i– –) • printf(“%d”,a[i]); •} • 运行结果: • 9876543210
1 000 5600 0000
•int a[3[4]={{1},{},{6}};
1000 0000 6000
4.若对全部元素赋值,第一维的长度可省略, 但第二维的长度不可省.
static int a[2][2]={1,2,3,4}; 等同于 static int a[ ][2]={1,2,3,4};
一维数组(C语言)
字符数组
(4)利用库函数strcpy给字符数组赋值。
形式:strcpy(字符数组1,字符数组2); 作用是将字符数组2的内容复制到字符数组1中,复制时将 字符数组2后面的字符串结束标志也复制到字符数组1中。 例:char str1[30],str2[30]; strcpy(str1,”how are you”); /*将”how are you.”存放到str1*/
字符数组
(3)给字符数组元素逐个赋初值。 char str[9]; str[0]=‘H’;str[1]=‘e’;str[2]=‘\0’;
应注意:用字符数组来存放字符串时,若是逐个字符赋 值给数组元素,要在最后一个字符之后加上字符串结束 标志‘\0’。 用逐个字符给字符数组赋初值,对字符串的存取不太方 便。
int a[5]={1,2,3,4,5};
字符数组
字符数组概念的引入 C语言中没有字符串类型的变量,字符串
的存储有两种方式。
将字符串存储在一个字符数组中(本节内容)
字符数组
1、字符数组的定义 字符数组的每个元素存放一个字符。
定义字符数组的一般格式如: char 数组名[整型常量表达式],… 如:char a[10]; 该语句(1)定义了一个名为a的字符数组。
strcpy(str1,str2); /*将str2存放到str1中*/
字符数组
注意:
1、不能用赋值语句把字符串整体赋给字符数组。 s1=“hello”;(错误)
2、使用strcpy函数给字符数组赋值时,字符数组1必须定 义得足够大,以便可以容纳得下被复制的字符串。
字符数组
5、字符数组的输入输出。
for (k=0;k<10;k++) scanf(“%d”,&a[k]); b=a; /*error*/ for(k=0;k<10;k++) b[k]=a[k];
C语言一维数组的定义和引用数组
printf("a[%d][%d]=%f\n",i,j,a[i][j]);}
}
3.多维数组的定义和在内存中的存放顺 序:
如 int a[2][3][4]; 共24个元素,在内存中排列的顺序是 :第三维变化最快,然后是第二维,第 一维最慢。
7.2.2 二维数组的引用 形式:数组名[下标][下标] 其中:下标是整型或字符型的常量,变量或表 达式。(定义时不能使用变量)
运行:input 6 numbers: 输入:9 8 5 4 2 0 输出:0 2 4 5 8 9
7.2 二维数组的定义和引用 7.2.1 二维数组的定义 1.一般形式:类型说明符 数组名[常量表达式][常量 表达式]
如:float a[3][4] 定义数组a具有三行四列 在C中,可将二维数组看着是特殊形式的一维数组。
int a[5] a[0], a[1], a[2], a[3], a[4] 5个元素 ,下标从0 ~ 4
注意:
在Turbo C 中超过定义的数组下标元素是可以引用的,系 统不作检查。
例T7-0-1.c
main( )
{int i, a[5];
for(i=0;i<=4;i++)
printf (a[%d]=%d\ n,i,a[i]=i+1);
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; r=i;c=j}
1 2 34 a= 9 8 7 5
广技师C语言复习题5.-练习(数组)(有标准答案)
一、选择题1. 以下对一维整型数组a的正确说明是。
A.int a(10);B.intn=10, a[n];C.int n;scanf(“%d",&n);int a[n];D.#defineSIZE10int a[SIZE]2. 若有说明:int a[10];,则对a数组元素的正确引用是. A.a[10] B.a[3。
5] C.a(5) D.a[10-10]4. 以下对二维数组a的正确说明是。
A.int a[3][]; B.float a(3,4);C.double a[][4];D.floata(3)(4);5.若有说明:int a[3][4];则对a数组元素的正确引用是。
A.a[3][4] B.a[1,3]C.a[1+1][0]D.a(2)(1) 6. 以下能对二维数组a进行正确初始化的语句是。
A.inta[2][ ]={{1,0, 1}, {5, 2, 3}};B.int a[ ][3]={{1,2,3},{4,5,6}};C.int a[2][4]={{1,2,3},{4,5},{6}};D.int a[][3]={{1,0,1,0},{ },{1,1}};7. 下面程序段(每行代码前面的数字表示行号)。
1 inta[3]={3*0};2int i3 for(i=0;i〈3; i++) scanf(“%d”,&a[i]);4for(i=1;i〈3;i++) a[0]=a[0]+a[i];5 printf(“%d\n”,a[0]);A.第1行有错误 B.第5行有错误C.第3行有错误D.没有错误8.若有定义floatx[4]={1.3, 2.4,5。
6},y=6;则错误的语句是。
A.y=x[3]; B.y=x+1; C.y=x[2]+1D.x[0]=y; 9。
定义如下变量和数组:int k;int a[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是。
c语言期末试卷B卷(附答案)
c语言期末试卷B卷(附答案)一、单项选择题(每小题2分,共30分)1.下列关于C语言用户标识符的叙述中正确的是(B)(A)用户标识符中可以出现在下划线和中划线(减号)(B)用户标识符中不可以出现中划线,但可以出现下划线(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头(D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头2.在C语言中,合法的字符常量是(A)(A)’\\087’(B)’\\某43’(C)’abe’(D)”\\0”3.某、y、z被定义为int型变量,若从键盘给某、y、z输入数据,正确的输入语句是(B)(A)INPUT某、y、z;B)canf(“%d%d%d”,&某,&y,(C)canf(“%d%d%d”,某,y,z);(D)(canf(“%d%d%d”,&某,y,&z);4.若整型变量a、b、c、d中的值依次为:1、4、3、2。
则条件表达式a(A)1(B)2(C)3(D)45.设有:inta=3,b=2,c=6,d=4,m=2,n=3;执行((m=a>b)||(n=c>d))后n的值为(B)(A)0(B)1(C)2(D)36.若a为int类型,且其值为3,则执行完a某=a+=a某a;后,a的值是(D)(A)–3(B)9(C)–12(D)1447.设inta=12,b=8;则a/b的结果为:(B)(A)1.5(B)1(C)3/2(D)28.若定义:inta=511,某b=&a;则printf(\的输出结果为(D)(A)无确定值(B)a的地址(C)512(D)5119.在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)(A)整型常量(B)整型表达式(C)整型常量或整型表达式(D)任何类型的表达式10.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定11.数字字符0的ASCII值为48,若有以下程序main(){chara='1',b='2';printf(\printf(\}程序运行后的输出结果是(A)(A)3,2(B)50,2(C)2,2(D)2,5012.以下函数值的类型是(D)fun(float某){floaty;y=3某某-4;returny;}(A)int(B)不确定(C)void(D)float13.以下能正确定义一维数组的选项是(B)(A)inta[5]={0,1,2,3,4,5};(B)inta[]={0,1,2,3,4,5};(C)chara={' A','B','C'};(D)inta[5]=\14.有以下程序,结果为:(D)main(){inta[5]={1,2,3,4,5};int某pa=&a[1];printf(“%d”,pa[2]);}(A)3(B)4(C)5(D)215.假设tructtudent{intnum;floatcore;}tu1;则下列赋值语句中正确的是(C)(A)tudent.core=85;(B)tudent={1001,95};(C)tu1.num=1001;(D)tu1 ->num=1001;二、判断题(对的打“√”,错的打“某”,每小题1分,共10分)1.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
C语言程序设计第七章 利用数组处理数据
一维数组的存储: 计算机中用连续的内存单元存放各个元素。 如:int a[5];其内存存储为:
保存数组所需内存量与数组元素的基本类型和数组大小有关。 总字节数=sizeof(基本类型)*数组元素个数 如上例:= sizeof(int)*5 第i个元素的地址=第1个元素的地址+i*sizeof(基本类型)
类型说明符 数组名[常量表达式]={值,值……值}; 其中在{ }中的各数据值即为各元素的初值,各值之间用逗号 间隔。 例如:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;
整理课件
C语言对数组的初始化赋值还有以下几点规定:
有 5个元素。但是其下标从0开始计算。因此5个元素分别为
a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数, 但是可以是符
号常数或常量表达式。
例如:
#define FD 5
main( )
{ int a[3+2],b[7+FD];
……
}是合法的。
但是下述说明方式是错误的。
for (i=0; i<=9;i++) a[i]=i;
for(i=9;i>=0; i--) printf("%d ",a[i]);
printf("\n"); return 0; }
使a[0]~a[9]的值为0~9 先输出a[9],最后输出a[0]
整理课件
一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。 初始化赋值的一般形式为:
for(i=0;i<1;i++) if (a[i]>a[i+1]) { ……}
《C语言程序设计基础与实训教程》第7章:数组
/webnew/
7.1.4 一维数组的应用举例
例7.4 编写程序,定义一个含有20个元素的数组,并完成以下操作。 (1)调用C库函数中的随机函数给所有的元素赋以10~50之间的随机数; (2)输出数组元素中的值; (3)按顺序对每隔四个数求一个和数,保存和数并输出。 分析:调用随机函数的方法如下:在程序开头包含头文件stdio.h,通 过函数random(x)得到一个0到x之间的随机整数,因此,可以通过10+ random(40)产生一个10~50之间的随机数。 题目要求按顺序对每隔四个数求一个和数,20个元素将得到5个和数。 20 5 和数要求保存并输出,所以,必须再定义一个一维数组用于和数的保存。 程序 运行结果如图:
/webnew/
7.1.1 一维数组的定义
1、一维数组的定义格式 C语言中,定义一维数组的一般形式为: 类型说明 数组名 [常量表达式]; 其中,类型说明中的类型是指数组元素的数据类型,它们可以是基本类型, 如int 、float等,也可以是构造类型。数组名 [常量表达式]为数组说明符,数 组名是数组的标识符,其命名遵循标识符的命名规则。常量表达式表示该数 组中元素的个数,即数组容量或数组长度,可以是整型常量、字符常量以及 有确定值的常量表达式,其值必须是正整数。 例如:int a[10]; /*定义一个名为a的一维数组,数组中有10个数组元素*/ float b[‘A’],c[3*5]; int a1[MAX],b1,c1; /*MAX为一符号常量*/
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。
C语言C++07-1 一维数组
思考
2013-7-30
33
改进的方向
1. 数据的类型改为数组; 2. 数据的输入改为通过for循环初始化; 3. 数据的比较通过for循环实现。是单循 环实现还是双循环实现呢?
2013-7-30
34
分 析:
共有4个数, i为循环的次数, j为比较的次数; i=1 j=3 i=2 j=2 i=3 j=1
2013-7-30 31
main() 将任意五个数从小到大排序。 { int a,b,c,d,e,t; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} if(c>d) { t=c;c=d;d=t;} if(d>e) { t=d;d=e;e=t;} printf("no 1:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} if(c>d) { t=c;c=d;d=t;} printf("no 2:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} if(b>c) { t=b;b=c;c=t;} printf("no 3:%d,%d,%d,%d,%d\n",a,b,c,d,e); if(a>b) { t=a;a=b;b=t;} printf("no 4:%d,%d,%d,%d,%d\n",a,b,c,d,e); 2013-7-30 32 getch();}
第七章数组1、一维数组1、整形数组的说明例如inta[10]
例 int i=15; 例 int data[5]; int data[i]; (不能用变量定义数组维数) data[5]=10; //C语言对数组不作越界检查,使用时要 注意
一维数组的引用
数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式 例 int a[10]; printf(“%d”,a); ( ) 必须 for(j=0;j<10;j++) printf(“%d\t”,a[j]);
()
3
一维数组的初始化
初始化方式
int a[5]={1,2,3,4,5}; 在定义数组时,为数组元素赋初值 等价于:a[0]=1; (在编译阶段使之得到初值) a[1]=2; a[2]=3; a[3]=4; a[4]=5;
说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值 当全部数组元素赋初值时,可不指定数组长度
23
4、常用的字符串处理函数
1、 include <stdio.h> char *gets(char s[ ]); 功能:从键盘上读一行字符串,并以’\0’取代换行符。 注意:与scanf( )的区别? gets()可以读取空字符 #include <stdio.h> main( ) { char string[80]; printf(“请输入一个字符串:"); gets(string); printf(“您输入的字符串是: %s\n", string); }
元素个数=行数*列数
数组元素的存放顺序 例 int a[3][4]; float b[2][5]; 原因:内存是一维的 int c[2][3][4]; 二维数组:按行序优先 int a[3,4]; ( ) 多维数组:最右下标变化最快
C语言程序设计期末试题A及答案
C语言程序设计期末试题A及答案C语言程序设计教程期末考试试卷(A卷)(考试时间90分钟,满分100分)一、选择题(本大题共20题,每题2 分,共40分)下面各题A.B.C.D四个选项中,只有一个选项是正确的,请将正确选项涂抹在答题卡相应的位置上,答在试卷上不得分。
1. 以下不是C语言的特点的是( )A. C语言简洁、紧凑B. 能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作D. C语言移植性好2. 以下不正确的C语言标识符是( )A. ABCB. abcC. a_bcD. ab.c3. 一个C语言程序是由( )A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成4. 一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A. 有零个或多个输入B. 有零个或多个输出C. 有穷性D. 可行性5. 设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( )A. intB. floatC. doubleD. 不确定6. 在C语言中,char型数据在内存中的存储形式是( )A. 补码B.反码C.源码D.ASCII码7. 有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。
#includemain(){int x;float y;scanf("%3d%f",&x,&y);}A. 12345B. 123C. 45D. 3458. 若有以下定义int a,b; float x,则正确的赋值语句是( )A. a=1,b=2B. b++;C. a=b=5D. b=int(x);9. 以下程序的执行结果是( )#include{int i=10,j=10;printf("%d,%d\n",++i,j--);}A. 11,10B. 9,10C. 11,9D. 10,910. 已知字母A的ASCII码是65,以下程序的执行结果是( )#includemain(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A. A,YB. 65,65C. 65,90D. 65,8911. 下列运算符中优先级最高的是( )A. <B. 十C. %D. !=12. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。