首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
admin
2019-04-14
101
问题
请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#define N 80
int fun(int a[],int n)
{
}
void main()
{
FILE *wf;
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(″The original data:\n″);
for(i=0;i<n;i+ +)
printf(″%3d″,a
);
n=fun(a,n);
printf(″\nThe data after deleted:\n″);
for(i=0;i<n;i+ +)
printf(″%3d″,a
);
printf(″\n″);
/* * * * * * * * * * * * * * * */
wf=fopen(″out.dat″,″w″);
for(i=0;i<n;i+ +)
fprintf(wf,″%3d″,a
);
fclose(wf);
/* * * * * * * * * * * * * * * */
}
选项
答案
int fun(int a[],int n) { int i,j=1; for(i=1;i<n;i+ +) if(a[j—1]!=a[i]) /*若该数与前一个数不相同,则要保留*/ a[j+ +]=a[i]; return j;/*返回不相同数的个数*/ }
解析
该程序的流程是:定义变量i和j,其中j用于控制删除后剩下的数在数组中的下标,i用于搜索原数组中的元素。j始终是新数组中最后一个元素的下一个元素的下标,所以if语句中的条件是a[j—1]!=a
,其中a[j—1]就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以a
要保留到新数组中。
注意:本题中i和j的初值都要从1开始,该算法只能用于数组已排序的题目中。
转载请注明原文地址:https://kaotiyun.com/show/V1Rp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下程序运行后的输出结果是()。#include<stdio.h>voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t==a[i];a[i]=a[n
以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,1
请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。【】(double,double);main(){doublex,y;scanf("%1f%1f",&x,&y);printf("
若有以下定义和语句:() ints[4][5](*ps)[5]; ps=s; 则对s数组元素的正确引用形式是
以下程序的输出结果是______。 main() { int i: for(i=’A’;i<’i’; i++, i++) printf("%c",i+32): printf("\n"); }
数据存储和数据流都是__________,仅仅是所处的状态不同。
下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请填空。#include<stdio.h>main(){inti,j;for(i=0;i<10或i<=9;i++){j
下列叙述中错误的是
设有下列定义:structsk{intm;floatx;}data,*q;若要使q指向data中的m域,正确的赋值语句是()。
以下不是结构化程序设计方法的技术是()。
随机试题
动作发展最为迅速,机械记忆比较发达的时期是()。
在古罗马共和时代,控制国家最高权力的是()
身处教育实践第一线的研究者与受过专门训练的科学研究者密切协作,以教育实践中存在的某一问题作为研究对象,通过合作研究,再把研究结果应用到自身从事的教育实践中的一种研究方法,这种方法是()。
电子邮件可以发送图片,但不能发送声音。()
腺样囊性癌最常发生远处转移的脏器是A.脑B.骨C.肝D.肾E.肺
对不予医师执业注册有异议的可以
某县公安局接到有人在薛某住所嫖娼的电话举报,遂派员前往检查。警察到达举报现场,敲门未开破门入室,只见薛某一人。薛某拒绝在检查笔录上签字,警察在笔录上注明这一情况。薛某认为检查行为违法,提起行政诉讼。下列哪些选项是正确的?(2009年试卷二第88题)
我国首次实现月球软着陆和月面巡视勘察的探测器是()。
以下人物中,()是《玩偶之家》中的人物。
请打开考生文件夹下的解决方案文件ptoj3,此工程中包含一个源程序文件proj3.cpp,其功能是从文本文件in.dat中读取全部整数,将整数序列存放到intArray类的对象中,然后建立另一对象myArray,将对象内容赋值给myArray。类intAr
最新回复
(
0
)