华为实习生笔试练习4.9
2015-04-09 16:46
281 查看
1. 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[]
= {1, 6, 8, 9, 7, 3}
2.操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50 且 <= 255。优先级大于 255 的为非法任务,应予以剔除。现有一任务队列 task[],长度为 n,task 中的元素值表示任务的优先级,数值越小,优先级越高。函数 scheduler 实现如下功能,将 task[] 中的任务按照系统任务用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在 task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入//队顺序排列(即先入队的任务排在前面),数组元素为-1
表示结束。例如:task[] = {0,30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2,6, -1}// 函数接口 void scheduler(int task[], int n, int system_task[], int user_task[])
3. 问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串【输出】 result_str:在 str 字符串中删除所有 sub_str 子字符串后的结果【返回】 删除的子字符串的个数
#include<iostream>
#include<string>
using namespace std;
int compare(const char* str, const char* substr)
{
int index = 0;
while (substr[index] != 0)
{
if (str[index] != substr[index])
return -1;
index++;
}
return index;
}
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
int count = 0;
int ptr = 0,r_ptr=0;
while (str[ptr] != 0)
{
if (str[ptr] == sub_str[0]){
int index = compare(&str[ptr], sub_str);
if (index>=0)
{
count++;
ptr = ptr + index;
}
else
result_str[r_ptr++] = str[ptr++];
}
else
result_str[r_ptr++] = str[ptr++];
}
result_str[r_ptr] = 0;
return count;
}
int main()
{
char oldstring[100], deletestring[100];
char resultstring[100];
cin >> oldstring;
cin >> deletestring;
int num;
num = delete_sub_str(oldstring, deletestring, resultstring);
cout << num << endl;
cout << resultstring;
system("pause");
return 0;
}
= {1, 6, 8, 9, 7, 3}
#include<iostream> #include<algorithm> using namespace std; bool Compare(int a, int b) { if (a > b) return true; return false; } int main() { int n; int s[100]; int s_sort[100]; int f_ptr, q_ptr; cin >> n; f_ptr = q_ptr = n / 2; for (int i = 0; i < n; i++){ cin >> s[i]; } sort(s, &s , Compare); s_sort[q_ptr] = s[0]; f_ptr--; q_ptr++; int index = 1; while (index<n) { s_sort[f_ptr--] = s[index++]; if (q_ptr < n) s_sort[q_ptr++] = s[index++]; } for (int i = 0; i < n; i++) cout << s_sort[i] << " "; system("pause"); return 0; }
2.操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50 且 <= 255。优先级大于 255 的为非法任务,应予以剔除。现有一任务队列 task[],长度为 n,task 中的元素值表示任务的优先级,数值越小,优先级越高。函数 scheduler 实现如下功能,将 task[] 中的任务按照系统任务用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在 task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入//队顺序排列(即先入队的任务排在前面),数组元素为-1
表示结束。例如:task[] = {0,30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2,6, -1}// 函数接口 void scheduler(int task[], int n, int system_task[], int user_task[])
#include<iostream> #include<vector> #include<algorithm> using namespace std; class Task { public: Task(int p, int i){ priority = p; id = i; }; int getPri(){ return priority; } int getId(){ return id; } private: int priority; int id; }; bool Compare(Task a, Task b) { if (a.getPri() < b.getPri()) return true; return false; } void schedual(int* task, int* system_task, int* user_task, int n) { int sys_ptr = 0, user_ptr = 0; vector<Task> schedual_queue; for (int i = 0; i < n; i++) { Task tmpTask = Task(task[i], i); schedual_queue.push_back(tmpTask); } sort(schedual_queue.begin(), schedual_queue.end(), Compare); for (int i = 0; i < n; i++) { if (schedual_queue.at(i).getPri() < 50) system_task[sys_ptr++] = schedual_queue.at(i).getId(); else if (schedual_queue.at(i).getPri() <= 255) user_task[user_ptr++] = schedual_queue.at(i).getId(); } system_task[sys_ptr] = user_task[user_ptr] = -1; int i = 0; while (system_task[i] != -1) cout << system_task[i++]<<" "; cout << endl; i = 0; while (user_task[i] != -1) cout << user_task[i++] << " "; } int main() { int n; int task[100]; int system_task[100], user_task[100]; cin >> n; for (int i = 0; i < n; i++) cin >> task[i]; schedual(task, system_task, user_task, n); system("pause"); return 0; }
3. 问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数: int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串【输出】 result_str:在 str 字符串中删除所有 sub_str 子字符串后的结果【返回】 删除的子字符串的个数
#include<iostream>
#include<string>
using namespace std;
int compare(const char* str, const char* substr)
{
int index = 0;
while (substr[index] != 0)
{
if (str[index] != substr[index])
return -1;
index++;
}
return index;
}
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
int count = 0;
int ptr = 0,r_ptr=0;
while (str[ptr] != 0)
{
if (str[ptr] == sub_str[0]){
int index = compare(&str[ptr], sub_str);
if (index>=0)
{
count++;
ptr = ptr + index;
}
else
result_str[r_ptr++] = str[ptr++];
}
else
result_str[r_ptr++] = str[ptr++];
}
result_str[r_ptr] = 0;
return count;
}
int main()
{
char oldstring[100], deletestring[100];
char resultstring[100];
cin >> oldstring;
cin >> deletestring;
int num;
num = delete_sub_str(oldstring, deletestring, resultstring);
cout << num << endl;
cout << resultstring;
system("pause");
return 0;
}
相关文章推荐
- 4.10 华为笔试练习
- 2017华为暑期实习生校招笔试
- 华为IT应用开发工程师(C++应用软件)实习生笔试+360企业安全服务端开发工程师实习生笔试
- 华为笔试2014---练习
- 华为实习生笔试题
- 2013-04-26-成都华为实习生招聘上机笔试
- 华为 2017 实习生招聘笔试题
- 华为2017实习生招聘笔试题-任务调度
- 2017年华为实习生笔试题
- 华为2016届实习生招聘(武汉)笔试
- 【笔试】华为实习生 上机
- [笔试练习]腾讯2017暑期实习生编程题
- 2017华为实习生笔试题汇总
- [置顶] 2017腾讯暑期实习生从笔试到面试总结(附带华为、阿里面试经历)
- 华为实习生笔试题目
- 华为2016实习生招聘笔试题第三题--和尚挑水
- 华为2017实习生招聘笔试题-公司年会
- 华为2017实习生招聘笔试题-水仙花数
- 笔试面试-2015华为软件开发实习生
- 2014年实习生招聘之华为实习生招聘笔试题(上机完成)—2014/04/02