niusouti.com

已知数据文件in.dat中存有300个四位数,并已调用读函数readDat把这些数存入数组a中,请编制一数jsValue,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main函数调用写函数writeDat把数组 b中的数输出到文件0ut.dat。

题目

已知数据文件in.dat中存有300个四位数,并已调用读函数readDat把这些数存入数组a中,请编制一数jsValue,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main函数调用写函数writeDat把数组 b中的数输出到文件0ut.dat。


相似考题
更多“ 已知数据文件in.dat中存有300个四位数,并已调用读函数readDat把这些数存入数组a中,请编制一数jsValue,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再”相关问题
  • 第1题:

    已知数据文件IN44.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数isValue(),其功能是:求出千位数上的数减百位数上数减十位数上的数减个位数上的数大于零的数的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT44.DAT文件中。

    例如:9123,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

    9812,9-8-1-2<0,则该数不满足条件,忽略。

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

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

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

    试题程序:

    include<stdio.h>

    int a[300],b[300],cnt=0;

    jsValue()

    {

    }

    main ()

    {

    iht i;

    readDat();

    jsValue();

    writeDat();

    for(i=0;i<cnt;i++)

    printf("b[%d]=%d\n",i,b[i]);

    }

    readDat()

    {

    FILE *fp;

    int i;

    fp=fopen("IN44.DAT","r");

    printf ( "cnt=%d\n", cnt);

    for (i=0;i<300; i++)

    fscanf (fp, "%d, ", &a [i] );

    fclose (fp);

    }

    writeDat ()

    {

    FILE *fp;

    int i;

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

    fprintf (fp, "%al\n", cnt);

    for (i=0; i<cnt;i++)

    fprintf(fp, "%d\n",b[i]);

    fclose (fp);

    }


    正确答案:jsValue ( ) { int i thou hun ten data j; for (i=O; i300; i++) { thou=a [i]/1000; /*求四位数的千位数字*/ hun=a [i]%1000/100; /*求四位数的百位数字*/ ten=a [i]%100/10; /*求四位数的十位数字*/ data=a [i] %10; /*求四位数的个位数字* / if (thou-hun-ten-data>O) /*如果千位数减百位数减十位数减个位数大于零*/ { b[cut] =a [i]; /*则把该数存入数组b中*/ cut++; /*统计满足条件的数的个数*/ } } for (i=O; icnt-1; i++) /*对数组b的4位数按从小到大的顺序进行排序*/ for (j=i+l; jcnt; j++) if (b[i]>b[j]) { data=b Ii]; b[i]-b[j]; b [j] =data; } }
    jsValue ( ) { int i, thou, hun, ten, data, j; for (i=O; i300; i++) { thou=a [i]/1000; /*求四位数的千位数字*/ hun=a [i]%1000/100; /*求四位数的百位数字*/ ten=a [i]%100/10; /*求四位数的十位数字*/ data=a [i] %10; /*求四位数的个位数字* / if (thou-hun-ten-data>O) /*如果千位数减百位数减十位数减个位数大于零*/ { b[cut] =a [i]; /*则把该数存入数组b中*/ cut++; /*统计满足条件的数的个数*/ } } for (i=O; icnt-1; i++) /*对数组b的4位数按从小到大的顺序进行排序*/ for (j=i+l; jcnt; j++) if (b[i]>b[j]) { data=b Ii]; b[i]-b[j]; b [j] =data; } } 解析:本题考查的知识点如下:
    (1)运算符“%”及“/”的使用。
    (2)循环结构及选择结构的使用。
    在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除)。将一个4位数整除1000则可得到其千位上的数字,除以1000取余再整除 100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位上的数字。然后按照题意要求将各位依次相减进行判断。最后的排序采用“选择排序法”。

  • 第2题:

    已知数据文件in.dat中存有300个四位数,并已调用读函数readDat0把这些数存入数组a中,请编制一函数jsValue,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及所有不满足此条件的四位数平均值pjz2。最后main函数调用写函数writeDat把结果cnt,pjz1, pjz2输出到out.dat文件。 例如:1239,9-1-2-3>0,则该数满足条件,参加计算平均值pjz1,且个数cnt=cnt+1。 8129,9-8-1-2<0,则该数不满足条件,参加计算平均值pjz2。


    正确答案:
    【审题关键句】个位-千位-百位-十位,结果大于零的数的个数,求满足此条件以及不满足此条件的四位数平均值ave1和ave2。
    【解题思路】
    ①首先定义一个循环变量i,以及分别用来存放四位数分解之后各位数的变量qw(千位)、bw(百位)、SW(十位)和gw(个位)。
    ②通过for循环依次对数组中的每个四位数进行分解,每分解一个四位数,则根据题目要求,判断其“个位一百位-十位-千位>0”的条件是否满足,当满足条件时,则将a[i]的值累加到变量pjz1中,同时计数变量cnt的值加1;如果不满足判断条件,则将四位数累加到变量pjz2中。当for循环结束之后,就能等到所有满足条件的四位数之和pjz1和个数,以及所有不满足条件的四位数之和pjz2。
    ③最后将变量pjz1的值除以变量cnt的值,得到所有满足条件的四位数的平均值并赋给变量pjz1,将变量pjz2的值除以300减去变量cnt的差,得到所有不满足条件的四位数的平均值并赋给变量pjz2。
    本题中,pjz1、pjz2和cnt三个变量在源程序中已经定义,在该子程序中就不需要再重新定义了。
    【参考答案】

  • 第3题:

    已知数据文件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);
    }

  • 第4题:

    已知数据文件IN57.DAT中存有300个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函幼sValue(),其功能是:求出个位数上的数减千位数上数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的4位数依次存入数组b中,然后对数组b的4位数按从大到小的顺序进行排序,最后调用函数writeDat()把数组b中的数输出到OUT57.DAT文件中。

    例如:1239,9-1-2-3>0,则该数满足条件,存入数组b中,且个数cnt=cnt+1。

    8129,9-8-1-2<0,则该数不满足条件,忽略。

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

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

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

    试题程序:

    include

    int a[300],b[300],cnt=0;

    jsValue()

    {

    }

    main()

    {

    int i;

    readDat();

    jsValue();

    writeDat();

    printf("cnt=%d\n",cnt);

    for(i=0;i<cnt;i++)

    printf("b[%d];%d\n",i,b[i]);

    {

    readDat()

    {

    FILE *fp;

    int i;

    fp=fopen("IN57.DAT","r");

    for(i=0;i<300;i++)

    fscanf(fp,"%d,",&a[i]);

    fclose(fp);

    }

    writeDat()

    {

    FILE *fp;

    int i;

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

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

    for(i=0;i<cnt;i++)

    fprintf(fp, "%d\n",b[i]);

    fclOse(fp);

    }


    正确答案:jsValue() { int ithouhuntendataj; for(i=0;i300;i++) { thou=a[i]/1000; /*求四位数的千位数字*/ hun=a[i]%1000/100; /*求四位数的百位数字*/ ten=a[i]%100/10; /*求四位数的十位数字*/ data=a[i]%10/ /*求四位数的个位数字*/ if(data-hun-ten-thou>O) /*如果个位数减千位数减百位数减十位数大于零*/ { b[cnt]=a[i]); /*则将满足条件的数存入数组b中*/ cnt++ /*统计满足条件的数的个数*/ } } for(i=0;icnt-1;i++) /*对数组b的4位数按从大到小的顺序进行排序*/ for(j=i+l;jcnt;i++) if(b[i]b[i]) { data=b[i]; b[i]=b[i]; b[j]=data; } }
    jsValue() { int i,thou,hun,ten,data,j; for(i=0;i300;i++) { thou=a[i]/1000; /*求四位数的千位数字*/ hun=a[i]%1000/100; /*求四位数的百位数字*/ ten=a[i]%100/10; /*求四位数的十位数字*/ data=a[i]%10/ /*求四位数的个位数字*/ if(data-hun-ten-thou>O) /*如果个位数减千位数减百位数减十位数大于零*/ { b[cnt]=a[i]); /*则将满足条件的数存入数组b中*/ cnt++ /*统计满足条件的数的个数*/ } } for(i=0;icnt-1;i++) /*对数组b的4位数按从大到小的顺序进行排序*/ for(j=i+l;jcnt;i++) if(b[i]b[i]) { data=b[i]; b[i]=b[i]; b[j]=data; } } 解析:本题考查的知识点如下:
    (1)运算:符“%”及“/”的使用。
    (2)循环结构及选择结构的使用。
    在本题中,首先要将一个4位数的千位、百位、十位、个位拆成独立的数字。这里借助特殊运算符号“%”(取余)和“/”(整除)。将一个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位上的数字。然后按照题意要求将各位依次相减进行判断。将符合条件的数存入数组b中,最后的排序采用“选择排序法”。

  • 第5题:

    已知数据文件in.dat中存有300个四位数,并已调用读函数rcadDat把这些数存入数组a中,请编制一函数jsvalue,其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后main函数调用写函数writeDat把数组b中的数输出到文件out.dat中。


    正确答案:
    【审题关键句】千位+百位等于十位+个位的数的个数,把所有满足此条件的四位数依次存入数组,然后对数组按从大到小的顺序进行排序。
    【解题思路】
    本题类似第9套试题,通过审题可以发现有两个不同点:①要求统计的四位数的条件是“千位+百位=十位+个位”,参考答案的第8条语句修改if语句的判断条件即可。②将统计结果按从大到小的顺序排序,参考答案的第13条语句,修改两数组元素的大小比较符即可。另外,对于数据交换的整型变量tmp可以自定义其变量名。
    【参考答案】