2013年9月份全国计算机等级考试二级C语言题库及详解
1 2013年9月份 全国计算机等级考试二级C 语言 试题题库(无纸化考试专用)(说明:无纸化考试选择题40分,程序题60分。
学会这些题,保证二级高空飘过!!!)第一套给定程序的功能是:求二分之一圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S r π=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h> double fun( double r) { return 3.14159*【1】/2.0;}void main() {double x; printf("Enter x: "); scanf("%lf",【2】);printf("s=%lf\n",fun(【3】));}【参考答案】 (1)r*r (2)&x (3)x【考点分析】 本题考查:圆面积计算公式S π=*r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。
【解题思路】填空1:计算圆的面积,公式为:s r π=*r 。
填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x 。
填空3:函数的实际参数是圆的半径x 。
下列给定程序中,函数fun 的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n 为5时,函数值应为10.407143。
f(x)函数定义如下:f(x)=(1)(2)0002(1)(2)0x x x x x x x x ⎧+/->⎪==⎨⎪-/-<⎩或请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> #include <math.h>/*************found**************/f(double x) {if(x==0.0||x==2.0) return 0.0; else if(x<0.0) return(x-1)/(x-2); elsereturn(x+1)/(x-2); }double fun(int n) {int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;}/*************found**************/return s }void main() { system("CLS"); printf("%f\n", fun(5)); }【参考答案】(1) 错误:f(double x) 正确:double f(double x)(2) 错误:return s 正确:return s;【考点分析】 本题考查:函数的定义,其一般形式为"类型标识符 函数名(形式参数表列)",其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。
【解题思路】该程序的流程是,fun( )程序对f(n)项循环累加,并且采用条件选择语句计算函数f(x)的值。
本题的错误在于未定义函数f(double x)的返回值类型。
C 语言规定,在未显式声明的情况下,函数返回值默认为int 型。
编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n 通过形参传入。
2 S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)例如,若n 的值为11时,函数的值为1.833333。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。
试题程序:#include <conio.h> #include <stdio.h> #include <string.h> #include <stdlib.h> float fun(int n) { }void main() {FILE *wf; int n; float s; system("CLS");printf("\nPlease enter N: "); scanf("%d",&n); s=fun(n);printf("The result is:%f\n " , s); /******************************/ wf=fopen("out.dat","w"); fprintf (wf,"%f",fun(11)); fclose(wf);/*****************************/}【参考答案】 float fun(int n) {int i,s1=0; /*定义整型变量s1,表示分母*/float s=0.0; /*定义单精度变量s,表示每一项*/for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/s=s+1.0/s1; /*求多项式的值*/ } return s; }【考点分析】本题考查:计算给定表达式的值,根据题意判断表达式为1到n 累加倒数之和。
变量数据类型及强制转换操作。
for 循环语句,一般情况需要确定循环变量的取值范围。
使用return 语句完成函数值的返回。
【解题思路】本题可以通过for 循环语句来实现第1项到第n 项的变化,然后计算各项的累加和。
方法是先根据题目要求定义变量(注意该变量的数据类型),然后对其进行初始化操作,因为该变量用作累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过for 循环语句来完成累加过程。
本题中s1用来表示式中每一项的分母,它可以由前一项的分母加项数得到。
注意:由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。
【解题宝典】此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。
第二套请补充main 函数,该函数的功能是:计算两个自然数n 和m(m<10000)之间所有数的和(n 和m 从键盘输入)。
例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。
注意:部分源程序给出如下。
请勿改动main 函数和其他函数中的任何内容,仅在main 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdlib.h> #include <stdio.h> #include <conio.h> void main(){ int n,m; long sum; 【1】;system("CLS");printf("\nInput n,m\n"); scanf("%d,%d",&n,&m); while(n<=m) { 【2】; n++;}printf("sum=%【3】\n",sum);}【参考答案】 (1) sum=0 (2) sum+=n (3) ld【考点分析】 本题考查:变量初始化,需要注意该变量是累加器还是累乘器:printf( )函数,其一般形式为"printf("格式控制符",输出表列)"。
其中,格式控制符用于指定输出格式,可由格式字符串和非格式字符串两种组成,格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等,如"%ld"表示按十进制长整型输出,非格式字符串在输出时原样照印,在显示中起提示作用。
【解题思路】3 填空1:变量sum 进行了类型声明,但没有进行初始化,而后面的程序用sum 来存放最后的结果,所以要在使用前将sum 初始化为0。
填空2:通过while 循环将自然数n 和m 之间的数进行累加,结果存于sum 中。
填空3:由于sum 为长整型,所以标准输出函数printf( )中的格式控制符为"%ld"。
下列给定程序中,fun 函数的功能是:根据形参m,计算下列公式的值:t=1+1/2+1/3+1/4+…+1/m 例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include <stdlib.h> #include <conio.h> #include <stdio.h> double fun(int m) {double t=1.0; int I;for(I=2;I<=m;I++)/*************found**************/t+=1.0/k;/*************found**************/return I; }void main() {int m;system("CLS");printf("\nPlease enter 1integer number: ");scanf("%d",&m);printf("\nThe result is %1f\n", fun(m)); }【参考答案】(1)错误:t+=1.0/k; 正确:t+=1.0/I; (2)错误:return I; 正确:return t; 【考点分析】本题考查:for 循环语句的循环条件,这类题目的一般解法是根据题意确定循环变量的取值范围;函数返回值,其一般形式为"return 表达式;",该语句的功能是计算表达式的值,并返回给主调函数。
二级C语言真题2013年09月-(2)
二级C语言真题2013年09月-(2)(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.设循环队列为Q(1:m),其初始状态为front=rear=m。
经过一系列入队与退队运算后,front=15,rear=20。
现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为______。
(分数:1.00)A.4 √B.6C.m-5D.m-6解析:[解析] 循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=15,rear=20时,队列中有5个元素,比较次数为4次,故A选项正确。
2.下列叙述中正确的是______。
(分数:1.00)A.循环队列属于队列的链式存储结构B.双向链表是二叉树的链式存储结构C.非线性结构只能采用链式存储结构D.有的非线性结构也可以采用顺序存储结构√解析:[解析] 循环队列是队列的一种顺序存储结构,A选项错误。
双向链表为顺序存储结构,二叉树通常采用链式存储结构,B选项错误。
完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C选项错误,故D选项正确。
3.某二叉树中有n个叶子节点,则该二叉树中度为2的节点数为______。
(分数:1.00)A.n+1B.n-1 √C.2nD.n/2解析:[解析] 对任何一棵二叉树,度为0的节点(即叶子节点)总是比度为2的节点多一个。
二叉树中有n 个叶子节点,则度为2的节点个数为n-1,故B选项正确。
4.下列叙述中错误的是______。
(分数:1.00)A.算法的时间复杂度与算法所处理数据的存储结构有直接关系B.算法的空间复杂度与算法所处理数据的存储结构有直接关系C.算法的时间复杂度与空间复杂度有直接关系√D.算法的时间复杂度与算法程序执行的具体时间是不一致的解析:[解析] 算法的时间复杂度是指执行算法所需要的计算工作量。
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)-中大网校
2013年9月全国计算机等级《二级C语言程序设计》上机模考试卷(2)总分:100分及格:60分考试时间:120分一、选择题(每小题1分,共40分)(1) 有下列程序:void sort(int a[],int n) { int i,j,t;for(i=0;i<n-l;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]一a[j];a[j]=t;} }main(){ int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;sort(aa+2,5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是( )。
A. 1,2,3,4,5,6,7,8,9,l0,B. 1,2,7,6,3,4,5,8,9,10,C. 1,2,7,6,5,4,3,8,9,10,D. 1,2,9,8,7,6,5,4,3,10,(2) 执行下列程序后,变量a,b,C的值分别是( )。
int x=5,y=4;int a,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A. a=5,b=5,c=5B. a=4,b=5,c=5C. a=5,b=6,c=5D. a=1,b=5,c=6(3) 设有如下定义:int arr[]={6,7,8,9,10);int*ptr:ptr=arr;*(ptr2)=2;printf("%d,%d\n",*ptr,*(ptr2)):则下列程序段的输出结果为( )。
A. 8,10B. 6,8C. 7,9D. 6,2(4) 以下所列的C语言常量中,错误的是()。
A. 0xFFB. 1.2e0.5C. 2LD. ‘72’(5) 数字字符0的ASCII值为48,运行以下程序的输出结果是( )。
2013年9月份全国计算机二级C语言考试参考资料1——真题
2013年9月二级C语言真题及答案(考试时间:120分钟,满分100分)一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分)) (1)软件是指A)程序 B)程序和文档C)算法加数据结构 D)程序、数据和相关文档的集合(2)软件调试的目的是A)发现错误 B)改正错误C)改善软件的性能 D)验证软件的正确性(3)在面向对象方法中,实现信息隐蔽是依靠A)对象的继承 B)对象的多态C)对象的封装 D)对象的分类(4)下列叙述中,不符合良好程序设计风格的是A)程序的效率第一,清晰第二 B)程序的可读性好C)程序中有必要的注释 D)输入数据前要有提示信息(5)下列叙述中正确的是A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)下列叙述中正确的是A)数据的逻辑结构与存储结构必定是一一对应的B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线线结构D)以上三种说法都不对(7)冒泡排序在最坏情况下的比较次数是A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2(8)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A)219 B)221 C)229 D)231(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)为了建立一个关系,首先要构造数据的逻辑关系B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项C)一个关系的属性名表称为关系模式D)一个关系可以包括多个二维表(11)C语言源程序名的后缀是A).exe B).C C).obj D).cp(12)可在C程序中用做用户标识符的一组标识符是A)and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Bigl(13)以下选项中,合法的一组C语言数值常量是A)028 B)12. C).177 D)0x8A. 5e-3 OXa23 4c1.5 10,000-0xf 4.5e0 Oabc 3.e5(14)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数(15)若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c);C)scanf("%d",p); D)scanf("%d",&p);(16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是A)均占4个字节 B)根据数据的大小来决定所占内存的字节数C)由用户自己定义 D)由C语言编译系统决定(17)若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;(18)有以下程序段int j; float y; char name[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入55566 7777abc后,y的值为A)55566.0 B)566.0 C)7777.0 D)566777.0(19)若变量已正确定义,有以下程序段i=0;do printf("%d,",i);while(i++);printf("%d\n",i)其输出结果是A)0,0 B)0,1 C)1,1 D)程序进入无限循环(20)有以下计算公式若程序前面已在命令中包含math.h文件,不能够正确计算上述公式的程序段是A)if(x>=0) y=sqrt(x); B)y=sqrt(x)else y=sqrt(-x); if(x<0) y=sqrt(-x);C)if(x>=0)y=sqrt(x); D)y=sqrt(x>=0?x:-x);If(x<0)y=sqrt(-x);(21)设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)(22)有以下程序#includemain(){int y=9;for( y>0;y--)if(y%3= =0) printf("%d",--y);}程序的运行结果是A)741 B)963 C)852 D)875421(23)已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c) B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’ D)c<=(‘2’-32)&&(‘a’-32)<=c(24)有以下程序#includemain(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++) m=m%j;printf("%d\n",m);}程序的运行结果是A)0 B)1 C)2 D)3(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(26)已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。
2013全国计算机等级考试新大纲二级C语言题库及参考答案
参考答案第一套题二、程序填空题本题是根据给定的公式来计算函数的值。
第一处:程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所以应填:double。
第二处:当i等于1时,则返回f1函数的值,所以应填:f1。
第三处:如果i不等于1,则返回f2函数的值,所以应填:f2。
三、程序修改题解题思路:第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)第二处: 取字符串指针ss的下一个位置,所以应改为:ss++;。
第三处:取字符串指针tt的下一个位置,所以应改为:tt++;。
四、程序设计题解题思路:本题是考察字符串的操作。
1. 由于函数fun1是将字符串中字符循环左移一个位置,并通过实参w返回循环左移一个位置的字符串。
2. 利用循环for语句来操作多少个字符(m)需要循环左移。
参考答案:void fun(char *w, int m) /* 可调用fun1函数左移字符*/{int i;for(i = 0 ; i < m ; i++) fun1(w);}第二套题一、选择题解题思路:第一处:计算好的平均值通过形参av返回,所以应填:*av。
第二处:计算小于平均值且最接近平均值的位置j,所以应填:i。
第三处:返回该数,所以应填:x[j]。
三、程序修改题解题思路:第一处:函数的返回是浮点型数,所以应改为:float fun(int n)。
第二处:for的终止条件应是i<=n。
四、程序设计题解题思路:本题是利用两重循环给二维数组右上三角元素中的值乘以m。
参考答案:int fun ( int a[][N], int m ){int i, j;for(i = 0 ; i < N ; i++)for(j = i ; j < N ; j++)a[i][j] *= m ;}第三套题一、选择题解题思路:第一处:如果n是奇数,则中间的元素不动,所以应填:1。
2013全国计算机等级考试新大纲二级C语言题库及参考答案-推荐下载
C
A
D
B
B
C
B
D
C
C
A
B
B
A
A
D
A
B
A
D
if(strcmp(a[i].num, b)==0) { /* 判断学号是否相等 */ strcpy(c.num, a[i].num) ; /* 相等,则对学号进行赋值 */ c.s=a[i].s; /* 相等,则对成绩进行赋值 */ break ; /* 退出循环体 */ } return c ; /* 返回结构体变量 */ }
第三套题
一、选择题
1-10 D
11-20 B
21-30 A
31-40 A
二、程序填空题
解题思路:
D
A
D
A
C
D
D
B
第一处:如果 n 是奇数,则中间的元素不动,所以应填:1。
第二处:使用 for 循环语句来交换数组元素的值,所以应填:i。 第三处:使用中间变量 t 来交换的,所以应填:t。 三、程序修改题
解题思路:
B
A
A
C
第一处:在函数 fun 体中,k 是一个浮点型变量,所以应改为:float k;。
C
D
D
D
第二处:三个数比较大小,第 1 个条件是第 1 个比第 2 个小,则交换。第 3 个条件是第 2
个比第 3 个小,则也交换。第 2 个条件是应该第 1 和第 3 个小,则交换就符合题意了,所
以应改为: if(*a<*c)。
解题思路:
第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char *s,char *t)
第二处: 取字符串指针 ss 的下一个位置,所以应改为:ss++;。 第三处:取字符串指针 tt 的下一个位置,所以应改为:tt++;。 四、程序设计题
2013年全国计算机二级C语言考试真题
8、当变量c的值不为2、4、6时,值也为“真”的表达式是()
A(c>=2&&c<=6)&&(c%2!=1)
B)(c>=2&&c<=6)&&!(c%2))
C)(c==2)‖(c==4)‖(c==6)
D)(c>=2&&c<=6)‖(c!=3)‖(c!=5)
9、以下选项中,值为1的表达式是
main()
{ char a='H';
a = ( a>='A' && a<= 'Z' ) ? (a+32) : a;
printf("%c\n",a );
}
程序运行后的输出结果是
A)A
B)a
C)h
D)H
194.以下叙述中正确的是
A)程序可以包含多个主函数,但总是从第一个主函数处开始执行
B)书写源程序时,必须注意缩进格式,否则程序会有编译错误
A."\x7D"
B.1,234
C.123
D.'\123'
60、C语言源程序名的后缀是
A). cp
B).obj
C).exe
D).C
61、阅读以下程序
#include <stdio .h>
main ()
{ int case ;
float printF;
printf ("请输入2个数:");
scanf ( "%d %f",&case, &printF );
2013年9月份全国计算机等级考试二级C语言(笔试)题库
2013年3月份全国计算机等级考试二级C语言笔试+上机题库(全)选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;D)double a=00;b=1.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}程序的输出结果是A)409 B)277 C)1 D)91 (18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7 (20)有以下程序#include <stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++; break;case 1:b++; break;}case 2:a++; b++; break;case 3:a++; b++;}printf("a=%d,b=%d\n",a,b);}程序的运行结果是A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1 (21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4};(25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd (26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER是结构体类型名C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>void fun(char *s[],int n){ char *t; int i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main(){ char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);y=x*x-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。
全国计算机等级考试二级C语言真题2013年9月
全国计算机等级考试二级C语言真题2013年9月(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是______。
(分数:1.00)A.12345ABCDEB.EDCBA54321 √C.ABCDE12345D.54321EDCBA解析:[解析] 栈是按照先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。
2.下列叙述中正确的是______。
(分数:1.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的√解析:[解析] 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。
3.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是______。
(分数:1.00)A.O(n)B.O(n2)C.O(log2n) √D.0(nlog2n)解析:[解析] 当有序线性表为顺序存储时才能用二分法查找。
可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
4.下列叙述中正确的是______。
(分数:1.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的√B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:[解析] 链式存储结构既可以针对线性结构也可以针对非线性结构,所以B与C错误。
2013年9月全国计算机等级考试二级c语言笔试试题(含参考答案)
全国计算机等级考试二级笔试试卷基础部分和C语言程序设计(考试时间120分钟,满分100分)2013年9月一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。
(1) 十进制数1385转换成十六进制数为A) 568 B) 569 C) D85 D) D55(2) 下列叙述中正确的是A) 计算机病毒只能传染给可执行文件B) 计算机软件是指存储在软盘中的程序C) 计算机每次启动的过程之所以相同,是因为RAM中的所有信息在关机后不会丢失D) 硬盘虽然装在主机箱内,但它属于外存(3) 一个字长的二进制位数是A) 8 B) 16 C) 32 D) 随计算机系统而不同的(4) CPU主要由运算器与控制器组成,下列说法中正确的是A) 运算器主要负责分析指令,并根据指令要求作相应的运算B) 控制器主要完成对数据的运算,包括算术运算和逻辑运算C) 控制器主要负责分析指令,并根据指令要求作相应的运算D) 控制器直接控制计算机系统的输入与输出操作(5) 下列叙述中正确的是A) 将数字信号变换成便于在模拟通信线路中传输的信号称为调制B) 以原封不动的形式将来自终端的信息送入通信线路称为调制解调C) 在计算机网络中,一种传输介质不能传送多路信号D) 在计算机局域网中,只能共享软件资源,而不能共享硬件资源(6) 各种网络传输介质A) 具有相同的传输速率和相同的传输距离B) 具有不同的传输速率和不同的传输距离C) 具有相同的传输速率和不同的传输距离D) 具有不同的传输速率和相同的传输距离(7) 多媒体计算机系统的两大组成部分是A) 多媒体功能卡和多媒体主机B) 多媒体通信软件和多媒体开发工具C) 多媒体输入设备和多媒体输出设备D) 多媒体计算机硬件系统和多媒体计算机软件系统(8) 按通信距离划分,计算机网络可以分为局域网和广域网。
2013版全国计算机等级考试二级C教程课后编程题答案
2013版全国计算机等级考试二级C教程课后编程题答案3-16#include<stdio.h>main(){double a,b,c,s,v;printf("input a,b,c:");scanf("a=%f b=%f c=%f", &a,&b,&c);s=a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n",a,b,c);printf("s=%f,v=%f",s,v);return 0;}3-17#include <stdio.h>main(){int a,b,c;printf("请输入需要划算成小时和分钟的数值\n");scanf("%d",&a);b=a/60;c=a%60;printf("a=%d小时%d分钟",b,c);return 0;}3-18#include <stdio.h>main(){int a,b,c,d;printf("请输入两个整数a和b\n");scanf("%d %d",&a,&b);c=a/b;d=a%b;printf("a和b的商和余数分别是%d %d",c,d); return 0;}3-19#include<stdio.h>main(){double a,b,c,d;printf("please input three numbers\n"); scanf("%lf%lf%lf",&a,&b,&c);d=(a+b+c)/3;printf("d=%lf",d);return 0;}3-20#include<stdio.h>main(){printf("please input three numbers"); int a,b,c,t;scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d,b=%d,c=%d",a,b,c); return 0;}4-21#include<stdio.h>main(){int a;printf("请输入a的值a=\n");scanf("%d",&a);switch(a/10){case 0: printf("m=1"); break;case 1: printf("m=1"); break;case 2: printf("m=1"); break;case 3: printf("m=2");break;case 4: printf("m=3");break;case 5: printf("m=4");break;default: printf("m=5");return 0;}}4-22#include<stdio.h>main(){int a,b,c,d,e,f,y,m,t;printf("please input her or his birthday \n"); scanf("%d%d%d",&a,&b,&c);printf("请输入现在的日期\n");scanf("%d%d%d",&d,&e,&f);y=d-a;m=e-b;t=f-c;printf("该生的实际年龄是%d年%d月%d天",y,m,t); return 0;}4-24#include<stdio.h>main(){int a,b,c,max;printf("请输入三个整数\n"); scanf("%d%d%d",&a,&b,&c); max=a;if(a<b) max=b;if(max<c) max=c;printf("max=%d",max); return 0;}4-25#include <stdio.h>main(){double x,y;printf("请输入x的值\n"); scanf("%lf",&x);if(-5<x&&x<0) y=x;if(x==0) y=x-1;if(0<x&&x<10) y=x+1;if(x<-5||x==-5) printf("您输入的x的值不在查找范围内"); if(x>10||x==10) printf("您输入的x的值不在查找范围内"); printf("y=%lf",y);return 0;5-17#include<stdio.h>main(){int n,i=1,t,sum=0;for(n=1;n<=101;n+=2){t=i*n;sum+=t;i=-i;}printf("sum=%d",sum);return 0;}5-18#include<stdio.h>main(){int t=1,n;float sum=1.0;for(n=1;n<=50;n++){t=t*n;sum+=1/t;}printf("e=%.3f",sum);return 0;}5-19#include<stdio.h>main(){int y,n=0;for(y=2000;y<=3000;y++){if(y%4==0&&y%100!=0||y%400==0) {printf("%d ",y);n++;}if(n%10==0) printf("\n");}printf("n=%d",n);return 0;}5-20#include<stdio.h>main(){int i,j,k,m,n,h;for(i=1;i<=3;i++){for(j=i;j<=3;j++) printf(" ");for(k=0;k<2*i-1;k++) printf("*");printf("\n");}for(m=0;m<4;m++){for(n=0;n<m;n++) printf(" ");for(h=0;h<7-2*m;h++) printf("*");printf("\n");}return 0;}6-19#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); do{ch=getchar();printf("ch=%c ASCII=%d ",ch,ch);n++;if(n%3==0) putchar('\n');}while((ch=getchar())!='\n');putchar('\n');return 0;6-20#include<stdio.h>main(){char ch;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){if(ch!=' ') printf("%c",ch);}putchar('\n');return 0;}6-216-21#include<stdio.h>main(){printf("请输入几行数字并用!来结束\n");char ch;int n=0;while((ch=getchar())!='!'){if(ch=='\n') n++;}printf("输入的行数是:");printf("%d",n);return 0;}6-22#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){ if('a'<ch&&ch<'z') n++;}printf("n=%d",n);putchar('\n');return 0;}6-23#include<stdio.h>main(){ int i,j,k;for(i=1;i<=5;i++){for(j=0;j<=5-i;j++) printf(" ");for(k=0;k<2*i-1;k++) printf("%c",'A'+i-1);putchar('\n');}return 0;}int mymod(int a,int b){int c;c=b%a;return c;}7-15#include<stdio.h>main(){ int a,b,c;printf("please input two numbers\n"); scanf("%d%d",&a,&b);c=mymod(a,b);printf("所求余数是%d",c);return 0;}7-16#include<stdio.h>main(){int m,n;printf("请输入m的值\n");scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-17#include<stdio.h>main(){int m,n;printf("请输入m的值\n"); scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-18float f(float x){float s;s=x*x-5*x+4;return s;}#include<stdio.h>main(){float t,y1;printf("请输入参数t的值\n");scanf("%f",&t);y1=f(t);printf("y1=%f",y1);return 0;}8-17void f( float a, float b, float *p1,float *p2) {*p1=a+b;*p2=a-b;}#include<stdio.h>main(){float x, y ;printf("请输入x和y的值\n");scanf ("%f%f",x,y);f(x,y,&x,&y);printf("%f%f",x,y);return 0;}8-18void f(int x ,int y ,int z ,int *p1 ,int *p2){*p1=x;*p2=z;if(*p1>y) *p1=y;if(*p1>z) *p1=z;if(*p2<y) *p2=y;if(*p2<x) *p2=x;}#include<stdio.h>main(){printf("请输入a b c的值\n");int a,b,c;scanf("%d%d%d",&a,&b,&c);f(a,b,c,&a,&b);printf("三个数中最小的数是%d最大的数是%d",a,b); return 0;}9-27#include<stdio.h>{char ch;int num[9]={0},i;printf("请输入一行字符以回车来结束输入\n");while((ch=getchar())!='\n')if('0'<ch&&ch<'9') num[ch-'0']+=1;for(i=0;i<9;i++)printf("%d字符出现的次数是:%d次\n",i,num[i]);return 0;}9-28#include<stdio.h>main(){int a[10]={0,1,2,3,4,5,6,7,8,9},i,n;printf("请输入需要向前移动的第一个元素的下标n(n>0):\n"); scanf("%d",&n);for(i=n;i<=9;i++)a[i-1]=a[i];for(i=0;i<=8;i++)printf("%d ",a[i]);return 0;}#include<stdio.h>#include<stdlib.h>main(){int y[20],h[20],k=0,i,j;printf("y数组中的值如下\n");for(i=0;i<20;i++){ y[i]=rand()%99;printf("%d ",y[i]);}for(i=0;i<=10;i++){if(y[i]%2==1){h[k]=y[i];k++;}}printf("y数组中的奇数如下\n"); for(j=0;j<k;j++)printf("%d ",h[j]);return 0;}9-30#include<stdio.h>main(){int j,p,k,m;char a[8]={'a','2','c','d','e','f','g','9'},t;for(j=0;j<8;j++){if('A'<=a[j]&&a[j]<='z'){p=j;for(k=j+1;k<7;k++)if('A'<=a[k]&&a[k]<='z')if(a[p]<a[k]) p=k;t=a[j]; a[j]=a[p]; a[p]=t;}}for(m=0;m<=7;m++)printf("%c ",a[m]);return 0;}9-31#include<stdio.h>main(){int i=0,m;char ch,a[11]={0},x;printf("请输入8个有序的数\n"); do {ch=getchar();a[i]=ch;i++;}while((ch=getchar())!='\n'); printf("输入的数分别是:");for(m=0;m<8;m++)printf(" a[%d]=%c\n ",m,a[m]); putchar('\n');printf("请输入需要插入的数\n"); int j,k,s,l,p;scanf("%c",&x);if(x<a[0]){for(l=10;l>=1;l--)a[l]=a[l-1];a[0]=x;}if(a[0]<x&&x<a[9]){for(j=0;j<=8;j++)if(a[j]<x&&x<a[j+1]){p=j+1;for(k=10;k>j+1;k--)a[k]=a[k-1];}}a[p]=x;if(x>a[9])a[10]=x;for(s=0;s<=8;s++)printf("%c ",a[s]);return 0;}9-32#include<stdio.h>main(){int h,j,i,k,a[15];printf("请输入需要转化成2进制的10进制数\n"); scanf("%d",&h);do{j=h%2;h=h/2;a[i]=j;i++;}while(h/2==0);for(k=i;k>=0;k--)printf("%d",a[k]);return 0;}9-33#include<stdio.h>#include<stdlib.h>main(){int i=0,n=1,a[15],j,x;x=rand()%20;a[i]=x;for(j=0;n<=14;j++){ x=rand()%20;while(i<n&&x!=a[i])i++;if(i==n){a[n]=x;n++;}i=0;}printf("a数组中不重复的15个数是:"); for(j=0;j<=14;j++)printf("%d " ,a[j]);return 0;}9-34#include <stdio.h>#include <stdlib.h>main(){int a[5][5],k=0,c1=0,c2=0,h[5]={0},e[5]={0},o,i,j,l,n,y,z; for(i=0;i<5;i++)for(j=0;j<5;j++){a[i][j]=rand()%30;printf("%d ",a[i][j]);k++;if(k%5==0)printf("\n");}for(z=0;z<=4;z++){c1=c1+a[z][z];c2=c2+a[z][5-z];}printf("c1=%d c2=%d\n",c1,c2);for(l=0;l<5;l++)for(n=0;n<5;n++){h[l]=h[l]+a[l][n];e[l]=e[l]+a[n][l];}for(o=0;o<5;o++)printf("h[%d]=%d ",o,h[o]);printf("\n");for(y=0;y<=4;y++)printf("e[%d]=%d ",y,e[y]);return 0;}9-36include<stdio.h>main(){int a[9][9],k,i,j;printf(" * * A MULTIPLICATION TABLE * *\n"); printf(".......................................................\n");printf(" (1)");for(k=2;k<=9;k++)printf(" (%d)",k);printf("\n");for(i=0;i<9;i++){printf("(%d) ",i+1);for(j=0;j<9;j++){a[i][j]=(i+1)*(j+1);printf("%-4d ",a[i][j]);}printf("\n");}printf(".......................................................\n"); return 0;}9-37#include<stdio.h>#include<stdlib.h>main(){int a[5][5],i,j,k,m;for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=rand()%100;printf("%-4d",a[i][j]);}printf("\n\n");}printf("转置后的距阵如下\n"); for(k=0;k<5;k++){ for(m=0;m<5;m++) printf("%-4d",a[m][k]);printf("\n");}return 0;}10-19#include<stdio.h>scomp(char*s1,char*s2){int i;i=0;while(sl[i]==s2[i]&&s1[i]) i++;jreturn (s1[i]-s2[i]);}main(){char str1[]="ABC",str2[10];get(tr2);if(scomp(str1,str2)<0 printf("str1>str2\n");else if(scomp (str1,str2)<0) printf("str1<str2\n"); else printf("str1=str2\n"); }10-20#include<stdio.h>void gettext (char(*)[61],int*);void puttext (char[][61],int);main(){char text[40][61];int n;gettext (text,&n);puttext (text,n);}void gettext (char(*t)[61],int*m){ int n;printf("enter texline,ended to empty line:\n");n=0;gets(t[n]);while(*t[n]){n++;gets(t[n]);}*m=n;}void puttext (char t[][61],int n){ int i;for(i=0;i<n;i++){ printf("%-2d:",i+1);puts(t[i]);}}10-21#include<stdio.h>#include<string.h>getstr(char p[][80]){char t[80];int n=0;printf("enter string.a empty sring to end\n"); gets(t);while(strcmp(t," ")){strcmp(p[n],t);n++;}return n;}char*findmin(char(*a)[80],int n){char*p;int i;p=a[0];for(i=0;i<=n;i++)if(strcmp(p,a[i]))p=a[i];return p;}11-11#include<stdio.h>#include<string.h>main(int argv,char*a[]){char str[]="Ilove you pretty because not olny are you elegent but also you make so success";int i;printf("请输入outch或outch -2 或outch +6\n");if(*(a[1]+1)==2)for(i=0;i<=1;i++)printf("%c",str[strlen(str)-1-i]);if(*(a[1]+1)==6)for(i=0;i<=5;i++)printf("%c",str[i]);if(argv==1)for(i=0;i<=10;i++)printf("%c",str[i]);return 0;}11-12#include<stdio.h>void f(int n){int d,t;d=n%2;printf("%d",d);t=n/2;if(t>=1) f(t);}main(){int num;printf("请输入一个10进制的数\n"); scanf("%d",&num);f(num);return 0;11-13#include<stdio.h>int f(int n){int t=0;if(n!=0) return n+f(n-1);else return 0;}main(){int a,s;printf("请输入a的值\n");scanf("%d",&a);printf("%d",f(a));}11-14#include<stdio.h>#define N 30struct stud{char num[5],name[10]; int s[4];double ave;};void readrec(struct stud*ps); void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name);for(j=0;j<4;j++) printf("%3d",ps[i].s[j]);printf("%6.1f\n",ps[i].ave);}}14-12#include<stdio.h>#define N 30struct stud{char num[5],name[10];int s[4];double ave;};void readrec(struct stud*ps);void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name);for(j=0;j<4;j++) printf("%3d",ps[i].s[j]); printf("%6.1f\n",ps[i].ave);}}14-13#include<stdio.h>#include<stdlib.h>struct student {int date;struct student*next;};typedef struct student SLIST;SLIST * create_slist(){ int c;SLIST*h,*s,*r;h=(SLIST*)malloc(sizeof(SLIST));r=h;printf("请输入整形数据并以-1来结束\n"); scanf("%d",&c);while(c!=-1){s=(SLIST*)malloc(sizeof(SLIST));s->date=c;r->next=s;r=s;scanf("%d",&c);}r->next='\0';return h;}int maxaval(SLIST*head) {int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next) if(p->date>m) m=p->date; return m;}SLIST *maxadd(SLIST*head) {int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next) if(p->date>m) pmax=p; return pmax;}main(){SLIST *add;add=create_slist();printf("%d\n", maxaval(add)); printf("%d",maxadd(add));。
