云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 全国计算机等级考试二级C语言资料(机试) - 图文

全国计算机等级考试二级C语言资料(机试) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 16:21:23

#include #define N 20

void fun(int a[],int n) { }

void main()

{int a[N]={9,6,8,3,-1},i,m=5; printf(\排序前的数据:\

for(i=0;i

printf(\排序后的顺序:\

for(i=0;i

【参考答案】

void fun(int a[],int n) { int i,j,t;

for(i=0;i

{t=a[p]; a[p]=a[j]; a[j]=t; } }

【解题思路】 题中所提到的是\从小到大\的顺序。这类题可以利用选择法,即从后N个比较过程中,选择一个最小的与第一个元素交换,依此类推,即用第二个元素与后N-1个进行比较,并进行交换。该题与我们常见的C语言排序题类似,也是改错和编程题中的重点,请参看同类试题,以便达到举一反三的目的。 另附字符串中字符的排序 如:请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。 第 17 页 例如,原来的字符串为Bdsihad,则排序后输出为Badhisd。 #include #include #include

void fun(char *s, int num) { }

void main() {char s[10];

char b[10]=\

printf(\输入7个字符的字符串:\ gets(s); fun(s,7);

printf(\}

【参考答案】

int fun(char *s, int num) { char t; int i, j;

for(i=1;i

符*/

for(j=i+1;js[j])

/*如果后面字符的ASCII码值小于该字符的ASCII码值*/ { t=s[i];/*则交换这两个字符*/ s[i]=s[j]; s[j]=t; } }

【解题思路】本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素s[i]和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码

共 30 页

值,则交换这两个数组元素的值。 ? 题型四:元素平移问题

4、请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。

例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动后, 一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。 #include #define N 80

void fun(int *w, int p, int n) { }

main()

{ int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15;void

printf(\

for(i=0; i

printf(\ for(i=0; i

【参考答案】

void fun(int *w, int p, int n) {

int i,j,t;

for(i=0;i<=p;i++) /*循环左移p+1次*/ {

t=w[0]; /*将0下标元素备份到t中*/

for(j=1;j

【解题思路】本题采用\循环左移\的算法,即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符。当要平移p个字符时,则要进行p次的循环左移。 ? 题型五:数组去掉值重复的元素

5、请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如:若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10,删除后,数组中的内容应是:22 3 4 5 6 7 8 9 10 # include # define N 80

int fun(int a[], int n) { }

main() {

int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i,n=20; printf(\ for(i=0; i

printf(\ n=fun(a,n);

printf(\ for(i=0;i

printf(\}

【参考答案】

int fun(int a[], int n) {

共 30 页

int i,t,j=0,*p=a; t=p[0];

for(i=0;i<=n;i++) if(t==p[i]) ; else {

a[j]=t; t=p[i]; j++; } if(i>=n) a[j]=t; return j; }

【解题思路】由于数组是已经排好序的,相同的指定在一起,所以从前往后比,只要发现一个不和前面相同,后面就不再会有和前面相同的了。

题目中把准备保存下来的数存着t中,然后他后面的数顺序与他比较,如果不相等,那么就把这个数存起来,此时数组下标用另一个j来表示,只要出现不相等的情况,j才++,同时t换成这个和他不相等的新数。

提示:如果没排好序的我们可以先排序然后进行上面的操作。 ? 题型六:数组元素的查找

6、请编写函数fun,函数的功能是查找x在s所指数组中下标的位置作为函数值返回,若x不存在,则返回-1。 #include #include #define N 15

int fun( int *s, int x) { }

main()

{ int a[N]={ 29,13,5,22,10,9,3,18,24,25,14,15,2,7,27},i,x,index;

第 19 页 printf(\数组中的数据 :\\n\

for(i=0;i

printf(\}

【参考答案】

int fun( int *s, int x) {

int i;

for(i = 0; i < N; i++) if(s[i] == x) return i; if(i == N) return -1; }

【解题思路】查找数组元素值为x的下标,只需要把数组的每个元素a[i](i从0到N-1)与x比较,如果相等则返回i的值,否则返回-1。 注意:改错中还有一个二分查找法需要掌握。

分类三:二维数组操作

? 题型一:二维数组周边元素

1、下列程序定义了的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a 数组中的值为:

0 1 2 7 9 1 9 7 4 5 2 3 8 3 1 4 5 6 8 2 5 9 1 4 1

则返回主程序后s的值应为3.375。 #include

共 30 页

#include #include #define N 5

double fun (int w[][N]) { }

void main()

{ int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1}; int i, j; double s;

printf(\ for (i=0; i

{printf(\ printf(\ }

s=fun(a);

printf(\ printf(\}

【参考答案】

double fun (int w[][N]) {

int i,j,k=0; double av=0.0; for(i=0;i

【解题思路】该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,所以只要下标中有一个为0或N-1,那么它一定是周边元素。计算周边元素个数的方式是当给av加一个值时,k也加1,k也可用2*N+2*N-4求得。 ? 题型二:二维数组对角线、上三角和下三角元素的操作

2、程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:或n的值为3,a数组中的值为

1 9 7 3 9 7 a= 2 3 8 则返回主程序后a数组中的值应为:6 9 8 4 5 6 12 15 18 #include #include #define N 3

void fun ( int a[][N], int n ) { }

main() {

int a[N][N], i, j;

printf(\ for ( i=0; i

for(j=0; j

a[i][j]=rand(); printf(\ }

printf(\ }

共 30 页

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#include #define N 20 void fun(int a[],int n) { } void main() {int a[N]={9,6,8,3,-1},i,m=5; printf(\排序前的数据:\ for(i=0;i

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com