大连理工大学C语言期中测试模拟题2
- 格式:doc
- 大小:83.00 KB
- 文档页数:10
大 连 理 工 大 学课 程 名 称:面向对象方法与C++程序设计 试 卷: 统一 是否开卷 否 授课院 (系): 软件学院 考试日期: 09 年 4 月 日 试卷共8 页一 、选择题(10分, 每题2分) 1.一个C++类________________。
A . 只能有一个构造函数和一个析构函数B . 可以有一个构造函数和多个析构函数C . 可以有多个构造函数和一个析构函数D . 可以有多个构造函数和多个析构函数2.下列静态数据成员的特性中,_____是错误的。
A . 声明静态数据成员时,前边要加修饰符static B . 静态数据成员要在类体外进行初始化 C . 静态数据成员不是所有对象所共用的D . 引用静态数据成员时,要在其名称前加<类名>和作用域运算符3.若类X 是类Y 的友元类,则下列哪种访问关系是正确的 __ ___。
A . 类X 的成员不能访问类Y 的私有成员 B . 类X 的成员可以访问类Y 的私有成员 C . 类Y 的成员可以访问类X 的私有成员D . 只有类Y 的公共成员才能访问类X 的私有成员4.下面关于C++中类的继承与派生的说法错误的是_____________。
A . 基类的protected 成员在公有派生类的成员函数中可以直接使用 B . 基类的protected 成员在私有派生类的成员函数中可以直接使用 C . 私有派生时,基类的所有成员访问权限在派生类中保持不变 D . 继承可以分为单一继承与多重继承5.对const 与类,理解不正确的为__________。
A .可以用const 限制对象、数据成员或成员函数B .常成员函数不能修改对象的数据成员,但能调用该类中非常成员函数C .const 数据成员只能由构造函数通过初始化列表对其进行初始化D .const 对象只能调用它的const 成员函数,而不能调用非常成员函数二、写出下面程序的运行结果。
《 C语言》课程期中考试试卷一. 在A B C D四个选项中,选择一个正确的答案填入括号内( )1、用char定义的变量在IBM PC机中能表示的数的范围是:A) 0 ~+255 B) 0 ~+65535C) -128 ~+127 D) 只能存字符,不能存数( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:A) 0 B) 1 C) 2 D) 3()3、在while(!x)中,!x与______等价。
A) x==0 B) x!=0 C) x==1 D) x!=1()4、设有声明int value=‟5‟;,则执行下列选项的赋值语句后,value的值不等于5的是_____。
A.) value=value - ‟0‟; B) value=value - 0x30;C) value=value - 49; D) value=value - ‟\060‟;()5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运算后的值是:A) 0 B) 2 C) 2.5 D) 2.75( ) 6、若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:A)无输出 B)结果不确定 C)-1 D)1( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:A)0 B)1 C)2 D)3( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2( )9、以下程序的输出结果是A)2 0 B)3 1 C)3 2 1 D)2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}( )10、给出以下定义:char x[ ]="abcdef";char y[ ]={'a','b','c','d','e','f'};则正确的叙述为A) 数组x和数组y等价 B) 数组x和数组y的长度相同C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。
【第一套】一、单项选择1.下列数据中,为字符串常量的是(D)。
A、'A’B、How do you do.C、$abcD、”house"2.以下所列的C语言常量中,错误的是(b )。
A、0xFFB、1。
2e0。
5C、2LD、'\72’3.以下程序的输出结果是(D)。
main(){float x=3。
6;int i;i=(int)x;printf(”x=%f,i=%d\n”,x,i);}A、x=3.600000,i=4B、x=3 i=3.600000C、x=3,i=3D、x=3.600000,i=34.若k是整型,则以下程序段的执行结果是:(B ) k=—3;if(k<=0)printf("####”);else printf(”&&&&”);A、####B、有语法错误,无结果C、&&&&D、####&&&&5.若x=2,y=3则x||y的结果是(C )。
A、3B、0C、1D、26.针对下列程序段回答问题(B )。
for(t=1;t〈=100;t++){scanf(”%d”,&x);if(x<0)continue;printf(”%3d”,t);}A、x>=0时什么也不输出B、最多允许输出100个非负整数C、printf函数永远也不执行D、当x<0时整个循环结束7.以下程序的执行结果是(B ).main(){int num = 0;while(num 〈= 2 ){ num++;printf(”%d,”,num ); }}A、0,1,2B、1,2,3,C、1,2,3,4,D、1,2,8.选择正确的输入语句(d )。
:(其中:char string[20];)使得string的内容为”I am student"。
A、scanf("%s”, string);B、scanf("%c”, &string);C、scanf(”%s”, &string);D、gets(string);9.对以下说明语句int a[10]={6,7,8,9,10};的正确理解是(B).A、将5个初值依次赋给a[6]至a[10]B、将5个初值依次赋给a[0]至a[4]C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[1]至a[5]10.以下标识符中可以作为用户函数名的是( d )。
1.以下不符合C语言语法的赋值语句是()。
A、j=j=5;B、k=2*4,k*4;C、j++;D、y=float(j);2.以下运算符中,优先级最高的运算符是()。
A、?:B、,C、&&D、++3.根据下面的程序,正确的输出形式是( );main(){int i=5,j=10;printf ("i=%d,", i);printf ("j=%d ", j);}4. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()。
A、1B、3C、2D、不一定5.在以下一组运算符中,优先级最高的运算符是:( )A、=B、&&C、<=D、%6.执行语句 for(i=1;i++<4;); 后变量 i 的值是()。
A、3B、5C、4D、不定7.若i为整型变量,则以下循环执行次数是()。
for(i=2;i==0;) printf("%d",i--);A、0次B、2次C、无限次D、1次8.下列数组说明中,正确的是()。
A、char str1[],str2[];str2={"China"}; strcpy(str1,str2);B、char str[]="China";C、char str[]; str="China";D、char str1[5],str2[]={"China"}; str1=str2;9.设有数组定义: char array [ ]="China"; 则数组 array所占的空间为()。
A、7个字节B、6个字节C、5个字节D、4个字节10.以下能对二维数组a进行正确初始化的语句是()。
A、int a[][3]={{1,2,3},{4,5,6}};B、int a[2][4]={{1,2,3},{4,5},{6}};C、int a[2][]={{1,0,1},{5,2,3}};D、int a[][3]={{1,0,1}{},{1,1}};11.用户定义的函数不可以调用的函数是()。
1. C语言中运算对象必须是整型的运算符是()。
A、=B、%=C、〈=D、/2.下列字符序列中,不可用作C语言标识符的是()。
A、b70B、a_1C、#abD、symbol3.下列程序的输出结果是()。
main(){int a=011;printf("%d\n",++a);}A、11B、9C、12D、104.逻辑表达式5>3&&2||8<4-!0的值为:( )A、3B、2C、1D、05.下列选项中,合法的C语言关键字是()。
A、integerB、defaultC、VARD、cher6.下列程序的输出为()。
main(){ int y=10;while(y--);printf("y=%d\n",y);}A、y=-1B、y=0C、y=1D、while构成无限循环7.以下表述中正确的是( ).A、在do-while循环中,while表达式的值不能为"假"B、do-while循环中,while语句不能省略C、do-while循环中,while(表达式)后面不能加分号D、除了for循环,其他循环中都不能使用复合语句8.以下不能正确定义二维数组的选项是()。
A、int a[2][]={{1,2},{3,4}};B、int a[2][2]={{1},2,3};C、int a[2][2]={{1},{2}};D、int a[][2]={1,2,3,4};9. int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
A、for(i=1;i<11;i++)a[i]=i;B、for(i=1;i<11;i++)a[0]=1;C、for(i=1;i<11;i++)a[i+1]=i;D、for(i=1;i<11;i++)a[i-1]=i;10.若有说明: int a[3][4]={0};则下面正确的叙述是()。
第一部分注意事项1. 请对照《课件》和《教材》进行练习。
2. 熟悉键盘,注意竖杠“|”和反斜杠“\”的位置,请在西文状态下输入。
3. 单选题、判断题和填空题要会验证。
当输入汉字时,可能输入提示框是灰色的,再按一次中英文切换键即可。
4. 程序填空题不能删除注释/*****FILL*****/,但必须删除标记符号_____,否则编译通不过。
如,for(i=10; ____; i++)。
5. 程序改错题不能删除注释/*****ERROR*****/,仅在其下一行进行修改。
6. 程序填空题和程序改错题存盘即可。
但最好编译运行一下,编译时会自动存盘。
编译帮助检查语法错误,运行帮助检查逻辑错误。
7. 程序设计题不能删除注释/****BEGIN*****/和/****END*****/,只能在两个标记符之间编写程序。
必须保证编译、链接、运行都正确。
8. 以上程序题中不能更改程序结构和其它位置的程序代码,可以忽略其它程序位置的警告。
9. 如果VC发生死机(见图,可用按钮都变成灰色),请结束VC进程,再继续答题或重答。
结束VC进程的方法:先进入“任务管理器”;再选下面一种方法操作:方法1:选择“应用程序”标签,选中“VC任务”,按“结束任务”。
方法2:选择“进程”标签,选中“MSDEV.EXE”,按“结束进程”。
10. 提交试卷并看到成绩后再离开。
11.出现问题立即请示监考老师。
12.请记住几个常用的函数。
数学函数:sin(),cos(),tan(),log(),exp(),pow(),sqrt(),abs(),fabs()字符串函数:strcat(),strcpy(),strcmp(),strlen(),strlwr(),strupr()输入输出函数:printf(),scanf(),putchar(),getchar(),puts(),gets(),fopen(),fclose(),fprintf(),fscanf(),feof()其它实用函数:rand(),exit()第二部分概念题第1章概述1. C程序是的基本组成单位是_______. 函数2. C语言的程序结构分为______、选择结构和循环结构。
大连理工大学C语言期中测试模拟题2一、单项选择1、下述正确的C语言常量是:( C).A、E2B、5.0EC、3e-3D、1.5E2.52、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(D)。
A、0.000000B、2.750000C、3.500000D、2.5000003、根据下面的程序,使i=123,c1='A',c2='B'哪一种是正确的键盘输入方法(C ).(规定用[CR]表示回车,U表示空格)main(){int i;char c1,c2;scanf("%d%c%c", &i,&c1,&c2);}A、123AUB[CR]B、123UAUB[CR]C、123AB[CR]D、123[CR]AB[CR]4.下列程序段的输出结果为(B)。
int a=7,b=9,t; t=a*=a>b?a:b; printf("%d",t);A、49B、63C、7D、95. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为(C)。
A、1B、3C、2D、不一定6. t为int类型,进人下面的循环之前,t的值为0while( t=1 ){ ……}则以下叙述中正确的是(C )。
A、循环控制表达式的值为0B、循环控制表达式不合法C、循环控制表达式的值为1D、以上说法都不对7.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是( B).A、break语句可以一次性跳出多层嵌套循环B、break语句只能跳出最内层循环C、continue语句可以一次性跳出多层嵌套循环D、continue语句可以跳出最内层循环8.以下不正确的定义语句是(C)。
A、double x[5]={2.0,4.0,6.0,8.0,10.0};B、char c1[]={'1','2','3','4','5'};C、int y[5]={0,1,3,5,7,9};D、char c2[]={'\x10','\xa','\x8'};9.以下正确的说法是( A).A、函数的类型决定返回值的类型B、定义函数时,形参的类型说明可以放在函数体内C、return后面不能为表达式D、如果形参与实参的类型不一致,以实参类型为准10. C语言规定,函数返回值的类型是由(A)。
C语言期中测试卷班级:学号:姓名:一、判断题(1×10分)1.在C语言中,一个double型所占字节数为8。
2.strcat的作用是连接两个字符数组中的字符串。
3.在求C语言的表达式时,只需考虑运算符的优先级。
4.在标准C中,变量必须先定义后使用。
5.逗号运算符的求值顺序是从左到右的,逗号表达式的值为第一个表达式的值。
6.在标准C中,以“%8.2f”形式输出的数字共有10位。
7.C语言不直接提供输入输出函数8.一个C程序可以有若干个C源程序组成,而C源程序可以由若干个函数和预处理组成。
9.C语言中用于结构化程序设计的三种基本结构是顺序结构、选择结构、循环结构。
10.在标准C中,赋值表达式可以出现在表达式的任何位置。
二、选择题(2×10分)第1题:假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do{b-=a;a++;}while(b--<0);A、9B、-2C、-4D、8第2题:以下叙述不正确的是A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第3题:若有以下说明,则数值为4的表达式是:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d;A、a[d-c]B、a[4]C、a['d'-'c']D、a['d'-c]第4题:下面有关for循环的正确描述是:A、for循环只能用于循环次数已经确定的B、for循环是先执行循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来第5题:下列符号中,不属于转义字符的是A、\\B、\x00C、\nD、\09第6题:以下程序的输出结果是# include <stdio.h># include <string.h>void main(){char str[12]={'s','t','r','i','n','g'};printf("%d\n",strlen(str));}A、6B、7C、12D、13第7题:下列符号可以作为变量名的是:A、+aB、*pC、_DAYD、next day第8题:下列选项中,不属于C语言关键字的是A、ifB、printfC、sizeofD、for第9题:循环for(i=1,j=6; ++i!=--j; ) s=i+j; 将执行A、2次B、3次C、4次D、以上均不是第10题:一个C语言程序是由A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成三、程序填空题(2×10分)第1题:用π/4≈1 - 1/3 + 1/5 - 1/7 + ……公式求π的近似值。
《 C语言》课程期中考试试卷一. 在A B C D四个选项中,选择一个正确的答案填入括号内( )1、用char定义的变量在IBM PC机中能表示的数的范围是:A) 0 ~+255 B) 0 ~+65535C) -128 ~+127 D) 只能存字符,不能存数( )2、设有int k=2; 则执行printf(“%d”,k++);的输出为:A) 0 B) 1 C) 2 D) 3()3、在while(!x)中,!x与______等价。
A) x==0 B) x!=0 C) x==1 D) x!=1()4、设有声明int value=‟5‟;,则执行下列选项的赋值语句后,value的值不等于5的是_____。
A.) value=value - ‟0‟; B) value=value - 0x30;C) value=value - 49; D) value=value - ‟\060‟;()5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运算后的值是:A) 0 B) 2 C) 2.5 D) 2.75( ) 6、若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:A)无输出 B)结果不确定 C)-1 D)1( ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:A)0 B)1 C)2 D)3( ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:A)2,3,4 B)3,3,3 C)4,5,4 D)3,2,2( )9、以下程序的输出结果是A)2 0 B)3 1 C)3 2 1 D)2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}( )10、给出以下定义:char x[ ]="abcdef";char y[ ]={'a','b','c','d','e','f'};则正确的叙述为A) 数组x和数组y等价 B) 数组x和数组y的长度相同C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度( )11、若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。
一、单项选择1、下述正确的C语言常量是:( C).A、E2B、5.0EC、3e-3D、1.5E2.52、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(D)。
A、0.000000B、2.750000C、3.500000D、2.5000003、根据下面的程序,使i=123,c1='A',c2='B'哪一种是正确的键盘输入方法(C ).(规定用[CR]表示回车,U表示空格)main(){int i;char c1,c2;scanf("%d%c%c", &i,&c1,&c2);}A、123AUB[CR]B、123UAUB[CR]C、123AB[CR]D、123[CR]AB[CR]4.下列程序段的输出结果为(B)。
int a=7,b=9,t; t=a*=a>b?a:b; printf("%d",t);A、49B、63C、7D、95. int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为(C)。
A、1B、3C、2D、不一定6. t为int类型,进人下面的循环之前,t的值为0while( t=1 ){ ……}则以下叙述中正确的是(C )。
A、循环控制表达式的值为0B、循环控制表达式不合法C、循环控制表达式的值为1D、以上说法都不对7.针对for循环语句,for(表达式1;表达式2;表达式3),下列说法正确的是( B).A、break语句可以一次性跳出多层嵌套循环B、break语句只能跳出最内层循环C、continue语句可以一次性跳出多层嵌套循环D、continue语句可以跳出最内层循环8.以下不正确的定义语句是(C)。
A、double x[5]={2.0,4.0,6.0,8.0,10.0};B、char c1[]={'1','2','3','4','5'};C、int y[5]={0,1,3,5,7,9};D、char c2[]={'\x10','\xa','\x8'};9.以下正确的说法是( A).A、函数的类型决定返回值的类型B、定义函数时,形参的类型说明可以放在函数体内C、return后面不能为表达式D、如果形参与实参的类型不一致,以实参类型为准10. C语言规定,函数返回值的类型是由(A)。
A、在定义该函数时所指定的函数类型所决定B、return语句中的表达式类型所决定C、调用该函数时系统临时决定D、调用该函数时的主调函数类型所决定11.函数fun用于将一字符串按相反次序显示,则横线上的表达式为(D ).void fun(char *s){ if(! *s)return;_____;printf("%c",*s);}A、printf("%s",s+1);B、fun(*(s+1));C、printf("%s",s+strlen(s)-1);D、fun(s+1);12.在宏定义#define PI 3.14159中, 用宏名代替一个( A).A、字符串B、常量C、单精度数D、双精度数13.若有说明:int *p1,*p2,m=5,n; 以下均是正确赋值语句的选项是(A)。
A、p1=&m;p2=p1;B、p1=&m;p2=&p1C、p1=&m;*p2=*p1;D、p1=&m;p2=&n;*p1=*p2;14.下列程序的运行结果是:( B).void fun(int *a, int *b){ int *k;k=a;a=b;b=k;}main( ){ int a=3,b=6,*x=&a, *y=&b;fun(x, y);printf("%d %d",a, b);}A、6 3B、3 6C、0 0D、编译出错15. C语言结构体类型变量在程序执行期间(B)。
A、没有成员驻留在内存中B、所有成员一直驻留在内存中C、只有一个成员驻留在内存中D、部分成员驻留在内存中二、判断题1、表达式 (j=3, j++) 的值是4.错2、若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"。
对3、C语言的输入功能是由系统提供的输入函数实现的.对4、char c[6]="abcde"; printf("%3s", c)表示输出的字段的宽度为3位,如果被输出的数据的位数大于3,只输出3位数.错5、条件表达式x?'a':'b'中,若x=0时,表达式的值为'a'.错6、设x=1,y=2,z=3,则逻辑表达式x-y>z&&y!=z的值为0.对7、已知a=3,b=4,c=5.则逻辑表达式a+b>c && b==c值为0.对8. 若有说明int c;则while(c=getchar());没有语法错误。
对9、do-while循环由do开始,while结束,循环体可能一次也不做。
错10、for循环语句只能用于循环次数确定的情况下.错11. 若有定义 int a[10];则 for (i=0;i<=10;i++) a[i]=i;编译时无语法错误.对12、定义 int x[5],n;则x=x+n;或x++;都是正确的.错13、二维数组在内存中存贮时,是按列的顺序连续存贮各元素的值.错14. 变量根据其作用域的范围可以分作局部变量和全局变量.对15.变量根据其作用域的范围可以分作局部变量和全局变量.错16. 函数的返回值可以通过函数中的return语句获得。
对17. 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。
错18. 定义 int a[ ]={1,2,3,4},y,*p=&a[1];,则执行y=(*--p)++后,y的值是2. 错19. 一个共用体变量中可以同时存放其所有成员.错20. 用fopen("file","r+");打开的文件"file"可以进行修改。
对三。
填空题、1. 若有定义:char c='\010'; 则变量C中包含的字符个数为__1___.2. getchar()函数只能接收一个_字符____.3. 执行下列语句后, b的十进制值是__1___.int x=240,y=15,b;char z='A';b=(( x && y ) && ( z < 'a' ));4. 设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是_3____. for (x=0,y=0;y!=123&&x<3;x++)scanf ("%d",&y);5. C语言中,数组名是一个不可变的__指针地址___常量,不能对它进行加减和赋值运算.6. 函数调用语句func((e1,e2),(e3,e4,e5))中含有_2____个实参.7. 定义int *p,a[5];将数组a的首地址赋给指针变量p的语句是_____.p=ap=&a[0]p=a;p=&a[0];8.构体变量.四、程序设计1、功能:编写函数sum(int m,int n),求出m~n之间(包括m和n,m<n)能同时被3和5整除的数的和,并将这些数的和作为返回值。
#include "stdio.h"int sum(int m,int n){/*********Begin**********//********** End **********/}main(){void TestFunc();int m=15,n=300;printf("sum=%d\n",sum(m,n));TestFunc();}void TestFunc()FILE *IN,*OUT;int i,m,n;IN=fopen("in.dat","r");if (IN==NULL){printf("Open File Error");return;}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Write File Error");}for(i=0;i<5;i++){ fscanf(IN,"%d%d",&m,&n);fprintf(OUT,"%d\n",sum(m,n));}fclose(IN);fclose(OUT);}【参考代码】int i,s=0;for(i=m;i<=n;i++)if(i%3==0&&i%5==0)s=s+i;return s;2、功能:求5行5列矩阵的主、副对角线上元素之和。
注意,两条对角线相交的元素只加一次。
例如:主函数中给出的矩阵的两条对角线的和为45。
#include "stdio.h"#define M 5int fun(int a[M][M]){/*********Begin**********//********** End **********/void TestFunc(){FILE *IN,*OUT;int iIN[M][M],iOUT;int i,j;IN=fopen("in.dat","r");if(IN==NULL){printf("Please Verify The Currernt Dir..It May Be Changed");}OUT=fopen("out.dat","w");if(OUT==NULL){printf("Please Verify The Current Dir.. It May Be Changed");}{ for(i=0;i<M;i++)for(j=0;j<M;j++)fscanf(IN,"%d",&iIN[i][j]);iOUT=fun(iIN);fprintf(OUT,"%d\n",iOUT);}fclose(IN);fclose(OUT);}main(){int a[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}}; int y;y=fun(a);printf("s=%d\n",y);TestFunc();}【参考代码】int s=0;int i;for(i=0;i<M;i++)s=s+a[i][i]+a[i][M-1-i];s=s-a[(M-1)/2][(M-1)/2];return s;五、程序改错1、功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。