C语言程序设计第七章数组
C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组
第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。
当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。
【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。
解答:#include<stdio。
h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。
C语言板书7数组
7
4. 可在定义时对 静态数组 和 外部存储(全局)数组 赋初值, 方法如下: 赋初值 方法如下 对全部元素赋初值 int a[10] ={10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; 对部分元素赋初值 int a[10]={0,1,2,3,4}; 如此,只有前 个元素初值确定,后 个元素由系 只有前5个元素初值确定 如此 只有前 个元素初值确定 后5个元素由系 统设置. 统设置.
10
7.1.3 一维数组的应用 数列. 例:求Fibonacci 数列. 定义数组,并赋初值 定义数组 并赋初值 int f [20]={1,1}; 用循环for实现 用循环 实现: 实现 for (i=2; i<20; i++) f [i]=f [i –2]+f [i –1]; 注意:下标越界问题 注意 下标越界问题:i =2且i<20 下标越界问题 且
5
§7.1 一维数组
7.1.1 一维数组的定义 形式: 数组名[ 形式 类型说明符 数组名 常量表达式]; 例: int a [20]; float x [100]; 1. 数组名的确定方法同变量名. 数组名的确定方法同变量名. 2. C语言用方括号 ]表示数组元数个数. 语言用方括号[ 表示数组元数个数. 语言用方括号 表示数组元数个数
29
二维数组一般用二重循环 有一个3× 的矩阵 的矩阵, 例2. 有一个 ×4的矩阵,要求编程序求出其中值 最大的那个元素的值,以及所在的行号和列号. 最大的那个元素的值,以及所在的行号和列号. 先用N- 流程图表示算法 先用 -S流程图表示算法
1
for循环
表达式1只执行一次 表达式3的执行时间在循环体最后,在循 环中每次都要执行. 正常循环结束时,循环变量的值为最后 一次进入循环的值加或减步长. 正常非循环结束时,循环变量的值为最 后跳出循环时的值.
《C语言程序设计基础与实训教程》第7章:数组
/webnew/
7.1.4 一维数组的应用举例
例7.5 将数组中的数按颠倒的顺序重新存放。要求,在操 作时只能借助一个临时存储单元而不能另外开辟数组。 分析:题目要求是按颠倒的顺序重新存放数据,而不是按 逆序输出。 可以使用两个变量i和j,i和j的初值分别为0和9,将a[i] 与a[j]对调,然后i++,j--,接着再将a[i]与a[j]对调。如些 重复操作,直到i>=j时,对调完成。 程序
分析:该数组元素的值是有规律的序列, ( 从 开始算起 开始算起) 分析 : 该数组元素的值是有规律的序列 , 第 i(i从0开始算起) 个 元素的值为: 元素的值为:10+2*i。 。 输出该数组时,由于该数组有30个元素,在一行中输出不太美观, 输出该数组时,由于该数组有 个元素,在一行中输出不太美观, 个元素 所以,这里我们选择每行输出6个元素。 所以,这里我们选择每行输出 个元素。 个元素
/webnew/
7.1.3 一维数组元素的引用
2.一维数组的输入与输出 一维数组的输入与输出 如何给数组元素赋值以及如何将数组元素的值输出是数 组最基本的操作。下面将讨论一维数组元素的输入与输出。 例7.1 定义一个五个元素的字符型数组,通过键盘给每 个元素赋值,并以相反的顺序的输出。 程序1 程序2 从上面的例子可以看出,一个数组中往往往包含较多的 数组元素,相同的赋值或输出操作将被重复多次进行,所以, 一维数组元素的输入与输出一般通过一重循环来实现。
/webnew/
7.1.3 一维数组元素的引用
注意: (1)数组元素的引用方式与数组说明符的形式非常相近,都是 “数组名[表达式]”形式,但两者的意义完全不同。 出现的位置不同。定义数组时,“数组名[表达式]”出现在 定义语句中,表示的是定义了一个名为“数组名”的数组,表达式的值 表示该数组中所包含元素的个数。作为数组元素的引用方式时,“数组 名[表达式]”出现在其它执行语句中,表示是数组中的下标为“表达式” 值的那个元素。 表达式的格式不同。定义数组时,“表达式”必须为常量表 达式。作为数组元素的引用方式时,表达式可以变量、常量或函数构成 的合法C表达式。 (2)在C语言中,起始下标规定为0,最大值应为:数组长度-1。 如果发生了下标越界的现象,可能破坏了其它存储单元的数据,甚至破 坏程序代码。 (3)下标必须是整型表达式,若为小数,则自动取整。如a[2.6] 系统自动默认为a[2]。
c语言程序设计电子书
c语言程序设计电子书C语言程序设计是一门基础且广泛应用的编程语言课程,它以其高效、灵活和强大的功能而著称。
C语言由丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初期于贝尔实验室开发,至今仍是许多系统软件和应用软件的首选语言。
本电子书将从C语言的基本概念、语法结构、数据类型、控制结构、函数、数组、指针、结构体、文件操作等方面进行详细介绍。
第一章:C语言概述C语言是一种过程式编程语言,它支持结构化编程。
C语言的设计哲学是提供一种通用、高效、易于使用的语言,同时保持对硬件的控制。
C 语言广泛应用于操作系统、嵌入式系统、高性能计算等领域。
第二章:C语言环境和基本语法在开始编写C程序之前,需要配置C语言开发环境,如GCC编译器。
C 程序的基本结构包括预处理指令、函数、变量声明和语句。
程序从`main`函数开始执行。
第三章:数据类型和变量C语言提供了多种数据类型,包括整型、浮点型、字符型等。
变量是程序中存储数据的容器,需要先声明后使用。
C语言是静态类型语言,每种变量在使用前必须指定数据类型。
第四章:运算符和表达式C语言提供了丰富的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。
表达式是由变量、常量和运算符组成的组合,用于执行计算。
第五章:控制结构控制结构是程序流程控制的基本构件。
C语言提供了三种基本的控制结构:顺序结构、选择结构(if语句、switch语句)和循环结构(for 循环、while循环、do-while循环)。
第六章:函数函数是C语言中实现代码复用的重要手段。
函数允许将代码组织成独立的块,每个块可以执行特定的任务。
C语言支持函数的定义、声明、调用和递归。
第七章:数组数组是相同数据类型元素的集合。
C语言支持一维数组和多维数组。
数组在内存中是连续存储的,这使得数组操作高效但也需要小心越界问题。
第八章:指针指针是C语言的核心特性之一。
指针变量存储的是另一个变量的内存地址。
c语言程序设计第7章(谭浩强)PPT版本
如 int a[5]; static int a[5]={6,2,3}; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()
例
38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
程序举例
#include <stdio.h> #define SIZE 10 例 读10个整数存入数组,找出其中最大值和最小值 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) 步骤: { printf("%d:",i+1); 1. 输入:for循环输入10个整数 scanf("%d",&x[i]); 2. 处理: } (a) 先令max=min=x[0] max=min=x[0]; (b) 依次用x[i]和max,min比较(循环) for(i=1;i<SIZE;i++) 若max<x[i],令max=x[i]{ if(max<x[i]) max=x[i]; 若min>x[i],令min=x[i] if(min>x[i]) min=x[i]; 3. 输出:max和min } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
C语言程序设计 重庆大学课件 第07章 字符串及其应用
7.1.1 字符串表示方法
a b c d \0
a b c d \0 sPtr a) 指针变量指向字符串常量 a b c d \0 1 2 3 4 \0
sPtr
b) 指针变量改变原指向指向另一字符串
图7.1 指针变量与字符串数据对象的关系示ห้องสมุดไป่ตู้图
7.1.1 字符串表示方法
字符数组的初始化 使用单个字符常量 字符数组与字符指针的区别
标准字符串连接函数strcat
函数原型:
char *strcat(char *strDestination, char*strSource);
函数调用:strcat(str1,str2);
功能:将字符串str2连接到字符串str1的后面生成新 的字符串str1,函数返回字符串str1。字符数组长度应 足够大(大于strlen(str1)+strlen(str2))。
7.2.2 字符串的复制
t t s1 指针方式实现字符串拷贝 char *strcopy(char *s,char *t) a 保存s的首地址到p { char *p=s; while((*s++=*t++)!='\0') ; *t的’\0‟先赋给*s a return p; 再判断是否等于’\0‟ } s2 t
字符串及其应用
C语言的字符串表示方法 字符串的常用处理方法及标准库函数
字符串的常用处理方法及标准库函数
字符串中有效字符的统计 字符串的复制 字符串的连接 字符串中字符的查找 字符串中字符的插入和删除 字符串的比较和子串的查找 字符串中子串的插入和删除 字符串与二维字符数组
C语言程序设计_课件_第七章(适于清华谭浩强版)
注意:
(1) return(表达式); 和return 表达式;都 是正确的。 (2) 带返回值的函数只能返回一个值。 (3) 在函数定义时,允许使用多个return语句, 但是应尽量在末尾使用一个return语句。 (4) return语句中的表达式与函数的返回值类 型不匹配时,以函数定义时的返回类型为准。
问题的提出 函数基础 函数的定义 函数说明 函数调用 参数传递 程序举例 递归调用 变量的存储类别
7.1 问题的提出
例6.20它可以解决的问题有: ①输入若干个学生的姓名、某课程的期中 和期末成绩,并计算每个学生的总评成绩; ②计算总评成绩的分数段情况; ③输出所有学生的姓名、期中、期末和总 评成绩; ④查询某个学生的总评成绩。
函数调用时需要传递数据。调用函数要将 实参的值传送给被调用函数的形参。 若函数定义首部是 double power(double x,int n) /*函数定义 */ 调 用 形 式 是 可 以 是 power(y,m) , 也 可 以 是 power(3.0,5)。 其中,x和n是形式参数,y和m是实际参数,3.0 和可以是一个变量 名,因为变量名也构成一个表达式,形式参数只 能是变量名。当实际参数是变量名时,它与形参 的名称既可以相同,也可以不同,只是要注意, 在函数定义内部应该使用形参的名称。 (2) 实际参数与形式参数的参数个数、数据类型 和顺序都应该一致,如果数据类型不一致,系统 将按照自动转换规则进行转换。
7.3 函数的定义
7.3.1 函数的定义形式 在C语言中函数定义的形式有两种。
第一种:
函数返回值的数据类型说明 函数名称(带有类型说明的参数表)
{
函数内部数据说明; 语句;
}
第二种:
《C语言程序设计》 课后习题答案 高等教育出版社
《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。
其特点包括语法简洁、执行效率高、可移植性强等。
第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。
整型可以进一步细分为有符号整型和无符号整型。
第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。
这些运算符用于执行各种数学和逻辑操作。
第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。
if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。
第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。
函数定义包括函数返回类型、函数名、参数列表和函数体等部分。
第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。
C语言中可以使用数组来存储和操作大量数据。
第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。
通过指针,可以直接访问和修改对应内存地址中的数据。
第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。
C语言通过字符数组来表示和操作字符串。
第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。
第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。
C语言提供了一系列函数来实现文件的读写操作。
总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。
希望本文对读者有所帮助。
《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案
习题七一、单项选择题1、以下程序的输出结果是()。
main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i; /*a: 0 1 2 3 4 5 6 7 8 9 */for(i=0;i<3;i++)p[i]=a[i*(i+1)]; /*p:0 2 6 */for(i=0;i<3;i++)k+=p[i]*2; /* k=5+4+12=21 */printf(“%d\n”,k);}A)20 B)21 C)22 D)232、以下正确的数组定义语句是()。
A)int y[1][4]={1,2,3,4,5}; B)float x[3][ ]={{1},{2},{3}}; C)long s[2][3]={{1},{1,2},{1,2,3}}; D)double t[ ][3]={0};3、以下程序段的输出结果是()。
main(){int m[3][3]={{1},{2},{3}}; m 1 0 0 n 1 2 3int n[3][3]={1,2,3}; 2 0 0 0 0 0printf(“%d\n”,m[1][0]+n[0][0]); 3 0 0 0 0 0printf(“%d\n”,m[0][1]+n[1][0]);}A)0 B)2 C)3 D)10 3 0 24、以下程序的输出结果是()。
main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 1 2 3for(i=0;i<3;i++)printf(“%d,”x[i][2-i]); 4 5 6} 7 8 9A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,95、对以下程序从第一列开始输入数据:2473↙,程序的输出结果是()。
#include “stdio.h”main(){char c;while((c=getchar())!=’\n’){switch (c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);}}}A)668977 B}668966 C}66778777 D)66887666、不能正确为字符数组输入数据的是( )。
C语言-7数组sc
下标越界是大忌! ◦ 定义:int a[10]; 那么数组元素为a[0] ~a[9] ◦ 使用大于最大下标的下标,将访问数组以外的空间。那里的数 据是未知的,系统不做下标越界检查,但可能带来严重后果
注意 数组下标从0开始
sizeof可以用来获得数组大小
C语言程序设计——算法的描述
14
SCS-SWPU
C语言程序设计——算法的描述
输出方法: 输出下标为i的数组元素: printf("%d",a[i]); 输出整个数组元素: for(i=0;i<10;i++) printf("%d",a[i]);
17
SCS-SWPU
以下数组操作格式是否正确??
1、 int n; scanf(“%d″,&n); int a[n]; 2、#define n 5 int a[n]; 3、 float a[0]; 4、 int b(2); 5、int b[4]={0};
6.1 6.2 6.3
一维数组 二维数组 字符数组与字符串
C语言程序设计——第一章 C语言概述
2
SCS-SWPU
float s; • 存放一个学生的学习成绩 • 存放一个班100个学生的成绩呢?
搜索已有知识结构:
C语言程序设计——算法的描述
3
SCS-SWPU
函数:
控制结构: 顺序 基础:
数据类型
C语言程序设计——算法的描述
25
SCS-SWPU
程序流程图如下:
0
C语言程序设计——算法的描述
26
SCS-SWPU
#include <stdio.h> #define N 6 void main( ) { int a[N],temp,i,j; for(i=0;i<N;i++) scanf("%d",&a[i]); for(j=1;j<=N-1;j++) for(i=0;i<=N-j-1;i++) if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0;i<N;i++) printf("%4d",a[i]); printf("\n"); }
C程序设计7-2
(3)如果提供的初值个数与预定的数组长度相同, 在定义时可以省略数组长度,系统会自动根据初值 个数确定数组长度。 c[]={′I′, []={′I′ ′,′a′,′m′, char c[]={′I′,′ ′,′a′,′m′, ′,′h′,′a′,′p′,′p′,′y′};数组 数组c ′ ′,′h′,′a′,′p′,′p′,′y′};数组c 的长度自动定为10 10。 的长度自动定为10。
引用字符数组中的一个元素,得到一个字符。 例7.6 输出一个字符串。程序如下: 输出一个字符串。程序如下: #include <stdio.h> void main() { char c[10]={’I’, ’ ’,’a’, ’m’, ’ ’, ’a’, ’ ’, ’b’, ’o’, ’y’}; int i; for(i=0;i<10;i++) printf(″\n″); \ }
3.部分赋值——也可以只对某几行元素赋初值,见图。 如:int a[3][4]={{1},{5,6}}; int a[ ][4 ={{1},{5,
1 0 5 6 0 0
0 0 0
0 0 0
4.省略第一维长度——如果对全部元素都赋初值, 则定义数组时对第一维的长度可以不指定,但第二 维的长度不能省。
例如: 例如: int a[3][4]={1,2,3,4,5,6,7,8, 9,10,11,12}; 等价于: int a[][4]={1,2,3,4,5,6,7,8, 9,10,11,12}; 在定义时也可以只对部分元素赋初值而省略第一维的 长度,但应分行赋初值。 例如: a[][ [][4 ={{0, 3},{},{0, 例如:int a[][4]={{0,0,3},{},{0,10}}; 0 0 3 0 0 0 0 0 0 10 0 0
c语言 第7章 数组(4)
void sort( int b[],int k) {int i,j,t,flag; for (j=0;j<k-1;j++) {flag=0; for (i=0;i<k-j-1;i++) if (b[i]>b[i+1]) { t=b[i]; b[i]=b[i+1]; b[i+1]=t; flag=1; } if (flag==0) break; } }
上一页 下一页
for(i=0;i<26;i++) if(c[i]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'A',c[i]); } printf("\n"); for(i=0;i<26;i++) if(c[i+26]) {if(m%8==0)putchar('\n');m++; printf("%c: %-d ",i+'a',c[i+26]); } }
第四讲:
第 七 章 数组
7.1 7.2 7.3 7.4 7.5 7.6 一维数组 二维数组 数组的应用 字符数组与字符串 数组作为函数的参数 程序举例
7.5 数组作为函数的参数
数组作为函数参数主要有两种情况: 数组元素作为函数的实参:这种情况与普通变量 作实参一样,是将数组元素的值传给形参。形 参的变化不会影响实参数组元素,我们称这种 参数传递方式为“值传递”。 数组名作实参:要求函数形参是相同类型的数 组或指针,这种方式是把实参数组的起始地址 传给形参数组,形参数组的改变也是对实参数 组的改变,称这种参数传递方式为“地址传 递”。
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.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
∶
∶
main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
或
main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
C语言程序设计教程 第七章 课后习题参考答案
}
}
void print(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
void sum(int a[][N],int b[][N],int m,int n)
print(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void print(int a[],int n)
{
int i;
printf("原:\n");
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<n;i++)
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return 0;
}
void input(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
C语言程序设计实验七 数组的应用
‘\n’,
‘/’,
‘*’,
‘\n’,
/* (213 lines deleted)*/
0
};
/* The string is a representation of the body of this program from ‘0’to the end */
printf(“%d”,num[i]);
}
3、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:
}
(3)#include <stdio.h>
main()
{int a[2+2*4];
}
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
#include <stdio.h>
main( )
{int num[5]={1,2,3,4,5};
int i;
for(i=0;i<=5;i++)
main( )
{ int i;
printf(“char \ts[]={\” };
for (i=0;s[i];i++)
中国矿业大学(北京)《C语言程序设计》课件第7章指针与数组
a[1] a[2] a[3]
mmaainn(()) {{iinntt aa[[1100] ],,ii;;
ppuuttss((““pplleeaassee iinnppuutt %%dd ssccoorree::””,,N1)0;);
ffoorr ((ii==00;;i<i1<01;0i;++i+) +) ssccaannff(“(%"%d”d,"a?,+i&a[)i;]);
main()
{
int i = 0;
printf("%c%s\n",*a, b + 1);
while (putchar (*(a + i)))
{ i++;
Program
}
printf("i = %d\n",i);
PROGRAM
while ( -- i)
{ putchar (*(b + i));
i=7
} printf("\n%s\n", &b[3]);
1,2,3,3,2,3,4,4
20
读程序-3
#include <stdio.h>
char b[] = "program";
char *a = “PROGRAM”;
/*定义一个指针变量指向字符串,与上边定义的区别是:前者是先申请内存空间, 后存入字符串,而后者是先将字符串存入在内存的某个地方,然后再用a指向 该字符串所在内存的开始位置。另外。b是常量,a是变量*/
–指针变量指向哪儿?
–所指向的变量里存储的数据是多少?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明 定义数组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:
2020年8月13日星期四
m{ ain(读) 入10个整数,找出m1其2ax中3=4最105N大,6-mS值7流in、8程=9最1图1,小0av值e=、5平.5均00值00:0
int a[用N]f,oi,r循ma环x,读m入in,1s0u个m;整数到f数loa组t aa中ve;
数组元素引用格式:
例 int a[10];数组名 [下标表达式] 其中…:…下标/*表对达a式[0可] ~以a是[整9]型赋常值量*/或整型表达式
pforrin(tif=(0";%i<d=",9a;)i;++) printf("%d", a[i]);
一维数组元素的引用
分析该程序的运行结果
main() {
printf("Enter %d integers:\n", N);
for
i=0 to 9 读入数据a[i]
for(i=令0最; i<大1值0;mi+a+x和) 最小sc值anmf(in"% 以d及"m,总&a和xa=[sim]u)imn; =为suam[0=]a[0]
max = min = sum = a[0];
for(i=0; i<20; i++)
s读ca入nf2("0% hN个oac字tf"o8,u符&nc在d[!i数]);组c中
printf(读"P入lea要se查in询pu的t t字he符chcahractor what you want to search:\n");
scanf ("%c", &ch);
1次
结 果 13 27 30 38 49 65 76 97
一#de维fine数N 组10举例
2020年8月13日星期四
m{ aiinn用t()a冒[N泡], 法i, j对, t;n个数进行排序:
printfn("个In数pu比t %较d大nu小m共be进rs:行\n了", nN)-;1趟比较
for(i=s用c0a;变ni<f(量="%Ni来d-1"表;,&i+示a[+i趟]));,则1<=i<=n-1
如 int a[3]; printf("%d,%d,%d",a[0], a[1], a[2]);
0, 64, 3117
Error … : Too many initializers in function main
若所赋初值数多于定义的数组长度时,系统报错
如
int a[3]={1, 2, 3, 4, 5};
3388 441993 1144233997 2244377990 334009 65 76 97
4次
第5趟
331883 1133233887 223377880 33080 49 65 76 97
3次
第6趟
1133 2277 3300 38 49 65 76 97
2次
第7趟 1133 2277 30 38 49 65 76 97
for(i=在1第; i<趟=比N较-1中; i+,+共) 比较了n-i次
f{用or变(j=量1ijf;来(ja<表[=j示-N1第-]i>;ia趟j+[j比+]))较的次数,则1<=j<=n-i 每次比{较的是ta=[aj-[1j-]1和];a[j] 输入N 个数给a[0] 到 a[N-1]
4 a[4]
5 a[5]
注意:不能使 编译时分用配a[内6存] ,并且是连续的
内存字节数= 数组元素个数*sizeof(元素数据类型)
到a[5]结束
一维数组的定义
例 int i=15;
int a[i];
不能使用变量定义数组元素 只能使用整型常量
#define SIZE 10 main() {
P int a[SIZE], b[10];
数组类型说数明组符a共有数6组个名元[素常量表达式];
数例组元in素t 的a[[类6]]型:; 下标运算符 不能用(表) 示元素个数
单目运算符
只能是整型常量
a
0优先级a[(01]) 左结数合组元素从也a[表0示]开数始组长度
1 a[1]
数组名表示该2数组所a占[2的] 内 址常存量单元的首3地址,a[是3地]
一维数组举例
2020年8月13日星期四
所有计算过的中间值都无法
可以取出数组中的任意
main()用数组求Fibonacci 数列的前m4a0i再n个(次)数使:用,剩下的只有最后
{
一个元素f[i]再次使用
int Fi;1 = 1 (n=1)
int f[40]={1,1};
F2 = 1 (n=2)
for(i=2; i<40; i++)
for(i=用1f;oi<r循10环; ,i+实+)现当i从1~9时:
{ if若(aa[[ii]]>大m于axm)axm,amx=axa[=i]a;[i]
if (a[i]<min) min=a[i];
s若uma[=i]小su于mm+ina[,i]m; in=a[i]
for i=1 to 9
max<a[i]
} 若已经检查到c[19]且c[19]!=ch,则输出“未找到”
}
一维数组举例
2020年8月13日星期四
用冒泡法对n个数进行排序:
思路:相邻的两个数比较,将大的调到后头 过程:
比较第一个数和第二个数,把较大的数放后面; 然后比较第二个数与第三个数,仍把较大的数放后面; 依次类推,直至第n-1个数和第n个数比较完为止 —— 结果最大的数被安置在最后的位置上, 这就是第一趟冒泡排序。 对前n-1个数进行第二趟冒泡排序 结果使次大的数被安置在第n-1个元素位置上 重复上述过程,共经过n-1趟冒泡排序后,排序结束
如 int a[5]={1, 2, 3, 4, 5};
说明
将数组元素的初值依次放在一个大括号内
等价于:
int a[5]; for (i=0; i<5; i++) a[i]=i+1;
一维数组的初始化
2020年8月13日星期四
一维数组的初始化 可以只给部分数组元素赋初值
如 int a[5]={1, 2, 3};
第七章 数组
提ma出in()数问组题是一种构造数据类型
2020年8月13日星期四
{ in要t s求1数,输s组2入,:1…有0,0序s个10数学0据,生a的v的e集;成合绩,,用根数据组他名们标的识平均分来划分等级
char大元gr于素ad等:e;于是平构均造分数1组0的分基的本为组A级成成份,
它们应属同一数据类型,用数组名和下标确定 scan小f("于%平f"均, &分s11)0; 分的为C级
一• 维n个数数组比较举大例小共进行了 n-1 趟比较
2020年8月13日星期四
用变量i来a[表0] 示a趟[1],则a[21] <a=[3i<] =an[4-]1 a[5] a[6] a[7]
• 在第i趟比较中,共比较了 n-i 次
第1趟
443998 33448899 6655 979767 7799166773 119923377 29932770 393070
{ 两个数列的值f1和f2
long f10=1, f2=1 1; f[0]
int i; 1
1
f[1]
for(i=12; i<=220; i++f)[2]
Fnf[=i]=Ffn[-1i-+2F]+n-f2[i-(1n];≥3)
{
3
3
f[3]