[java上机编程题]部分上机编程题详细分析1
【shitiku.jxxyjl.com--等级考试】
请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位数依次放在c的个位和百位上,b的十位和个位数依次放在c的十位和千位上。例如,当a=45,b=12。调用该函数后,c=2514。
注意:部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
试题源程序如下:
#include <stdio.h>
void fun(int a, int b, long *c)
{
}
main()
{ int a,b; long c;
printf("Input a, b:"); scanf("%d%d", &a, &b);
printf("a=%d b=%d\n",a,b);
fun(a, b, &c);
printf("The result is: %ld\n\n", c);
}
分析:
(1)本题的主要算法分两步:一是取得2位数中的十位和个位上的数,有了这些数,就不难得到指定的整数。二是把四个一位数按指定的次序拼成一个四位的整数。
(2)若把a中十位上的数放在u中,个位上的数放在v中,可分别由语句:u=a/10;和v=a%10;实现。同样可以把b中十位上的数放在x中,个位上的数放在y中。这样就从a和b中拆分出了4个一位整数分别放在u、v、x、y中。若a=45,b=12,则u、v、x、y中的数据依次为4、5、1、2。
(3)若一个千位数为6789,从数学上可演变成这样的算式:6×1000+7×100+8×10+9按本题的要求,y是千位上的数、v是百位上的数、x是十位上的数而u是个位上的数,新组成的数可用表达式:y*1000+v*100+x*10+u来获得。
(4)注意新组成的数放在形参c所指的存储单元中。所以通过形参返回的值应当放在*c中。
(5)在fun函数体中打入程序语句,注意,应对使用的变量进行定义。
(6)编译后若无错误,运行程序,输入:
45 12<回车>
程序应当输出:
The result is:2514
人不可能太好,太好了那就不是人了,那是神;
人不能太坏,太坏了就是鬼。
不好不坏,这才是人!
本贴发表时间:2005-8-18 上午 09:51:20
唐克
虚拟形象
等级: 管理员
头衔:站长
贴子:214
积分:665
唐币:8783
来自:金都
注册:2005-6-1
第 2 楼
请编一个函数int fun(int x),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。
所谓"同构数"是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从键盘读入,要求不大于100。
注意:部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
试题源程序如下:
#include <stdio.h>
int fun (int x )
{
}
main()
{ int x,y;
printf("\nPlease enter a integer numbers: "); scanf("%d",&x);
if( x>100 ){ printf("data error !\n"); exit(0); }
y=fun(x);
printf("x=%d x*x=%d : ");
if(y) printf("YES\n");
else printf("NO!\n");
}
分析:
(1)形参x的数由主函数中的x传入,也就是说fun函数判断主函数中的x中的数是否为同构数。
(2)在主函数中给x输入数据,而且主函数中的if语句限制x的值不得大于100,若大于100就结束程序。而100的平方数为10000,不是同构数,由此可以得知需要判断的x是一个小于100的两位数,这个判断对于函数的具体编程是很重要的。
(3)在函数中,若形参x的平方数放在变量a中;由于形参x的值不大于100,因此可以断定只需取a右边的一位或两位数来与x比较,假定此数放在变量k中。k中的数是取a右边的一位数还是两位数要取决于x的值。
(4)如果x<10(x是一位数),可用表达式a%10,取a右边的一位数放入k中;否则可用表达式a%100,取a右边的两位数放入k中。
(5)按试题中给出的同构数的条件,若k的值等于x,说明x是同构数,按规定要求fun函数返回一个整数1。若k的值不等于x,fun函数返回一个整数0。因此可用表达式k==x作为函数返回值,相等时k==x值为1,不等时其值为0。
(6)按以上所述打入程序,若编译无错,运行程序,每运行一次输入一个数据给x,可分别输入5、6、25、3、88等数,观察程序输出是否正确。
(7)观察主函数,函数值赋给了变量y,if语句中若y的值为0,则输出NO!,若y的值为1,则输出YES。因此运行时输入5、6、25,程序输出YES,输入3、88程序输出NO!。
3、请编一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即,某项小于0.0005时停止迭代):
screen.width-500)this.width=screen.width-500" align=center border=0>
程序运行后,如果输入精度0.0005,则程序输出多少。
注意:部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
试题源程序如下:
#include <stdio.h>
#include <math.h>
double fun(double eps)
{
}
main()
{ double x;
printf("Input eps:");
scanf("%lf",&x); printf("\neps=%lf, PI=%lf\n",x,fun(x));
}
分析:
(1)本题所用基本算法应为累加。假设累加值放在变量s中,累加项放在变量t中,累加操作由语句s=s+t;来实现。
(2)若称screen.width-500)this.width=screen.width-500" align=center border=0>为第1累加项,则其前的1为第0累加项,其后的一项为第2累加项,按给定的公式可知,从第1累加项开始,后一项的累加项是前一项的值乘以 [ 相关贴图 ]
screen.width-500)this.width=screen.width-500" align=center border=0>。所以当前的累加项应当是:t=t*n/(2.0*n+1.0)。表达式右边的t中是前一项的值,表达式左边的t为当前的每累加累加项。请注意,不要写成:t*n/(2*n+1)而进行整除。
(3)若第0累加项的1作为s的初值,语句:s=s+t;执行n次,就把第1到第n项累加到了s中。每进行一次累加,n值增1。
(4)把以上操作放在循环中。按本题规定,当某项小于eps(0.0005)时停止迭代,因此若用while循环,可用t>=eps作为控制循环进行的条件:
while( t>=eps ){ s+=t; n++; t=t*n/(2.0*n+1); }
(5)注意应给所用变量赋适当的初值。
(6)退出循环后,函数的返回值应是:2*s。
相关试题
- [2005年九月三]2005年9月17三级信息管理笔试试题答案
- [计算机等级考试java二级真题]计算机等级考试二级JAVA模拟试题
- [计算机等级考试三级含金量]计算机等级考试三级PC上级题精选41-45
- [2005年什么年]2005年NCRE考前密卷及解析-选择第21-40题
- 公共基础模拟题及答案_二级公共基础模拟题第四套答案
- [2005年一月17日]2005年9月17日三级PC技术笔试试题答案
- [计算机三级网络技术历年真题]计算机三级网络技术全真标准预测试卷(一)
- 计算机等级考试三级含金量|计算机等级考试三级PC上级题精选36-40
- 2005年什么年|2005年NCRE考前密卷及解析-选择第1-20题
- 公共基础模拟题及答案|二级公共基础模拟题第四套试题
-
2005年正月17_2005年9月17二级C笔试试题答案详细阅读
选择题01-05)CACDC 06-10)DAABB11-15)ACBBA 16-20)CCDAB21-25)DCABC 26-30)DDABD31-35)BCCBA 36-40)DCCAD41-45)ADBAC 46-50)DABAD填空题1 数据库系统阶段2 空间3...
-
[计算机等级考试三级含金量]计算机等级考试三级PC上级题精选21-25详细阅读
上机题之21以下内容为程序代码:;* 请编制程序PROG1 ASM,其功能是:内存中连续存放着十个无符;* 号8位二进制数,现将此十个数转换成十个8位格雷码表示的数,结果;* 存入内存。其转换方法为格雷码的最高位g[7]与二进制数的最高位d[7];* 相同, 格雷码的其余七位g[k]...
-
2006年二级建造师网上可查询吗|2006年二级VF笔试答案(含试题)详细阅读
visual foxpro数据库程序设计(考试时间90分钟,满分100分)一、选择题((1)~(35)每小题2分,共70分)下列各题a)、b)、c)、d)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)数据的存储结构是指a) 存储在外存中的数据b) 数据...
-
2005年九月三_2005年9月17三级网络技术笔试试题答案详细阅读
选择题:01-05)DCABD 06-10)BBDCA11-15)BCABD 16-20)CABAD21-26)ADBCC 26-30)BADCB31-35)CBDBD 36-40)CCBBA41-45)DDABA 46-50)BCCBD51-55)CDDCA 56-60)A...
-
全国计算机等级考试二级c语言历年真题_2005年全国计算机等级考试二级C语言真题3详细阅读
第3页 (45)有以下程序point(char *p){ p+=3;}main(){ char b[4]={a,b,c,d},*p=b; point(p); printf(%c n,*p);}程序运行后的输出结果是 AA)aB)...
-
[公共基础模拟题及答案]二级公共基础模拟题第三套试题详细阅读
(1)栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素 D)没有共同点(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba(3)链表不具有的特点是A)不必事先估...
-
2005年9月二十四午时|2005年9月二级VB笔试真正标准答案详细阅读
选择题【 1- 5】 CACDC 【 6-10】 DAABB 【11-15】 BCCDC 【16-20】 CABBA 【21-25】 DAADC 【26-30】 ADBAC 【31-35】 CCDAB 填空题【1】数据库系统 【2】空间...
-
全国计算机等级考试二级c语言历年真题|2005年全国计算机等级考试二级C语言真题2详细阅读
第2页 (29)有以下程序main(){ int a[3][3],*p,i; p=&a[0][0]; for(i=0;i...
-
[计算机等级考试一级考试题目]计算机等级考试一级B考试自测题详细阅读
1 现代微型机中采用的主要元件是()。 A)电子管 B)晶体管 C)中、小规模集成电路 D)大规模、超大规模集成电路 正确答案:D 2 计算机之所以能按人们的意志自动进行工作,主要是因为采用了()。 A)二进制数制 B)高速电子元件 C)存储程序控制 D)程序设计语言 正确答案:C 3 下列...
-
计算机等级考试三级含金量_计算机等级考试三级PC上级题精选11-15详细阅读
PC上机题之11以下内容为程序代码:;* 请编制程序PROG1 ASM,其功能是:内存中连续存放着二十个;* ASCII字符,如果是0~9或A~F之间的字符,请把它们转换成二进制;* 数;若为其他字符,不作转换。;* 例如:;* 内存中有;* 30H(...