




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022学年河南省驻马店市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.下列叙述中错误的是()。
A.C语言函数中定义的自动变量,系统不自动赋确定的初值
B.在C语言的同一函数中,各复合语句内可以定义变量,其作用域仅限于本复合语句内
C.C语言函数中定义的赋有初值的静态变量,每调用一次函数为其赋一次初值
D.C语言函数的形参不可以说明为static型变量
2.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串
A.12B.14C.18D.24
3.有以下程序#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}执行后输出结果是()A.28B.22C.16D.4
4.在JavaScript语言中,要定义局部变量则可以()。
A.由关键字private在函数内定义
B.由关键字private在函数外定义
C.由var在函数内定义
D.由关键字var在函数外定义
5.冒泡排序在最坏情况下的比较次数是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
6.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}从第一列开始输入数据(<CR>代表…个回车符):3845<CR>,则狴序输出结果为()。
A.77889B.77868C.776810D.7.78866e+007
7.栈通常采用的两种存储结构是A.A.线性存储结构和链表存储结构
B.散列方式和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
8.若有以下程序段
intm=0xabc,n=0xabc;
m-=n;
printf("%x\n",m);
执行后的输出结果是A.A.0X0
B.0x0
C.0
D.0xABC
9.设有定义“intx[2][3];”,则以下选项中不能表示数组元素x[0][1]的是()。
A.*(*x+1)B.*(*(x+1)C.(*x)[1]D.*(&x[0][0]+1)
10.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件
B.文件由结构序列组成,可以构成二进制文件或文本文件
C.文件由数据序列组成,可以构成二进制文件或文本文件
D.文件由字符序列组成,其类型只能是文本文件
11.
12.向一个栈顶指针为H的链栈中执行出栈运算时,需执行()。
A.p=H;H=H->link;free(p);
B.H=H->link;free(H);
C.p=H;H->link=H->link->link;free(p);
D.p=H;H=H->link;
二、2.填空题(12题)13.数据库的设计通常可以分为这样四个步骤:需求分析、概念设计、______、和物理设计。
14.执行以下程序后,输出“#”的个数是【】。
#include<stdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
15.若a=10,b=20,则表达式!(a<b)的值是【】。
16.下列程序段的运行结果是______。
intx=0,y=0;
while(x<15)y++,x+=++y;
printf("%d,%d",y,x);
17.下面rotate函数的功能是:将n行n列的矩阵A转置为A',例如:
123415913
5678261014
当A=9101112则A'=371115
13141516481216
请填空。
#defineN4
voidrotate(inta[][NJ)
{
inti,j,t;
for(i=0;i<N;i++)
for(j=0;______;j++)
{
t=a[i][j];
______;
a[j][i]=t;
}
}
18.下列程序的输出结果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
19.数据结构分为逻辑结构与存储结构,线性链表属于【】。
20.有以下程序:
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)puts(ps);
}
执行后的输出结果是【】。
21.以下程序运行时若从键盘输入:102030<回车>。输出结果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
22.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。
23.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。
24.在面向对象方法中,类之间共享属性和操作的机制称为______。
三、3.程序设计题(10题)25.编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
fun(char(*a)[81],intnum,char*max)
{
}
main()
{
charss[l0][81],*ps;
intn,i=0;
clrscr();
prlntf("输入若干个字符串");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
/*用****作为结束输入的标志*/
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
ps=fun(ss,n,&ps);
print~("\nmax=%s\n",ps);
}
26.假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序;
#include<stdio.h>
#include<conio.h>
voidfun(char*a)
{
}
main()
{
chars[81];
printf("Enterastring:\n");
gets(s);
fun(s);
printf("Thestringafterdeleted:\n");
puts(s);
}
27.请编写函数fun(),该函数的功能是:计算并输出
S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)
例如,若主函数从键盘给n输入20后,则输出为
s=534.188884。
注意;部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doubles;
printf("\n\nInputn:");
scanf("%d",&n);
s=fun(n)
printf("\n\ns=%f\n\n",s);
}
28.请编写函数fun(),该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,若二维数组中的数据为:
WWWW
SSSS
HHHH
则字符串中的内容应是WSHWSHWSHWSH。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineM3
#defineN4
voidfun(char(*s)[N],char*b)
{
}
main()
{
chara[100],w[M][N]={{'W','W','W','W'},
{'S','S','S','S'},{'H','H','H','H'}};
inti,j;
printf("Thematrix:\n");
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
printf("%3c",w[i][j]);
printf("\n");
}
fun(w,a);
printf("TheAstring:In");
puts(a);
printf("\n\n");
}
29.某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。请编写fun()函数,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。
例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN8
typedefstruct
{charnum[10];
doubles[N];
doubleave;
}STREC;
voidfun()
{
}
main()
{
STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);
inti;
fun(&s);
printf("The%s'sstudentdata:\n",s.num)//*输出学号*/
for(i=0;i<N;i++)
printf("%4.1f\n",s.s[i]);
/*输出各科成绩*/
printf("\nave=%7.3f\n",s.ave);
/*输出平均分*/
}
30.请编写函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2223445666677899101010
删除后,数组中的内容应该是:
2345678910。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{
}
main()
{
inta[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("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThedataafterdeleted
:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
31.请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
{
}
main()
{
inti,x[20],max,index,n=10;
randomize();
for(i=0;i<=n;i++)
{
x[i]=rand()%50;
printf("%4d",x[i]);
/*输出一个随机数组*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
32.请编一个函数voidfun(inttt[M][N],intpp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
}
main()
{
intt[M][N]={{68,32,54,12},{14,24,88,
58},{42,22,44,56}};
intp[N],i,j,k;
clrscr();
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
33.程序定义了NxN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。
例如:a数组中的值为:
则返回主程序后s的值应为:3.375。
注意:部分源程序存在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
34.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*输出指定分数范围内的学生记录*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分数在80~98之间的学生记录按他数从低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
四、单选题(0题)35.下列选项中,当x为大于1的奇数时,值为0的表达式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
五、单选题(0题)36.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
六、单选题(0题)37.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
参考答案
1.CA选项描述正确,自动变量未被赋初值,为随机值;B选项描述正确,除在函数开始位置定义变量外,在复合语句内也可以定义变量;C选项描述错误,函数内的静态变量只在第1次调用时赋值,以后调用保留上次的值;D选项描述正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。故本题答案为C选项。
2.B
3.A解析:f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28。
4.C
5.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。
6.A
7.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。
8.C本题考查C语言中的数据输出格式。
题目中定义了两个整型变量m、n,对这两个变量赋值,输入的数值为十六进制整数,并且有m=n。进行m-n运算后,将减法所得到的值赋给m,并将m值输出。其中printf的格式字符选用的格式字符为x,即以十六进制形式输出整数。注意,0x是表示该数为十六进制的标志,输出数据时,数据前面不会自动加上进制的标志。
9.B选项A中*x等价于x[0],*x+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确;选项B中,*(x+1)等价于x[1],*(*(x+1))等价于x[1][0],错误;选项C中,*x等价于x[0],(*x)[1]等价于x[0][1],正确;选项D中,&x[0][0]等价于x[0],&[0][0]+1等价于x[0]+1,*(x[0]+1)等价于x[0][1],正确。故本题答案为B选项。
10.C文件由数据序列组成,可以构成二进制文件或文本文件。故本题答案为C选项。
11.A
12.A
13.逻辑设计逻辑设计解析:数据库设计的四个阶段为:需求分析、概念设计、逻辑设计和物理设计。
14.66解析:本题考察的是一个嵌套的循环,当满足j<=i时,输出一个“#”号,符合条件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共输出6个“#”。
15.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
16.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。
17.j<ia[i][j]=a[j][i]j<ia[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空格处应该填写1<i,第二个空格处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。
18.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。
19.存储结构
20.zyzXyzzyzXyz解析:本题考查字符型指针变量的应用。程序中字符指针变量ps指向字符串'xyz',while循环语句的作用使ps指向字符串结尾,for循环的执行过程如下。
第一次循环:ps指向字符串'z',输出z。
第二次循环:ps指向字符串'yz',输出yz。
第三次循环:ps指向字符串'xyz',输出xyz。
21.1030010300解析:本题的scanf()函数要求用户输入三个十进制整数,但只接受第一和第三个到函数的第二和第三个参数所指的内存地址中。所以本题的输出为:10300。
22.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。
23.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。
24.继承继承
25.fun(char(*a)[81]intnumchar*max){inti=0;max=a[0];for(i=0;i<num;i++)/*找出最长的一个字符串*/if(strlen(max)<strlen(a[i]))max=a[i];returnmax;/*传回最长字符串地址*/}fun(char(*a)[81],intnum,char*max)\r\n{\r\ninti=0;\r\nmax=a[0];\r\nfor(i=0;i<num;i++)/*找出最长的一个字符串*/\r\nif(strlen(max)<strlen(a[i]))\r\nmax=a[i];\r\nreturnmax;/*传回最长字符串地址*/\r\n}解析:做本题之前,我们先应该明白ss是一个指向一维数组的指针变量,max是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用max,因为ss[0]是一个数组地址而不是一个指针的地址。
26.voidfun(char*a){char*p=a;while(*P==‘+’)p++;/*指针p指向字符串第一个字母*/for(;*p!=‘\0’;p++a++)*a=*p;/*从第—个字母开始其后的字符都放入指针a所指的字符串中*/*a=‘\0’;/*在字符串最后加上结束标记符*/}voidfun(char*a)\r\n{\r\nchar*p=a;\r\nwhile(*P==‘+’)p++;/*指针p指向字符串第一个字母*/\r\nfor(;*p!=‘\\0’;p++,a++)\r\n*a=*p;/*从第—个字母开始,其后的字符都放入指针a所指的字符串中*/\r\n*a=‘\\0’;/*在字符串最后加上结束标记符*/\r\n}解析:在前面的改错题和编程题中,相关试题已经出现好多次了,我们在此提供另一种解答方法。
#include<string.h>
voidfun(char*a)
{char*p=a;
while(*p==‘*’)p++;
strcpy(a,p);
}
27.doublefun(intn){inti;doubles=0.0s1=0.0;for(i=1;i<=n;i++){s1=s1+pow(i0.5);/*求每—项*/s=s+s1;/*按公式求出s*/}returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0,s1=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+pow(i,0.5);/*求每—项*/\r\ns=s+s1;/*按公式求出s*/\r\n}\r\nreturns;\r\n}解析:我们先用数学的思路读懂该程序,并用1个字符表示“()”内的值。在本程序中用s1来表示题中每个小括号内的值,第1项相当于有1个10.5次方(它还是1),第2项相当于第1项的值加上200.5次方,第3项相当于第2项的值加上30.5次方,…,依次类推。函数pow(x,y)的功能是求出x的y次方,该函数已在库函数<math.h>中定义(即可直接使用)。要程序中用s来表示总的结果,每1次循环加1次s1即加1项。
28.voidfun(char(*s)[N]char*b){intijk=0;for(i=0;i<N;i++)/*按列的顺序依次放到一个字符串中*/for(j=0;j<M;j++)b[k++]=s[j][i];b[k]='\0';}voidfun(char(*s)[N],char*b)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<N;i++)/*按列的顺序依次放到一个字符串中*/\r\nfor(j=0;j<M;j++)\r\nb[k++]=s[j][i];\r\nb[k]='\\0';\r\n}解析:看到程序后,我们很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。注意其中第1个循环条件为i<N(即列),第2个循环的条件为J<M(即行),这是因为在循环的嵌套中越在内层,循环变化就越快。另外,在编写程序中注意是s[j][i]而非s[i][j]。
29.voidfun(STREC*p){inti;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i];/*求各门成绩的总和*/p->ave=p->ave/N;/*求平均分*/}voidfun(STREC*p)\r\n{\r\ninti;\r\np->ave=0.0;\r\nfor(i=0;i<N;i++)\r\np->ave=p->ave+p->s[i];/*求各门成绩的总和*/\r\np->ave=p->ave/N;/*求平均分*/\r\n}解析:本题考查自己定义形参的相关知识点,程序流程是这样的,在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*p,此时,引用成员的方式可以是用指向运算符即p->ave和p->s[i],当然,也可用(*p).ave和(*p).s[i]。
30.intfun(inta[]intn){intij=l;for(i=1;i<n;i++)if(a[j-1]!=a[i])/*若该数与前一个数不相同则要保留*/a[j++]=a[i];returnj;/*返回不同数的个数*/}intfun(inta[],intn)\r\n{\r\ninti,j=l;\r\nfor(i=1;i<n;i++)\r\nif(a[j-1]!=a[i])/*若该数与前一个数不相同,则要保留*/\r\na[j++]=a[i];\r\nreturnj;/*返回不同数的个数*/\r\n}解析:本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以a[i]要留下到新数组中。注意本题中i,j的初值都要从1开始,该算法只能用于数组已排序的题目中。
31.voidfun(inta[]intnint*maxint*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/if(*max<a[i]){*max=a[i];*d=i;}}voidfun(inta[],intn,int*max,int*d)\r\n{\r\ninti;\r\n*max=a[0];\r\n*d=0;\r\nfor(i=0;i<n;i++)/*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/\r\nif(*max<a[i])\r\n{*max=a[i];*d=i;}\r\n}解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。
32.voidfun(inttt[M][N]intpp[N]){intiimax;for(j=0;j<N;j++){max=tt[0][j];/*假设各列中的第一个元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max)/*如果各列中的其他元素比最大值大则将这个更大的元素看作当前该列中最大元素*/max=tt[i][j];pp[j]=max;/*将各列的最大值依次放入pp数组中*/}}voidfun(inttt[M][N],intpp[N])\r\n{\r\ninti,i,max;\r\nfor(j=0;j<N;j++)\r\n{\r\nmax=tt[0][j];/*假设各列中的第一个元素最大*/\r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南堤灌维护工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北水文勘测工四级(中级工)历年参考题库典型考点含答案解析
- 2025年老年教育课程改革与多元化教学模式研究报告
- 2025年事业单位工勤技能-湖北-湖北垃圾清扫与处理工二级(技师)历年参考题库典型考点含答案解析
- 2025-2030中国纸浆模塑行业运营形势与发展规划分析报告
- 2025年互联网金融平台合规整改与金融科技监管的合规认证与可持续发展报告
- 2025-2030中国红外耳机行业消费状况与营销前景预测报告
- 2025年事业单位工勤技能-浙江-浙江铸造工三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江广播电视天线工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏环境监测工四级(中级工)历年参考题库含答案解析(5套)
- 校园基孔肯雅热防控措施课件
- (2025年标准)离职手协议书
- 2025年团场人员考试题库
- 班组质量管理
- 2025年四川省建筑施工企业安管人员考试(企业主要负责人·A类)历年参考题库含答案详解(5卷)
- 实战能力评估模型-洞察及研究
- 超声引导髂筋膜阻滞技术
- 铁路建设工程质量安全监督管理办法
- 数字经济与市场结构-洞察及研究
- DB42T 1496-2019 公路边坡监测技术规程
- 学校餐厅试吃活动方案
评论
0/150
提交评论