Chinaunix首页 | 论坛 | 博客
  • 博客访问: 151944
  • 博文数量: 53
  • 博客积分: 2059
  • 博客等级: 大尉
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-14 20:25
文章分类
文章存档

2012年(1)

2011年(25)

2010年(16)

2009年(11)

我的朋友

分类:

2010-04-23 20:08:56

基本上求职者进行笔试时没有不考字符串的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。我曾不止一次在笔试或面试时 遇到下面几道试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。不能忽视这些细节,因为这些细节会体现你在操作系统、软件工程、边界 内存处理等方面的知识掌控能力。

一、整数与字符串之间的相互转换
1.将字符串转换成整数

      例如有一字符串str[]=“1234”,最直观的转换方法就是依次将每一个字符转换成相应的数字,然后乘10累加,即((1*10+2)*10+3)*10+4。想要得到每一位相应的数字,只需用每个字符减去数字0的ASCII码,即2= str[1]-'0'。
      如果字符串首字符标示的是一个负数,即str[0]=='-'。那么此时应该设置一个符号判断标示位(用来判断以后得到的整数是否需要乘-1),并把要处理的字符数组下标设置为1。
      int str_to_int(char str[])
      {
        int i=0, isNeg=0,num=0;
        if(str[0]=='-')
          {isNeg=1;
           i=1;
          }
        while(str[i])
          {num=num*10+(str[i]-'0');
           i++;
          }
        if(isNeg)
          num*=-1;
        return num;
      }


2.将整数转换为字符串
      将整数转换为字符串相对要复杂些。通过取模,并结合商与余数的关系,可以有几种方法。例如,123除以100,商为1,余数为23,这样,首先可以把 “1”保存到字符串里。然后23除以10,商为2,余数为3。这样就可以得到字符串“123”了。但是,怎样来确定整数的位数确实比较麻烦。有一种相对简 单的方法。
      首先将123除10取模,得到数字3,此时商为12。再将12除10取模,得到数字2,商为1。这样,我们可以得到字符串“321”,接着进行一次逆序即可得到想要的字符串。
    同样,如果该整数小于0,我们需要人为地将其变成正数,再进行取模运算!!
       char int_to_str(int num,char str[])
       {
        int i=0,j=0,isneg=0;
        char temp[10];
        if(num<0)
          {
           num*=-1;
           isNeg=1;
          }
        do{
           temp[i]=(num%10)+'0';
           num/=10;
           i++;
&nbs

阅读(1736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~