首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 软件设计师 > 正文

软考软件设计师课后练习题:第三章习题及解答

来源:考试吧Exam8.com) 2006-12-11 8:09:35 考试吧:中国教育培训第一门户 模拟考场

 

    3.2  填充题
  1.结构化程序设计规定的三种基本结构是________结构,选择结构和_______结构。
    【解】结构化程序设计的三种基本控制结构是顺序结构、选择结构和循环结构。
         2.若有定义“int a=25,b=14, c=19;”,以下语句的执行结果是______。
         if a++<=25&&b--<=2&&c++)
        prinif("***a=%d,b=%d,c=%d\n", a,b,c);
        else printf(”###a=%d,b=%d,c=%d\n”, a, b,c);
    【解】问题所给的if语句中,条件a++<=25&&b--<=2&&c++是先求逻辑与的第一个运算分量,它是一个关系式,关系成立。接着判定第二个逻辑与运算分量,又是一个关系式,由于变量b的值是14,b不小于等于2,运算分量的关系式不成立,导致if语句的条件为假,执行else部分。在求且语句的条件时,计算了2个逻辑与分量,使变量a的值增了1,变量 b的值被减了1。所以输出内容是:###a=26,b=13,c=19。
     3.以下两条if语句可合并成一条if语句为_____________。
     if(a<=b) x=1;
     else y=2;
    if(a>b)printf("****y=%d\n" ,y);
     else printf( "####x=%d\n" ,x);
    【解】在以上两条if语句中,两个条件刚巧相反。若将前一个if语句的第一个成分语句与第二个if语句的第二个成分语句合并;第一个if语句的第二个成分语句与第二个if语句的第一个成分语句合并,写成一条if语句如下:
     if(a<=b){x=1;printf("####x=%d\d,x);}
    else{ y=2; printf("****y=%d\n",y);} 
        4.设 i,j,k均为 int型变量,则执行完下面的for语句后,k的值为_______。
    for(i=0,j=10;i<=j;i++,j--)k=i+j;
    【解】该 for语句以i为0、j为10初始化,循环条件是 i<=j,每次循环后 i增 1、j减 1,循环体是将 i与j的和赋给 k。这样变量 k将保存的是最后一次赋给它的值。一次循环后 i为 l。j为 9,二次循环后 i为 2.j为 8,……,五次循环后 i为 5.j为 5,继续第六次循环,将 i与 j的和10存于 k后,i为 6、j为 4,结束循环。所以循环执行后 k为10。
        5.下列程序的功能是输入一个整数,判断是不是素数,若为素数输出1,否则输出0,请为程序填空。
    main()
   {int i,X,y=1;
   scanf(”%d”,&x);
   for(i=2;i<=x/2;i++)
    if________________ { y=0; break; }
    printf(”%d\n”,y);
    }
    【解】为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用循环,用2至x/2的整数i测试对X的整除性,若能被其中的某个整数整除,则X是合数,置y的值为0(不是素数),结束测试循环。若都不能整除,则X为素数。i能否整除X,可用求余运算X%i等于0来判定。所以程序中的空框可填 X% i==0。测试 X为素数的代码可写成:
     y=l;
    for( i=2; i<=x/2; i++)
    if(x%i==0){ y=0; bleak; }
 
    3.3   程序分析题
 
   1.阅读程序,写出运行结果。
     main()
    { int a=10, b=4,C=3; 
        if(a<b)a=b; 
        if(a<C) a=C; 
        printf("%d,%d,%d\n", a,b,c);
        }
    【解】程序中,第一个if语句if(a         2.阅读下列程序,写出程序的输出结果。
     main()
     { int x=100, a=10, b=20, Ok1=5,Ok2=0;
     if(a<b)if(b!=15)if(!Ok1) x=1;
      else if(ok2) x=10;
     else x=-l;
      printf("%d\n",x);
      } 
      【解】程序预置变量x的值为100,a的值为10,b的值为20,ok1为5,Ok2为0。程序中给出的if语句可以写成更结构化的形式如下:
     if(a<b) {
     if(b!=15){
     if(!Ok1) x=1;
     else{
     if(Ok2) x=10;
     else x=-l;
   }
      }
      }
由于条件a<b成立,并且条件b!=15也成立,而ok1不等于0,执行else后的语句。又因ok2等于0,执行else后的语句赋-1给x。所以程序输出一l。
        3.阅读下列程序,写出程序的输出结果。
    main() 
        {  int y=9;
         for(; y>0; y--) 
         if(y%3==0){ printf(”%d”,--y);continue;}
      }
    【解】循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减至变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852。
 
   3.4   程序设计题
 
  1.编一个程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C):C= 5( F-32)/9
     【解】利用公式:C=5(F-32)/9,输入F氏温度,计算并输出对应的C氏温度,程序要引入两个变量,分别用于存储F氏温度和C氏温度,计算时应采用浮点型,包括公式中的常数也应写成浮点数,不能采用整型和把常数写成整数。因采用整型编写,公式中的除运算变成整除,会得出与实际要求不一致的结果。程序如下:
   #include 
      main()
      {  float f,c;/*变量定义*/
         printf(”输入F氏温度”);
        scanf(”%f,&f);
        c= 5.0*(f-32.0)/9.0;
        printf(”对应的C氏温度%6.2f\n”,c);
       }
        2.编一个程序,输入一个整数,输出其符号(若≥0,输出1;若<0输出-1)。
    【解】程序可用if语句判断输入数的符号,并控制输出1或-l。程序如下:
    # include 
         main()
        { int c;/*变量定义*/
          printf("输入一个整数");
          scanf(” %d”, &c);
         if(C>=0) printf("1\n");
         else printf("-l\n");
         }
       3.编一个程序,输入X的值,按下列公式计算并输出y的值。
       X(X≤l)
        y= {2x-l(l<x<10)
       3X-11(10≤X)
    【解】输入x,按公式计算y。这可用一个嵌套的if语句分段判断并计算出y的值。然后输出y值。程序如下:
     # include<stdio.h>
          main()
        { int x,y;/*变量定义*/
          printf(”输入一个整数”);
          scanf(”%d”,&x);
          if( x<=l) y=X;
          else if(x<10)y=2*x-l;
          else y=3*X-11; 
        printf(”y=%d\ n”, y);
        }
         4.编一个程序,输入三个单精度数,输出其中最小数。
    【解】设最小数存于变量min中,为求三个数中的最小数,可分以下多步完成,先预置min为x,然后分别将其余两个数逐一与min比较,当它们中的某个值比存于min中的值更小时,就用它们更新min。写出程序如下:
    # include
       main()
      { float X,y,Z,min;/*变量定义*/ 
        printf("输入三个单精度浮点数");
       scanf("%f%f%f", &x,&y,&Z);
       min =x;
       if(min>y) min= y;
       if(min>Z) min=Z;
       printf("浮点数%f,%f,%f中的最小值是%f\n",X,y,Z,min);
     }
       5.编一个程序,求出所有各位数字的立方和等于1099的3位数。
    【解】找出所有各位数字的立方和等于1l99的3位整数。 3位整数是100至999范围内的整数,设分别用a,b,c存储3位数的百位、十位和个位的数字,程序用三重循环求出a,b,c的立方和为1099的3位数a*100+b*10+c。程序如下:
    # include 
       main()
      { int a,b, c;/*变量定义*/ 
       for(a=1; a<=9;a++)
       for(b=0; b<=9; b++) 
       for(c=0;c<=9;c++) 
       if(a*a*a+b*b*b+c*c*c==1099)
        printf("%d\n",(10*a+b)*10+c);
      }
若用一个变量i表示3位数,循环体将3位数变量i分拆出它的百位、十位和个位共3个数字,然后判这三个数字的立方和是否是1099,若是就输出该变量的值。程序如下:
     # include 
          main()
         { int i,a,b, c;/*变量定义*/
            for (i=100;i<=999;i++) { 
           a=i/100;
           b=(i0)/10; /*或b=(i/10)%l0*/ 
           c=i;
           if(a*a*a+b*b*b+c*c*c==1099)
           printf("%d\n", i);
         }
         }

上一页  1 2 3 4 5 下一页
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。