• 两则简单面试题


    之前看到一个面试题目:

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

    /**********************
    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"

  • 相关阅读:
    03.移除相同的元素
    02.计算数组元素之和
    01-找出元素在数组中的位置
    node.js中Content-Type的设置
    node.js接受form表单数据
    node.js创建服务器
    mongoDB笔记
    TDK三大标签SEO(搜索引擎优化)优化
    引入网页图标
    JavaScript实现二叉搜索树
  • 原文地址:https://www.cnblogs.com/wangzhiyu811/p/2104661.html
Copyright © 2020-2023  润新知