niusouti.com

请补充函数fun(),该函数的功能是把数组bb中的数按从小到大的排列(数组的值及元素个数从土函数中输入)。例如,输入2 3 5 4 1,结果为1 2 3 4 5。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()吧的横线上填入所编写的若干表达式或语句。试题程序:include<stdio. h>define N 100void fun(int bb[], int n){int i,j,t;for (i=0;【 】;i++)for(j=0;【 】;j++)if(bb[

题目

请补充函数fun(),该函数的功能是把数组bb中的数按从小到大的排列(数组的值及元素个数从土函数中输入)。

例如,输入2 3 5 4 1,结果为1 2 3 4 5。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()吧的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio. h>

define N 100

void fun(int bb[], int n)

{

int i,j,t;

for (i=0;【 】;i++)

for(j=0;【 】;j++)

if(bb[j]>bb[j+1] )

{

t=bb[j];

bb [j]=bb [j+1];

bb[j+1]=t;

}

}

main()

{

int i=0, n=0;

int bb[N];

clrscr ();

printf("\nInput n: \n");

scanf ("%d", &n);

printf ("\nInput data: \n");

while (i<n)

{

printf ("bb [%d] =", i);

scanf ("%d", &bb [i]);

i++;

}

fun (bb, n);

printf("\n*** the result ***\n");

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

printf ( "%4d'', bb [i]);

}


相似考题
更多“请补充函数fun(),该函数的功能是把数组bb中的数按从小到大的排列(数组的值及元素个数从土函数中 ”相关问题
  • 第1题:

    请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

    例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

    删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。

    注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是删去一维数组中所有相同的数,使之只剩一个。解题思路是,首先在函数中定义临时变量指向每一个元素,然后在循环过程中将临时值和其他元素进行比较,如果相同,那么跳过相同字符。

  • 第2题:

    已知IN2.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数 jsVal(),其功能是:依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数 writeDat() 把结果cnt及数组b中符合条件的4位数输出到 OUT2.DAT文件中。

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

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

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


    #include
    #define MAX 200
    int a[MAX], b[MAX], cnt = 0 ;
    void writeDat();
    void jsVal()
    {
    int i,j; /*定义循环控制变量*/
    int temp; /*定义数据交换是的暂存变量*/
    for(i=0;i
    if(a[i]%2!=0) /*如果当前数是奇数*/
    for(j=i+1;j<=i+5;j++) /*取该数后面的5个数进行比较*/
    {
    if(a[i]
    break; /*如果当前数不满足比后面5个数都大的条件,则跳出循环*/
    else if(j==i+5) /*如果当前数比后面的5个数都大*/
    {
    b[cnt]=a[i]; /*将满足条件的数存入数组b中*/
    cnt++; /*并统计满足条件的数的个数*/
    }
    }
    for(i=0;i
    for(j=i+1;j
    if(b[i]>b[j])
    {
    temp=b[i];
    b[i]=b[j];
    b[j]=temp;
    }
    }
    void readDat()
    {
    int i ;
    FILE *fp;
    fp = fopen("IN2.DAT", "r") ;
    for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
    fclose(fp) ;
    }
    void main()
    {
    int i ;
    readDat() ;
    jsVal() ;
    printf("满足条件的数=%d\n", cnt) ;
    for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
    printf("\n") ;
    writeDat() ;
    }
    void writeDat()
    {
    FILE *fp;
    int i ;
    fp = fopen("OUT2.DAT", "w") ;
    fprintf(fp, "%d\n", cnt) ;
    for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
    fclose(fp) ;
    }

  • 第3题:

    已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal(),其功能是:依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。

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

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

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


    答案:
    #include
    #define MAX 200
    int a[MAX],b[MAX],cnt=0;
    void writeDat();
    void jsVal()
    {
    int i,j; /*定义循环控制变量*/
    int temp; /*定义数据交换是的暂存变量*/
    for(i=5;i
    if(a[i]%2==0) /*如果当前数是偶数*/
    for(j=i-5;j<=i-1;j++) /*取该数前面的5个数进行比较*/
    {
    if(a[i]
    break; /*如果当前数不满足比前面5个数都大的条件,则跳出循环*/
    else if(j==i-1) /*如果当前数比前面的5个数都大*/
    {
    b[cnt]=a[i]; /*将满足条件的数存入数组b中*/
    cnt++; /*并统计满足条件的数的个数*/
    }
    }
    for(i=0;i
    for(j=i+1;j
    if(b[i]
    {
    temp=b[i];
    b[i]=b[j];
    b[j]=temp;
    }
    }
    void readDat()
    {
    int i;
    FILE *fp;
    fp=fopen("in37.dat","r");
    for(i=0;i
    fscanf(fp,"%d",&a[i]);
    fclose(fp);
    }
    void main()
    {
    int i;
    readDat();
    jsVal();
    printf("满足条件的数=%d\n",cnt);
    for(i=0;i
    printf("%d ",b[i]);
    printf("\n");
    writeDat();
    }
    void writeDat()
    {
    FILE *fp;
    int i;
    fp=fopen("out37.dat","w");
    fprintf(fp,"%d\n",cnt);
    for(i=0;i
    fprintf(fp,"%d\n",b[i]);
    fclose(fp);
    }

  • 第4题:

    请补充函数proc(),该函数的功能是把数组num中的数按从小到大的顺序排列(数组元素个数及值从主函数中输入)。

    例如,输入n=5,num[0]~num[4]依次为5 7 2 8 0,结果为0 2 5 7 8。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:

    【l】i<n【2】j%n-1
    【解析】由函数proc()可知,该程序选用的是冒泡法来进行排序,变量i为循环次数,因此,【1】处填“i<n”;变量J用来判断第j个元素和第j+1个元素顺序是否正确,因此,【2】处填“j<n-1”。

  • 第5题:

    在文件IN6.DAT中有200个正整数,且每个数均在1000至9999之间。函数readDat()的功能是读取这200个数存放到数组aa中。请编制函数jsSort(),该函数的功能是:要求按每个数的后3位的大小进行降序排列,将排序后的前10个数存入数组b中,如果数组b中出现后3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数writeDat()把结果bb输出到文件OUT6.DAT中。

    例如:处理前 9012 5099 6012 7025 8088

    处理后 5099 8088 7025 6012 9012

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

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


    #include
    #include
    #include
    int aa[200], bb[10] ;
    void readDat();
    void writeDat();
    void jsSort()
    {
    int i,j; /*定义循环控制变量*/
    int temp; /*定义数据交换时的暂存变量*/
    for(i=0;i<199;i++) /*用选择法对数组进行排序*/
    for(j=i+1;j<200;j++)
    {
    if(aa[i]%1000
    {
    temp=aa[i];
    aa[i]=aa[j];
    aa[j]=temp;
    }
    else if(aa[i]%1000==aa[j]%1000) /*如果后3位数相等*/
    if(aa[i]>aa[j]) /*则要按原4位数的值进行升序排序*/
    {
    temp=aa[i];
    aa[i]=aa[j];
    aa[j]=temp;
    }
    }
    for(i=0;i<10;i++) /*将排序后的前10个数存入数组b中*/
    bb[i]=aa[i];
    }
    void main()
    {
    readDat() ;
    jsSort() ;
    writeDat() ;
    }
    void readDat()
    {
    FILE *in ;
    int i ;
    in = fopen("IN6.DAT", "r") ;
    for(i = 0 ; i < 200 ; i++) fscanf(in, "%d,", &aa[i]);
    fclose(in) ;
    }
    void writeDat()
    {
    FILE *out ;
    int i ;
    out = fopen("OUT6.DAT", "w") ;
    system("CLS");
    for (i = 0 ; i < 10 ; i++)
    {
    printf("i=%d,%d\n", i + 1, bb[i]) ;
    fprintf(out, "%d\n", bb[i]) ;
    }
    fclose(out) ;
    }