版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022学年黑龙江省双鸭山市全国计算机等级考试C语言程序设计真题一卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)()。
A.print[("%c\n",a-32);
B.print[("%d\n",A);
C.printf("%c\n",65);
D.printf("%c\n",B-1);
2.已知shortint类型变量占用两个字节,若有定义:shortintx[10]={0,2,4};,则数组x在内存中所占字节数是()。
A.3B.6C.10D.20
3.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为()。
A.7B.8C.9D.10
4.以下选项中合法的实型常数是()。
A.5E2.0B.E-3C.2E0D.1.3E
5.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()
A.连接码B.关系码C.外码D.候选码
6.
7.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
8.下列程序段的时间复杂度为()。A.O(i+j)B.O(n)C.O(n2)D.O(i*j)
9.
10.设有定义“floata=12.3f;doubleb=456.78;”,若想用printf函数输出a和b的值,关于输出格式,以下说法正确的是()。
A.只能用%lf输出a,用%f输出b
B.只能用%f输出a,用%lf输出b
C.只能用%lf输出a,用%lf输出b
D.既可以用%f输出a,也可以用%f输出b
11.若a是数值类型,则逻辑表达式“(a==1)||(a!=1)”的值是()。
A.1B.0C.2D.不知道a的值,不能确定
12.
二、2.填空题(12题)13.设有如下变量说明,则a+(int)((int)b+c)>>(int)(b-c)的值为【】。
inta=5;floatb=7.2,c=3.6;
14.以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}
15.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
16.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
return(num);
}
17.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
18.下面程序的运行结果是______。
voidswap(int*a,int*B)
{
int*t;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
19.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
20.下列程序段的输出结果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
21.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种。
22.在数据结构中,顺序存储结构的数据元素所占的存储空间是______的。
23.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
24.以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,
否则返回0。请填空。
intisprime(inta)
{inti;
for(i=2;i<=a/2;i++)
if(a%i==0)【】;
【】;
}
三、3.程序设计题(10题)25.请编写函数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。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdiO.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{in[a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
inti,p,n=15;
printf("Theodginaldata:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);
printf("\nEnterp:");
scanf("%d",&p);
fun(a,p,n);
printf("\nThedataaftermoving:\n");
for(i=0;i<n;i++)printf("%3d”,a[i]);
}
26.请编写一个函数fun(),它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
7111421X283335424449
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{
}
main()
{
intaa[M],n,k;
clrscr();
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)/*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
}
27.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubleS;
}STREC;
doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)
{
}
main()
{
STRECs[N]={{“GA05”,65},{“GA03”,86},
{“GA02”,76},{“GA04”,95},{“GA01”,93},
{“GA07”,78},{“GA08”,68},{“GA06”,88},
{“GA09”,60},{“GAll”,54},{“GAl2”,56},
{“GAl0”,98}};
STRECh[N],l[N],t;
FILE*out;
inti,j,m,n;
doubleave;
ave=fun(S,h,l,&n,&m);
printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.lf\n",h[i].num,
h[i].s);
printf("\n");
printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);
for(i=0;i<m;i++)
printf("%s%4.1f\n",l[i].num,l[i].s);
printf("\n");
ut=fopen("out26.dat","w");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+1;i<n;j++)
if(h[i].s<h[j].s)
{t=h[i];h[i]=h[i];h[j]=t;}
/*分数从现到低排列*/
for(i=0;i<n;i++)
fprintf(out,“%4.1f\n",h[i].s);
fprintf(out,"%d\n%7.3f\n",m,ave);
for(i=0;i<m-1;i++)
for(j=i+1;i<m;j++)
if(l[i].s<l[j].s)
{t=l[i];l[i]=l[j];l[j]=t;}
/*分数从高到低排列*/
for(i=0;i<m;i++)
fprintf(out,"%4.1f\n",l[i].s);
fclose(out);
}
28.学生的记录由学号和成绩组成,N名学生的数据己在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不只一个,函数返回分数最低学生的人数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
{
}
main()
{
STRECs[N]={{“GA005”,82},{“GA003”,75},
{“GA002”,85},{“GA004”,78},{“GA001”,95},
{“GA007”,62},{“GA008”,60},{“GA006”,85},
{“GA015”,83},{“GA013”,94},{“GA012”,78},
{“GA014”,97},{“GA011”,60},{“GA017”,65},
{“GA018”,60},{“GA016”,74}};
STRECh[N];
inti,n;
FILE*out;
n=fun(S,h);
printf(“The%dlowestscore:\n”,n);
for(i=0;i<n;i++)
printf(“%s%4d\n”,h[i].mum,h[i].s);
/*输出最低分学生的学号和成绩*/
printf(“\n”);
out=fopen("outl9.dat",“w”);
fprintf(out,“%d\n”,n);
for(i=0;i<n;i++);
fprintf(out,“%4d\n”,h[i].s);
fclose(out);
}
29.编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。
例如:m=12,n=8时,运行结果为495.000000。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charmum[10);
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECs[N]={{“GA005”,88},{“GA003”,64},
{“CA002”,77},{“GA004”,89},{“GA001”,54},
{“GA007”,72},{“GA008”,72},{“GA006”,65},
{“GA015”,83},{“GA013”,95},{“GA012”,55},
{“GA014”,68},{“GA01l”,78},{“GA017”,53},
{“GA018”,92},{“GA016”,82}};
inti;
FILE*out;
fun(s);
printf(“Thedataaftersorted:\n”);
for(i=0;i<N;i++)
{
if((i)%4==0)
/*每行输出4个学生记录*/
printf(“\n”);
printf(“%s%4d”,s[i].num,s[i].s);
}
printf(“\n”);
ut=fopen(“out21.dat”,“w”);
for(i=0;i<N;i++)
{
if((i)%4==0&&i)
fprintf(out,“\n”);
fPrintf(out,“%4d”,s[i].s);
}
fprintf(out,“\n”);
fClose(out);
}
31.请编写函数fun(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为:
33333333
44444444
55555555
则一维数组中的内容应该是33333333444444AA,55555555
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
voidfun(int(*s)[10],int*b,int*n,
intmm,intnn)
{
}
main()
{
intw[10][10]={{33,33,33,33},{44,44,
44,44},{55,55,55,55}},i,j;
inta[100]={0},n=0;
printf("Thematrix:\n");
for(i=0;i<3;i++)
{for(j+0;j<4;j++)
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("TheAarray:In");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
32.请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。
S=1+x+x2/2!3/3!+…/xn/n!
例如,当n=10,x=0.3时,函数值为1349859。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0,3,10));
}
33.请编一个函数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");
}
34.函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一含新串放在t所指的数组中。
例如,若s所指字符串中的内容为:“ABCDEFGl23456”,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:“246”。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
四、单选题(0题)35.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;
A.10B.20C.40D.30
五、单选题(0题)36.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234
六、单选题(0题)37.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。
A.2B.3C.1D.1.5
参考答案
1.B在C语言中%d表示输出整型数值,所以答案为B。
2.D
3.A
4.C解析:在C语言中,实数有两种表示形式:十进制数形式与指数形式。
一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点),
指数形式的小数;指数形式的实数由尾数部分、e(E)和指数部分组成(字母e或E的前后必须要有数字,且其后面的指数必须为整数)。
选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字:选项D中,E后面没有数字。最终可以判断选项C正确。
5.DD)【解析】在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。
6.C
7.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
8.C
9.B
10.DC语言中,%f是格式控制符,它既可以输出单精度数也可以输出双精度数。故本题答案为D选项。
11.A逻辑或“||”要求两边的运算对象有一个非零值,结果就为真。变量a的值不确定,但是若a为1,则左边运算对象的值为1;若a不为1,则右边运算对象的值为1,所以总能保证一边为非零值。故本题答案为A选项。
12.C
13.11解析:在表达式a+(int)((int)b+c)>>(int)(b-c)中圆括号最优先,其次为类型转换(int)、加法+、减法-、右移运算>>。所以先看两个圆括号((int)b+c)和(b-c),前者b先被转换为int型7,然后与c相加得10.6,后者结果是3.6,现在表达式为a+(iot)10.6>>(int)3.6。C语言中,float型转换为int型是截尾取整,所以表达式进一步简化为5+10>>3=>15>>3。由于15的二进制为000011112(下标),所以15>>3的结栗是000000012(下标),即1。
14.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求两个矩阵的和只要将对应元素相加即可。
15.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
16.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1
17.完整性控制完整性控制
18.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针变量a和b,a和b分别指向7实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依旧是原来的值。
19.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。
20.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。
21.关系模型关系模型解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。
22.连续连续解析:顺序存储结构具有两个特点:1)数据元素所占空间是连续的;2)数据元素在存储空间中是按逻辑顺序依次存放的。
23.3535解析:考查swap()函数。函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
24.return0return1return0,return1解析:如果a能被i整除,则a是素数,返回值为0。如果a不能被i整除,则a不是素数,返回值为1。
25.voidfun(int*wintpintn){intiJ;inta[N];for(i=0;i<=p;i++)a[i]=w[i]for(i=p+1j=0;i<n;i++j++)w[j]=w[i];for(i=0;i<=p;i++)w[n-p-1+i]=a[i];}voidfun(int*w,intp,intn)\r\n{inti,J;\r\ninta[N];\r\nfor(i=0;i<=p;i++)a[i]=w[i]\r\nfor(i=p+1,j=0;i<n;i++,j++)w[j]=w[i];\r\nfor(i=0;i<=p;i++)w[n-p-1+i]=a[i];\r\n}解析:将数组后面的元素向前平移,肯定会将前面的元素覆盖。因此,可以定义一个数组用来暂时存放前面的元素。可以先将w[0]~w[p]依次赋给a[0]~a[p];然后将w[p]~w[n—1)
移到数组的前面:再将a[0]~a[p)依次赋给w[n-p-1+i]~w[n—1]。
26.voidfun(intmint*aint*n){intij=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)/*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/a[j++]=i;*n=j;/*返回这些数的个数*/}voidfun(intm,int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=m;i++)\r\nif(i%7==0||i%11==0)/*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/\r\na[j++]=i;\r\n*n=j;/*返回这些数的个数*/\r\n}解析:本题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“||”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&&”运算符。
27.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*将高于等于平均分的学生存从所指存储单元中并统计人数*/*n=*n+l;}else{c[*m]=a[i];/*将低于平均分的学生存入c所指存储单元中并统计人数*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*将高于等于平均分的学生存从所指存储单元中,并统计人数*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*将低于平均分的学生存入c所指存储单元中,并统计人数*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本题中第1个循环的作用求出所有分数的总和,只有进行了av=av/N后才得到平均值(我们在前面的程序中碰到过类似问题)。第2个循环的作用是将高于等于平均分的学生存/kb所指存储单元中,将低于平均分的学生存入c所指存储单元中。同一结构体变量之间可以互相赋值。
本程序中直接用*n,*m来分别表示b,c的下标,注意开始时要给*n,*m赋0,且使用时不能少*号。因为单独的n,m是一个指针变量,而我们要用的是它所指向的那个存储单元中的值。
28.intfun(STREC*aSTREC*b){intij=0min=a[0].s;for(i=0;i<N;i++)if(min>a[i].s)min=a[i].s;/*找出最小值*/for(i=0;i<N;i++):if(min==a[i].s)b[j++]=a[i];/*找出成绩与min相等的学生的记录存入结构体b中*/returnj;/*返回最低成绩的学生人数*/intfun\u3000(STREC*a,STREC*b)\r\n{\r\ninti,j=0,min=a[0].s;\r\nfor(i=0;i<N;i++)\r\nif(min>a[i].s)\r\nmin=a[i].s;/*找出最小值*/\r\nfor(i=0;i<N;i++):\r\nif(min==a[i].s)\r\nb[j++]=a[i];/*找出成绩与min相等的学生的记录,存入结构体b中*/\r\nreturnj;/*返回最低成绩的学生人数*/解析:该程序使用循环嵌套,第1个for语句的作用是找出最小值。第2个循环的作用是找出与min相等的成绩,也即最低成绩的学生记录,并存入b中。
29.
解析:(1)该程序功能是对组合数公式求值。它的解题思路,可以分解为以下几步:求m!→求n!→求(m-n)!→求组合数的值。
(2)从已给部分源程序的main主函数开始入手,主函数中的“printf(“P=%f\n”,fun(12,8));”语句中“fun(12,8)”将12、8传递给fun中的m与n,fun函数实现对组合数的求佰。
30.intfun(STRECa[]){intij;STRECt;for(i=l;i<N;i++)/*用冒泡法进行排序进行N-1次比较*/for(j=0;j<N-1;j++)/*在每—次比较中要进行N-1次两两比较*/if(a[j].s>a[j+1].s)/*按分数的高低排列学生的记录低分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;i<N;i++)/*用冒泡法进行排序,进行N-1次比较*/\r\nfor(j=0;j<N-1;j++)/*在每—次比较中要进行N-1次两两比较*/\r\nif(a[j].s>a[j+1].s)/*按分数的高低排列学生的记录,低分在前*/\r\n{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N个数,则要进行N-1次比较,在每—次比较中要进行N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第1次比较结束后,最大(或最小)数肯定在最后,第2次比较结束后,次最大(或次最小)数肯定在倒数的第2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第2次比较时只要比较到倒数的第2个数即可,所以进行第i次比较I时只需比较N-i次即可(这种算法较难理解,但它是最好的)。
31.voidfun(int(*s)[10]int*bint*nintmmintnn){intijk=0;for(i=0;i<mm;i++)/*将二维数组s中的数据按行的顺序依次放到一维数组b中*/for(j=0;j<nn;j++)b[k++]=s[i][j];/*通过指针返回元素个数*/*n=k}voidfun(int(*s)[10],int*b,int*n,intmm,intnn)\r\n{\r\ninti,j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科常见传染病预防接种指南
- 教育研究的程序与方法
- 景观小品设计分析
- 2026一例新生儿肺炎的护理查房解读
- 2026糖尿病患者护理查房解读
- 2026重症急性胰腺炎护理查房解读
- 介入术前健康教育
- 宾县教育情况介绍
- 教育师生关系构建与优化路径
- 火山喷发现象认知(小班课程)
- 个人职业形象塑造指导书
- 中医食疗护理
- 中建防水专项施工方案
- 氨水浓度密度对照表
- 沉淀溶解平衡与沉淀滴定法(药用基础化学课件)
- 雅思8000词汇表单
- 电梯安全保护装置课件
- 湖南省2021-2022年普通高中学业水平选择性考试历史真题及参考答案汇总
- 部编版小学道德与法治五年级下册第8课《推翻帝制民族觉》第3课时《民主共和渐入人心》课件
- 水力发电的原理
- 12K101-3 离心通风机安装
评论
0/150
提交评论