您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计-第三部分模拟考核试题及解答
第三部分模拟考核试题及解答一、选择题1.由C语言源程序文件编译而成的目标文件的缺省扩展名为()。A.cppB.exeC.objD.C2.C语言程序的基本模块为()。A.表达式B.标识符C.语句D.函数3.x0||y==5的相反表达式为()。A.x=0||y!=5B.x=0&&y!=5C.x0||y!=5D.x0&&y==54.枚举类型中的每个枚举常量的值都是一个()。A.整数B.浮点数C.字符D.逻辑值5.循环语句“for(inti=0;in;i++)S;”中循环体S被执行的次数为()。A.1B.n-1C.nD.n+16.在下面的while循环语句中,其循环体被执行的次数为()。inti=0,s=0;while(s20){i++;s+=i;}A.4B.5C.6D.77.若定义了函数double*function(),则返回值类型为()。A.实数型B.实数指针型C.函数指针型D.数组型8.若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址B.数组中第一个元素的值C.数组中全部元素的值D.数组元素的个数9.假定a为一个整型数组名,则元素a[4]的地址比该数组的首地址大()个字节。A.4B.8C.16D.3210.下列给字符数组赋初值时,正确的是()。A.chars1[]=abcdef;B.chars2[4]=abcd;C.chars3[2][3]={abc,xyz};D.chars4[4][]={'a','x','s','t'};A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;11.要使p指向二维整型数组a[10][20],p应定义为()。A.int*p=a;B.int**p=a;C.int*p[20]=a;D.int(*p)[20]=a;12.标准输入设备的文件流标识符是()。A.stdinB.stdoutC.stderrD.stdio13.若要以读/写操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。A.r+B.ab+C.rb+D.wb+二、填空题1.单行或多行注释的开始标记符为__________。2.使用#include命令可以包含一个头文件,也可以包含一个______文件。3.执行“printf(%s%s%d,wei,rong,18);”语句后得到的输出结果为________。4.执行“printf(%c,'A'+2);”语句后得到的输出结果为________。5.short类型的大小为________个字节。6.十进制数3.26f的类型为________。7.假定y=10,则表达式++y*3的值为________。8.关系表达式(x==0)的等价表达式为________。9.若x=5,y=10,则x!=y的逻辑值为________。10.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。11.当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。12.假定二维数组的定义为“chara[M][N];”,则该数组所占存储空间的字节数为________。13.存储字符串a需要占用存储器的________个字节空间。14.strlen函数用于计算一个字符串的________。15.函数中的形参变量的初值由调用该函数时对应的________值决定。16.程序的编译是以__________为单位进行的。17.假定a是一个一维数组,则a[i]的指针访问方式为________。18.执行int*p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为________。19.假定要动态分配一个类型为structWorker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句表达式为________________=malloc(n*sizeof(structWorker))。20.与结构成员访问表达式p-name等价的表达式是____________。三、写出下列每个程序运行后的输出结果1.#includestdio.hvoidmain(){inti,s=0;for(i=1;;i++){if(s50)break;if(i%2==0)s+=i;}printf(i,s=%d,%d\n,i,s);}2.#includestdio.hvoidmain(){charch='*';inti,n=5;while(1){for(i=0;in;i++)printf(%c,ch);printf(\n);if(--n==0)break;}}3.#includestdio.hvoidmain(){intx=24,y=88;inti=2,p=1;do{while(x%i==0&&y%i==0){p*=i;x/=i;y/=i;}i++;}while(x=i&&y=i);printf(%d\n,p*x*y);}4.#includestdio.hvoidmain(){inta[9]={36,25,48,24,55,40,18,66,20};inti,b1,b2;a[0]=a[1]?(b1=a[0],b2=a[1]):(b1=a[1],b2=a[0]);for(i=2;i9;i++)if(a[i]b1){b2=b1;b1=a[i];}elseif(a[i]b2)b2=a[i];printf(%d%d\n,b1,b2);}5.#includestdio.hvoidmain(){inta=10,b=20;printf(%d%d\n,a,b);{intb=a+25;a*=4;printf(%d%d\n,a,b);}printf(%d%d\n,a,b);}6.#includestdio.hvoidSelectSort(inta[],intn){inti,j,k,x;for(i=1;in;i++){//进行n-1次选择和交换k=i-1;for(j=i;jn;j++)if(a[j]a[k])k=j;x=a[i-1];a[i-1]=a[k];a[k]=x;}}voidmain(){inti;inta[6]={20,15,32,47,36,28};SelectSort(a,6);for(i=0;i6;i++)printf(%d,a[i]);printf(\n);}7.#includestdio.hvoidLE(int*a,int*b){intx=*a;*a=*b;*b=x;}voidmain(){intx=15,y=26;printf(%d%d\n,x,y);LE(&x,&y);printf(%d%d\n,x,y);}8.#includestdio.h#includestring.hstructWorker{charname[15];//姓名intage;//年龄floatpay;//工资};intEqual(structWorker*r1,structWorker*r2){if(strcmp(r1-name,r2-name)==0)return1;elsereturn0;}voidmain(){structWorkera[4]={{abc,25,420},{defa,58,638},{ghin,49,560},{jklt,36,375}};structWorkerx={defa};inti;for(i=0;i4;i++)if(Equal(a+i,&x))break;if(i=4)printf(没有查找所需要的记录!\n);elseprintf(%s%d%6.2f\n,a[i].name,a[i].age,a[i].pay);}四、写出下列每个函数的功能1.intSE(intn){//n为大于等于1的整数intx,s=0;printf(输入%d个整数:,n);scanf(%d,&x);if(n==1)returnx;s=x;while(--n){scanf(%d,&x);s+=x;}returns;}2.#includestdio.hvoidWA(inta[],intn){inti,k,j,x;for(i=0;in-1;i++){k=i;for(j=i+1;jn;j++)if(a[j]a[k])k=j;x=a[i];a[i]=a[k];a[k]=x;}}3.#includestdio.hint*LJ(inta[],intn){inti,k=0;for(i=1;in;i++)if(a[i]a[k])k=i;return&a[k];}4.intOutput(structIntNode*f){intsum=0;if(!f)return-9999;//用返回特定值-9999表示空表while(f){sum+=f-data;f=f-next;}returnsum;}假定structIntNode的类型定义为:structIntNode{intdata;//结点值域structIntNode*next;//结点指针域};5.intwr4(FILE*fptr){charch;intc=0;fseek(fptr,0,SEEK_SET);while(1){ch=fgetc(fptr);if(ch!=EOF)c++;elsebreak;}returnc;}五、根据下列每个题目要求编写程序1.编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。2.编写一个主函数,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。3.编写一个主函数,已知6≤a≤40,15≤b≤30,求出满足不定方程2a+5b=120的全部整数组解。如(13,20)就是其中的一组解。参考解答:一、选择题1.C2.D3.B4.A5.C6.C7.B8.A9.C10.A11.D12.A13.C二、填空题1./*2.程序3.weirong184.C5.26.float7.338.(!x)9.110.if11.continue12.M*N13.214.长度15.实参16.程序文件17.*(a+i)18.*p19.structWorker*r20.(*p).name三、写出下列每个程序运行后的输出结果1.i,s=15,562.***************3.2644.18205.1020403540206.1520283236477.152626158.defa58638.00四、写出下列每个函数的功能1.求出从键盘上输入的n个整数之和并返回。2.采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。3.求出数组a中n个元素的最大值元素,返回该元素的地址4.对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。5.求出一个以fptr为文件流的所对应文件的长度,即所存字符的个数。五、根据下列每个题目要求编写程序1.doublefun(){doublea[4][4];doubles=0;inti,j;printf(输入一个4*4的数值矩阵:\n);for(i=0;i4;i++)for(j=0;j4;j++)scanf(%lf,&a[i][j]);for(i=0;i4;i++)s+=a[i][i];returns;}2.#includestdio.hvoidmain(){inti;//用i作为循环变量intp=1;//用p作为累乘变量ints=1;//用s作为累加循环变量for(i=1;i=10;i++){p*=3;s+=p;}printf(%d\n,s);}3.#includestdio.hvoidmain(){inta,b;for(a=6;a=40;a++)for(b=15;b=30;b++)if(2*a+5*b==120)printf((%d,%d
本文标题:C语言程序设计-第三部分模拟考核试题及解答
链接地址:https://www.777doc.com/doc-2908109 .html