计算机等级考试二级C语言考前复习资料(经典例题)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数组部分例题1:输入5个学生的数学成绩,求最低分【分析】:1输入五位同学数学成绩2假定第0位同学成绩最低,赋予min(编号从零开始)3依次比较min与第1、2、3、4同学的成绩,发现更小的就赋予min4输出五位同学成绩5输出最低分min【源码】练习:输入10个学生的英语成绩,求最高分,最低分,平均分。#includestdio.hmain(){inti,min;intmath[5];printf(请输入5位同学的数学成绩:\n);for(i=0;i5;i++){scanf(%d,&math[i]);}min=math[0];for(i=1;i5;i++){if(minmath[i]){min=math[i];}}printf(5位同学的数学成绩为:\n);for(i=0;i5;i++){printf(%d\n,math[i]);}printf(最低分为:%d\n,min);}例题二、将矩阵a的右上三角元素置0例如:右上三角【分析】i\j012301234156782936732431我们发现:右上角元素a[i][j],就是ji的元素【思路】依次查看每个元素下标,如果ji,那么将元素置0(依次查看每个元素,用双重循环)【源码】#includestdio.hmain(){inti,j;inta[4][4]={1,2,3,4,5,6,7,8,9,3,6,7,2,4,3,1};for(i=0;i4;i++){for(j=0;j4;j++){if(ji)/*判断是否是右上三角*/{a[i][j]=0;}/*置0*/}}for(i=0;i4;i++){for(j=0;j4;j++)printf(%4d,a[i][j]);/*输出宽度为4,不够补空格*/printf(\n);}}12345678936724311000560093602431练习:求出数组周边元素的平均值。例如,若a数组中的值为:0127919745238314568259141输出结果应为:aver=3.375注意:周边元素是那些元素?结果aver是float型,数组a是什么类型?例题3:输入一行英文,如IMissYou!,要求将大写字母换小写,小写字母换大写【分析】在本题中,一行英文里有三种字符:大写字母、小写字母、其他(空格,标点符号),所以我们用if-elseif-else结构,而不是if-else结构。但又因为else里面没有做任何处理,所以只剩下了if-elseif。我们翻开课本最后一页ASCII表,发现大写字符的ASCII值比小写字母小了32,故有:’a’-32=’A’、‘A’+32=’a’。既:小写字母-32=大写字母输入一行英文,我们有三种方式,1、scanf(“%c”,&ch[0])2、scanf(“%s”,ch)3、gets(ch)在这里我们选用第三种,原因参考附录【源码】练习:有一行电文,已经按下面规律译成密码:A-Za-zB-Yb-yC-Xc-x既第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母不变。要求编程序将密码译成原文,并输出密码和原文。如有密码:svool,nzirgrnv!#includestdio.h#includestring.hmain(){charch[100];/*安排足够大的空间存字符串,只能多不能少*/inti,len;printf(请输入一行英文:\n);gets(ch);len=strlen(ch);/*取字符串实际长度*/for(i=0;ilen;i++){if(ch[i]='a'&&ch[i]='z')/*判断字母是不是小写*/{ch[i]=ch[i]-32;/*小写转大写,减去32即可*/}elseif(ch[i]='A'&&ch[i]='Z')/*判断字母是不是大写*/{ch[i]=ch[i]+32;/*大写转小写,加上32即可*/}}printf(转换后为:\n);puts(ch);}例题4:冒泡排序【冒泡排序】依次比较相邻的两个数,将小数放在前面,大数放在后面。相当于气泡往上升,质量轻的上浮,重的下沉,故称之为冒泡排序。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较,将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。原始:[985420]第一趟排序后:[85420]9第二趟排序后:[5420]89第三趟排序后:[420]589第四趟排序后:[20]4589第五趟排序后:[0]24589完成024589我们发现,对于6个数:985420,总共进行了5趟排序,第1趟排序进行了5次两两比较,第i趟排序进行了6-i次两两比较练习:编写程序,用冒泡法对字符串maritime排序(ASCII码小的在前面)例题5:选择排序【选择排序】每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前,直到全部待排序的数据元素排完。【示例】:初始[4938659776132749]第一趟排序后13[38659776492749]第二趟排序后1327[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[76976549]第五趟排序后1327384949[976576]第六趟排序后132738494965[9776]第七趟排序后13273849496576[97]最后排序结果1327384949657697#includestdio.hmain(){inti,j,k;inta[6]={9,8,5,4,2,0};for(i=1;i6;i++){for(j=0;j6-i;j++){if(a[j]a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}}}for(i=0;i6;i++){printf(%d\n,a[i]);}}第一步:在[4938659776132749]找到min第二步:找到min后,将min与第一个位置的元素相交换交换13与49,即交换a[t]与a[0],此时t=5。得到:13[38659776492749]回顾范例1#includestdio.hmain(){inti,min;inta[8]={49,38,65,97,76,13,27,49};min=a[0];for(i=1;i8;i++){if(mina[i]){min=a[i];}}printf(%d\n,min);}使用另一种方法:记录最大值的下标t,#includestdio.hmain(){inti,t;inta[8]={49,38,65,97,76,13,27,49};t=0;/*用a[t]代表max*/for(i=1;i8;i++){if(a[t]a[i]){t=i;}}printf(%d\n,a[t]);printf(%d\n,t);}#includestdio.hmain(){inti,t,temp;inta[8]={49,38,65,97,76,13,27,49};t=0;for(i=1;i8;i++){if(a[t]a[i]){t=i;}}if(t!=0)/*如果原本a[o]就最小,那么就不用换*/{temp=a[t];a[t]=a[0];a[0]=temp;}printf(%d\n,a[0]);}最后,对于8个数:[4938659776132749],总共进行了7趟排序,第1趟排序进行了7次两两比较,第i趟排序进行了8-i次两两比较(此处i从1开始)练习:编写程序,用选择法对大小为10的数组按从大到小排序#includestdio.hmain(){inti,j,t,temp;inta[8]={49,38,65,97,76,13,27,49};for(i=0;i8;i++){t=i;/*第i趟从第i个元素开始比较,i从0开始*/for(j=i+1;j8;j++){if(a[t]a[j]){t=j;}}if(t!=i)/*将第i趟中最大值放在a[i]的位置*/{temp=a[t];a[t]=a[i];a[i]=temp;}}for(i=0;i8;i++){printf(%d\n,a[i]);}}附录字符串的输入输出(1)采用循环的方式读取字符串我们发现:不输完15个字符就会一直等待你输入(2)采用%s的方式读取字符串注意:%s读取时遇到空格就认为是结束标志!(3)采用gets()的方式读取字符串#includestdio.hmain(){chara[15];inti;printf(请输入15个字符:\n);for(i=0;i=14;i++)scanf(%c,&a[i]);printf(\n);printf(您刚输入的15个字符:);for(i=0;i=14;i++)printf(%c,a[i]);}#includestdio.hmain(){charc[15];printf(请输入15个以内的字符:\n);gets(c);printf(您刚输入的字符为:\n);puts(c);}#includestdio.hmain(){charc[15];printf(请输入15个以内的字符:\n);scanf(%s,c);printf(您刚输入的字符为:\n);printf(%s\n,c);}输入:Iamaworker.输出结果:Iamaworker.输入:Iamaworker.输出结果:I输入:Iamaworker.输出结果:Iamaworker.说明:gets函数用来输入字符串,能够读取空格和回车符。puts函数用来输出的,输出时会自动在字符串末尾加一个换行符。

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功