阅读以下说明和C语言函数,填补空缺。[说明]已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)分别表示year是(或不是)闰年。[C语

题目

阅读以下说明和C语言函数,填补空缺。

[说明]

已知1900年1月1日是星期一,下面的函数count_5_13(int year)用于计算给定的年份year中有几个“黑色星期五”。“黑色星期五”指既是13日又是星期五的日期。

函数count_5_13(int year)首先算出年份year的1月13日是星期几,然后依次计算每个月的13日是星期几,若是星期五,则计数。

程序中使用了函数isLeapYear(int year),其功能是判断给定年份是否为闰年,返回值为1(或0)分别表示year是(或不是)闰年。

[C语言函数]

int Count_5_13(int year)

{

int date; /*date为0表示星期日,为1~6分别表示星期一至星期六*/

long days=0; /*days记录天数*/

int m, y, c=0; /*c用于表示黑色星期五的个数*/

if(year<1900) return-1;

/*计算从1900年1月1日起,至给定年份year的1月13日间隔的天数*/

days=12;

for(y=1900; y<year; y++) {

days +=365;

if (iSLeapYear(Y)) ________ ;

}

date=((days%7)+1)%7;

/*算出给定年份year的1月13日是星期几+/

c=( ________ )?1:0;

for(m=1; ________ ; m++) {

switch(m) {

case 1: case 3: case 5: case 7: case 8: case 10: case 12:

days=31; break;

case 4: case 6: case 9: case 11:

days=30; break;

case 2: days=28;

if( ________ )days=29;

break;

}/*end of switch*/

date=((days%7)+ ________ )%7;

if (date==5) c++;

} /*end of for*/

return c;

}


相似考题
更多“阅读以下说明和C语言函数,填补空缺。[说明] 已知1900年1月1日是星期一,下面的函数count_5_13(int ”相关问题
  • 第1题:

    下列各函数的说明中,( )是表示纯虚函数。

    A.virtual int vf(int);

    B.void vf(int)=0;

    C.virtual void vf()=0;

    D.virtual void vf(int){}


    正确答案:C
    解析:本题考核纯虚函数的说明。纯虚函数说明的一般格式如下:virtual类型>函数名>(参数表>)=0;

  • 第2题:

    下列各函数的说明中,表示纯虚函数的是( )。

    A.virtual int fuc(int);

    B.void fuc(int)=0;

    C.virtual void fuc()=0;

    D.virtual void fuc(int){}


    正确答案:C
    解析:纯虚函数说明的一般格式为:virtual类型>函数名>(参数表>)=0;。

  • 第3题:

    C语言规定,除函数类型为int型或被调函数的定义出现在主调函数之前时可()外,其他情况均要求对被调函数进行说明。


    省略函数说明

  • 第4题:

    已知一函数的形参说明为intarr[5][6],则与此等效的形参说明为( )。

    A.intarr[][]

    B.int[5][]

    C.int*a[6]

    D.int(*a)[6]


    正确答案:D
    D。【解析】二维数组可以看做是一维数组的扩展。选项D表示的是一个一维数组,里面每个元素是一个指针,而指针肯定指向某个地址,从而完成二维数组的扩展。考生要了解*和[]的运算优先级。

  • 第5题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    [说明1]

    函数int function(int a)的功能是判断指定的正整数是否为素数,若是,返回1,否则返回0。

    [C函数1]

    int function(int a)

    { int yes,i;

    i=2;yes=1;

    while(i<=a/2 && (1) ){

    if( (2) ) yes=0;

    i++;

    }

    return yes;

    }

    [说明2]

    函数int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。

    [C函数2]

    int deleteARR(int*arr,int n)

    { int k,j;

    k=0;j=1;

    while(j<n){

    if( (3) )

    (4)=arr[j];

    j++;

    }

    return (5);

    }


    正确答案:(1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k
    (1) yes或yes==1或yes !=0 (2) a/i[*]i==a或a%i==0或!(a%i) (3) arr[k]!=arr[j] (4) arr[++k] (5) k+1或++k 解析:对于函数1,增加了一个判断的标志yes,开始进入素数判别循环时置yes=1,则(1)应填“yes”或“yes==1”或“yes !=0”;一旦数n能被某个不等于零的真因子整除,退出循环,则(2)应填“a/i[*]i==a”或“a%i==0”或“!(a%i)”。
    对于函数2,用k记录数组arr[]中不同元素的个数,同时设置工作指针j,将arr[j]与已得到的互不相同元素的最后一个元素进行比较,若不相等,则将其作为已比较的互不相同元素的最后一个元素,所以(3)填“arr[k]!=art[j]”,(4)填“arr[++k]”。最后返回互不相同的元素个数k+1,即(5)填“k+1”或“++k”。