c++模拟卷及答案

上传人:第*** 文档编号:32683299 上传时间:2018-02-12 格式:DOC 页数:11 大小:86KB
返回 下载 相关 举报
c++模拟卷及答案_第1页
第1页 / 共11页
c++模拟卷及答案_第2页
第2页 / 共11页
c++模拟卷及答案_第3页
第3页 / 共11页
c++模拟卷及答案_第4页
第4页 / 共11页
c++模拟卷及答案_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《c++模拟卷及答案》由会员分享,可在线阅读,更多相关《c++模拟卷及答案(11页珍藏版)》请在金锄头文库上搜索。

1、程序设计基础 模拟试题 A年级、专业: 考试日期: 年 月 日班级:_学号:_姓名:_题号 一 二 三 四 五 六 总分得分评卷人一,判断题(每题 1 分,共 10 分)(1) 如果 x 的当前值为 5,则执行语句“if(x=3)x=x+5”后,x 的值仍为 5。错,if(x=3)而不是 if(x=3),所以这是有区别的。前者进行判断之前先做了赋值x=3,然后判断 x 是否为真(若 x 是非零,为真)显然是真,接着是进行加法运算 x=8(2) 程序调试就是找出并改正 C 源程序中的语法错误。错,不仅仅是语法错误,也有算法错误等(3) C+源程序编译后,即生成后缀为.EXE 的可执行文件。 错,

2、在连接后才产生exe(4) 执行语句“for(i=1;i=c*d ,因为运算符优先级,所以首先计算的是:c*d vuo,请参照预算符的优先级(10) 设 a=3,则执行 a+=a*=5 后,a 的值为 18 错,这又是优先级问题 +=和*=是同一等级,而且是从右至左的,所以先是 a*=5,a=15,然后 a+=a,所以 a 是 30二,单选题(每题 2 分,共 20 分)1. 下列语句定义 x 为指向 int 型变量 a 的指针,其中哪一个是正确的_B_A、int a,*a=a; B、int a,*x=2声明语句为“char a10” ,执行下列语句后的输出结果为_A_printf(“%d,%

3、dn”,strcmp(“abc”,”aBc”),strlen(strcpy(a,”windows”);A、1,7 B、1,10 C、32,7 D、32,10介绍: strcat(char,const char) 字符串连接函数,将第二个字符数组中的字符串连接到前面字符数组的字符串的后面 strcpy(char,const char) 字符串复制函数,将第二个字符数组中的字符串复制到第一个字符数组中去,将第一个字符数组中的相应字符覆盖 strcmp(const char,const char) 字符串比较函数,字符串 1字符串 2,函数值为 0; 函数值为一正整数;66?65:67);后输出结果

4、为_C_A、a ,65 B、97,a C、97,A D、97,C解析;这是 C 语言中的输出形式,d 表示整型 int ,c 表示字符型 char,所以根据这个,输出的是a的 ASCII 码,即 97, a66?65:67 是一个条件运算,条件为真所以输出的是ASCII 码为 67 的字符即 A。注:(ab)?a:b 如果条件 (ab)为真,则条件表达式的值就取“?”后面的值,即 a,否则取 b。6不正确的赋值或赋初值的方式是_C_。A、char *p=”hello”; B、char s10=”hello”C、char s10;s=”hello”; D、char s5=h,e,l,l,o;解析

5、:对于其他的选项的赋初值都是正确的,而对于 C,不能用赋值语句对整个数组赋值,但是在字符串的初始化中可以。例如:char str=“I am happy”;char str=“I am happy”;char str=I, ,a,m, ,h,a,p,p,y;这都是可以的而对以 A 选项,他定义的是一个字符指针,所以当然是可以把一个常量的地址给他。7设有定义语句“int s =2,4,6,8,10,*p=s;” ,则值为 8 的表达式是_D_。A、*p+3 B、*p+4 C、*(p+4) D、*(s+3)解析:这是有关数组与指针用指针和数组关系有以下一些:int a10;int *p;p=a;与

6、 p=a0;等价,都是将首元素的地址赋值给指针(1)p+i 和 a+i 就是 ai的地址(2)*(p+i)或*(a+i)都是 ai,即 p+i 或 a+i 所指向的数组元素(3)指向数组元素的指针变量也可以带下标,如 pi与*(p+i)等价对于多维数组与指针,表示的形式更加复杂,但是也是从一维数组中演化过来,由于维数多了,两者的表示又是相通的,所以形式多样,需要仔细判断。对于二维数组,*(*(a+0)+1)表示 a018执行下列程序段后,x 的值是_B_。int a=8,b=7,c=6,x=1;if(ab)if(b7)if(c8)x=2;else x=3;A、0 B、1 C、2 D、3解析:将

7、整段代码分开:int a=8,b=7,c=6,x=1;if(ab)if(b7)if(c8)x=2;else x=3;这就是 if 与 else 的配对问题:在 if 语句的嵌套中:“else 总是与它上面最近的、且未配对的 if 配对” 。9下面函数的功能是_B_。Int fun(char*x)char *y=x;while(*y+);return(y-x-1);0A、比较两字符串的大小。 B、求字符串的长度。C、将字符串 x 复制到字符串 y。 D、将字符串 x 连接到字符串 y 后。解析:本题有几个要点,这个函数的参数用了指针,当一个字符串中的一些没有被赋值的元素为空, (即0 ) 。本题

8、就用了后面的这一点来判断该字符串是否结束,若为 0,则表明是结尾了,但是长度的话要减去 1。由此又想起了,在使用字符串时,要常注意的一件事就是字符串的长度,在定义时大小要实际的大小1,这样就可以减少相关的一些操作的错误,例如,在整个字符串输出时,是根据0结束的,当碰到0就结束,不论后面是否还有。10函数调用语句 func(exp1,exp2),(exp3,exp4,exp5);中实参的个数为_B_。A、1 B、2 C、4 D、5解析:从该声明中来看,有两个括号,中间有一个逗号分开,所以是两个参数,至于括号里面的语句,这是逗号运算符,所以是往下进行,到最后。即func(exp2,exp5);三,

9、程序改错 (每题 5 分,共 10 分)指出错误所在行号并改正1,以下程序为从数组中找其中的最大值,请找出错误所在行号并改正。void main()1. int a=1,3,5,12,8,9,0,44,25,10;2. int i ; j ;3. max=99;4. for(i=0,ia i )max=a i ;6. printf(“max=%d,max”);7. 解析:首先是语法错误:1、在定义数组时,它的分号是在语句的最后2、在定义同一类型的多个变量时,它们之间是用逗号隔开3、max 在用之前没有定义4、for 语句的错误,之间不应该是逗号,而应该是分号然后是算法错误:1、此算法是要找出最

10、大值,所以需要全部扫描一遍,就需要一个变量去比较,就是 max,但是它的初始值竟然不是数组里的一个值,是其他的,这就超出了范围,所以一般是把它初始为 a02、这个循环的条件语句也有错误,数组总共就 10 个元素,但是循环要在第十一个的时候结束,这就带来了未知数3、还有就是循环中的元素大小判断,应该是把比 max 大的赋值给 max,而不是比 max 小的改正后的代码:int a=1,3,5,12,8,9,0,44,25,10;int i,j;int max=a0;for(i=0;i=200;m+)4. k=sqrt(m);5. for(i=0;i=A)else *p=*p-32;p+; cou

11、t0 后,进行第二次,取余得 3,所以m/=3;s+=3,得 m=5,s=2;继续判断 m0,进行第三次,取余得 5,所以m/=5;s+=5,得 m=1,s=7;m0,所以第四次,取余得 1,属于 default,即 m-,s得 m=0,s=6,判断后m0,所以退出循环。结果:-1276总结,对于阅读程序,其实相当简单,只要带入,执行几句,得出规律。有一些可能执行的次数并不多,所以可以直接进行。六, 程序设计题 (每题 10 分,共 30 分)1,设计程序:根据以下对应关系,对输入的 x 求相应的 y 值。y=x-1 xusing namespace std;int main()int x,y

12、;cinx;if(xusing namespace std;int sum(int x33)int i,j,sum=0;for( i=0;iaij;coutusing namespace std;int main()char a100;char * p=a;int up=0,low=0,num=0,oth=0;cina;for(int i=0;ai!=0;i+)if(*(p+i)=A&*(p+i)=a&*(p+i)=0&*(p+i)=9)num+;elseoth+;cout大写upendl;cout小写lowendl;cout数字numendl;cout其他othendl;return 0;对于第一学期的 C,其实很简单,只要基础掌握好,多多上机就可以了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号