全国计算机等级考试二级C语言考前复习资料.docx

上传人:b****7 文档编号:23781656 上传时间:2023-05-20 格式:DOCX 页数:13 大小:63.10KB
下载 相关 举报
全国计算机等级考试二级C语言考前复习资料.docx_第1页
第1页 / 共13页
全国计算机等级考试二级C语言考前复习资料.docx_第2页
第2页 / 共13页
全国计算机等级考试二级C语言考前复习资料.docx_第3页
第3页 / 共13页
全国计算机等级考试二级C语言考前复习资料.docx_第4页
第4页 / 共13页
全国计算机等级考试二级C语言考前复习资料.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

全国计算机等级考试二级C语言考前复习资料.docx

《全国计算机等级考试二级C语言考前复习资料.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言考前复习资料.docx(13页珍藏版)》请在冰豆网上搜索。

全国计算机等级考试二级C语言考前复习资料.docx

全国计算机等级考试二级C语言考前复习资料

第六章数组

例题1:

输入5个学生的数学成绩,求最低分

【分析】:

1输入五位同学数学成绩

2假定第0位同学成绩最低,赋予min(编号从零开始)

3依次比较min与第1、2、3、4同学的成绩,发现更小的就赋予min

4输出五位同学成绩

5输出最低分min

【源码】

#include"stdio.h"

main()

{

inti,min;

intmath[5];

printf("请输入5位同学的数学成绩:

\n");

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

{

scanf("%d",&math[i]);

}

min=math[0];

for(i=1;i<5;i++)

{

if(min>math[i])

{

min=math[i];

}

}

printf("5位同学的数学成绩为:

\n");

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

{

printf("%d\n",math[i]);

}

printf("最低分为:

%d\n",min);

}

练习:

输入10个学生的英语成绩,求最高分,最低分,平均分。

例题二、将矩阵a的右上三角元素置0

例如:

右上三角

【分析】

i\j

0

1

2

3

0

1

2

3

4

1

5

6

7

8

2

9

3

6

7

3

2

4

3

1

我们发现:

右上角元素a[i][j],就是j>i的元素

【思路】依次查看每个元素下标,如果j>i,那么将元素置0(依次查看每个元素,用双重循环)

【源码】

#include

main()

{

inti,j;

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

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

{

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

{

if(j>i)/*判断是否是右上三角*/

{a[i][j]=0;}/*置0*/

}

}

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

{

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

printf("%4d",a[i][j]);/*输出宽度为4,不够补空格*/

printf("\n");

}

}

练习:

求出数组周边元素的平均值。

例如,若a数组中的值为:

01279

19745

23831

45682

59141

输出结果应为:

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)

在这里我们选用第三种,原因参考附录

【源码】

#include

#include

main()

{

charch[100];/*安排足够大的空间存字符串,只能多不能少*/

inti,len;

printf("请输入一行英文:

\n");

gets(ch);

len=strlen(ch);/*取字符串实际长度*/

for(i=0;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);

}

练习:

有一行电文,已经按下面规律译成密码:

A-Za-z

B-Yb-y

C-Xc-x

既第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。

非字母不变。

要求编程序将密码译成原文,并输出密码和原文。

如有密码:

svool,nzirgrnv!

例题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次两两比较

#include"stdio.h"

main()

{

inti,j,k;

inta[6]={9,8,5,4,2,0};

for(i=1;i<6;i++)

{

for(j=0;j<6-i;j++)

{

if(a[j]>a[j+1])

{

k=a[j];

a[j]=a[j+1];

a[j+1]=k;

}

}

}

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

{

printf("%d\n",a[i]);

}

}

练习:

编写程序,用冒泡法对字符串maritime排序(ASCII码小的在前面)

例题5:

选择排序

【选择排序】

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前,直到全部待排序的数据元素排完。

【示例】:

  

初始[4938659776132749]  

第一趟排序后13[38659776492749]  

第二趟排序后1327[659776493849]  

第三趟排序后132738[9776496549] 

第四趟排序后13273849[76976549]  

第五趟排序后1327384949[976576]  

第六趟排序后132738494965[9776]  

第七趟排序后13273849496576[97]  

最后排序结果1327384949657697

第一步:

在[4938659776132749]找到min

使用另一种方法:

记录最大值的下标t,

#include"stdio.h"

main()

{

inti,t;

inta[8]={49,38,65,97,76,13,27,49};

t=0;/*用a[t]代表max*/

for(i=1;i<8;i++)

{

if(a[t]>a[i])

{

t=i;

}

}

printf("%d\n",a[t]);

printf("%d\n",t);

}

回顾范例1

#include"stdio.h"

main()

{

inti,min;

inta[8]={49,38,65,97,76,13,27,49};

min=a[0];

for(i=1;i<8;i++)

{

if(min>a[i])

{

min=a[i];

}

}

printf("%d\n",min);

}

第二步:

找到min后,将min与第一个位置的元素相交换

交换13与49,即交换a[t]与a[0],此时t=5。

得到:

13[38659776492749]

#include"stdio.h"

main()

{

inti,t,temp;

inta[8]={49,38,65,97,76,13,27,49};

t=0;

for(i=1;i<8;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开始)

#include"stdio.h"

main()

{

inti,j,t,temp;

inta[8]={49,38,65,97,76,13,27,49};

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

{

t=i;/*第i趟从第i个元素开始比较,i从0开始*/

for(j=i+1;j<8;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;i<8;i++)

{

printf("%d\n",a[i]);

}

}

练习:

编写程序,用选择法对大小为10的数组按从大到小排序

附录字符串的输入输出

(1)采用循环的方式读取字符串

#include"stdio.h"

main()

{

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]);

}

 

我们发现:

不输完15个字符就会一直等待你输入

(2)采用%s的方式读取字符串

#include"stdio.h"

main()

{

charc[15];

printf("请输入15个以内的字符:

\n");

scanf("%s",c);

printf("您刚输入的字符为:

\n");

printf("%s\n",c);

}

 

注意:

%s读取时遇到空格就认为是结束标志!

(3)采用gets()的方式读取字符串

#include"stdio.h"

main()

{

charc[15];

printf("请输入15个以内的字符:

\n");

gets(c);

printf("您刚输入的字符为:

\n");

puts(c);

}

 

说明:

gets函数用来输入字符串,能够读取空格和回车符。

puts函数用来输出的,输出时会自动在字符串末尾加一个换行符。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1