吉林师范大学往年C语言程序设计专升本题目含答案解析.docx
往年C语言程序设计专升本题目(一)(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、若需要利用形参直接访问实参,则应把形参变量说明为()参数。A、指针B、引用C、传值D、常值2、可在c程序中用作用户标识符的一组标识符是oA、 voiddefineWORDB、 as_b3_123IfC、 For-abccaseD、 2cDOSIG3、分析下列程序:#include<stdio.h>main()int*pl,*p2,*p;inta=6,b=9;pl=&a;p2=&b;if(a<b)(p=p1;pl=p2;p2=p;printf(z,%d,%d,*pl,*p2);printf(,z%d,%d,a,b);程序的输出结果为OA、9,66,9B、6,99,6C6,96,9D>9,69,64、下面程序的运行结果是omain()inti,j,a=0;for(i=0;i<2;i÷+)for(j=0;j<4;j+)(if(j%2)break;a+;)a+÷)Printf("%dr,a);)A、4B、5C、6D>75、以下叙述中不正确的是oA、空字符串(即两个双引号连写)只占个存储单元B、字符型常量可以放在字符型变量中C、字符型常量可以放在字符串变量中D、字符型常量可以与整数混合运算,而字符串常量不可以6、若有定义floata=25,b,*p=&b;,则下列对赋值语句“*p=a;和"p=&a;的正确解释为()oA、两个语句都是将变量a的值赋予变量PB、*P二a是使P指向变量a,而P二&a是将变量的值赋予变量指针PC、*p二a是将变量a的值赋予变量b,而&a是使P指向变量aD、两个语句都是使P指向变量a7、若有说明语句chara=itismine"char*p="itismine”;则以下不正确的叙述是oA、a+1表示的是字符t的地址B、P指向另外的字符串时,字符串的长度不受限制C、P变量中存放的地址值可以改变D、a中只能存放10个字符8、编写C语言程序并上机调试运行的一般过程是oA、编辑一编译一连接一运行B、编译一编辑一连接一运行C、编辑一连接一编译一运行D、编译一连接一编辑一运行9、宏定义用于将-个标识符定义为一个A、常量B、字符串C、整数D、长整数10、int(*p)6;它的含义为。A、具有6个元素的一维数组B、定义了个指向具有6个元素的维数组的行指针变量C、指向整型指针变量D、指向6个整数中的一个的地址11、以下叙述中不正确的是oA、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B、在C的函数中,最好使用全局变量C、在C中,形式参数只是局限于所在函数D、在C中,函数名的存储类别为外部12、有输入语句:scanf("a=%d,b=%d,c=%d,&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是o(注:1.J表示空格)A、132V回车>B、1,3,2V回车>C、a=l1.Jb=31.Jc=2V回车>D、二14二33=2回车13、以下各语句或语句组中,正确的操作是oA、 chars3二abcde”;B、 char*s;gets(三);C、 char*s;s="abcdc”;D>chars5;SCanf("%s",&s);14、有以下程序include<studio.h>include<string.h>structa(inta;charb10;doublec;);voidf(structat);main()(structaa=1001,nzhangda,1098.0;f(八);pringt(n%d,%s,%6.lfn,a.a,a.b,a.c);)voidf(structat)(t.a=1002;strcpy(t.b,changrong");t.c=1202.0;)程序运行后的输出结果是oA、1001,ZhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D>1002,ZhangDa,1202.015、以下4组用户定义标识符中,全部合法的组是A、_mainencludesinB、If-maxturboC>txtREA1.3C0MD>intk_2_00116、以下程序段的输出结果为()。charc二abc;inti=0;do;while(ci+!=,0,);printf(d,i-l);A、abcB、abC、2D、317、若有以下说明和语句:structst(intn;char*ch;)9structsta3(5, abc,7,def,9,ghk),*p=a则值为6的表达式是oA、p+->nB、p->n+C、(*.n+D、+p->n18、有以下程序intf(intb114)inti,j,s=0;for(j=0;j<4;j+)(i=J;if(i>2)i=3-j;s+=bij;)returns;)main()(inta44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,l,0;printf("%dr,f(八));)执行后的输出结果是OA、12B、11C、18D、1619、若有定义:intw35;则以下不能正确表示该数组元素的表达式是A、 *(*w÷3)B、*(w+l)4C*(*(w+l)D、*(&w00+l)20、以下对c语言中共用体类型数据的叙述正确的是A、可以对共用体变量名直接赋值B、 个共用体变量中可以同时存放其所有成员C、 个共用体变量中不可以同时存放其所有成员D、共用体类型定义中不能出现结构体类型的成员二、填空题(每小题2分,共20分)1、ftinclude<stdio.h>inti=010,j=10;printf(z,%d,%dn",+i,j-);2、符合结构化原则的三种基本控制结构是:选择结构、循环结构和。3、用&&写出判断一个字母是否为大、小写的语句4、在一个C源程序中,注释部分两侧的分界符分别为和。5、下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。intn=0,ch;ch=getchar();while()(if()n+;c=getchar();)6、以下程序运行的结果为oftinclude<stdio.h>intd=1;fun(intp)(intd=5;d+=p+;Printf("%d,”,d);voidmain()(inta=3;fun(八);d+=a+;Printf("%dn”,d);)7、字符读写函数是用于从磁盘文件中读出一个字符。8、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的F标值。请填空。#include<stdio.h>main()(inta10,*p,*s;for(p=a;p-a<10;p+)scanf(,%d,',p);for(p=a,s=a;p-a<10;p+)if(*p>*s)S=;printf(nindex=%dn,s-a);)9、若从键盘输入58,则以F程序输出的结果是omain()(inta;scanf&a);if(a>50)printf("%d",a);if(a>40)printf("%c,a);if(a>30)printf("%c,a);10、a=3;a+=(a<l)?a:1;printf(z,%d,z,a);结果是O三、编程题(每小题分,共40分)1、编写程序:判断101到200之间的素数。(本题10分)2、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数例如:从键盘上输入2345,则程序运行的结果应当为:"2345()(本题14分)3、题目描述万里十佳歌手比赛终于开始了,评委席坐了N(N大于等于3,并且N小于80)个评委,他们商量了很久,终于找出一个公正合理的评分方法。每次歌手唱完后,每个评委自己打一个分,然后在N个评委的打分中,去掉一个最高分,一个最低分。然后再把剩下的评委的打分求平均值。但是问题是他们嫌每次拿计算器按实在太烦。作为一名计算机专业学生你用个程序帮帮他们搞定吧。输入输入有多组数据。每组2行,第一行是一个N,代表有N个评委。然后第二行有N个数,每个数用空格隔开,代表每个评委的打分。当输入的N为0的时候结束输入。输出对于每组输入,输入最终这个选手的得分(小数点后面保留2位有效数字)。样例输入3743634716972726749688样例输出36.0062.20(本题16分)参考答案一、单项选择题1、B【解析】在进行参数传递时,引用参数是利用形参直接访问实参,形参的变化直接影响实参的变化,而传值参数不会影响实参变量。2、B【解析】C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。3、A【解析】通过Pl二&a,p2=&b分别将a、b的地址赋给指针pl、p21接着执行if语句,发现a<b成立,则通过交换pl、p2的值,即交换a、b所在存储单元的地址,但是a、b的值并没有发生变化。4、A5、C6、C7、D【解析】解析:本题考查字符串数组和指针的引用方式。在C语言中,系统在每个字符串或数组的最后自动加入一个字符'0',作为字符的结束标志,在本题中,chara="Itismine'';所表示的。字符串实际含有11个字符。8、A9、B【解析】宏定义用于将一个标识符定义为一个字符串10、B11、B【解析】本题也是考查C语言中函数的概念及其使用。函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。12、D13、C【解析】字符数组可以使用字符串进行初始化,但数组长度应足够容纳该字符串,选项A不满足要求0gets()函数用于读取字符串,并将字符串保存到参数代表的空间中,选项B中,只定义了字符指针,没有空间存放字符串信息。选项D定义了长度为5的字符数组,数组名称代表数组的首地址,使用SCanf()读取字符串时,参数为数组名即可°14、A15、A16、D17、D【解析】根据结构变量的存储特点,P+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即P+使P由a0指向al起始地址C本题+P->n得到P指向的结构体变量中成员n的值使之加K因为p指向数组a起始地址,P->n的值为5,再执行自加1运行,结果为6。18、D19、B【解析】本题考查的是通过指针引用二维数组元素C通过一维数