首页 > 编程资源分享区 > C/C++测试题 > 有人会做这些题吗?
2006
01-04

有人会做这些题吗?






(1)以“@”为字符,打印一个正三角形。
(2)编程,求一个N×N矩阵中,行下标与列下标之和为偶数的元素之和。
(3)求s=1-2+3-4+5……+N
(4)从键盘上任意输入一个字符串S,输出其中的字母字符。
(5)函数void dele(char *s)的功能是删除字符串s中的所有数字字符,并将字符串压缩。
(6)将字符串str中的数字字符放入d数组中,最后输出d中的字符串。
(7)函数int add(int a[N][N] , int b[N])的功能是将a数组中每行的最大元素放入b数组中,编写该函数实现之。


有人会做这些题吗?》有 12 条评论

  1. ningweidong 说:

    1.文本模式下不可能打印一个标准的正三角形,顶多打印一个近似的正三角形

     int row = 10;//边的长度,可以在程序中定义,也可以让用户输入
     int i = 0;
     int j = 0;
     
     for (i=0; i<row; i++)
     {
           for (j=(row – i -1); j>0; j–)
           {
                  cout<<’ ‘;
           }

           for (j=0; j<=i; j++)
           {
                  cout<<”@ “;
           }

          cout<<endl;
     }

  2. ningweidong 说:

    2.

     int matrix[3][3]={{1,2,3},{4,5,6},{7,8,9}};

     int i = 0;//行下标
     int j = 0;//列下标
     int sum = 0;//结果

     for (i=0; i<3; i++)
     {
          for (j=0; j<3; j++)
          {
               if ( (i+j)%2 == 0 )
               {
                     sum += matrix[i][j];
               }
          }
     }

     cout << sum << endl;

  3. ningweidong 说:

    3.递归

    int f(int x)
    {
         if (x == 1)
         {
               return 1;
         }
         else 
         {
               return ((int)pow(-1, x+1) * x) + f(x – 1) ;
         }
    }

  4. ningweidong 说:

    4.

    char * getalpha(char ch[])
    {
         char *rst = new char[strlen(ch)];
     
         int pos = 0;
         int i = 0;

         for (i=0; i < (int)strlen(ch); i++)
         {
              if ((ch[i]>65 && ch[i]<90) || (ch[i]>97 && ch[i]<122))
               {
                    rst[pos] = ch[i];
                    pos++;
               }
         }

         rst[pos] = ‘\0′;

         return rst;
    }

  5. ningweidong 说:

    5.

    void getalpha(char ch[])
    {
         char *rst = new char[strlen(ch)];
     
         int pos = 0;
         int i = 0;

         for (i=0; i < (int)strlen(ch); i++)
         {
              if (ch[i]<48 || ch[i]>57)
               {
                    rst[pos] = ch[i];
                    pos++;
               }
         }

         rst[pos] = ‘\0′;

         strcpy(ch,rst);
    }

  6. ningweidong 说:

    6.

    void getdigit(char *des,char *ch)
    {
         int pos = 0;
         int i = 0;

         for (i=0; i < (int)strlen(ch); i++)
         {
               if (ch[i]>=48 && ch[i]<=57)
               {
                    des[pos] = ch[i];
                    pos++;
               }
         }

         des[pos] = ‘\0′;
    }

  7. ningweidong 说:

    7.

    void add(int a[5][5] , int b[5])
    {
         int max = 0;//存放最大值
         int i = 0;
         int j = 0;

         for (i=0; i<5; i++)
         {
               max = a[i][0];

               for (j=0; j<5; j++)
               {
                    if (a[i][j] > max)
                         {
                              max = a[i][j];
                        }

               }

               b[i] = max;
         }

     }

  8. xstar 说:

    1、同ningweidong
    2、同ningweidong
    3、可以找到规律,这样速度会快,而且没有限制。(递规有层数限制的)
    [code]
    int foo( int nNum )
    {
        if ( 0 == ( nNum % 2 ) ) {
            /* nNum为偶数 */
            return -nNum / 2;
        } else {
            / * nNum为齐数 */
            return (nNum + 1) / 2;
        }
    }
    [/code]

    [code]
    int foo( int nNum )
    {
        return ( nNum % 2 ) ? ( (nNum + 1) / 2 ) : ( -nNum / 2 );
    }
    [/code]
    4、虽然可以在函数内部分配内存,不过这样不推荐。
       (当然如果有配对的函数则可以考虑这样写。)
    推荐改为(在函数外部准备空间):
    [code]
    char *GetAlpha( const char *strInput, char *strOutput )
    {
        /* 判断数据有效性 */
        _ASSERT( ((const char *)NULL != strInput) && ((char *)NULL != strOutput ) );

        const char *strTmpInput  = strInput;
        char *strTmpOutput       = strOutput;

        while ( '\0' != *strTmpInput ) {
            if ( (('a' <= *strTmpInput) && ('z' >= *strTmpInput)) ||
                  (('A' <= *strTmpInput) && ('Z' >= *strTmpInput)) )
            {
                 *strTmpOutput = *strTmpInput;
                 strTmpOutput++;
            }

            strTmpInput++;
        }

        /* '\0' 结尾 */
        *strTmpOutput = '\0';

        return strOutput;
    }
    [/code]
    5、理由同上
    [code]
    char *GetAlpha( const char *strInput, char *strOutput )
    {
        /* 判断数据有效性 */
        _ASSERT( ((const char *)NULL != strInput) && ((char *)NULL != strOutput ) );

        const char *strTmpInput  = strInput;
        char *strTmpOutput       = strOutput;

        while ( '\0' != *strTmpInput ) {
            if ( (('0' > *strTmpInput) && ('9' < *strTmpInput)) ) {
                 *strTmpOutput = *strTmpInput;
                 strTmpOutput++;
            }

            strTmpInput++;
        }

        /* '\0' 结尾 */
        *strTmpOutput = '\0';

        return strOutput;
    }
    [/code]
    6、7、基本同ningweidong的

  9. 沉默的另一面 说:

    3.

        int n,i,sum=0;

        int flag=1;

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

        {      sum=sum+flag*i;

                flag=-flag;

        }

    见有人这样做~~~感觉不错~~其他不熟悉就不发言了!!

  10. zhitian516 说:

    8错8错

  11. bianchengfeng 说:

    4题

    #include<stdio.h>
    void main()
    {
     char ch;
     loop:scanf(“%c”,&ch);
     if(ch>64&&ch<91||ch>96&&ch<123)
      printf(“%c”,ch);
     goto loop;
    }

  12. hiroki 说:

    这些要好好考虑啊

留下一个回复