首页>计算机>软件水平考试>模拟试题>正文
软件设计师课后练习题:第四章习题解答

www.zige365.com 2008-11-11 17:24:53 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
6.以下程序可把输入的十进制数以十六进制数的形式输出,请填空。
       main(  )
     { char b[17]={"0123456789ABCDEF"};
       int c[64],d,i=0,base=16;
       long n;
       printf("Enter a number:\n");.
       scanf("%ld", &n):
      do  { c[i]=________;i++;n=n/base;}
      while(n!=0);
      printf("Transmite new base:\n");
      for(--i; i>= 0;--i)
     {d=c[i]; printf("%c",b);}
      printf("\n");
      【解】程序中,字符数组b存储十六进制的 16个数字符,整型数组C存储泽出的十六进制数的各位数值.从整数n译出它的各位十六进制数值,需采用除16取余的方法,即求n除16 的余.得到它的十六进制的个位数,接着将n除以16。在n不等于0的情况下循环,能顺序求出n的十六进制的个位数、十位数、百位数等等。程序中变量base已预置16,所以在第一个空框处可填代码nºse或n。当n的十六进制数的个位、十位、百位等数字依次存放于数组C中后,就从最高位至最低位,参照数组c[i]的内容d(以其内容为下标),取十六进制数字符表中的字符b[d]输出。所以在第二个空框处可填入代码[d]。
    4.3  程序分析题
    1.阅读程序,写出程序运行结果。,
      main()
   {  static int a[][3]={9,7,5,3,l,2,4,6,8};
      int i,j,sl=0,s2=0;
     for(i=0; i<3;i++)
     for(j=0;j<3;j++)
     { if(i==j) s1=s1+a[i][j];
     if(i+j== 2) s2=s2+a[i][j];
      }
     printf("%d\n%d\n", sl,s2);
    }
    【解】已知数组。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用数组元素的游标变量是i和j,外循环控制变量i是数组的行下桥,内循环控制变量j是数组的列下标。循环体的工作是将数组的某些元素累计到sl,某些元素累计到S2。将行下标i和列下标j相同的元素累计到sl,sl=a[0][0]+a[l][1]+a[2][2]。将行下标i与列下标j的和为 2的元素累计到 s2,s2=a[0][2]+a[l][l]+a[2][0]。所以sl是18,s2是10。程序输出:
    18
    10

    2.说明下列程序的功能。
   main()
   { int i,j;
    float a[3][3],b[3][3],x;
    for(i=0;i<3;i++) 
    for(j=0;j<3 ;j++)
    { scanf("%f",&x); a[i][j]= x;
   }
    for(i=0;i<3;i++)
    for(j=0;j<3;j++)
   b[j][i]=a[i][j];
   for(i=0;i<3;i++)
   {printf("\n");
    for(j=0;j<3;j++)
    printf("%f",b[i][j]);
    }
    printf("\n");
    }
      【解】程序第一段两重循环,实现按行顺序输入数组a的全部元素的值。程序第二段两重循环是将数组a转置复制到数组b。程序第三段两重循环实现按行输出数组b的全部元素。所以程序的功能是按行顺序输入3*3二维数组的全部元素,然后按列顺序输出。

    3.写出下列程序的运行结果。
    main()
    {static char a[]={’*’,’*’,’*’,’*’,’*’,’*’};
    int i,j,k;
    for( i=0;i<5;i++)
    { printf("\n")
    for(j= 0;j    for(j=0;j<5 ;j++)printf("%c",a[k]);
    }
    printf( "\n");
     }
   【解】程序的外循环控制循环五次,每次开始先输出一个换行符,共输出5行信息。对于i(自0开始计算)行,先输出i个空白符,接着输出字符数组a中的五个字符,由于a中的五个字符都是字符。,所以输出五个*字符。这样程序是输出以下形式的图案:
            * * * * *
            * * * * *
            * * * * *
            * * * * *
            * * * * *

    4.说明下列程序的功能。
      main()
     {  int i,j ;
       float a[3][3],b[3][3],c[3][3],x;
       for(i=0;i<3;i++)
      for(j=0;j<3;j++)
    { scanf("%f", &x); a[i][j]= x;
     }
     for(i=0;i<3;i++)
     for(j=0;j<3;j++)
     {scanf("%f",&x);b[i][j]=x;
     }
     for(i=0; i<3; i++)
    for(j=0;j<3;j++)
    c[i][j]=a[i][j]+ b[i][j] ;
    for(i=0; i<3;i++)
    { printf("\n");
    for(j=0;j<3;j++)
    printf("%f", c[i][j]);
    }
     printf("\n");
    }
    【解】程序第一段的功能是按行顺序输入数组a 的元素。程序第二段的功能是按行顺序输入数组b的元素。程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。最后,按行顺序输出数组C的全部元素。

本新闻共5页,当前在第3页  1  2  3  4  5  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
2009年咨询工程师考前练习-项目决策方法与实务1(08/1
2009年咨询工程师考前练习-项目决策方法与实务2(08/1
2009年咨询工程师考前练习-项目决策方法与实务3(08/1
2009年咨询工程师考前练习-项目决策分析与评价一-1(0
2009年咨询工程师考前练习-项目决策分析与评价一-2(0
2009年咨询工程师考前练习-项目决策分析与评价一-3(0