标题:C语言面试题,求助!!
只看楼主
liuyi888666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-13
结帖率:50%
已结贴  问题点数:20 回复次数:7 
C语言面试题,求助!!
C语言测试题
(WIN32平台sizeof(int)=4)
5.    改错并写出输出结果(三处错误)
/****************************Code Beginning****************************/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
char *strconvert(char **SubTwoStr,const char *SrcStr)
{
    char            *Replacestr;
    char            *TempTwoStr;
    int            nCounter=0;
    TempTwoStr    =*SubTwoStr;
    Replacestr =(char *)malloc(strlen(SrcStr)>strlen(*SubTwoStr)?strlen(SrcStr):strlen(*SubTwoStr));   
    while(*SrcStr!='\0')
    {
        while(*TempTwoStr++!='\0')
        {
            if(*SrcStr = *TempTwoStr)
            {
                nCounter++;
                *Replacestr++ = *SrcStr;
                break;
            }
        }
        TempTwoStr    =*SubTwoStr;
        SrcStr++;
    }
    *Replacestr        ='\0';
    Replacestr        =Replacestr-nCounter;   
    return *Replacestr;
}
void main()
{
    char    SrcStr[]="abcdef3sccdf";
    char    *TwoStr="maieadfcieasdfasdfewfasdfaw";
    TwoStr=strconvert(TwoStr,SrcStr);   
    printf("Result:%s\n",TwoStr);
}
/****************************Code End****************************/

第二部分:编程题
6.    编程题:
请参考标准strcpy函数原型:char *strcpy(char *strDest,const char *strSrc);其中strDest是目标字符串,strSrc是源字符串
(2)请编写扩展功能的strcpy函数mystrcpy,函数接口与strcpy一致。
要求:
1.新函数将源字符串中的小写字符转换为大写字符;
2.新的函数具有翻转功能(例:strSrc=“abcDefGhijk”;处理后strDest=“KJIHGFEDCBA”)


[ 本帖最后由 liuyi888666 于 2012-6-13 21:14 编辑 ]
搜索更多相关主题的帖子: 面试 平台 include 测试题 C语言 
2012-06-13 17:53
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:14 
还行

总有那身价贱的人给作业贴回复完整的代码
2012-06-13 18:14
liuyi888666
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-13
得分:0 
第6题有哪位高人能给做一下吗?多谢了
2012-06-13 18:18
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
你一点都不会?自己先写一个

总有那身价贱的人给作业贴回复完整的代码
2012-06-13 18:31
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
得分:0 
看看我写的,有点乱,但是能用!仅供参考!
加上const 是为了防止指针修改原字符串。
程序代码:
char *mystrcpy(char *strDest,const char *strSrc)
{
    const char *p=strSrc;
    char *a=strDest;
   
    /*指向字符串结束*/   
    while(*p!='\0')
    {
        p++;
    }
    p--;
   
    /*复制并把小写字母转换成大写*/
    while(p >=strSrc)
    {
        *a=*p;
        if((*a >='a')&&(*a <='z'))
        {
            *a-=32;
            printf("*a=%d\n",*a);
        }
        a++;
        p--;
       
    }
   
    /*去掉strDest中多余的字符*/
    while(*a != '\0')
    {
        *a='\0';
        a++;
    }
   
    return strDest;

}
2012-06-13 21:22
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

char *mystrcpy(char *strDest, const char *strSrc)
{
    assert(strDest!=NULL&&strSrc!=NULL);

    char *tmp = strDest;
    int len = strlen(strSrc);

    while ((len!=0)&&(*tmp=*(strSrc+--len)))
    {
        if (*tmp>='a'&&*tmp<='z')
        {
            *tmp -=32;
        }
        tmp++;
    }
    *tmp = '\0';
    return strDest;
}

void main()
{
    char p[40];
    char *q = "hello,world";
    printf("%s\n",mystrcpy(p,q));
}


输出 DLROW,OLLEH

[ 本帖最后由 demonleer 于 2012-6-13 21:57 编辑 ]
2012-06-13 21:47
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
得分:0 
第一题三处错误:
1. TwoStr=strconvert(TwoStr,SrcStr);改成TwoStr=strconvert(&TwoStr,SrcStr);
2. if(*SrcStr = *TempTwoStr)改成 if(*SrcStr == *TempTwoStr)
3. return *Replacestr;改成 return Replacestr;

函数的功能就是找出两个字符串里相同的字符。
输出为:acdefsccdf。
2012-06-13 22:34
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
得分:0 
第5题不止3个错误吧? 比如还有 malloc申请空间的长度问题,while(*TempTwoStr++!='\0')跳过第一个字符, 这不知到是有意还是错误。

如果是我的话,会写成这样
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *
strconvert2 (const char *dst,
             const char *src)
{
  const unsigned char * pu;
  int     tab[256] = { 0 };
  char    *retbuf, *x;
  size_t  alloclen = strlen (src) + 1;
  
  retbuf = (char *) malloc (alloclen);
  if (retbuf)
    {
      pu = (const unsigned char *)dst;
      while ((*pu))
        tab[(int)*pu++] = 1;
        
      pu = (const unsigned char *)src;
      /* ??? pu ++; */
      x = retbuf;
      do {
        x[0] = *pu;
        x += tab[(int)*pu];
      } while ((*pu++));
    
    }
  
  return retbuf; 
}

int main (void)
{
  char SrcStr [] = "<abcdef2sccdf*>";
  char *TwoStr = "*maieadfcieasdfasdfewfasdfaw";
  TwoStr = strconvert2 (TwoStr, SrcStr);
  printf ("Result:%s\n", TwoStr);
  
  return 0;
}
2012-06-14 11:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371476-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.431230 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved