//题目1:编写一个字符串替换函数,函数名为StrReplace(char *strSrc, char *strFind, char *strReplace),
//strSrc为源字符串,strFind是待替换的字符串,strReplace为替换字符串。
//例如:把“zhuzhiwen”中的“hu”替换为"guwenbing"。
#include<iostream> #include<map> #include<vector> using namespace std; char* StrReplace(char* strSrc, char * strFind, char* strReplace) { int lengthSrc = strlen(strSrc); int lengthFind = strlen(strFind); int lengthReplace = strlen(strReplace); char* strNew=new char[1000]; int p = 0; for (int i = 0; i < lengthSrc; i++) { if (strSrc[i] == strFind[0]) { for (int j = 1; j < lengthFind; j++) { if (strSrc[i + j] == strFind[j]) { if (j == lengthFind - 1){ for (int k = 0; k < lengthReplace; k++) { strNew[p++] = strReplace[k]; } i = i + lengthFind ; } } else { break; } } } strNew[p++] = strSrc[i]; } strNew[p] ='\0'; return strNew; } void main() { cout << StrReplace("zhuzhiwen", "hu","guwenbing"); }
//题目2:选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,
//judge_type[]里存储与score[]数组对应的评委类别,judge_type[i] == 1表示专家评委,
//judge_type[i] == 2表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先取一个平均分(平均分取整),
//然后,总分 = 专家评委平均分*0.6 + 大众评委平均分*0.4,总分取整。如果没有大众评委,则总分 = 专家评委平均分,总分取整。
//函数最终返回选手得分。
//函数接口 int cal_score(int score[], int judge_type[], int n) #include<iostream> #include<map> #include<vector> using namespace std; int cal_score(int score[], int judge_type[], int n) { int daScore = 0, zhuanScore = 0,score1=0; int daNum = 0, zhuanNum = 0; for (int i = 0; i < n; i++) { if (judge_type[i]==1) { zhuanScore += score[i]; zhuanNum++; } else { daScore += score[i]; daNum++; } } if (daNum == 0) { score1 = zhuanScore / n; } else{ score1 =0.6* zhuanScore / zhuanNum + 0.4*daScore/daNum; } return score1; } void main() { const int n = 10; int score[n] = { 80, 85, 90, 80, 75, 95, 75, 80, 90, 95 }; int judge_type[n] = { 1, 2, 1, 1, 2, 2, 1, 1, 2, 1 }; cout << cal_score(score, judge_type, n); //return 0; } //题目3:给定一个数组input[], 如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置, //如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上, //然后按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 #include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; void outp(int input[], int output[], int n) { sort(input[0], input[n - 1]); int inputP = n - 1; int temp = n / 2; int biaozhi = 0; int zuoP = temp - 1; int youP = temp + 1; output[temp] = input[inputP--]; for (int i = inputP; i >= 0; i--) { if (biaozhi == 0) { output[zuoP--] = input[i]; biaozhi = 1; } else { output[youP++] = input[i]; biaozhi = 0; } } } void main() { const int n = 6; int input[n] = { 0, 1, 2, 3, 4, 5 }; int output[n]; outp(input, output, n); } /*题目4:操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 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 <list> #include <map> #include <string> #include <algorithm> using namespace std; class M { public: M(){ a=-1; b=-1; }; M(int in1,int in2){ a=in1; b=in2; }; int a,b; }; bool com(M l,M r) { return l.a<r.a; } void scheduler (int task[],int n,int system_task[],int user_task[]) { //sort(task[0],task[8]); M* ms1=new M[n]; M* ms2=new M[n]; int p=0; int q=0; for (int i=0;i<n;i++) { if (task[i]<50) { ms1[p].a=task[i]; ms1[p++].b=i; //system_task[p++]=i; } if (task[i]>=50&&task[i]<=255) { ms2[q].a=task[i]; ms2[q++].b=i; } } sort(ms1,ms1+p,com); sort(ms2,ms2+q,com); for (int i=0;i<p;i++) { system_task[i]=ms1[i].b; cout<< system_task[i]; } for (int i=0;i<q;i++) { user_task[i]=ms2[i].b; cout<< user_task[i]; } } void main() { int task[]={0,30,155,1,80,300,170,40,99}; int n=9; int system_task[9]; int user_task[9]; scheduler( task, n, system_task, user_task); }