下列程序的功能是:计算出启然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT51.DAT中。其中的S,I,X,N,I,N,E各代表一个十进制数。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序:includeint cnt,sum;void CountVa

题目

下列程序的功能是:计算出启然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件OUT51.DAT中。其中的S,I,X,N,I,N,E各代表一个十进制数。

注意:部分源程序已给出。

请勿改动主函数main()和写函数writeDAT()的内容。

试题程序:

include

int cnt,sum;

void CountValue()

{

}

Void main()

{

Cnt=Sum=0;

COUNtValUe();

printf("满足条件的个数=%\n",cnt):

printf("满足条件的所有的SIX与NINE的和=%d\n",sum);

}

WriteDAT();

{

FILE *fp;

fp=fopen("OUT51.DAT", "w");

fprintf(fp,"%d\n%d\n",cnt,sum);

fclose(fp);

}


相似考题
更多“下列程序的功能是:计算出启然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt,以及 ”相关问题
  • 第1题:

    已知数据文件in.dat中存有300个四位数,并已调用读函数readDat把这些数存入数组a中,请编制一函数jsValue,其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后maini函数调用写函数writeDat把数组b中的数输出到0ut.dat文件中。 例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+1。 9812是非素数,则该数不满足条件忽略。 注意:部分源程序存在test.C文件中。 程序中已定义数组:a[300],b[300],已定义变量:cnt


    正确答案:
    【审题关键句】求素数的个数,存入数组,按从小到大的顺序排序。
    【解题思路】
    ①首先定义两个循环变量循环i、j和一个用于数据交换的整型变量tmp。
    ②通过for循环依次读取数组中的300个数,其中,循环变量i从0开始每次加1,直到i<300停止循环;在每次循环中判断a[i]是否是素数,如果是素数,则把a[i]的值赋给数组b[cnt],同时数组下标变量cnt值加1。
    ③在退出循环后,用两个for循环对数组b[]中元素进行两两比较,实现数组元素从小到大的排序,比较过程中通过整型变量tmp实现两个数的交换。
    【参考答案】

  • 第2题:

    已知数据文件in33.dat中存有300个4位数,并已调用函数readDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于0的个数cnt,再求出所有满足此条件的4位数平均值pjz1,以及所有不满足此条件的4位数平均值pjz2,最后调用函数writeDat()把结果cnt,pjz1,pjz2输出到out33.dat文件。

    例如:1239,9-1-2-3>0,则该数满足条件,计算平均值pjz1,且个数cnt=cnt+1。

    8129,9-8-1-2<0,则该数不满足条件,计算平均值pjz2。

    注意:部分源程序已给出。

    程序中已定义数组:a[300],b[300],已定义变量:cnt,pjz1,pjz2。

    请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。


    答案:
    #include
    int a[300], cnt=0;
    double pjz1=0.0,pjz2=0.0;
    void readDat();
    void writeDat();
    void jsValue()
    {
    int i,thou,hun,ten,data,n=0;
    for(i=0;i<300;i++)
    {
    thou=a[i]/1000; /*求四位数的千位数字*/
    hun=a[i]00/100; /*求四位数的百位数字*/
    ten=a[i]0/10; /*求四位数的十位数字*/
    data=a[i]; /*求四位数的个位数字*/
    if(data-thou-hun-ten>0) /*如果个位数减千位数减百位数减十位数大于0*/
    {
    cnt++; /*统计满足条件的数的个数*/
    pjz1+=a[i]; /*将满足条件的数求和*/
    }
    else
    {
    n++; /*否则统计不满足条件的数的个数*/
    pjz2+=a[i]; /*将不满足条件的数求和*/
    }
    }
    pjz1/=cnt; /*求满足条件的数的平均值*/
    pjz2/=n; /*求不满足条件的数的平均值*/
    }
    void main()
    {
    readDat();
    jsValue();
    writeDat();
    printf("cnt=%d\n满足条件的平均值pjz1=%7.2lf\n不满足条件的平均值pjz2=%7.2lf\n",cnt,pjz1,pjz2);
    }
    void readDat()
    {
    FILE *fp;
    int i;
    fp=fopen( "in33.dat","r");
    for(i=0;i<300;i++)
    fscanf(fp,"%d,",&a[i]);
    fclose(fp);
    }
    void writeDat()
    {
    FILE *fp;
    fp=fopen("out33.dat","w");
    fprintf(fp,"%d\n%7.2lf\n%7.2lf\n",cnt ,pjz1,pjz2);
    fclose(fp);
    }

  • 第3题:

    试题1

    下列程序的功能是:找出所有100以内(含100)满足i,i+4,i+10都是素数的整数i(i+10也在100以内)的个数cnt以及这些i之和sum。请编写函数countvalue()实现程序要求,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。

    注意:部分源程序已给出。

    请勿改动主函数main()和函数writeDAT()的内容。

    试题程序:

    #include <stdio.h>

    int cnt, sum;

    int isPrime(int number)

    {

    int i, tag = 1;

    for (i=2; tag && i<=number/2; i++)

    if (number%i == 0)

    tag = 0;

    return tag;

    }

    void countValue()

    {

    }

    void writeDat()

    {

    FILE *fp;

    fp = fopen("out.dat", "w");

    fprintf(fp, "%d\n%d\n", cnt, sum);

    fclose(fp);

    }

    void main()

    {

    cnt = sum = 0;

    countValue();

    printf("满足条件的整数的个数=%d\n", cnt);

    printf("满足条件的整数的和值=%d\n", sum);

    writeDat();


    正确答案:

    试题1答案:
    void countvalue()
    {
    int i;
    for(i=2;i<=90;i++)
    if(isPrime(i) && isPrime(i+4) && isPrime(i+10))
    {
    cnt++;
    sum+=i;
    }
    } }
    试题1分析:
    该程序属于按条件查找数字的题目,考核的知识点为:(1)素数的判定;(2)统计个数并求和。
    本题的解题思路是:题目要求的筛选范围是“所有100以内(含100)满足i、i+4、i+10都是素数的整数i(i+10也在100以内)”,由于最小的素数是2,且i+10要在100以内(含100),所以筛选的范围是2~90。
    题目要求的筛选条件是“满足i、i+4、i+10都是素数的整数i”。在答题之前,应先通读题目已给出的源程序,在我们要实现的函数countvalue()之前给出一个在题目中从未提及的函数isPrime()。仔细分析这个函数的代码不难发现,它实现了从2~number/2内寻找能整除number的数,如果找到就使变量tag为0,此时循环条件将不成了,最终返回0,如果找不到,变量tag为1,返回1.这段代码实现的是判断一个数是够是素数。所以在函数中对筛选条件可以简化为if(isPrime(i) && isPrime(i+4) && isPrime(i+10))。
    程序的流程是:调用countvalue()函数对数据进行处理,最后由writeDAT()函数将结果写入文件out.dat中。
    在countvalue()函数中,For循环的功能是判断i、i+4、i+10是否都为素数,若在素数则将i累加到sum中,同时个数cnt加1,函数结束。

     

  • 第4题:

    程序test.c的功能是:计算100以内满足以下条件的所有整数i的个数cnt以及这些i之和sum。条件:i,i+4,i+10都是素数,同时i+10小于100。请考生编写函数countvalue实现程序要求,最后调用函数wfiteDAT把结果cnt和sum输出到文件out.dat中。(数值l不是素数)


    正确答案:
    【审题关键句】100以内(含l00)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。
    【解题思路】
    ①首先定义循环变量i,然后将i的值赋初值为3,每循环一次则将i的值加1,直到i<90。
    ②在for循环中,每执行一次循环则调用函数isPrime(该函数具体的算法已经在源程序中给出,直接用即可),对i、 i+4、i+10是否同时是素数进行判断,如果这三个数同时为素数,则计数变量cnt值加1,同将时将变量i的值累加到sum上。
    【参考答案】

  • 第5题:

    下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数 cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数 writeDAT()把结果cnt和sam输出到文件OUT51.DAT中。其中的S,L X,N,I,N,E各代表一个十进制数。

    注意:部分源程序已给出。

    请勿改动主函数main()和写函数writeDAT()的内容。

    试题程序:

    include<stdio. h>

    int cnt, sum;

    void countValue()

    {

    }

    void main ()

    {

    cnt=sum=O;

    countValue ();

    printf ("满足条件的个数=%d\n", cnt);

    printf ("满足条件所有的SIX与NINE的和=%d\n", sum);

    writeDAT ();

    }

    writeDAT ( )

    {

    FILE *fp;

    fp=fopen("OUT51.DAT", "w");

    fprintf (fp, "%d\n%d\n", cnt, sum);

    fclose (fp);

    }


    正确答案:void countValue() { int i=100; while (1) { if(3*i%2==0 && 3'i/2>=1000 && 3'i/2=9999) /*如果满足条件SIX+SIX+SIX=NINE+NINE*/ { /*即一个3位数乘3再除2余数为0且所得的数为4位数*/ cnt++; /*统计满足条件的数的个数*/ sum+=i+3*i/2; /*求满足上条件的所有SIX与NINE的和*/ i++; } else i++; /*如果果不满足条件则取下一个数*/ if(i>999 II 3'i/2>9999) break; /*当SIXP不为3位数或所得的数不为四位数时退出循环*/ } } }
    void countValue() { int i=100; while (1) { if(3*i%2==0 && 3'i/2>=1000 && 3'i/2=9999) /*如果满足条件SIX+SIX+SIX=NINE+NINE*/ { /*即一个3位数乘3再除2余数为0,且所得的数为4位数*/ cnt++; /*统计满足条件的数的个数*/ sum+=i+3*i/2; /*求满足上条件的所有SIX与NINE的和*/ i++; } else i++; /*如果果不满足条件,则取下一个数*/ if(i>999 II 3'i/2>9999) break; /*当SIXP不为3位数或所得的数不为四位数时,退出循环*/ } } } 解析:本题二查的知识点如下:
    (1)循环与判断的嵌套使用。
    (2)多条件的布尔运算。
    (3)“%”与“/”运算符的使用。
    根据题意,求的是满足3位数乘以3等于4位数乘以2的数的个数。我们可以使用循环结构对所有的3位数进行判断,若某个3位数乘以3整除2所得的数是4位整数,则这个3位数是满足条件的数。当判断的数不再是3位数或者进行处理后所得的数大于9999,则要退出循环。在这里,还要注意判断结构中,各条件之间是用“与”运算还是用“或”运算。