题目详情
当前位置:首页 > 计算机考试 > 初级程序员
题目详情:
发布时间:2024-03-29 00:24:33

[填空题][说明]
函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。
该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。
规定两个相邻年份的同月同日之间的问隔为1年。例如,2007.5.30—2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29—2009.2.28的间隔为1年。
规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29—2007.2.28的间隔为1个月,同理,2007.1.30—2007.2.28、2007.1.31—2007.2.28的间隔都是1个月。
计算起止日期间隔不足一年的完整月份数时,分两种情况:
(1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31—2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。
(2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25—2009.3.31,先计算2008.7.25—2008.12.25的月份数为5,再算出2008.12.25—2009.3.25的月份数为3,因此2008.7.25—2009.3.31之间的完整月份数为8。
日期数据类型定义如下:
typedef struct
int year; int month; int day; /*日期的年号(4位)、月和日号*/
DATE;
程序中使用的函数cmp_date( )、isLeapYear( )和makevalid( )说明如表11-8所示。

更多"[说明] 函数count months(DATE start, DA"的相关试题:

[填空题][说明]
函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。
该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。
规定两个相邻年份的同月同日之间的问隔为1年。例如,2007.5.30—2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29—2009.2.28的间隔为1年。
规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29—2007.2.28的间隔为1个月,同理,2007.1.30—2007.2.28、2007.1.31—2007.2.28的间隔都是1个月。
计算起止日期间隔不足一年的完整月份数时,分两种情况:
(1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31—2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。
(2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25—2009.3.31,先计算2008.7.25—2008.12.25的月份数为5,再算出2008.12.25—2009.3.25的月份数为3,因此2008.7.25—2009.3.31之间的完整月份数为8。
日期数据类型定义如下:
typedef struct
int year; int month; int day; /*日期的年号(4位)、月和日号*/
DATE;
程序中使用的函数cmp_date( )、isLeapYear( )和makevalid( )说明如表11-8所示。

[填空题]
阅读以下说明和C语言函数,填补空缺。
[说明]
函数count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。
该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。
规定两个相邻年份的同月同日之间的问隔为1年。例如,2007.5.30—2008.5.30的间隔为1年。若相邻两年中前一年是闰年,并且日期是2月29日,则到下一年的2月28日为1年,即2008.2.29—2009.2.28的间隔为1年。
规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29—2007.2.28的间隔为1个月,同理,2007.1.30—2007.2.28、2007.1.31—2007.2.28的间隔都是1个月。
计算起止日期间隔不足一年的完整月份数时,分两种情况:
(1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31—2008.9.20,通过月号算出月份数为6。修正时,通过调用函数makevalid将2008.9.31改为2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。
(2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25—2009.3.31,先计算2008.7.25—2008.12.25的月份数为5,再算出2008.12.25—2009.3.25的月份数为3,因此2008.7.25—2009.3.31之间的完整月份数为8。
日期数据类型定义如下:
typedef struct {
int year; int month; int day; /*日期的年号(4位)、月和日号*/
}DATE;
程序中使用的函数cmp_date( )、isLeapYear( )和makevalid( )说明如表11-8所示。
[填空题]下面程序通过调用函数模板实现计算两个正整数的最大公约数,把main函数中的错误找出并改正过来。
#include<iostream.h>
template<class T>
T gcd(T x,T y)
while(x!=y)
if(x>y)x-=y;
else y-=x;

return x;

void main( )
int a;
double d;
cin>>a>>d:
cout<<gcd(a,d)<<endl;

[填空题]阅读以下说明和C函数,填补C函数中的空缺。
[说明]
函数numberOfwords(char message[])的功能是计算存储在message字符数组中的一段英文语句中的单词数目,输出每个单词(单词长度超过20时仅输出其前20个字母),并计算每个英文字母出现的次数(即频数),字母计数时不区分大小写。
假设英文语句中的单词合乎规范(此处不考虑单词的正确性),单词不缩写或省略,即不会出现类似don’t形式的词,单词之后都为空格或标点符号。
函数中判定单词的规则是:
(1)一个英文字母串是单词;
(2)一个数字串是单词;
(3)表示名词所有格的撇号(’)与对应的单词看作是一个单词。
除上述规则外,其他情况概不考虑。
例如,句子“The 1990’s witnessed many changes in people’s concepts of conservation”中有10个单词,输出如下:
The
1990’s
witnessed
many
changes
in
people’s
concepts
of
conservation
函数numberOfwords中用到的部分标淮库函数如下所述。
函数原型 说明
int islower(int ch); 若ch表示一个小写英文字母,则返回一个非0整数,否则返回0
int isupper(int ch): 若ch表示一个大写英文字母,则返回一个非0整数,否则返回0
int isalnum(int ch); 若ch表示一个英文字母或数字字符,则返回一个非0整数,否则返回0
int isabha(int ch); 若ch表示一个英文字母,则返回
[简答题]【说明】
请编写一个函数int SeqSearch(int list[],int start,int n,int key),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并将不同情况下的输出结果补充完整。
【程序】
文件search.cpp的内容如下:
#include <iostream. h >
int SeqSearch( int list[ ] ,int start,int n,int key)

for(int i=start;i<=n;i++) //(1)

if( list[i] = key)//(2)

return i;


return -1;

void main( )

int A[10]
int key,count=0,pos;
cout <<" Enter a list of 10 integers:";
for(pos=0;pos<10;pos++)

cin >>A; //(3)

cout <<" Enter a key; ";
cin >> key;
pos=0;
while(( pos = SeqSearch ( A, pos, 10, key)) !=-1 )

count ++;
pos ++;

cout<<key<<"occurs" <<count<< (count!=1" times":" time") <<" in the list,"
<< endl;

第一种情况:输入2 3 12 6 8 45 8 33 7输入key:8
输出: (4)
第二种情况:输入2 3 126
[填空题]请补充main 函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。 例如:当n=1,m=100时,sum=5050:当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在 main 函数的横线上填入所编写的若干表达式或语句。 试题程序: #include<stdio.h> #include<conio.h> main ( ) { int n, m; long sum; 【1】 clrscr ( ); printf ("/nInput n,m/n"); scanf ("%d, %d", &n, &m); while (n<=m) { 【2】 n++; } printf ("sum=% 【3】 /n", sum); }
[填空题]阅读以下函数说明和C语言函数,回答问题。
[说明]
函数Node *difference(A,B)用于求两个集合之差C=A-B,即当且仅当e是A中的一个元素,但不是B中的元素时,e是C中的元素。集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之间按递增排列。执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示其链表根据元素之值按递增排列。函数append( )用于在链表中添加节点。
[C函数]
typedef struct node
int element;
struct node *link;
Node;
Node *A,*B,*C;
Node *append(last,e)
Node *last;
int e;
last->link=(Node *)malloc(sizeof(Node));
last->link->element=e;
return(last->link);

Node *difference(A,B)
Node *A,*B;
Node *c,*last;
C=last=(Node *)malloc(sizeof(Node));
while( (1) )
if(A->element<B->element)
last=append(last,A->element);
A=A->link:

else if( (2) )
A:A->link;
B:B->link;

elSe
(3)
while( (4) )
last=append(last,A->element);
A=A->link:

(5) ;
last=c;
c=c->link;
free(last);
return(c);

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
  • 支付完成
  • 取消支付
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码