程序设计基础(C语言)(第2版)(微课版) 课件 第6章 数组_第1页
程序设计基础(C语言)(第2版)(微课版) 课件 第6章 数组_第2页
程序设计基础(C语言)(第2版)(微课版) 课件 第6章 数组_第3页
程序设计基础(C语言)(第2版)(微课版) 课件 第6章 数组_第4页
程序设计基础(C语言)(第2版)(微课版) 课件 第6章 数组_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章数组目录CONTENTS数组的概念一维数组二维数组字符数组与字符串6.16.26.36.4数组常用算法6.5智能控制项目实践附

数组的概念6.1问题:一个班有35个同学,期末考试结束后需要对这个班的C语言考试成绩按照从高到低的顺序进行排序,然后输出。1.能否定义35个变量来保存考试成绩?2.如果可以,写出的程序是否烦琐和冗长呢?intS1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12;intS13,S14,S15,S16,S17,S18,S19,S20,S21,S22;intS23,S24,S25,S26,S27,S28,S29,S30,S31,S32;intS33,S34,S35;intS[35];4数组的概念01可以对大量的同类型的数据进行处理。数组:若干个具有相同数据类型的数据的有序集合。intS[35]={S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30,S31,S32,S33,S34,S35};S[0]S[1]S[2]……S[33]S[34]数组元素:数组中的每一个数据称为数组元素。数组中的每一个数组元素具有相同的名称,不同的下标,可以作为单个变量使用,所以也称为下标变量。5数组的概念01数组的下标:是数组元素位置的一个索引或指示。数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、多维数组。S[0]S[1]S[2]……S[33]S[34]intS[35];intT[35][45];intR[35][45][55];一维数组二维数组三维数组6数组的概念01数组的类型:依据数组的维数,可分为:一维数组二维数组三维数组……N维数组依据数组元素的数据类型,可分为:数值数组字符数组指针数组结构数组inta[10];charb[20];doublec[10];7数组的概念01一维数组6.2一维数组一维数组的定义一维数组的初始化一维数组元素的引用一维数组的存储一维数组的应用一维数组的定义01一般形式:类型说明符数组名[常量表达式]说明:类型说明符:每个元素的类型,可以是基本数据类型,也可以是构造数据类型、指针;数组名:数组的名字,命名规则遵循标识符命名规则;常量表达式:表示数组中所包含的元素的个数,即数组的长度;相同类型的数组和变量可以在同一个类型说明符下一起说明,互相间用”,”隔开;数组名不能与其它变量名相同。如:inta[10];/*定义一个整型数组a,它有10个元素*/doubleb[20];/*定义一个双精度型数组b,它有20个元素*/例如:int

a[5];int是类型说明符,数组元素数据类型为int型;a是数组名;5是常量表达式,数组元素的个数为5。例如:#defineM10char

abc[M-5];数组类型数组名

数组元素个数charabc511一维数组的定义0112数组定义时下标要求:一维数组的定义01(1)不能越界;(2)只能是常量表达式;(3)首地址从0开始,n-1结束一维数组元素的引用02数组元素的一般形式数组名[下标]

下标表示了元素在数组中的顺序号,只能为整型数或整型表达式。C语言中,规定下标从0开始,对下标的上界未作规定。例:a[5],a[i+j],a[i++]都是合法的数组元素。(1)数组元素通常称为下标变量;(2)必须先定义才能使用下标变量;(3)只能逐个使用数组元素,不能一次引用整个数组。14一维数组元素的引用02注意!例6.1:将数字1~10存入一个整型数组a中并输出。15一维数组元素的引用02#include<stdio.h>intmain(){inti,a[10];for(i=0;i<10;i++){a[i]=i+1;printf("%3d",a[i]);}return0;} 输出结果:1234567891016例:程序输出结果是多少?一维数组元素的引用02#include<stdio.h>#defineM10intmain(){charabc[M-5];inti;for(i=0;i<M-5;i++)abc[i]='A';printf("charabc[M-5]={");for(i=0;i<M-6;i++)printf("%d,",abc[i]);printf("%d}\n",abc[M-6]);return0;}

charabc[M-5]={65,65,65,65,65}一维数组的初始化03概念:在数组定义时给数组元素赋予初值。一般形式:类型说明符数组名[常量表达式]={值,值,…值};例如:

inta[10]={0,1,2,3,4,5,6,7,8,9};

相当于a[0]=0;a[1]=1...a[9]=9;数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。说明1、可以只给部分元素赋初值。例如:inta[10]={0,1,2,3,4};

表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。2、只能给元素逐个赋值,不能给数组整体赋值。

例如:给十个元素全部赋1值,只能写为:

inta[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:

inta[10]=1;3、如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。

例如:inta[5]={1,2,3,4,5};可写为:

inta[]={1,2,3,4,5};4、当数组指定的元素个数小于初值的个数时,作语法错误处理。 例如:inta[4]={1,2,3,4,5};是不合法的。一维数组的初始化03一维数组的存储0402例如:

inta[10];

空间为10*sizeof(int)。

doubleb[20];

空间为20*sizeof(double)。

一维数组的各元素按下标的顺序依次存储在一片连续的存储空间中。空间的大小与数组类型有关,为元素的个数乘以每一个元素所占的空间。

例6.2:用数组求Fibonacci数列的前20项(每行输出5个数)。一维数组的应用05#include<stdio.h> #include<stdlib.h>

intmain() { inti; intf[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0)printf("\n"); printf("%6d",f[i]); }

system("pause");

return0; } 例6.3:统计一个整数中各个数字出现的次数。 #include<stdio.h> intmain()

{unsignedintm,n,i; //定义m为无符号整型以扩大可以测试的数据范围 intdigit[10]={0}; scanf("%u",&m); n=m; while(m) //通过循环实现一个整数的数位分解 { i=m%10; //用i获取每次循环取得的尾数 digit[i]=digit[i]+1; m=m/10; //用m获取每次循环去掉尾数得到的新数 } if(n==0) digit[0]=1; for(i=0;i<10;i++) printf("%d\t",i); printf("\n"); for(i=0;i<10;i++) printf("%d\t",digit[i]); return0;

}

二维数组6.3

二维数组二维数组的定义二维数组的初始化二维数组元素的引用二维数组的存储二维数组的应用01例如:

inta[2][3];

定义了一个二行三列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有2×3个。二维数组的定义一般形式类型说明符数组名[常量表达式1][常量表达式2]例如:

inta[2][3];其行下标最大值为1,列元素下标最大值为2。其数组元素为:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]。

inta[3][2];其行下标最大值为2,列元素下标最大值为1。其数组元素为:a[0][0]、a[0][1]、a[1][0]、a[1][1]、a[2][0]、a[2][1]。二维数组元素的引用数组元素的一般形式数组名[下标1][下标2];

下标1(行标)、下标2(列标)可以是整型常量或整型表达式。02例如:inta[4][5];其元素的存储顺序为:二维数组元素的存储C语言规定,二维数组中的元素在存储时要先存放第一行的数据,再存放第二行的数据等等,每行数据按下标规定的顺序由小到大的存放。03二维数组的初始化1、分行给多维数组赋值。ints[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2、按行连续赋初值。ints[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3、对全部元素赋值,可以省略第一维的长度。ints[][4]={1,2,3,4,5,6,7,8,9,10,11,12};4、可以只对部分元素赋初值,未赋值的元素自动取0值。ints[][4]={{1,2},{5},{9,10}};04二维数组的应用例6.4:第33届夏季奥林匹克运动会,Z国的运动员参与了n(1≤n≤20)天的比赛。用数组编程统计Z国所获得的金、银、铜牌数量及总奖牌数量。05#include<stdio.h> intmain() {inti,j,n,sum,sum1,sum2,sum3; sum1=sum2=sum3=sum=0; printf("请输入天数:"); scanf("%d",&n); inta[20][3];//利用二维数组解决奖牌数量的统计问题 for(i=0;i<n;i++)

{printf("请输入第%d天获得的金、银、铜牌数量:",i+1);

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);}

for(i=0;i<n;i++)

{sum1+=a[i][0];//获得的金牌的数量 sum2+=a[i][1];//获得的银牌的数量 sum3+=a[i][2];}

//获得的铜牌的数量

sum=sum1+sum2+sum3;

printf("前%d天金牌数量为%d枚,银牌数量为%d枚,铜牌数量为%d枚\n奖牌总数量为%d枚\n",n,sum1,sum2,sum3,sum);return0; }

用大模型了解第33届夏季奥林匹克运动会例6.5:求矩阵的转置。转置前转置后#include<stdio.h> #defineM3 #defineN4 intmain() { inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},b[N][M],i,j; printf("转置前的矩阵为:\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) printf("%3d",a[i][j]); printf("\n");

}for(i=0;i<N;i++) /*求转置矩阵*/ for(j=0;j<M;j++) b[i][j]=a[j][i]; printf("转置后的矩阵为:\n"); for(i=0;i<N;i++) { for(j=0;j<M;j++) printf("%3d",b[i][j]); printf("\n"); } return0; } 字符数组与字符串6.4字符数组与字符串字符数组的定义与初始化字符数组的输入与输出字符串处理函数1、字符数组的定义字符数组的定义与初始化01要处理大批量的同类型的数值数据,可使用数组进行存取及操作。

数据还包括非数值型数据。比如你的姓名、身份证号码、密码等。这种数据一般会有多个字符即字符串,那么又该如何对这些数据进行处理?

仍然使用数组来对它们存取及操作,不过此时我们称存放字符型数据的数组为字符数组。即字符数组的每个元素也只能存放一个字符。

与数值数组定义类似,字符数组需要给出3个要素:

类型、数组名、数组长度。

char数组名[常量表达式];如:

charname[20]; charpassword[64];字符数组的定义与初始化01

chara[5]={'C','h','i','n','a'};把5个字符分别赋给a[0],…,a[4]。方式一:逐个为数组中各元素指定初值字符。说明:

若字符个数少于元素个数,则对没有给出初值的数组元素,系统自动对它们赋值0(或‘\0’)。

注:ASCII值为0的字符,即NUL,用sizeof可测(例)

如果对全体元素赋初值,可以省略长度说明。如:charb[]={'C','h','i','n','a'};系统认为b数组的长度或大小为5。字符数组的定义与初始化012、字符数组的初始化代码:

#include<stdio.h>#include<string.h>intmain() { inti;charstr[5]={'a','b'};for(i=0;i<5;i++)printf("字符为=%c\n",str[i]);printf("长度=%d\n",sizeof(str));return0;}字符数组的定义与初始化01方式二:用字符串对字符数组进行初始化。

chara[]={"China"}; chara[]="China";

此时字符数组的实际大小为字符串的实际字符个数+1。因最后还有一个空字符‘\0’,它称为字符串结束标志。a[0]a[1]a[2]a[3]a[4]a[5]‘C’‘h’‘i’‘n’‘a’‘\0’字符数组的定义与初始化01在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志。用字符串方式赋初值比用字符逐个赋初值要多占一个字节,用于存放字符串结束标志‘\0’。说明字符数组的定义与初始化01代码一:

{ inti;charstr[]=“abcd”;printf("%d",strlen(str));}字符数组的定义与初始化01代码二:{inti;charstr[]="abcd";printf("%d",sizeof(str));}输出5输出4例:给字符数组赋值且输出。字符数组的定义与初始化01#include<stdio.h>intmain(){ inti;charstr[]="IlikeClanguage";for(i=0;i<17;i++)printf("%c",str[i]);printf("\n");return0;}

对字符数组进行初始化字符数组的输入输出1、字符数组的输出

要将字符数组的内容显示出来,有两种方法:按%c的格式:用printf()函数将数组元素一个一个输出到屏幕。按%s的格式:用printf()函数将数组中的内容按字符串的方式输出到屏幕(要判断'\0'字符)。注意:系统在输出时只在遇到‘\0’字符时才停止输出,否则,即使输出的内容已经超出数组的长度也不会停止输出的。022、字符数组的输入从键盘对字符数组赋值,有两种方法:按%c的格式:用循环和scanf()函数读入键盘输入的数据按%s的格式:通过scanf()函数来进行字符串的输入。如:scanf("%s",a);注意:输入时,在遇到分隔符时认为字符串输入完毕,并将分隔符前面的字符后加一个'\0'字符一并存入数组中。字符数组的输入输出02例6.7:从键盘输入一个字符串到字符数组s,并将字符串s输出到屏幕。输出字符串s到屏幕#include"stdio.h"intmain(){ chars[80];scanf("%s",s);printf("%s",s);

}

从键盘输入字符串到字符数组s中字符数组的输入输出02注意:此处没有取地址符字符串处理函数04#include<stdio.h>#include<string.h>intmain(){ inti;charstr1[40],str2[40];scanf("%s%s",str1,str2);printf("str1=%s,str2=%s",str1,str2);return0;}

注意:(1)scanf的%s%s中间不可加逗号等分隔符(可以不加或加空格)(2)输入时用tab或空格分隔字符串处理函数1、字符数组输入输出函数scanf和printf函数在字符串的使用输入字符串函数getsgets(字符数组)输出字符串函数putsputs(字符数组)03说明:gets、puts中在被使用时,须包含头文件<stdio.h>。在用gets函数输入字符串时,只有按回车键才认为是输入结束。在用puts函数输出字符串时,遇‘\0’结束。例6.8:从键盘输入一个字符串到字符数组s,并将字符串s输出到屏幕。字符串处理函数03输出字符串s到屏幕#include"stdio.h"intmain(){ chars[80];gets(s);puts(s);return0;}

从键盘输入字符串到字符数组s中2、字符串拷贝函数strcpy格式:strcpy(字符数组名1,字符数组名2)功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志'\0'也一同拷贝。要注意的问题: 字符数组1的长度必须足够大,以便能容纳字符数组2中的字符串。 字符数组名2,也可以是一个字符串常量。如strcpy(strl,"CLanguage")

复制时连同字符串后面的'\0'一起复制到字符数组1中#include<stdio.h>#include<string.h>intmain(){

inti;

charstr1[]="student",str2[]="china"; strcpy(str1,str2); puts(str1); for(i=0;i<8;i++) printf("%c",str1[i]); printf("\n");return0;}

字符串处理函数03chinachinat例6.9:将一个字符数组中的字符串复制到另一个字符数组中。#include<stdio.h>#include"string.h"intmain(){charstr1[15],str2[]="CLanguage";strcpy(str1,str2);puts(str1);printf("\n");return0;}

字符串处理函数033、字符串连接函数strcat格式:strcat(字符数组名1,字符数组名2)功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的串标志'\0'。要注意的问题: 字符数组str1的长度必须足够大,以便能容纳被连接的字符串str2。 连接后系统将自动取消字符串1后面的结束符‘\0’,只在新串最后保留一个‘\0’。

例6.10:将一个字符数组中的字符串连接到另一个字符数组中的字符串后面。字符串处理函数03#include<stdio.h>#include"string.h"intmain(){charstr1[50]="Hello";charstr2[]="everyone";strcat(str1,str2);puts(str1);return0;} 4、字符串比较函数strcmp格式:strcmp(字符数组名1,字符数组名2)功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。字符串1=字符串2,返回值=0字符串1>字符串2,返回值>0字符串1<字符串2,返回值<0注意: 执行这个函数时,自左到右逐个比较对应字符的ASCII码值,直到发现了不同字符或字符串结束符‘\0’为止。 对字符串不能用数值型比较符。 字符串比较不能用以下形式

if(str1==str2)printf("yes");例6.11:输入5个字符串,将其中最大的字符串输出。#include<stdio.h>#include<string.h>intmain(){

charstr[10],temp[10];inti;gets(temp);for(i=0;i<4;i++){gets(str);if(strcmp(temp,str)<0)strcpy(temp,str);}printf("最大的字符串是:%s",temp);return0;} 字符串处理函数035、测字符串的长度函数strlen格式:strlen(字符数组名)功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。字符串处理函数03例6.12:输入5个字符串,将其中最长的字符串输出。#include<stdio.h>#include<string.h>intmain(){

charstr[50],temp[50];inti,len;

gets(str);len=strlen(str);for(i=0;i<4;i++){gets(temp);if(strlen(temp)>len)strcpy(str,temp);}printf("最长的字符串是:%s",str);return0;} 字符串处理函数046、字符串大小写转换函数strupr()和strlwr()格式:strlwr(字符串)功能:将字符串中的大写字母转换为小写字母,其他字母不变。字符串处理函数03格式:strupr(字符串)功能:将字符串中的小写字母转换为大写字母,其他字母不变。例6.13:字符串大小写转换。 #include<string.h> intmain() { chartext[20],change[20]; intnum; inti=0; while(1) {printf("输入转换大小写方式(1表示大写,2表示小写,0表示退出):\n"); scanf("%d",&num); if(num==1)//如果是转换为大写

{printf("输入一个字符串:\n"); scanf("%s",&text);

strupr(text); //字符串中的小写字母转换成大写字母 printf("转换成大写字母的字符串为:%s\n",text);} elseif(num==2) //如果是转换为小写

{

printf("输入一个字符串:\n"); scanf("%s",&text); strlwr(text); //字符串中的大写字母转换成小写字母 printf("转换成小写字母的字符串为:%s\n",text);

}

elseif(num==0) //如果命令字符为0 break; } return0; }

字符串处理函数04数组常用算法6.5数组常用算法数组元素的查找数组元素的排序数组元素的插入数组元素的删除例6.14猜数字游戏:随机产生10个正整数(范围为0~99),输入一个数并显示是否猜测成功。(线性查找法)数组元素的查找01 #include<stdio.h> #include<stdlib.h> intmain() { inti,ranNum[10],number; for(i=0;i<10;i++) ranNum[i]=rand()%100;//生成一个0~99的随机数 printf("输入猜测的数:"); scanf("%d",&number); for(i=0;i<10;i++) //用线性查找法实现数据查找

{

if(number==ranNum[i]) //将数组的每一个元素与number比较

break;

}

if(i>=0&&i<10) printf("数字为%d,位置号为%d\n",number,i); else printf("该数字不存在!\n"); return0; }

例6.14猜数字游戏:随机产生10个正整数(范围为0~99),输入一个数并显示是否猜测成功。(线性查找法)数组元素的排序02 #include<stdio.h> #include<stdlib.h> intmain() { inti,ranNum[10],number; for(i=0;i<10;i++) ranNum[i]=rand()%100;//生成一个0~99的随机数 printf("输入猜测的数:"); scanf("%d",&number); for(i=0;i<10;i++) //用线性查找法实现数据查找

{

if(number==ranNum[i]) //将数组的每一个元素与number比较

break;

}

if(i>=0&&i<10) printf("数字为%d,位置号为%d\n",number,i); else printf("该数字不存在!\n"); return0; }

排序算法很多,如:选择排序法、冒泡排序法等

1、选择排序法选择排序法的基本思路是以第一个数据作为基点,找出基点及其后面数据中最小的数据,将其与基点位置的数据交换;再以第二个数据作为基点,找出基点及其后面数据中最小的数据,将其与基点位置的数据交换……最后以倒数第二个数据作为基点,找出基点及其后面数据中最小的数据,将其与基点位置的数据交换,实现数据从小到大排序。选择排序法第1轮比较数组元素的排序02例6.15通过选择排序法实现输入10个整数,按从小到大的顺序输出这10个整数。*尝试添加代码,观察数据每一轮排序后的结果:#include<stdio.h> #defineM10 intmain() { inti,j,k,a[M]; printf("请输入10个整数:\n"); for(i=0;i<M;i++)/*通过for循环语句对数组a的各个元素赋值*/ { printf("请输入第%d个数:",i+1); scanf("%d",&a[i]); } printf("排序前的数据是:\n"); for(i=0;i<M;i++) printf("%d",a[i]); for(i=0;i<M-1;i++) { for(j=i+1;j<M;j++)

if(a[i]>a[j]) {k=a[i];a[i]=a[j];a[j]=k;} } printf("\n排序后的数据是:\n"); for(i=0;i<M;i++) printf("%d",a[i]); return0; }

数组元素的排序022、冒泡排序法:冒泡排序法的基本思路是将相邻的两个数比较,把小的调换到前面。冒泡排序法第1轮比较如:将整数6852094713按从小到大进行排序6852094713第1次比较,6比8小,不变6852094713第2次比较,8比5大,交换6582094713第3次比较,8比2大,交换6528094713第4次比较,8比0大,交换6520894713第5次比较,8比9小,不变6520894713第6次比较,9比4大,交换6520849713第7次比较,9比7大,交换6520847913第8次比较,9比1大,交换6520847193第9次比较,9比3大,交换6520847139第1轮排序结果数组元素的排序02插入是指在原有数组中插入一个新的元素,使插入元素后的数组仍保持原序。插入数组元素的一般步骤如下。(1)定位:确定新元素的插入位置。(2)移位:插入位置有两种,一种是在数组最后位置插入,这种情况不需要移位;另一种是在已有的任一数组元素(假设数组长度为n,该数组元素下标为i)前面插入,则需要移位,即将下标为n-1到下标为i的元素依次赋值给后一个元素。(3)插入:在下标为i的位置上插入新元素,即将待插入元素赋值给下标为i的数组元素。数组元素的插入03例6.16已对5名学生C语言成绩按从小到大的顺序排序,现有一名插班生,请将该学生C语言成绩按序插入并输出。 #include<stdio.h> #defineN6 intmain()

{inti,j,ransco[N]={58,63,76,82,91},inscore;

printf("插入前成绩序列为:");

for(i=0;i<N-1;i++)

printf("%4d",ransco[i]);

printf("\n输入要插入的成绩:");

scanf("%d",&inscore);

for(i=0;i<N-1&&ransco[i]<inscore;i++); //定位:查找待插入的位置i

for(j=N-2;j>=i;j--)//移位:用循环递减移位,使下标为i的元素可被覆盖

ransco[j+1]=ransco[j];

ransco[i]=inscore; //插入:将下标为i的元素赋值为插入的inscore

printf("插入后成绩序列为:");

for(i=0;i<N;i++)

printf("%4d",ransco[i]);

printf("\n");

return0; }

删除数组元素的一般步骤如下。(1)定位:确定待删除元素的下标。(2)移位:如果待删除元素的下标为i,则将下标为i+1的元素到下标为n-1的元素依次前移,从而达到删除下标为i的元素的效果。(3)个数减1:完成第(2)步后,原下标i+1到n-1的元素依次前移一位,导致原下标n-1的元素移动到n-2的位置,此时数组的最后两个位置(n-2和n-1)的值是相同的。此时,将有效元素个数减1,使下标n-1元素变成一个多余的元素,不再被访问,从而达到删除效果数组元素的删除04数组元素的删除例6.17输入一个待删除的整数number,删掉原数组中第1个值为number的元素,如果number不是数组中的元素,则显示“该数据不存在!”。#include<stdio.h> #defineN6 intmain() {

inti,j,num[N]={58,63,76,80,82,91},number; intflag=1; //标识是否找到待删除的元素,1表示找到 printf("删除前的数据序列为:"); for(i=0;i<N;i++) printf("%4d",num[i]); printf("\n输入要删除的数:"); scanf("%d",&number); for(i=0;i<N&&num[i]!=number;i++); //查找number是否是数组中的元素,此处循环体为空语句 if(i==N) //循环停止时,如果i==N,说明元素不是数组中的元素 flag=0; else

{for(j=i;j<N-1;j++)

num[j]=num[j+1];} //前移覆盖下标为i的元素

if(flag==1)

{printf("删除后的数据序列为:");

for(i=0;i<N-1;i++)

printf("%4d",num[i]); } else

printf("该数据不存在!"); printf("\n"); return0;}

数组—

智能控制项目实践案例:智能温湿度监测报警系统)模拟环境监测设备:预设10组温湿度数据(数组存储),遍历数组判断每组数据是否超标(温度>35℃或湿度>80%),输出监测结果并统计超标次数,最后给出预警提示。1.使用数组存储10组温湿度数据(温度用浮点数组,湿度用整数数组)。2.初始化数组:温度数组和湿度数组各10个数据。3.输出监测标准:温度≤35℃且湿度≤80%。4.遍历数组,对每组数据:输出当前组号、温度值和湿度值。判断是否超标(温

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论