版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计项目五汽车销售数据C语言程序设计项目五
汽车销售数据C语言程序设计熟悉一组数组的概念、定义、引用、初始化熟悉二维数组的概念、定义、引用、初始化熟悉字符数组的概念、定义、引用、初始化了解字符串处理函数知识目标会准确一、二维数组和字符数组的定义与初始化格式,实现数据的输入与输出。能够熟练地应用数组进行数据的查找、排序等。能力目标项目五汽车销售数据01显示某品牌新能源汽车一年的销售额(一维数组的输入与输出)02求某品牌新能源汽车一年的最高销售月(一位数组求最值)03对某品牌新能源汽车销售人员业绩排序(一位数组排序)04显示某车企的新能源汽车品牌(字符数组)05某车企多年销售统计(二维数组)引入:期末考试中需要输入成绩,那每位同学一个成绩,需要定义很多变量。每位同学又有多门成绩,那么需求的变量更多,有没有简单一点的办法呢?01知识储备C语言程序设计
(2)行进中的分叉路口任务目标
创建一个C语言程序,显示某品牌新能源汽车客车每月新增量(1-6月,每月新增量为60,54,50,70,36,51)。知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉一、一维数组的定义程序经常使用同类的数据,例如我们要处理一些成绩,可以声明intgrade1,grade2,grade3;然而如果成绩量很大时,就要使用大量的标识符进行表示,且标识符必须唯一,这样做是很麻烦的,此时我们应该使用数组。数组是具有相同类型的数据项的序列,是一种用于表示大量同类值的数据类型,我们通过下标访问数组的元素。定义格式:类型标识符数组名[整型常量表达式];例:intgrade[3];说明:(1)类型标识符:用来指定数组中各个元素的类型(2)数组名:与变量定义类似,必须是合法用户标识符(3)整型常量表达式:表示数组长度(数组元素个数)(4)C编译系统为数组分配连续的存储空间知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉一、一维数组的定义structstudent{intsno;
intname;
charsex(3);intage;charaddress(30);doublehight;doubleweight;}使用下标表示访问数组的各个元素,用方括号括住表示数组的下标。
为了在程序中使用grade[0]、grade[1]、grade[2],我们声明intgrade[3];声明中的整数3表示数组的数量范围,即数组中元素的个数。注意,数组元素的下标总是从0开始。
一维数组声明是一个类型后跟一个带有方括号括起来的常量整数表达式的标识符。常量表达式指定了数组的尺寸,但它的值必须是正的;它指定了数组中元素的个数。为了存储数组的元素,编译器会分配从一个基地址开始的适当大小的内存。1.一维数组的初始化
当定义一个数组时,系统根据类型说明,分配由常量表达式所指定的相应数量的存储单元,一个存储单元对应一个数组元素。
数组的初始化实质上就是在定义数组时,为每一个数组元素赋初值。数组的初始化是在编译阶段完成的,不占用运行时间。这样可以使数组元素在程序开始运行前就得到初值,从而节约了运行时间,提高了执行速度。
一维数组的初始化可分为以下几种情况:①给全部数组元素赋初值例:intarray[8]={1,2,3,4,5,6,7,8};在给全部数组元素赋初值的情况下,也可以写成如下形式:intarray[]={1,2,3,4,5,6,7,8};系统会根据{}中的8个数据自动定义数组array的长度为8。②给部分元素赋值在定义一个数组时,可以只给部分元素赋初值,但不能越过前面的元素给后面的元素的赋值。后面未被赋值的元素根据其数据类型自动取为0或‘\0’例:inta[6]={1,2,3};//等价于inta[6]={1,2,3,0,0,0};*/charc[4]={‘a’,‘b’};//等价于charc[4]={‘a’,‘b’,‘\0’,‘\0’};知识储备C语言程序设计
二、一维数组解析知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉二、一维数组解析2.一维数组元素的引用
数组是一组数组元素的顺序集合,数组名代表了整个数组存储空间的首地址。当我们对数组进行操作时,不能对整个数组进行操作,只能对其中的数组元素进行操作。一维数组元素的引用方式为:数组名[下标表达式]下标表达式即为该数组元素在数组中的位置。例如:若有如下定义:intgrade[3];
则grade[0]、grade[2]、grade[i]、grade[i+j]都是数组元素合法的引用形式,但要注意下标的取值范围,它的下限为0,上限为数组长度-1。知识储备C语言程序设计
(2)行进中的分叉路口三、一维数组程序代码#include"stdio.h"//头文件#defineN10//定义符号常量voidmain(){//主函数
intgrade[N],i;//定义整型数组gradefor(i=0;i<N;i++)scanf("%d",&grade[i]);//通过输入语句对数组元素赋值for(i=0;i<10;i++)printf("%d号的成绩为%d\n",i+1,grade[i]);//输出数组元素}例1.键盘输入10个同学的C语言成绩,并显示每个同学的成绩。知识储备
C语言程序设计(1)树生长程中的分叉
一维数组程序解析数组grade需要存储10个整数值的内存空间。假设我们的机器用4个字节存储一个int型的值。如果grade[0]存储地址为2000,那么其余的数组元素连续的存储地址为2004、2008、2012、2016、2020、2024、2028、2032、2036。如图5-1所示。
第2行代码,把数组的尺寸定义为符号常量,这是一种良好的编程习惯。因为很多代码要依赖这个值,要改变数组的大小,可在#define中很方便地改变该值。通常把变量i用作数组的下标变量。第6第7行代码是一种处理全部数组元素的关键性习惯用法。一般下标变量从0开始,一直到N-1。任务分析与实践C语言程序设计(1)树生长程中的分叉
程序代码#include"stdio.h"#define
N6//定义符号常量,表示有6个月void
main(){int
V_number[N]={60,54,50,70,36,51};//定义存放新增量的数组,并赋初值int
i;//循环变量指示下标printf("某市海格新能源全天然气客车月新增量明线表\n");printf("1月份\t2月份\t3月份\t4月份\t5月份\t6月份\n");for
(i=0;i<N;i++)
printf("%d\t",V_number[i]);//输出6个月的数据}
项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例1已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},输出12个月的销售数据。算法过程:1.定义变量2.输入销售量(注意数组格式)3.输出销售量
项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例1已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},输出12个月的销售数据。#include"stdio.h"main(){intsales[12];inti;printf("请输入销售量:(12个月)\n");for(i=0;i<12;i++){printf("%d月",i+1);scanf("%d",&sales[i]);}printf("1-12月某品牌4S店销售情况表:\n");printf("一月\t二月\t三月\t四月\t五月\t六月\t七月\t八月\t九月\t十月\t十一月\t十二月\n");for(i=0;i<12;i++){printf("%d\t",sales[i]);}printf("\n");}项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2算法过程:1.定义变量耗油量,总耗油量,平均耗油量,i;2.求总耗油量;3.计算平均耗油量;4.输出平均耗油量;下表为某品牌新能源小客车在不同时段的耗油量,数组赋初值为各个时段的耗油量,编写程序求出该小客车的平均耗油量。时段时段1时段2时段3时段4时段5时段6时段7时段8时段9耗油量8.58.89.210.17.88.68.78.79.5项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2#include"stdio.h"main(){ floatoilconsumption[9]={8.5,8.8,9.2,10.1,7.8,8.6,8.7,8.7,9.5};floatsum_oilconsumption=0,avg_oilconsumption; inti;for(i=0;i<9;i++) {sum_oilconsumption+=oilconsumption[i]; }avg_oilconsumption=sum_oilconsumption/9.0; printf("平均耗油量:%f\n",avg_oilconsumption);}项目五任务一C语言程序设计
(1)树生长程中的分叉典型案例3算法过程:1.定义变量2.输出销售人员的销售等级(注意数组成员类型)已知某品牌4S店的10位销售人员根据每年的销售量情况,分为不同等级的销售员,分别为’A’,’B’,’C’,’D’,每位销售人员等级为:'C','A','B','A','C','B','D','C','C','A'要求按照格式输出销售人员的销售等级。(字符数组)项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例3/*Note:YourchoiceisCIDE*//*典型案例3:已知某品牌4S店的销售人员根据每年的销售量情况,分为不同等级的销售员,分别为’A’,’B’,’C’,’D’,要求输出销售人员的销售等级。*/#include"stdio.h"voidmain(){charsalesman[10]={'C','A','B','A','C','B','D','C','C','A'};inti;for(i=0;i<10;i++){printf("销售员%d,等级:%c\n",i+1,salesman[i]);} }项目五任务一C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉巩固练习1.从键盘输入5名驾驶员的工资,求工资的平均值2.在选择车牌时,有时可以随机产生,假设随机产生的是后五位并且都是数字,随机产生10个车牌存放在车牌数组中,并输出。3.在选择车牌时,有时可以随机产生,假设随机产生的是后五位并且都是数字,随机产生20个车牌存放在车牌数组中,并挑选最后一位是偶数的车牌存放在另一个数组中。C语言程序设计项目五汽车销售数据C语言程序设计项目三项目五汽车销售数据01显示某品牌新能源汽车一年的销售额(一维数组的输入与输出)02求某品牌新能源汽车一年的最高销售月(一维数组求最值)03对某品牌新能源汽车销售人员业绩排序(一维数组排序)04显示某车企的新能源汽车品牌(字符数组)05某车企多年销售统计(二维数组)引入:数据的查找,求最值是我们日常生活中最常见的事情,那程序中如何实现呢,本节我们就来学习这个内容。02知识储备C语言程序设计
(2)行进中的分叉路口任务目标
从键盘输入8位驾驶员身高,输出个子最低的驾驶员的身高和对应的下标。知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉一、数组1.对数组中数据进行查找时,通过循环逐一进行比较。程序代码一般为:for(i=0;i<数组长度;i++)
if(数组名[i]==查找数据)
break;2.对数组中的数据进行统计,一般经过两步操作:第一步对数组元素进行筛选,可以用if语句也可以使用swtich语句;第二步根据条件进行统计。3.求最值
第一步定义变量,目的是为了存储最大或者最小值,
第二步每一个数组元素的值与定义的变量进行比较,根据要求进行替换知识储备C语言程序设计
(2)行进中的分叉路口二、一维数组程序代码#include<stdio.h>voidmain(){ ints[10]={12,9,7,11,10,15,13,14,16,8}; intx,i; for(i=0;i<10;i++)
printf("%4d",s[i]); printf("\n"); printf("请输入要查找的数据:");
示例1:已知数组s中存有以下数据:12、9、7、11、10、15、13、14、16和8,编写程序,用户从键盘输入一个数据,从数组中找出该数据。scanf("%d",&x);
for(i=0;i<10;i++)
if(s[i]==x)break;if(i<10)
printf("s[%d]=%d\n",i,s[i]);
elseprintf("该数据不存在!\n"); }知识储备C语言程序设计
(2)行进中的分叉路口二、一维数组程序代码#include<stdio.h>voidmain(){
intscore[7]={75,49,87,61,80,55,93};
inti,passnum=0,failnum=0;for(i=0;i<7;i++)
printf("%4d",score[i]);
printf("\n");
for(i=0;i<7;i++)
if(score[i]>=60)
passnum++;示例2:已知数组score中存有以下成绩:75、49、87、61、80、55、93,编写程序,分别统计及格的人数和不及格人数。else
failnum++;printf("及格人数为%d\n不及格人数为%d\n",passnum,failnum);}知识储备C语言程序设计
(2)行进中的分叉路口三、一维数组程序代码#include"stdio.h"voidmain(){ints[10]={12,4,5,6,7,89},i=0,min,m;min=s[0];m=0;for(i=1;i<6;i++){if(min>s[i])
{min=s[i];m=i+1;
}
}printf("s[%d]=%d\n",m,min);
}示例3、已知数组s中的数据为12,4,5,6,7,89,求他们的最小值。项目五任务二C语言程序设计
(1)树生长程中的分叉任务分析与实践从键盘输入8位驾驶员身高,输出个子最低的驾驶员的身高和对应的下标。#include"stdio.h"voidmain(){ doubledriver_H[8],driverH_min; inti; intdriverH_num; printf("请输入8名驾驶员的身高"); for(i=0;i<8;i++) { scanf("%lf",&driver_H[i]); } driverH_min=driver_H[0]; driverH_num=0;
for(i=0;i<8;i++) { if(driver_H[i]<driverH_min) { driverH_min=driver_H[i]; driverH_num=i;
} } printf("最低驾驶员的下标为%d,身高为%lf",driverH_num,driverH_min);}项目五任务二C语言程序设计
(1)树生长程中的分叉已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},输出12个月的最高销量。(参考变量销售量sales,最大销售量max_sales)算法过程:1.定义数组,并赋初值2.令max_sales=sales[0];3.依次用max_sales和sales[i]循环判断;4.输出max_sales典型案例1项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例1已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},输出12个月的销售数据。/*Note:YourchoiceisCIDE*//*典型案例1:已知某品牌4S店的一年中每个月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},输出这12个月的最高销量。*/#include"stdio.h"voidmain(){intsales[12]={10,12,15,14,16,8,7,14,16,17,11,12};intmax_sales=sales[0],i;for(i=1;i<12;i++){ if(max_sales<sales[i]) max_sales=sales[i];
}printf("最高销售量=%d",max_sales);}项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2算法过程:1.定义数组,并且赋初值;2.令min_oilconsumption=oilconsumption[0]
;3.依次用min_oilconsumption和oilconsumption[i]
循环比较;
4.输出min_oilconsumption下表为某品牌新能源小客车在不同时段的耗油量,编写程序求出该小客车的耗油量最小的时段。时段时段1时段2时段3时段4时段5时段6时段7时段8时段9耗油量8.58.89.210.17.88.68.78.79.5项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2/*Note:YourchoiceisCIDE典型案例2:下表为某品牌新能源小客车在不同时段的耗油量,编写程序求出该小客车的最小耗油量。*/#include"stdio.h"voidmain(){floatoilconsumption[9]={8.5,8.8,9.2,10.1,7.8,8.6,8.7,8.7,9.5};floatmin_oilconsumption=oilconsumption[0];inti;for(i=1;i<9;i++){ if(min_oilconsumption>oilconsumption[i]) { min_oilconsumption=oilconsumption[i]; }}printf("最小耗油量是:%.1f",min_oilconsumption);}项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉巩固练习1.从键盘输入5名驾驶员的工资,求高于平均工资的驾驶员。2.2020年某地区5月份10天的最高气温依次是(℃):30313032323333323132。编写程序,分别统计出32℃和33℃各占多少天。3.输入10个整数存入一维数组,输出值和下标都为奇数的元素个数。4.已知数组s中存有以下数据:12、9、7、11、10、15、13、14、16和8,编写程序,用户从键盘输入一个数据,从数组中找出该数据。C语言程序设计项目五汽车销售数据C语言程序设计项目三项目五汽车销售数据01显示某品牌新能源汽车一年的销售额(一维数组的输入与输出)02求某品牌新能源汽车一年的最高销售月(一维数组求最值)03对某品牌新能源汽车销售人员业绩排序(一维数组排序)04显示某车企的新能源汽车品牌(字符数组)05某车企多年销售统计(二维数组)引入:对于杂乱无章的数据,有时我们需要按照一定规律进行排列,我们本次课程就来研究这个问题。03知识储备C语言程序设计
(2)行进中的分叉路口任务目标
创建一个C语言程序,按非递减顺序显示某市海格新能源全天然气客车的月新增量(1-6月,每月新增量为60,54,50,70,36,51)。知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉1.排序对于搜索大型数据库来说,对信息进行排序的算法是至关重要的。想象一下词典或电话号码本,用它们来查找信息都是相对容易和方便的,这是因为其中的信息按按字母表或词曲顺序排序了。排序是一种非常有助于解决问题的技术,因此如何有效的排序的问题本身是一个重要的研究领域。排序有多种方式,有冒泡排序、简单选择排序、直接插入排序等。知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉2.冒泡排序这种方法可形象描述为:使较小的值象水中的气泡一样逐渐“上浮”到数组的顶部,而较大的值则逐渐“下沉”到数组的底部。这种技术要排序好几轮,每轮都要比较连续的数组元素对。如果某一对元素的值本身是升序排的,那就保持原样,否则交换其值。冒泡排序的基本思想是:从前向后依次比较相邻两个数的值,如果前者比后者大,那么这两个数交换,否则不交换,第一次排序结束,最大数“后沉”到最后一个。排序过程示例(设N=8):每趟只将方括号中的数据从左向右两两比较,让较大者不断“后沉”到方括号外。知识储备C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉2.冒泡排序假设原始数据[4938659776132750]第一趟排序后[38496576132750]97第二趟排序后[384965132749]7697第三趟排序后[3849132750]657697第四趟排序后[38132749]50657697第五趟排序后[132738]4950657697第六趟排序后[1327]384950657697第七趟排序后[13]27384950657697最后排序结果1327384950657697读者可以看到第五趟排序结束后,其实已经得到我们最终所需的结果了,如果不对程序进行优化,计算机就一定会进行七趟排序,那么应该如何处理,请读者自行思考,也可查看相关资料。知识储备C语言程序设计
(2)行进中的分叉路口3.选择法排序选择法的基本思想是:用变量p来存放最大数所在的位置,若数组中有n个数,首先p中存放0,认为a[0]中数最大。然后把a[p]跟后面的a[1]比较,若a[1]比a[p]大,则p=1;否则p不变。接着a[p]跟后面的a[2]比较,若a[2]比a[p]大,则p=2;否则p不变。接着a[p]跟后面的a[3]比,a[4]比,……,与最后一个元素比较。这时p中存放的是所有元素中最大元素所在的位置。把a[0]中的数与a[p]中的数交换。a[0]中存放最大元素。再从余下的n-1个数中找最大的数与a[1]交换,重复直到排序结束。知识储备C语言程序设计
(2)行进中的分叉路口(假设原始数据[4938659776132750]第一趟排序后13[38659776492750]第二趟排序后1327[659776493850]第三趟排序后132738[9776496550]第四趟排序后13273849[76976550]第五趟排序后1327384950[976576]第六趟排序后132738495065[9776]第七趟排序后13273849506576[97]最后排序结果13273849506576973.选择法排序知识储备C语言程序设计
(2)行进中的分叉路口二、排序代码示例:键盘输入10个同学的C语言成绩,按从高到低显示每个同学的成绩。#include"stdio.h"#defineN10voidmain(){intgrade[N];inti,j,temp;for(i=0;i<N;i++)scanf("%d",&grade[i]);printf("排序前10位同学的成绩:\n");for(i=0;i<N;i++)printf("%d",grade[i]);printf("\n从高到低排序后10位同学的成绩:\n");for(i=0;i<N-1;i++)//冒泡排序{ for(j=0;j<N;j++)if(grade[j]<grade[j+1])//条件成立,相邻两个值进行交换{temp=grade[j];grade[j]=grade[j+1];grade[j+1]=temp;}}for(i=0;i<N;i++)printf("%d",grade[i]);}项目五任务三C语言程序设计
(1)树生长程中的分叉下表为海格某汽油小客车在不同时段的耗油量,编写程序将该小客车的不同时段耗油量从高到低进行排列。数据如表5-3-1所示:算法过程:1.定义数组,并赋初值2.排序3.输出典型案例1项目五任务二C语言程序设计
(1)树生长程中的分叉下表为海格某汽油小客车在不同时段的耗油量,编写程序将该小客车的不同时段耗油量从高到低进行排列。数据如表5-3-1所示:核心代码for(i=0;i<9;i++){ for(j=0;j<8-i;j++) { if(oilconsumption[j]<oilconsumption[j+1]) { temp=oilconsumption[j]; oilconsumption[j]=oilconsumption[j+1]; oilconsumption[j+1]=temp; } }
}典型案例1项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2已知某品牌4S店的一年12月的销售量分别为{10,12,15,14,16,8,7,14,16,17,11,12},将销售量从小到大排序。for(i=0;i<=10;i++)核心代码{ for(j=i+1;j<=11;j++) { if(sales[i]>sales[j]) { t=sales[j]; sales[j]=sales[i]; sales[i]=t; } }}项目五任务二C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉任务分析与实践printf("排序前新增量:");for(i=0;i<N;i++)
printf("%d",V_number[i]);printf("\n");printf("排序后:"); for(i=0;i<N-1;i++) { p=i; for(j=i+1;j<N;j++) if(V_number[p]<V_number[j]) { p=j; } temp=V_number[p]; V_number[p]=V_number[i]; V_number[i]=temp; } for(i=0;i<N;i++) printf("%d",V_number[i]); printf("\n");项目五任务三C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉巩固练习1.从键盘输入20名驾驶员的工资,使用冒泡,顺序,选择其中一种方法进行从低到高排序并输出。并且画出流程图。2.从键盘输入14个车辆的载重量,使用冒泡,顺序,选择其中一种方法进行从高到低排序并输出。并且画出流程图。C语言程序设计项目五汽车销售数据C语言程序设计项目三项目五汽车销售数据01显示某品牌新能源汽车一年的销售额(一维数组的输入与输出)02求某品牌新能源汽车一年的最高销售月(一维数组求最值)03对某品牌新能源汽车销售人员业绩排序(一维数组排序)04显示某车企的新能源汽车品牌(字符数组)05某车企多年销售统计(二维数组)引入:在实际情况中,我们需要用到汉字或者多个字符的情况,这时我们就需要引入字符数组。04知识储备C语言程序设计
(2)行进中的分叉路口任务目标
从键盘输入江苏省的地级市,输出车牌字符。(
A南京市B无锡市C徐州市D常州市
E苏州市F南通市)任务目标运行截图如图5-4-1所示知识储备C语言程序设计
(2)行进中的分叉路口一、一维字符数组与字符串①一维字符数组数组元素的类型是字符类型的一维数组称为一维字符数组。定义一个一维数组时,如果数据类型为char,这就是一个一维字符数组。例如:charch[10];定义了一个名为ch的一维字符数组,长度为10,系统为该数组开辟了10个连续的存储单元,在这里,一个元素的存储空间正好为一个字节,所以系统开辟了10个连续的字节单元,ch为该连续存储单元的首地址。可以引用数组的元素,如ch[0]=’a’;ch[9]=’\n’;等。知识储备C语言程序设计
(2)行进中的分叉路口一、一维字符数组与字符串②字符串
字符串就是一串字符的组合,但它的最后一个字符必定是’\0’。’\0’是一个转义字符,它是字符型的“空值”,它的ASCII代码值为0。’\0’是字符串的结束标志。在C语言中,字符串借助于一维字符数组来存放。在存储时,结束标志’\0’占用存储空间,但不计入字符串的实际长度。C语言中,字符串是用双引号””作为定界符的。在表示字符串时,不需要人为在其末尾加入’\0’。例如,字符串”COMPUTER”不必写成”COMPUTER\0”,C的编译系统在处理时会自动在末尾添加’\0’。一个字符串在存储时,会占用内存中一串连续的存储空间,它有一个起始地址。这段连续的存储空间实际中就是一个一维的字符数组,只是这个数组没有名字。所以,在C语言中,字符串被隐含处理成一个以’\0’结尾的无名的一维字符数组,该字符串就表示内存中一串连续存储空间的首地址。知识储备C语言程序设计
(2)行进中的分叉路口一、一维字符数组与字符串③一维字符数组与字符串的区别一个一维字符数组中的每一个元素都可以存放一个字符,并且它不限定最后一个字符应该是什么。而在C语言中,有关字符串的大量操作都与串结束标志’\0’有关,因此,字符串是最后一个字符必有’\0’的一维字符数组。当一个一维字符数组的长度大于一个字符串的有效长度再加1时,该一维字符数组可以用于存放该字符串。此时,一维字符数组可以被“看作”是字符串变量。但它又不同于一般的变量,不能把一个字符串整体赋给一个数组。①通过初始化实现逐一元素地赋初值,这种方法同给一般数组赋初值的方式相同。例:charstr[10]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’,’\0’};②赋初值时,直接赋字符串常量例如:charch[8]={“student”};或者省略大括号:charch[8]=“student”;③在执行过程中给一维字符数组赋字符串前面已经讲过,不能给一个数组整体赋值,对一维字符数组同样如此。只能给数组元素逐个赋字符值,最后人为加入串结束标志。例如:charstr[8];str[0]=’s’;str[1]=’t’;str[2]=’u’;str[3]=’d’;str[4]=’e’;str[5]=’n’;str[6]=’7’;str[7]=’\0’;知识储备C语言程序设计
二、将一个字符串赋给一个一维字符数组知识储备C语言程序设计
(2)行进中的分叉路口三、字符串的输入和输出#include"stdio.h"#defineLEN51 voidmain(){ charch[LEN]; inti=0; scanf("%c",&ch[i]);①用”%c”格式字符逐个输入和输出例如:通过键盘输入一字符串(以回车结束,假设长度不超过50),存放于数组ch中。while((ch[i]!='\n')) { i++; scanf("%c",&ch[i]); } ch[i]='\0'; i=0; while(ch[i]!='\0'){ printf("%c",ch[i]); i++; }}②用”%s”格式整体输入和输出例如:charch[20];scanf(“%s”,ch);说明:输入项是一数组的数组名,也就是数组的首地址。功能:从键盘输入一串字符,读入到以ch开始的存储单元中,以空格或回车符结束读入。printf(“%s”,ch);说明:输出项是一数组的数组名,也就是数组的首地址。功能:输出以ch为起始地址的存储单元的内容到终端,遇到’\0’时结束输出。知识储备C语言程序设计
三、将一个字符串赋给一个一维字符数组③用字符串输入(gets)和输出(puts)函数实现字符串的输入和输出字符串输入(gets)和输出(puts)函数的定义说明在头文件”stdio.h”中,在程序中若调用这两个函数,必须在程序的开头加入文件包含命令:#include“stdio.h”知识储备C语言程序设计
三、将一个字符串赋给一个一维字符数组gets函数实现输入调用形式如下:gets(str)说明:str为一确定的地址值,它可以是一个字符数组的数组名,也可以是今后要学到的已赋值的指针型变量。函数功能:调用该函数时,用户从键盘输入一个字符串,以换行符(Enter键)作为输入结束标志;然后将接收到的字符(包括换行符)依次赋给以str为起始地址的存储单元中,系统自动用’\0’来代替最后的换行符。注意:gets函数调用中,空格不作为分隔符,它可以出现在字符串中,这是gets与scanf函数的主要区别。例如:charch[20];gets(ch);若输入:IAM(回车),则在ch中将存入字符串”IAM”,而不是字符串”I”。知识储备C语言程序设计
三、将一个字符串赋给一个一维字符数组puts函数实现输出调用形式如下:puts(str)说明:同gets(str)一样,str为一确定的地址值。函数功能:调用该函数时,系统从str这一地址开始,依次输出存储单元的内容,直到遇到第一个’\0’,系统自动将’\0’转换成一个换行符输出,并结束输出。注意:puts函数输出结束后换行,而printf函数输出结束后并不自动换行。知识储备C语言程序设计
三、将一个字符串赋给一个一维字符数组C语言有关字符的函数分为字符串函数和字符函数两类,分别包含于头文件“string.h”及头文件“ctype.h”中。常用的字符串函数如表5-4-1所示,常用的字符函数如表5-4-2所示知识储备C语言程序设计
四、常用字符串和字符函数知识储备C语言程序设计
四、常用字符串和字符函数知识储备C语言程序设计
四、常用字符串和字符函数任务分析与实践C语言程序设计(1)树生长程中的分叉
程序代码#include"stdio.h"#include"string.h"voidmain(){charlicense_plate[8];printf("请输入地级市");gets(license_plate);if(strcmp(license_plate,"南京市")==0)printf("A南京市");elseif(strcmp(license_plate,"无锡市")==0)printf("B无锡市");elseif(strcmp(license_plate,"苏州市")==0)printf("E苏州市");elseif(strcmp(license_plate,"南通市")==0)printf("F南通市");elseprintf("输入有误或者无记录");}
项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例1典型案例1:从键盘输入某辆车的车架号,并输出车架号。算法过程:1.定义字符串2.输入字符串3.输出字符串
项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例1典型案例1:从键盘输入某辆车的车架号,并输出车架号。#include"stdio.h"voidmain(){charvin[18];printf("请输入车架号:");gets(vin);printf("车架号为");puts(vin);}
项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2从键盘输入某辆车的车架号,并求长度,判断是否满足车架号的长度。(车架长度17)典型案例2运行截图如图5-4-3所示算法过程1.定义字符串2.输入车架号3.求车架长度4判断项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例2从键盘输入某辆车的车架号,并求长度,判断是否满足车架号的长度。(车架长度17)典型案例2运行截图如图5-4-3所示#include"stdio.h"voidmain(){charvin[18],i=0,len=0;printf("请输入车架号:");scanf("%s",vin);while(vin[i]!='\0'){len++;i++;}
if(len==17)printf("满足车架号的长度!");elseprintf("车架号长度有误!");}项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例3从键盘输入某辆车的车架号,再次输入车架号,判断第二次和第一次输入的车牌是否相等,相等显示两次车架号输入一致,不相等显示两次车牌输入不一致。算法过程1.定义变量2.输入车架号3.判别
项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉典型案例3从键盘输入某辆车的车架号,再次输入车架号,判断第二次和第一次输入的车牌是否相等,相等显示两次车架号输入一致,不相等显示两次车牌输入不一致。if(strcmp(vin,vin2)==0)printf("两次输入车架号一致!");elseprintf("两次输入车架号不一致!");}#include"stdio.h"#include"string.h"voidmain(){charvin[20],vin2[20];inti=0,flag=0; printf("请输入车架号:");gets(vin);printf("请再次输入车架号:");gets(vin2);项目五任务四C语言程序设计
(2)行进中的分叉路口(1)树生长程中的分叉巩固练习1.从键盘输入“我爱你中国”并输出。2.从键盘输入一名驾驶员的工号,已知工号长11位,第一位为2,判别工号是否正确。3.输入10名驾驶员的姓名,并按照姓名从高到低进行排序并输出姓名和序号。4.通过键盘将一句英文存放于一个字符数组中,统计该句子里面出现的单词的个数(单词之间用空格分隔)。(提高)5.一名用户要求车牌是6位字符,并且满足回文,从键盘输入车牌,判断是否满足条件。C语言程序设计项目五汽车销售数据C语言程序设计项目三项目五汽车销售数据01显示某品牌新能源汽车一年的销售额(一维数组的输入与输出)02求某品牌新能源汽车一年的最高销售月(一维数组求最值)03对某品牌新能源汽车销售人员业绩排序(一维数组排序)04显示某车企的新能源汽车品牌(字符数组)05某车企多年销售统计(二维数组)引入:一维数组只能处理一种批量数据情况,如果同种数据类型,更多种情况,此时就需要引入多维数组。05知识储备C语言程序设计
(2)行进中的分叉路口任务目标
新能源大客车在江苏不同城市1-6月的新增情况如表5-5-1所示,请编写程序输出该明线表。知识储备C语言程序设计
(2)行进中的分叉路口一、二维数组C语言允许任何类型的数组,甚至允许数组的数组。使用两对方括号,我们就能得到二维数组。要得到高维数组,只要简单地继续增加方括号即可。每使用一对方括号,我们就对数组增加了一维。数组的格式如表5-5-2所示知识储备C语言程序设计
(2)行进中的分叉路口一、二维数组一个k维数组的尺寸与各个维的尺寸有关。如果用Si代表数组的第i维尺寸,那么数组声明为S1*S2*…*Sk个元素分配的空间。在上表中,b有20*30个元素,c有2*3*4个元素。从数组的基地址开始,所有的数组元素都存储在连续的内存中。即使数组元素是一个接一个地连续存储,我们也经常把二维数组看作是由行和列组成的矩阵更为方便。例如,如果我们声明inta[2][5],那么我们数组元素的排列如表5-5-3所示:知识储备C语言程序设计
(2)行进中的分叉路口二、二维数组的定义、引用和声明①二维数组的定义定义形式 类型数组名[行常量表达式][列常量表达式];
可以看作元素是一维数组的一维数组如:inta[3][4];/*3行4列*/②二维数组元素的引用二维数组元素的表示形式为:数组名[下标][下标]如:a[2][3]、b[1][2]=a[2][3]/2、a[2][3]=3;注意: 其中下标可以是整型表达式; 不要写成a[2,3]等形式; 应该注意下标值应在已定义的数组大小范围内; 定义数组时用的a[3][4]与引用数组元素时用的a[3][4]的区别。知识储备C语言程序设计
(2)行进中的分叉路口二、二维数组的定义、引用和声明①二维数组的定义定义形式 类型数组名[行常量表达式][列常量表达式];
可以看作元素是一维数组的一维数组如:inta[3][4];/*3行4列*/②二维数组元素的引用二维数组元素的表示形式为:数组名[下标][下标]如:a[2][3]、b[1][2]=a[2][3]/2、a[2][3]=3;注意: 其中下标可以是整型表达式; 不要写成a[2,3]等形式; 应该注意下标值应在已定义的数组大小范围内; 定义数组时用的a[3][4]与引用数组元素时用的a[3][4]的区别。知识储备C语言程序设计
(2)行进中的分叉路口二、二维数组的定义、引用和声明①二维数组的定义定义形式 类型数组名[行常量表达式][列常量表达式];
可以看作元素是一维数组的一维数组如:inta[3][4];/*3行4列*/②二维数组元素的引用二维数组元素的表示形式为:数组名[下标][下标]如:a[2][3]、b[1][2]=a[2][3]/2、a[2][3]=3;注意: 其中下标可以是整型表达式; 不要写成a[2,3]等形式; 应该注意下标值应在已定义的数组大小范围内; 定义数组时用的a[3][4]与引用数组元素时用的a[3][4]的区别。知识储备C语言程序设计
(2)行进中的分叉路口二、二维数组的定义、引用和声明键盘输入5个同学的2门课程的成绩,显示每个同学的学号及成绩明细。
printf("学号课程1课程2\n");//输出表头
for(i=0;i<5;i++) { printf("%d",i+1);//输出学号
for(j=0;j<2;j++) { printf("%.1f",score[i][j]);//输出每门课程的成绩
} printf("\n"); }}#include"stdio.h"voidmain(){ floatscore[5][2]; inti,j; for(i=0;i<5;i++)//外循环次数由人数确定
for(j=0;j<2;j++)//内循环次数由课程数确定
{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇产科剖宫产护理问题
- 中国缓控释肥(缓-控释肥)行业市场规模测算逻辑模型 头豹词条报告系列
- 数字产业创新研究中心:2024中国研究报告
- 大班健康活动教案:我会旋转
- 肺病的养护与治疗
- 5的乘法口诀(教案)2023-2024学年数学 二年级上册
- 自理能力打卡活动主题
- 急性酒精中毒病人的护理
- 肺部重度感染护理查房
- 艾滋病的并发症
- 学校危险化学品安全教育
- 屋顶绿化养护管理规范
- 2024年中储粮质检中心有限公司招聘笔试参考题库附带答案详解
- 私募基金纠纷案件裁判指引
- 阴道流血症状护理
- 园林植物器官的识别-园林植物生殖器官的识别
- 炼钢厂安全生产教育培训课件
- 拼音四线三格A4打印版
- 机械专业职业生涯发展报告
- 生物技术为精准医疗注入新动力
- MBD数字化设计制造技术
评论
0/150
提交评论