zoukankan      html  css  js  c++  java
  • 两则简单面试题

    之前看到一个面试题目:

      将字符串转换成整型数字,当时一想有点没头绪,没办法自己学的太烂了,还不具备编程思想,算法也是一塌糊涂。今天写了下程序,特在这里记录下:

    /**********************
    Description:
    	将字符串转换成相应的整型数
    	例如:“653”-> 653
    ********************/
    #include <stdio.h>
    
    int strtoint(char s[])
    {
    	int i,n;
    	n=0;
    	for(i=0; s[i]>='0' && s[i]<='9'; ++i)
    	{
    		n=10*n+(s[i]-'0');
    	}
    	return n;
    }
    int main()
    {
    	char s[]={"4672"};
    	int number;
    	number=strtoint(s);
    	printf("输出整数型数字为:%d\n",number);
    	system("pause"); 
    	return 0;
    }
    表达式:s[i]-'0',能够计算出s[i]中存储的字符所对应的数字值。

    第二个:

    /******************
    Description:
    	将大写字母转换成小写形式;只对ASCII字符集有效
    ******************/
    int lower(int c)
    {
    	if(c>='A' && c<='Z')
    		return c+'a'-'A';
    	else
    		return c;
    }
    

      作为一个较大的例子,我们来重新编写将字符串转换为对应数值的函数strtoint。

    这里编写的函数比上面的要更通用,它可以处理可选的前导空白符以及一个可选的加(+)活减(-)号。

    解析:

      如果有空白符的话,则跳过;如果有符号的话,则读取符号;取整数部分,并执行转换:

    int strtoint(char s[])
    {
    	int i, n, sign;
    	for(i=0; isspace(s[i]); i++)	//跳过空白符
    		;
    	sign=(s[i]=='-') ? -1 : 1;
    	if(s[i]=='+' || s[i]=='-')		//跳过符号
    		i++;
    	for(n=0; isdigit(s[i]); i++)
    		n=10*n+(s[i]-'0');
    	return sign*n;
    }
    

    通用性还是不咋滴,输入格式限制成"...+X"、"...-X",(...)表示若干个空白符,当然X后可以是其他非数字字符

    稍微调整程序结构可以,输入格式可以允许:"...X"

  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/wangzhiyu811/p/2104661.html
Copyright © 2011-2022 走看看