您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > C语言 数组应用与字符串
第7讲数组应用与字符串阅读别人程序是学习程序设计的重要方法。要注意学习别人编程思路,也要注意别人的程序风格。上周平台编程训练情况•开始出现没有完成,怎么办?•QQ群:目前有三分之二参与。•平台发帖区:23个问题贴,其中我转帖qq问题的聊天记录9个帖子,各种问题丰富,可谓积极展现问题。希望大家去浏览帖子,注意总结各类经验。本周课后阅读题—体验数组电信类134班_1304010412_李笑北京市中国1分钟40秒电信类134班_1304010408_李昂北京市中国4分钟16秒电信类133班_1304010311_李佳奇北京市中国7分钟50秒电信类134班_1304010417_刘珂辰北京市中国9分钟47秒电信类133班_1304010305_高文兴北京市中国11分钟46秒电信类134班_1304010407_蓝敏迪北京市中国23分钟47秒电信类133班_1304010309_胡冰北京市中国39分钟51秒电信类133班_1304010324_施杨北京市中国43分钟26秒电信类133班_1304010334_杨培文北京市中国1小时5分钟电信类133班_1304010312_李兴北京市中国1小时18分钟电信类134班_1304010436_臧竞之北京市中国1小时48分钟电信类133班_1304010302_陈禹志北京市中国2小时电信类134班_1304010404_戴隆凯北京市中国2小时13分钟电信类134班_1304010422_王宾宾北京市中国2小时36分钟电信类134班_1304010438_张思梦北京市中国3小时12分钟电信类134班_1304010432_许文达北京市中国3小时18分钟电信类134班_1304010414_梁惠莹北京市中国3小时38分钟电信类134班_1304010401_曹磊北京市中国4小时电信类133班_1304010335_杨玉英北京市中国5小时26分钟电信类134班_1304010434_杨雪北京市中国5小时58分钟电信类134班_1304010440_赵宁北京市中国6小时13分钟电信类133班_1304010328_孙昕北京市中国6小时21分钟电信类134班_1304010437_张春玲北京市中国6小时58分钟电信类134班_1304010429_王云飞北京市中国8小时42分钟电信类134班_1304010420_孟雅文北京市中国23小时3分钟电信类134班_1304010428_王岩北京市中国23小时4分钟电信类133班_1304010307_桂雅楠北京市中国23小时5分钟电信类133班_1304010339_张晓旭北京市中国23小时10分钟电信类133班_1304010329_王润冬北京市中国23小时41分钟有29个同学开始复习或者预习表扬榜代码挑错1#includestdio.hvoidmain(){intn;scanf(%d,&n);if(n==100)printf(优\n);elseswitch(n/10){case9:printf(优\n);break;case8:printf(良\n);break;case7:printf(中\n);break;case6:printf(及格\n);break;case5:printf(不及格\n);break;case4:printf(不及格\n);break;case3:printf(不及格\n);break;case2:printf(不及格\n);break;case1:printf(不及格\n);break;case0:printf(不及格\n);break;default:printf(成绩错误\n);}}5.2成绩判断魏莉代码挑错2max=-1014;min=1014;for(i=0;in;i++){if(a[i]max)max=a[i];if(a[i]min)min=a[i];}printf(min=%d,max=%d\n,min,max);}}6.3最大最小值张思梦min=a[0];max=a[0];代码挑错3#includestdio.hvoidmain(){intn,y,r,i,d=0;intt(intn,inty);scanf(%d%d%d,&n,&y,&r);for(i=1;i=y-1;i++)d=d+t(n,i);d=d+r;printf(第%d天\n,d);}intt(intn,inty){intr[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(((n%4==0&&n%100!=0)||(n%400==0)))r[1]=29;}6.8天数计算王润冬-数组函数缺返回值下标与月份代码挑错4#includestdio.hvoidmain(){intn,y,r,t=0,i;scanf(%d%d%d,&n,&y,&r);for(i=1;iy;i++){if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)t=t+31;elseif(y==4||y==6||y==9||y==11)t=t+30;elseif((n%4==0&&n%100!=0)||(n%400==0))t=t+29;elset=t+28;}t=t+r;printf(第%d天\n,t);}变量-某同学6.8天数计算代码挑错5#includestdio.hvoidmain(){intn,a,b,c,p=0;scanf(%d,&n);{for(a=0;a=3;a++)for(a=0;b=3;b++)for(a=0;c=6;c++)if(a+b+c==n)p=p+1;}printf(%d\n,p);}6.9三色球问题魏莉课后代码阅读检查杨培文#includestdio.hvoidmain(){intm,i;scanf(%d,&m);for(i=2;im;i++)if(m%i==0)break;if(i==m)printf(素数\n);elseprintf(不是素数\n);}绘制流程图本讲教学内容(1)了解二维数组的定义、初始化和引用方法(2)熟悉字符串与字符数组,特别是字符串整体输入输出、以及加密、个数统计的算法。√(3)熟悉一维数组在数值计算、数据统计、排序和数据检索(查找、删除、插入)方面的应用;√二维数组存储结构—表格或矩阵结构•逻辑结构:–二维数组恰似一张表格(或矩阵)。–数组元素[行号][列号]–M[3][3]具有如下逻辑结构:M[0][0]M[0][1]M[0][2]M[1][0]M[1][1]M[1][2]M[2][0]M[2][1]M[2][2]•存贮结构:–“按自然顺序”在内存中分配存贮单元–M数组在内存中排列如下:M00M01M02M10M11M12M20M21M22二维数组初始化•按照二维数组元素的物理存储次序给所有或部分数组元素提供数据值intscore[3][4]={85,87,93,88,86,90,95,89,78,91,82,95};•以行结构方式提供各数据值intscore[3][4]={{85,87,93,88},{86,90,95,89},{78,91,82,95}};•C语言允许在为二维数组初始化时省略行下标值,但列下标值不能省略。intmatrix[][4]={85,87,93,88,86,90,95,89,78,91,82,95};例:一个3×4矩阵,要求编程序求出其中值最大那个元素的值,以及其所在的行号和列号。max=a[0][0]fori=0to2forj=0to3真假max=a[i][j]row=icolum=j输出:max和row,columa[i][j]max两重循环控制行、列变化记录最大值以及行、列下标N-S流程图#includestdio.hvoidmain(){inti,j,row=0,colum=0,max;inta[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];row=i;colum=j;}printf(max=%d,row=%d,colum=%d\n,max,row,colum);}运行结果:max=10,row=2,colum=1行列字符数组•字符–是用单引号括起来的单个字符,它在存储器中占1个字节。例如:‘A’•字符串–是用双引号括起来的一串字符,它在存储器中占n+1个字节,即字符串的结束符‘\0‘也占1个字节的位置。例如,”abc”;–有效字符的个数称为字符串长度。例如,”abc”的长度为3,但占4个字节(‘\0‘占一位)。•字符串是用字符型数组存放的。字符数组的定义、初始化和输入输出•字符数组的定义格式:char字符数组名[最大字符数+1]=“字符串”;//整体赋值–例:charc[7]=MONDAY;或charc[7]={MONDAY};或charc[7];c[0]='M';c[1]='O';c[2]='N';c[3]='D';c[4]='A';c[5]='Y';c[6]='\0';//c[6]=0;–例:chard[7]=MON;•字符数组的元素是单个字符数据。字符串的结束符'\0'也占1个字节的位置字符串的输入与输出•而和普通数组不同的是,字符串数组允许聚集操作(即整体赋值)•字符串的输入charname[20];scanf(%s,name);•字符串的输出printf(%s\n,name);平台题7.2-问候语数组名,即首地址当字符串中有空格符时,用这种方法无法接收全部的字符串。使用gets函数,例如:gets(name);字符统计字符数组:–输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。方法可多种:1)用选择与循环、变量2)用选择与循环、数组(提示:建议使用带空格字符串输入方式,这样统计个数时所用的循环结束条件可判断是否是字符串结束标志‘\0’)平台题7.5字符加密•恺撒(替换)加密法–加密规则:将每个字母用字母表中排在其后面的第3个字母的大写形式来替换(如字母d或D就用G来替换),对于字母表中最后的三个字母,可将字母表看成是首尾衔接的(如字母y或Y用B来替换);字符串中其他非字母符号不做改变。–使用该方法编写一个字符串加密程序。//例:恺撒(替换)加密while(c[i]!='\0'){if(c[i]='a'&&c[i]='z')c[i]=c[i]-'a'+'A';/*或者c[i]=c[i]-32;*/if(c[i]='A'&&c[i]='Z')c[i]=(c[i]+3-'A')%26+'A';/*或者书128页例6.10*/i++;}平台题7.8小写转换为大写凯撒加密算法数值计算•一维数组:求和/均值(平台题6.6)•二维数组:–矩阵转置(平台练习7.3)数据统计•一维数组:统计某类数据个数–统计小于均值的个数:第6讲课堂练习排序•一维数组:冒泡排序法使用冒泡排序法编写程序,可以对任意输入的10个整数进行从小到大的排序-书134页例7.3第一趟比较经过第一趟(共5次比较与交换)后,最大的数9已“沉底”。然后进行对余下的前面5个数第二趟比较,第二趟比较如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第i趟比较中要进行n-i次两两比较。9888888955555594444449222222900000098555558444448222228000008544445222250000542224000420020for(j=0;j9;j++){for(i=0;i9-j;i++)if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}程序运行结果如下:input10numbers:10481265-76100-45123↙thesortednumbers:-76-450148126
本文标题:C语言 数组应用与字符串
链接地址:https://www.777doc.com/doc-3080962 .html