华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案
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语言标题和答案相关推荐
- 华为机考——字符串分割
题目描述 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 首先输入一个整数,为要输 ...
- 华为OD机试 - 字符串分割(Java JS Python)
题目描述 给定非空字符串s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数. 1.若分割不成功,则返回0: 2.若分割成功且分割结果不唯一,则返回-1: 3.若分割成功且分割结果 ...
- HW机试题字符串分割
hw机试题,总结就是尽量少用库函数,其次每道题都会涉及到输入字符串分割与string转化成int型数据 代码如下: #include <iostream> #include <str ...
- 【华为云技术分享】#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言
[内容简介]本文将从三部分手把手教大家如何在鲲鹏上使用编程语言:1.编写hello world,并在鲲鹏上运行:2.编写一个带cmake的标准跨平台C工程,完成软件在鲲鹏平台上的编译,安装功能:3.选 ...
- 华为OD机试 - 字符串分割
题目描述 给定一个非空字符串S,其被N个'-'分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用'-'分隔. 对于新组成的每一个子串,如果它含有的小写字母比大 ...
- c语言计算字符串最后一个单词长度,2020-05-28华为机考题--字符串最后一个单词的长度(C语言实现)...
题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 示例1 hello world 输出 5 算法思路 ...
- 【华为oj】字符串分割
问题描述:连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 首先输入一个整数,为要输入 ...
- 牛客网华为机试题 字符串问题 记录
一.题目描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写. 输入描述: 第一行输入一个由字母和数字以及空格组成的字符串,第二行 ...
- 【华为OJ_004】字符串分割
①题目要求 1)题目描述: 连续输入字符串,按长度为8拆分每个字符串后,输出到新的字符串数组 长度不是8的整数的在字符串后买你补数字0,空字符串不处理 2)输入描述: 连续输入字符串(输入两次,每个字 ...
最新文章
- Kong APIGW — OpenResty
- python写的游戏怎么给别人玩-一步步教你怎么用python写贪吃蛇游戏
- Java:Java编程实现导出二维码
- Spring Session 的两种刷新模式-RedisFlushMode
- String类的intern()
- Android 10分钟集成极光推送
- 学生使用计算机中怎么关机,学会正确开关机初中计算机教案
- java社区活跃度_Java并发编程-活跃度问题
- 手把手教你用Python读取Excel
- 关于T-SQL中exists或者not exists子查询的“伪优化”的做法
- 【oracle】常用函数总结
- 不要问我有多懒,写个脚本跑django
- 河南职称计算机考试多少分通过,2019年河南职称计算机考试报名通知
- 大数据可以应用在哪些行业?
- python狗狗年龄换算程序_1分钟检测狗狗是否老了,还有狗年龄换算表,快看你家狗的情况...
- 机器学习——神经网络(三):线性神经网络
- 《通关!游戏设计之道(continue...)》
- 百度2016研发工程师在线编程题
- Python 鸡兔同笼
- html5锥形,Three.js HTML5 3D开发实例 - 彩色圆锥体