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

www.zige365.com 2008-11-11 17:24:53 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
 6.输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。
    【解】程序先输入字符率,然后顺序考察输入字符串中的字符,当发现是大写字母时,将它改写成对应的小写字母,而当它是小写字母时,就将它改写成对应的大写字母。若变量ch中的字符是大写字母,则与它对应的小写字母的表达式可以写成ch- ’A’+’a’ ;类似地,若变量ch中的字符是小写字母,则与它对应的大写字母的表达式可以写成ch-’a’+’A’ 。完整程序如下:
      # include 
      # define N 200
        main()
       { char s[N] ;
         int i;
        printf(" Enter string! \n");
        scanf ("%s" ,s);
       for(i=0; s[i]!=’\0’;i++)
       if(s[i] >=’A’&&s[i] <=’Z’ )
      s[i]=s[i] -’x’+’a’ ;
      else if(s[i] >=’a’&& s[i] <=’z’) 
      s[i]= s[i]-’a’ +’A’ ;
      printf("s=%s\n", s);
      }

    7.设某班50名学生的三科成绩表如下:
     课程一    课程二     课程三
          ...        ...        ...
    试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。
    【解】程序定义一个50行3列的二维数组,用于存储全班学生的成绩。程序顺序输入各个学生的三科成绩,然后按列的顺序,累计各科总分,并计算平均分。完整程序如下:
     # include
     # define N 50
     # define M 3
      main()
     {int score[N][M], i,j,t;
     double a[M];
     printf("Enter scores!\n");
     for(i=0;i< N; i++)
     for(j=0;j     scanf("%d",&t);score[i][j]=t;
      }
     for(j=0;j     for(j=0;j< M;j++){ 
     for(i=0;i< N; i++)
     a[j]+= score[i][j];
    a[j]/= N;
    }
     for(j=0;j      printf("课程%d的平均分是%.2f\n", j+1,a[j]);
     }

    8.编一个程序,输入一个整型数据,输出每位数字,其间用远号分隔。例如,输入整数为2345,则输出应为: 2, 3, 4, 5。
     【解】程序的主要工作是从输入整数分拆出它的十进制整数的各位数字,将分拆出来的各位数字存于数组中,然后将这些数字自高位到低位的顺序逐位输出。要将一个整数按十进制数的要求分拆,需用一个循环,每次循环求出被分拆数除以10的余数的办法来求出它的个位,每分拆出一位就将被分拆的数除以10。循环过程直至被分拆的数为0结束。完整程序如下:
      # include 
       main()
      {int a[20],i,base=10;
       int n;
       printf("Enter a number! \n");
       scanf("%d", &n);/*整数输入*/
        i=0;/*对n进行分拆,各位数字自低位到高位存于数组 a*/
       do{
      a[i++]=n% base;
      n/= base;
      } while(n) ;
    for(i--;i>=0;i--)/*自高位到低位输出*/
       printf("%d%c",a[i], i? ’,’ :’\n’);
         }

    9.编一个程序,输入一个字符串,将其中所有的大写英文字母的代码+3,小写英文字母的代码-3。然后输出加密后的字符串。
    【解】程序的主要工作是输入字符串,并顺序考察输入字符率中的字符,分别对其中大小写英文字母完成问题要求的更改,而跳过不是英文字母的字符。完整程序如下:
      # include 
      # define N 200
        main()
       {char s[N]; int i;
        printf("Enter string! \n");
        scanf("%s", s);
        for(i=0;s[i] !=’\0’; i++)
       if(s[i] >=’A’ && s[i]=’Z’)
       s[i]=3;
       else if(s[i]=’a’&& s[i]=’z’ ) 
       s[i]=3;
       printf("s=%s\n",s);
       }

    10.编一个程序,将按第9题中加密的字符率(从键盘输入)解密后输出。
    【解】本问题编写的程序是完成上一程序的逆操作。同样是顺序考察输入字符串,对满足要求的字符作恢复更改。要求是当字符减3后是大写英文字母时,则对其作减3处理的替换;当字符加3后是小写英文字母时,则对它作加3的处理。如此做法是有错误的,程序未考虑原
先不是英文字母,而未被加3或减3处理,但对它减3或加3后是英文字母时,将被下面的程序转换成英文字母。所以下面的程序不是完成上题程序的逆操作。但没有简单的办法能避免这个错误。完整程序如下:
      # include 
      # define N 200
      main()
     {char s[N]; int i;
       printf("Enter string!\n");
       scanf("%s",s);
       for(i=0;s[i] !=’\0’;i++)
       if(s[i]-3>=’A’&&s[i]-3<=’Z’)
       s[i]-=3;
       else if(s[i]+3>=’a’ && s[i]+3<= ’Z’)
       s[i]+=3;
        printf("s=%s\n",s);
        } 

本新闻共5页,当前在第5页  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