首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 已知某数列的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成: (1)若乘积为一位数,则该乘积即为数列的后继项; (2)若乘积为二位数,则该
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 【说明】 已知某数列的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成: (1)若乘积为一位数,则该乘积即为数列的后继项; (2)若乘积为二位数,则该
admin
2010-01-15
25
问题
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
已知某数列的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成:
(1)若乘积为一位数,则该乘积即为数列的后继项;
(2)若乘积为二位数,则该乘积的十位数和个位数依次作为数列的两个后继项。
本程序输出该数列的前n项以及它们的和。其中,函数sum(n,pa)返回数列的前n项之和,并将生成的前n项存放于首指针为pa的数组中。程序中规定输入的n值必须大于2并且不超过给定的常数值MAXNUM。
例如:若输入n值为10,则程序输出如下内容:
sum(10)=44
2 3 6 1 8 8 6 4 2 4
#include<stdio.h>
#define MAXNUM 100
int sum(int n,int *pa){
int count,total,temp;
*pa=2;
(1)=3;
total=5; count=2;
while(count++<n){
temp+=*(pa-1)**pa;
if(temp<10){
total+=temp;
*(++pa)=temp;
}
else{
(2)=temp/10;
total+=*pa;
if(count<n){
count++;pa++;
(3)=temp%10;
total+=*pa;
}
}
}
(4);
}
main(){
int n,*p,*q,num[MAXNUM];
do{
printf("Input N=?(2<N<%d):",MAXNUM+1);
scanf("%d",&n);
}while((5));
printf("\nsum(%d)=%d\n",n,sum(n,num));
for(p=num,q= (6) ;p<q;p++)printf("%4d",*p);
printf("\n");
}
选项
答案
(1)*++pa (2)*++pa (3)*pa (4)return(total) (5)n<3||n>MAXNUM (6)p+n
解析
本题考查用C语言对数列的操作。
通过程序说明部分的描述及实例,可以清楚地了解程序功能。由于真正的处理函数是sum(),而主函数只是输入数据,调用sum(),以及输出结果,所以我们可以先分析sum()。
int sum(im n,int*pa){
int cotmt,total,temp;
*pa=2;
(1)=3;
程序说明部分已经提到数列的前两个元素为2和3。*pa存储了第一个元素“2”,很显然“3”应存在*(pa+1)中。又因为后面有语句“temp+=*(pa-1)**pa;”,这说明在求乘积时,pa是指向要运算数的后者,例如要求2*3,pa指向3,用*(pa-1)表示2。所以(1)空应填*(++pa),而不能用*(pa+1)。
total=5;count=2;
while(count++<n){
temp+=*(pa-1)**pa;
这里是求两数列元素的乘积。
if(temp<10){
total+=temp;
*(++pa)=temp;
}
else{
(2)=temp/10;
对应程序说明,当乘积小于10时,直接把乘积作为数列的后继项;当乘积大于等于10时,把该乘积的十位数字和个位数字依次作为数列的两个后继项。这时应当把大于等于10的数(因为最大的数为9*9=81,所以都为两位数)分解为单个的数字,“temp/10”求出的是十位数字,所以存入当前数列元素的后继项,即(2)空应填*(++pa)。
total+=*pa;
统计当前数列和。
if(count<n){
如果当前数列元素个数没有达到指定值n,则把乘积的个位数(temp%10)作为数列的后继项;如果当前数列元素个数已经达到指定值n,则可以退出循环,返回主函数了。
count++;pa++;
(3)=temp%10;
由于前面已经有“pa++”,所以(3)空应填*pa。
total+=*pa;
}
}
}
(4);
}
又因为主函数有“printf("\nsum(%d)=%d\n",n,sum(n,num,));”,说明函数sum()返回了数列和。因此,(4)空应填return(total)。
当分析完函数sum()的功能后,我们再来看main(),就显得十分简单了。
do{
printf("Input N=?(2<N<%d):",MAXNUM+1);
scanf("%d",&n);
}while((5));
上面是输入n的值,n要保证是合法值才能继续下面的工作,所以当输入n不合法时,应重新输入n值。因此,(5)空应填n<3||n>MAXNUM。
printf("\nsum(%d)=%d\n",n,sum(n,num));
for(p=num,q=(6);p<q;p++)printf("%4d",*p);
此for循环用于输出数列,循环终止条件是“p<q”,又因为num是数列首指针且n为数列长度,所以(6)空应填p+n。
转载请注明原文地址:https://jikaoti.com/ti/CkW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
计算机硬件唯一能够直接识别和处理的语言是(30)________________。
在Excel2010的A1单元格中输入函数“=ABS(ROUND(-1.478,2))”,按回车键后,A1单元格中的值为________________。
在Excel2010中,C3:C7单元格中的值分别为10、OK、20、YES和48,在。D7单元格中输入函数“=COUNT(C3:C7)”,按回车键后,D7单元格中显示的值为________________。
在Excel2010中,设A1单元格中的值为20,A2单元格中的值为60,若在C1单元格中输入函数“=AVERAGE(A1,A2)”,按回车键后,,则C1单元格中的值为(
某地区去年粮食产量资料如下表:根据该表可以推算出,该地区去年薯类的产量为()万吨。
上级要求信息处理技术员做a、b、c、d、e五件工作。先做什么,后做什么,如何安排呢?根据工作性质以及紧急程度,他列出了如下几条规则:a应在b前 c应在a前 d应在a前 a应在e前d应在b前 b应在e前 c应在d前 c应在
在Excel2007中,在单元格A1中输入函数“=POWER(2,3)/MAX(1,2,4)”,按回车键后,则A1单元格中的值为__________。
在Excel中,若A1单元格中的内容为“全国计算机技术与软件专业技术资格(水平)考试”,在A2单元格中输入函数=LEFT(A1,2),则A2单元格显示的内容是______。
为在Exce1的A1单元格中生成一个60到100之间的随机数,则应在A1单元格中输入______
随机试题
不依据现成的描述而独立创造新形象的过程是_______。
下列选项中标志着多党合作制作为我国的一种政党制度正式走向制度化的是()
【背景资料】某大型综合商场工程,建筑面积49500m2,地下1层,地上3层,现浇钢筋混凝土框架结构。建安投资为22000.00万元,采用工程量清单计价模式,报价执行《建设工程工程量清单计价规范》GB50500—2013,工期自2013年8月1日
物业服务企业信用档案的记录内容主要包括()。
在教学中如何体现“从物理到社会”的课程理念?并以初中物理“摩擦力”一课为例说明。
某市政府所属A行政机关作出行政处罚决定后被撤销,其职能由市政府所属B行政机关继续行使,受到行政处罚的公民不服,准备提起行政复议,此时他应以()为行政复议被申请人。
某市新华街派出所推动“1+3+N”专群联动工作机制,即以新华商圈“大党委”为“1”,通过联合党建活动,联动公安、综合执法、司法“3”部门,深度整合辖区企事业单位、小区物业公司等“N”种社会资源。此外,依据不同区域治安特点,先后形成了新华商圈警企反恐“四联三
现在有一种现象,人才分布南多北少,东多西少,城市多乡镇少,你如何看待?
—Youwillhearfivespeakerstalkingaboutbusinesstrips.—Foreachrecording,choosethereasonthespeakergivesforthetr
Inmostcases,thedoctorisunabletoavoidsomedegreeofemotionalinvolvementwiththesickindividualwhohascometohimf
最新回复
(
0
)