一起答
主观

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

  【说明】

 在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:

 int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};

 可用以下数组a来表示:

 int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};

 其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。

 下面的流程图描述了稀疏矩阵转换的过程。

 【流程图】

试题出自试卷《软件水平考试(初级)程序员下午(应用技术)模拟试卷27》
参考答案
查看试卷详情
相关试题
  1. 阅读以下说明和Java代码,将应填入(n)处的语句写在对应栏内。

     【说明】

     进行两个整数之间的比较,由考生通过输入窗口分别输入两个整数,程序比较出结果。例如:先后输入的两个数分别为25和36。

     比较结果显示:

     25!=36

     25<36

     25<=36

     【Java代码】

       import javax.swing.JOptionPane;

     public class Java3

     {

       public static void main(String args[])

       {

         String (1)       // 用户输入第1个字符串

           secondNumber,    // 用户输入第2个字符串

           result;      // 包含输出

         int number1,     // 比较的第1个数

           number2;     // 比较的第2个数

         // 用户输入的第1个字符串

         firstNumber =

           JOptionPane. (2) ("Enter first integer:");

         //读用户输入的第2个字符串

         secondNumber =

           JOptionPane.showlnputDialog("Enter second integer:");

         将字符串类型转换成整数类型

         number1= Integer. (3) (firstNumber);

         number2= Integer.parselnt(secondNumber);

         result= "":

         if ((4))

           result=number1+"=="+number2;

         if (number1 != number2)

           result=number1+"!="+number2;

         if (number1<number2)

           result=result+"\n"+number1+"<"+ number2;

         if (number1>number2)

           result=result+"\n"+number1+">"+number2;

         if (number1<=number2)

           result=result+"\n"+number1+"<="+number2;

         if (numbed>=number2)

           result=result+"\n"+number1+">="+number2;

         //显示结果

         JOptionPane.(5).(

             null, result, "Comparison Results",

             JOptionPane. INFORMATION_MESSAGE);

         //程序正常退出

         System.exit(0);

       }

     }

  2. 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。

      【说明】

     字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字 符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edlt_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。

     【程序】

     #include <iostream.h>

     #include <stdio.h>

     #include <string.h>

     class string

     {

       int length;

       char *data;

     public:

       int get_length() {return length;}

       char *get_data() {return data;}

       ~string() {delete data;}

       int set data(int in_length, char *in_data);

       int set_data(char *data);

       void print() {cout<<data<<endl;}

     };

     class edit_string: public string

     {

       int cursor;

     public:

       int get_cursor() {return cursor;}

       void move_cursor(int dis) {cursor=dis;}

       int add_data(string *new_data);

       void delete_data(int num);

     };

     int string::set_data(int in_length,char *in_data)

     {

       length=in_length;

       if(!data)

         delete data;

        (1) 

       strcpy(data,in_data);

       return length;

     }

     int string::set data(char *in_data)

     {

        (2) 

       if(!data)

          delete data;

        (1) 

       strcpy(data,in_data);

       return length;

     }

     int edit_string::add_data(string *new_data)

     {

       int n,k,m;

       char *cp,*pt;

       n=new_data->get_length();

       pt=new_data->get_data();

       cp=this->get_data();

       m=this->get_length();

       char *news=new char[n+m+1];

       for(int i=0; i<cursor; i++)

          news[i]=cp[i];

       k=i;

       for(int j=0; j<n; i++,j++)

          news[i]=pt[j];

       cursor=i;

       for(j=k; j<m; j++,i++)

          (3) 

       news[i]='\0';

        (4) 

       delete news;

       return cursor;

     }

     void edit string::delete_data( int num)

     {

       int m;

       char *cp;

       cp=this->get_data();

       m=this->get_length();

       for(int i=cursor; i<m; i++)

          (5)

      cp[i]='\0';

     }

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

      【说明】

     计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:

     5

     4 1

     3 2

     3 1 1

     2 2 1

     2 1 1 1

     1 1 1 1 1

     共有7种划分。这种划分的程序如下所示。

     【程序】

     #include <stdio.h>

     int n[1000],m,k;

     void output sum()

     {

       int j;

       for(j=0;n[j]!=0;j++)

         printf("%d\t",n[j]);

        printf("\n");

    }

    void sum(int i)

        if(m-n[i]<n[i])

        { m=m-n[i];

           (1) 

           i++;

            n[i+1]=0;

        }

        else

        {

            (2) 

           m-=n[i];

           i++;

        }

        if(m!=n[i])

           sum(i);

        else

           output_sum();

        if(n[i]>1)

        {

           n[i]--;

           (3) 

        }

        else

        {

          while((n[i]==1)&&(i>O))

         {

             i--;

              (4) 

         }

          if(i!=0)

         {

              (5) 

             sum(i);

         }

       }

     }        

     void main()

     {

       int i;

      scanf("%d",&n[0]);

          m=k=n[0];

      for(i=1;i<=k;i++)

          n[i]=0;

      while(n[0]!=1)

      {

          n[0]--;

          i=0;

          sum(0);

          m=k;

      }

    }

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

      【说明】

     设有3n+2个球互连,将自然数1~3n+2分别为这些球编号,使相连的两球编号之差的绝对值正好是数列1,2,…,3n+1中的各数,如下图所示:

     

     其中填自然数的思想如下;

     (1)先自左向右,第1列中间1个填数,然后第2列上、下2个填数,每次2列;但若n为偶数,最后1次只排第1列中间一个数。

     (2)自右向左,先右第1列中间填数;若n是奇数,再右第2列中间填数。然后依次右第1列上、下2个填数,再右第2列中间1个填数,直到左第2列为止。

     【程序】

     #include <stdio.h>

     #define size 10

     int a[3][size];

     void main()

     {

       int i,k,m,n;

       printf("imput the n:");

       scanf("%d",&n);

       k=1;

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

       {

         a[1][2*i]=k; k++;

         if((i==n/2)&& (1) ||(i<n/2))

         {

             a[0][2*i+1]=k;

             k++;

              (2) 

             k++;

         }

       }

       if(n%2==1)

       {

          (3) 

          k++;

          m=n;

       }

       else

          (4) 

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

       {

         a[1][m-2*i]=k; k++;

          (5) 

         k++;

         a[2][m-2*i-1]=k; k++;

       }

       a[1][1]=k;

       printf("\n");

         printf(" ");

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

          printf("%6d",a[0][i]);

       printf("\n\n");

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

            printf("%6d",a[1][i]);

       printf("\n\n");

       printf("  ");

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

          printf("%6d",a[2][i]);

       printf("\n");

     }

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

     【程序2.1说明】

     求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。

     【程序2.1】

      void main()

     {

       int i, j,n,s;

       for(i=100;i<=999;i++)

       {

           n=i;

           j=n/11;

           s=0;

           while((1))

           {

              (2) 

               n/=10;

           }

           if((3))

               printf("%d\t",i);

       }

     }

     【程序2.2说明】

     本程序输入一字符串,将其中的大写字母改变成小写字母。

     【程序2.2】

     void main()

     {

       int i=0;

       char s[120];

       scanf("%s",s);

       while((4))

       {

         if((5))

            s[i]=s[i]- 'A'+'a';

         i++;

       }

       printf("%s\n",s);

     }

  6. 阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

      【说明】

     在一个矩阵中,如果其零元素的个数远远多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。稀疏矩阵通常采用三元组数组表示。每个非零元素用一个三元组来表示,即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如,对于以下二维数组:

     int x[3][4]={{1,0,0,0},{0,5,0,0),{0,0,7,2}};

     可用以下数组a来表示:

     int a[][3]={{3,4,4},{0,0,1},{1,1,5),{2,2,7},{2,3,2}};

     其中三元数组a的第1行元素的值分别存储稀疏矩阵×的行数、列数和非零元素的个数。

     下面的流程图描述了稀疏矩阵转换的过程。

     【流程图】