2014年华为上机机试c语言题目和答案

自己code出来的,结果是正确的,但是其中还有很多的优化之处,还请各位大神多多指导。

代码打包: http://download.csdn.net/detail/sxlwzl/6259411

1.字符串过滤 stringFilter

去重过滤,例子:

"abcdabefe"-->"abcdef"

2.字符串压缩   stringZip

"aaaabbccccddeeeeef"-->"4a2b4c2d5ef"

3.表达式,100以内的正整数,加减运算

"4 + 7"-->"11"

"2 - 7"-->"-5"

"2 ++ 7"-->"0"  //注意:非法运算

ex1.h

/*

1.字符串过滤 stringFilter

去重过滤,例子:

"abcdabefe"-->"abcdef"

*/

#ifndef EX1_H_INCLUDED

#define EX1_H_INCLUDED

#define MAX_LENGTH 1000

int stringFilter(void);

#endif // EX1_H_INCLUDED

ex1.c

#include

#include

#include

#include "ex2.h"

int stringFilter(void)

{

char input[MAX_LENGTH];

char *p_input = input;

char ch;

int size_input=0;

char new_output[MAX_LENGTH];

char *p_new = new_output;

int j=0;

int k=0;

int eq = 0;

while( (ch = getchar())!= '\n' )

{

input[size_input] = ch;

size_input++;

}

input[size_input] = '\0';

for(j=0; j < size_input; j++)

{

eq = 0;

for(k=0; k

{

if(new_output[k] == input[j])

{

eq = 1;

break;

}

}

if (eq == 0)

{

*p_new = input[j];

p_new++;

}

}

*p_new = '\0';

printf("input = %s\n", input);

printf("output = %s\n", new_output);

return 0;

}

ex2.h

/*

2.字符串压缩 stringZip

"aaaabbccccddeeeeef"-->"4a2b4c2d5ef"

*/

#ifndef EX2_H_INCLUDED

#define EX2_H_INCLUDED

#define MAX_LENGTH 1000

int stringZip(void);

#endif // EX2_H_INCLUDED

ex2.c

#include

#include

#include

#include "ex2.h"

int stringZip(void)

{

char input[MAX_LENGTH];

char *p_input = input;

char ch;

int size_input=0;

char new_output[MAX_LENGTH];

char *p_new = new_output;

int j=0;

int k=0;

int duplicate_flag = 0;

while( (ch = getchar())!= '\n' )

{

input[size_input] = ch;

size_input++;

}

input[size_input] = '\0';

while(j

{

new_output[j] = '\0';

j++;

}

*p_new = input[0];

for(j=1; j < size_input; j++)

{

if(input[j] == input[j-1])

{

duplicate_flag ++;

if(duplicate_flag == 1)

p_new++;

*p_new = '0' + duplicate_flag + 1;

}

else

{

duplicate_flag = 0;

p_new++;

*p_new = input[j];

}

}

p_new++;

*p_new = '\0';

//printf("strlen of new_output : %d\n", strlen(new_output));

printf("%s\n", new_output);

return 0;

}

ex3.h

/*

3.表达式,100以内的正整数,加减运算

"4 + 7"-->"11"

"2 - 7"-->"-5"

"2 ++ 7"-->"0" //注意:非法运算

*/

#ifndef EX3_H_INCLUDED

#define EX3_H_INCLUDED

#define MAX_LENGTH 1000

int my_calc(void);

#endif // EX3_H_INCLUDED

ex3.c

#include

#include

#include

#include "ex3.h"

int my_calc(void)

{

char input[MAX_LENGTH];

char *p_input = input;

int first_num=0;

int second_num=0;

int acture_size;

char num_flag = 0;

char func_flag = 0;

char ch;

int i=0;

while( (ch = getchar())!= '\n' )

{

input[i] = ch;

i++;

}

input[i] = '\0';

//printf("i = %d\n",i);

//printf("acture_input is : %s\n", input);

while(i > 0)

{

i--;

//printf("%d\t %c \n",*p_input, *p_input);

if(*p_input >= '0' && *p_input <= '9')

{

num_flag = 1;

if(func_flag == 0)

first_num = first_num * 10 + (*p_input - '0');

else

second_num = second_num * 10 + (*p_input - '0');

}

else

if(num_flag ==0)

{

printf("input error!\n");

return 0;

}

else

if(*p_input == '+')

{

if(func_flag == 0)

{

func_flag = 1;

}

else

{

printf("input error!\n");

return 0;

}

}

else if(*p_input == '-')

{

if(func_flag == 0)

{

func_flag = 2;

}

else

{

printf("input error!\n");

return 0;

}

}

p_input++;

/*

printf("first_num = %d\t", first_num);

printf("second_num = %d\t", second_num);

printf("num_flag = %d\t", num_flag);

printf("func_flag = %d\n", func_flag);

*/

}

if (func_flag == 1)

printf("%d + %d = %d \n",first_num, second_num, first_num + second_num);

else if (func_flag == 2)

printf("%d - %d = %d \n",first_num, second_num, first_num - second_num);

return 0;

}

main.c

#include

#include

#include

#include "ex1.h"

#include "ex2.h"

#include "ex3.h"

int main()

{

printf("Enter main()\n");

char option;

puts("\nex1:");

puts("1.字符串过滤 stringFilter");

puts("去重过滤,例子:");

puts("\"abcdabefe\"-->\"abcdef\"");

do

{

stringFilter();

printf("if you want try anohter test, please input 'y' or input 'n'.\n");

fflush(stdin);

option = getchar();

fflush(stdin);

}while(option == 'y' || option == 'Y');

puts("\nex2:");

puts("2.字符串压缩 stringZip");

puts("\"aaaabbccccddeeeeef\"-->\"4a2b4c2d5ef\"");

do

{

stringZip();

printf("if you want try anohter test, please input 'y' or input 'n'.\n");

fflush(stdin);

option = getchar();

fflush(stdin);

}while(option == 'y' || option == 'Y');

puts("\nex3:");

puts("3.表达式,100以内的正整数,加减运算");

puts("\"4 + 7\"-->\"11\"");

puts("\"2 - 7\"-->\"-5\"");

puts("\"2 ++ 7\"-->\"0\"");

do

{

my_calc();

printf("if you want try anohter test, please input 'y' or input 'n'.\n");

fflush(stdin);

option = getchar();

fflush(stdin);

}while(option == 'y' || option == 'Y');

return 0;

}

1楼u01176077648分钟前请问楼主是哪个学校的啊?Re: sxlwzl31分钟前回复u011760776n暂时保密,还请多指教哈。

华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案相关推荐

  1. 华为机考——字符串分割

    题目描述 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 首先输入一个整数,为要输 ...

  2. 华为OD机试 - 字符串分割(Java JS Python)

    题目描述 给定非空字符串s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数. 1.若分割不成功,则返回0: 2.若分割成功且分割结果不唯一,则返回-1: 3.若分割成功且分割结果 ...

  3. HW机试题字符串分割

    hw机试题,总结就是尽量少用库函数,其次每道题都会涉及到输入字符串分割与string转化成int型数据 代码如下: #include <iostream> #include <str ...

  4. 【华为云技术分享】#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言

    [内容简介]本文将从三部分手把手教大家如何在鲲鹏上使用编程语言:1.编写hello world,并在鲲鹏上运行:2.编写一个带cmake的标准跨平台C工程,完成软件在鲲鹏平台上的编译,安装功能:3.选 ...

  5. 华为OD机试 - 字符串分割

    题目描述 给定一个非空字符串S,其被N个'-'分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用'-'分隔. 对于新组成的每一个子串,如果它含有的小写字母比大 ...

  6. c语言计算字符串最后一个单词长度,2020-05-28华为机考题--字符串最后一个单词的长度(C语言实现)...

    题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 示例1 hello world 输出 5 算法思路 ...

  7. 【华为oj】字符串分割

    问题描述:连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 首先输入一个整数,为要输入 ...

  8. 牛客网华为机试题 字符串问题 记录

    一.题目描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写. 输入描述: 第一行输入一个由字母和数字以及空格组成的字符串,第二行 ...

  9. 【华为OJ_004】字符串分割

    ①题目要求 1)题目描述: 连续输入字符串,按长度为8拆分每个字符串后,输出到新的字符串数组 长度不是8的整数的在字符串后买你补数字0,空字符串不处理 2)输入描述: 连续输入字符串(输入两次,每个字 ...

最新文章

  1. Kong APIGW — OpenResty
  2. python写的游戏怎么给别人玩-一步步教你怎么用python写贪吃蛇游戏
  3. Java:Java编程实现导出二维码
  4. Spring Session 的两种刷新模式-RedisFlushMode
  5. String类的intern()
  6. Android 10分钟集成极光推送
  7. 学生使用计算机中怎么关机,学会正确开关机初中计算机教案
  8. java社区活跃度_Java并发编程-活跃度问题
  9. 手把手教你用Python读取Excel
  10. 关于T-SQL中exists或者not exists子查询的“伪优化”的做法
  11. 【oracle】常用函数总结
  12. 不要问我有多懒,写个脚本跑django
  13. 河南职称计算机考试多少分通过,2019年河南职称计算机考试报名通知
  14. 大数据可以应用在哪些行业?
  15. python狗狗年龄换算程序_1分钟检测狗狗是否老了,还有狗年龄换算表,快看你家狗的情况...
  16. 机器学习——神经网络(三):线性神经网络
  17. 《通关!游戏设计之道(continue...)》
  18. 百度2016研发工程师在线编程题
  19. Python 鸡兔同笼
  20. html5锥形,Three.js HTML5 3D开发实例 - 彩色圆锥体

热门文章

  1. 小米频繁投资内容渠道 是回归理性还是曲线救赎
  2. 电脑桌面删除的文件怎么找回?
  3. WebSocket 是什么原理?为什么可以实现持久连接
  4. 国开教育学形考任务2试题1试题及答案
  5. 互联网赚钱发展趋势,网赚案例精准分析
  6. 视频服务器信号转换器,DVI转换器
  7. python实现推广小项目
  8. 关于含税单价和不含税单价的关系记录
  9. Centos7安装ElasticSearch6.4
  10. PowerDesigner 15破解版下载