二级C语言机试-139_第1页
二级C语言机试-139_第2页
二级C语言机试-139_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、级C语言机试-139总分:100.00,做题时间:90分钟、填空题总题数:1,分数:30.00 在给定程序中,函数fun的功能是:将形参n所指变量中的每一位为偶数的数去除,剩余的数按原来高位 到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:13245698,新的数为:1359。请在程序的下画线处填入正确的内容并把下 画线删除,使程序得出正确的结果。注意:源程序是考生文件夹下的BLANK1.C。不得增行或删行,也不得更改程序的结构。文件 BLANK1.C 内容如下:#include < stdio.h >void fununsigned long *n u

2、nsigned long x=0, i ; int t ;i=1 ;while* n:' *foundt=* n% 1*fou ndift%2!= 2 x=x+t*i :i=i*10*fou ndri*n=* n/10*n= (3)void main( ) unsigned long < n <100000000):"); n ; prin tf("Please in put(0scanf("%1d" , &n);fun(&n) ;printf("/nTheresult is:%1d/n",n);分

3、数: 30.00填空项1:正确答案:10解析:)填空项1:正确答案:0解析:填空项1:正确答案:X解析:解析函数fun的功能是:每次别离出指针 n指向的整型变量的个位,对个位的奇偶性 进行判定, 如果满足条件 是奇数,那么累加到变量x中。关键是,整数每一位数据的别离是 从个位进行的,而组成的新数要满足高位仍在高位,低位仍在低位,所以又设定了一个变量i,通过它完成每一位数字的权值的处理。对于第1空,别离*n的个位数字,所以采用%10的运算; 对于第2空,判断别离出的整数是否为奇数,所以通过判断t%2!=0来实现;对于第 3空,题目要求新的数通过形参指针n传回所指变量,所以将求出的新数x赋值给*n

4、。、改错题总题数:1,分数:30.001.给定程序 M0DI1.C中函数fun的功能是:将长整型数中为偶数的位依次取出,构成一个新数放 在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为8642。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。文件M0DI1.C内容如下:#inelude < stdio.h >void fun (10 ng s , long *t)int d ;long s1=1 ;t=0 ; while(s > 0) d=s%10 : *fo un d*|if(d

5、%2=0)*t=d*s1+*t ;s1*=10 ;*found*7s/=10 ;void main( ) long st ;prin tf("/nPlease en ter s:");seanf("%1d" , &s);fun(s ,&t);prin tf("The result is%1d/n",t);(分数:30.00 )填空项1:(正确答案:第1处:将“ if(d%2=0) 改为“ if(d%2=0) 。第 2 处:将“s/=10 ; 改为“ s/=10 ; 。)解析:解析根据题目要求需要取出s各位为偶数的数字组

6、成一个新数放在t指向的变量中。循环中每次 取出s的个位放在变量 d中,需要判断d是否为偶数,所以第 1处错误在于赋值运 算符和关系运算法出现混淆,应该改为“d%2= 0。对每次取出s的个位进行判断处理后,应该将s的个位去掉,所以需要对s做整除10的操作,第2处错误在于除法运算符书写错误。三、编程题(总题数:1,分数:40.00)2.函数fun的功能是:将 a、b中的两个两位正整数合并形成一个新的整数放在e中。合并的方式是:将a中的十位和个位数依次放在变量e的千位和十位上,b中的十位和个位数依次放在变量e的个位和百位上。例如,当a=45 , b=12时,调用该函数后,e=4251。注意:局部源程

7、序在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的假设干语句。文件 PROG1.C内容如下:#include < stdio.h >void fun(int a , int b , long *e)void main( ) int a , b ; long e ; printf("Input a, b : ");seanf ("070 d%d" , &a , &b);fun (a , b, &c);printf ("The result is: %1d

8、/n" , e);(分数:40.00 )正确答案: (void fun(int a , int b , long * *c) *c=a/10*1000+a%10*10+b/10+h%10*100;)解析: 解析 此题考的是数据别离的算法,别离出两位整数的个位和十位,然后按照题目要求进 行重新组合。数据的别离通常采用“ / 、“ %来实现。 a 和 b 是两个两位的正整数,所以 a/10 、 b/10 别离出 d、 b 变量的十位, a%10、 b%10 别离出 a、l ,变量的个位,参数 c 是指针,通 过它将组成的新数传回所指的变 量,所以注意应该对 *c 进行赋值。 归纳总结 本套试题的程序填空和程序设计题考查的是数据别离的算法。此类题目的处理方法通 常有两种。 第一种:在知道整数确切位数的情况下,要求别离出整数的每一位,通常采用“/ 和“ %两种运算的结 合。常用程序为:设有整型变量 a 且已正确赋值一个正整数,那么gw=a%10 ; /* 别离出个位 */ sw=a/10%10 ; /* 别离出十位 */ bw=a/100%10 ; /* 别离出百位 */ 第二种: 在不知道位数的情况下, 通常采用循环, 每次别离整数的个位, 再通过整除 10 的运算将个位 丢掉,原来的十位那么又变成了个位,以此类推进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论