当前位置: 首页 > news >正文

郑州网站设计培训做网站的公司怎么做业务

郑州网站设计培训,做网站的公司怎么做业务,申请企业邮箱步骤是什么?,网站建设公司人员工资题目一#xff1a; 题目 输入两个非负整数a和b#xff0c;输出两个非负整数的和(ab)。数据规模 0a,b 10 99−1样例1 输入 1 1 ​ 输出 2 ​ ​ 样例2 输入 1844674407370955161 1 ​ 输出 1844674407370955162 代码实现#xff1a; void reverse(char *s){//反转…题目一 题目 输入两个非负整数a和b输出两个非负整数的和(ab)。数据规模 0a,b 10 99−1样例1 输入 1 1 ​ 输出 2 ​ ​ 样例2 输入 1844674407370955161 1 ​ 输出 1844674407370955162 代码实现 void reverse(char *s){//反转字符串便于从低位进行进位运算int lenstrlen(s);for(int i0;ilen-i-1;i){char ts[i];s[i]s[len-i-1];s[len-i-1]t;} } void Sum(char *a,char *b,char *sum){int len_astrlen(a),len_bstrlen(b),acc0,t,i;reverse(a);reverse(b);for(i0;ilen_a || ilen_b;i){//其中一个未到最高位即可//对其中一个进行进位运算if(ilen_a){tb[i]-0acc;}else if(ilen_b){ta[i]-0acc;}//都未到最高位else{ta[i]-0b[i]-0acc;}//进行进位运算sum[i]t%100;//acc存储进位值if(t9){acc1;}else{acc0;}}if(acc1){sum[i]1;//最高位进位}sum[i]\0;//字符串结束符reverse(sum);//反转从高位到低位 } int main(){system(chcp 936);char a[100],b[100],sum[250];scanf(%s%s,a,b);Sum(a,b,sum);printf(%s\n,sum); }题目二 斐波拉契数列的实现函数 代码实现 int fibonacci_rec(int n){if(n1 || n2)return n;else return fibonacci_rec(n-1)fibonacci_rec(n-2); } int fibonacci_loop(int n){int a[n1];a[1]1,a[2]2;for(int i3;in1;i){a[i]a[i-1]a[i-2];}return a[n]; } 题目三 素数的判断代码实现 int isPrime(int a){//欧拉筛简化--判断素数if(a4){//5以下的素数判断return a1;}if(a%6!1 a%6!5){//必要性判断素数必为6及其倍数左右相邻两数return 0;}for(int i5;isqrt(a);i6){if(a%i0 || a%(i2)0){//充分性判断return 0;}}return 1;//return 1--是素数 } 题目四 Description 小G在玩一个游戏利用字符重复出现的次数编写一种方法实现基本的字符串压缩功能。比如字符串aabcccccaaa会变为a2b1c5a3假如压缩后的字符串的长度不小于原字符串的长度则输出原来的字符串。 字符串中只包含小写英文字母a至z每个字母的重复次数为1到9次字符总长度为1~100。Hint strlen()可以用来求一个字符串的长度需要include头文件string.hInput 一行字符串Output 输出压缩的字符串或者原字符串Sample Input aabcccccaaa ​ Sample Output a2b1c5a3 ​ Sample Input2 abbccd ​ Sample Output2 abbccd ​ (因为压缩后的字符串为a1b2c2d1长度比原字符串abbccd大所以输出原字符串) 代码实现 char* getMinString(char *str){int lenstrlen(str);//原字符串长度int cnt1,index0,i;int new_str[100];//新字符串for(i0;ilen;i){if(str[i]str[i1]){cnt;//计数}else{//不同字符new_str[index]str[i];//存入上一个重复的字符new_str[index]cnt0;//存入重复次数cnt1;//重置次数}}new_str[index]\0;//结尾符if(indexlen){//判断长度for(i0;iindex;i){str[i]new_str[i];}}return str;//返回字符串 } 题目五 题目 给定一个m x n大小的整数矩阵m行n列按顺时针螺旋的顺序打印矩阵中的所有元素。例如一个3 x 3 的 矩阵1 2 34 5 67 8 9输出应为:1 2 3 6 9 8 7 4 5数据规模 1 n,m 10 矩阵中任意元素都满足 |val|100。输入样例1 3 3 1 2 3 4 5 6 7 8 9 ​ 输出样例1 1 2 3 6 9 8 7 4 5输入样例2 1 1 1 ​ 输出样例2 1 代码实现 # includestdio.h # includestdlib.h # includestring.h # includemath.hvoid reverseMatrix(int **matrix,int m,int n){int top0,downm-1,left0,rightn-1;while(topdown leftright){for(int ileft;iright;i){printf(%d ,matrix[top][i]);}top;if(topdown) break;for(int itop;idown;i){printf(%d ,matrix[i][right]);}right--;if(rightleft) break;for(int iright;ileft;i--){printf(%d ,matrix[down][i]);}down--;if(topdown) break;for(int idown;itop;i--){printf(%d ,matrix[i][left]);}left;if(leftright) break;} } int main(){int m,n;scanf(%d%d,m,n);int **matrix(int**)malloc(sizeof(int*)*m);for(int i0;im;i){matrix[i](int*)malloc(sizeof(int)*n);}for(int i0;im;i){for(int j0;jn;j){scanf(%d,matrix[i][j]);}}reverseMatrix(matrix,m,n);for(int i0;im;i){free(matrix[i]);}free(matrix); } 题目六 Description 小猫咪玩游戏现在有n张牌依次放在地上牌上有数字数字的范围是-20~20正数表示可以奖励对应数目的猫粮负数表示减去对应数量猫粮。猫咪可以从中连续选择k张牌 0knk0表示不选牌即0包猫粮即能获得数量为k张牌的数字之和的猫粮。 实现一个函数求出猫咪最多能获取几包猫粮1数组长度100。已提供main函数解决输入输出只需要实现函数即可Input n1行 第一行一个数字数组长度n。 接下来的n行输入数组的数字Output 输出猫咪所能获得的最多猫粮数量Sample Input 5 1 2 3 4 5​ Sample Output 15​ Sample Input2 5 1 2 -3 4 5​ Sample Output2 9代码实现 int getMaxNum(int *a,int n){int max0,temp0;for(int i0;in;i){temp(tempa[i])0?(tempa[i]):0;//如果和小于0则置为0从下一个数重新加和maxmaxtemp?temp:max;//更新最大值}return max;//返回最大值 }int main(){int n;scanf(%d,n);int a[n];for(int i0;in;i){scanf(%d,a[i]);}printf(%d\n,getMaxNum(a,n)); } 题目七 Description 给出一个升序的整数数组 A 和升序的整数数组 B 请将数组 B 合并到数组 A 中变成一个升序的升序数组。 数据范围0n,m100, |Ai|100, |Bi|100 注意保证 A 数组有足够的空间存放 B 数组的元素 A 和 B 中初始的元素数目分别为 m 和 nA 的数组空间大小为 mn 不要返回合并的数组将数组 B 的数据合并到 A 里面即可 Input 两行数字m, n分别表示两个数组的大小。接下来m行输入第一个数组A的元素然后n行输入第二个数组B的元素。Output 输出mn行数字每一行为合并后数组A的元素Sample Input 3 3 4 5 6 1 2 3 ​ Sample Output 1 2 3 4 5 6 ​ Sample Input2 4 3 1 3 5 7 2 4 6 ​ Sample Output2 1 2 3 4 5 6 7 1 2 3 4 5 6 7 代码实现 void mergeTwoSequence(int *a,int *b,int m,int n){int pmn-1;//尾指针m-1;n-1;while(n0){while(a[m]b[n] n0){//b大存入尾指针指向空间a[p--]b[n--];}a[p--]a[m--];} } 题目八 Description 特工770正在调查一种神秘的病毒感染这种病毒的人有几率会在每天睡梦里梦见一只可爱的很胖的猫咪。770发现病毒有1种初始状态还有6天的潜伏期在此期间每天每种状态会同时发生下述两种变异产生两种新状态同时旧的状态会全部消失。请注意这两种新状态在次日会各自变异产生2×24种新状态以此类推。当潜伏期结束后如果最后一天变异产生的状态中存在一个状态满足下述条件那么这个人就会开始梦见猫咪。现在特工770要求你编写一个程序输入病毒的初始状态计算潜伏期结束后感染者是否会开始梦见猫咪。变异规则 病毒状态是一个unsigned int记为V病毒已变异次数记为T左移变异若((131)V)!0则V左移T位产生新状态否则V左移1位产生新状态 右移变异若(1V)!0则V右移T位产生新状态否则V右移1位产生新状态。 梦见猫咪的条件 记常量0x0003C000为M若最后一天变异产生的某个状态V满足((VM)^M)0则感染者会开始梦见猫咪请输出yes否则感染者不会开始梦见猫咪请输出no。Input 一个整数最小值是0最大值是pow(2, 32)-1代表病毒的初始状态。Output 判断梦见猫咪的条件输出yes或no带换行。Sample Input 23333 ​ Sample Output no 代码实现 # define M 0x0003C000 int test_virus(unsigned int V, int T){if(T6){//变异次数达6次return ((VM)^M)0;//返回判断结果}else{//左变异和右变异分别递归return test_virus(V(((131)V)!0?T:1),T1) || test_virus(V((1V)!0?T:1),T1);} }int main(){unsigned int V;int T0;scanf(%u,V);if(test_virus(V,T))printf(YES\n);elseprintf(NO\n); } 题目九 Description 给定两个字符串把它们拼接到一起以后反向输出出来。比如“ab”和cd拼接成abcd后按照dcba输出。字符串没有空格且长度小于等于40。Input 输入的第一行为第一个字符串第二行为第二个字符串。Output 输入为拼接后的反向输出。Sample Input abcdefg hijklmn ​ Sample Output nmlkjihgfedcba 代码实现 void reverse(char *str1,char *str2){strcat(str1,str2);//拼接int lenstrlen(str1);for(int i0;ilen-i-1;i){//反转字符串char chstr1[i];str1[i]str1[len-i-1];str1[len-i-1]ch;} } 题目十 Description 如果一个字符串翻转后还是它本身我们称这个字符串是漂亮的字符串。实现一个函数判断一个字符串是否是一个漂亮的字符串是则输出true否则输出false。strlen()可以求一个字符串的长度需要includestring.hInput 一行输入的字符串。1字符串的大小100每个字符为小写字母即a字符zOutput 如果字符串为漂亮的字符串返回true否则返回falseSample Input aba ​ Sample Output true ​ Sample Input2 abaa ​ Sample Output2 false ​ Sample Input3 a ​ Sample Output3 true true 代码实现 int beautifulString(char *str){int lenstrlen(str),flag1;for(int i0;ilen-i-1;i){//首尾字符串比对if(str[i]!str[len-i-1]){flag0;break;}}return flag;//flag为1表示这是beautiful字符串 } 题目十一 Description 现在给定两条字符串如“abcdabc”和abc要求字符串abc在abcdabc的最大字符串长度。最大字符串长度指的是abc在abcdabc连续出现的长度当匹配的次数大于等于1的时候不要求abc在后面也要保持完整。如abcab和“abc”的最大字符串长度为5。 字符串长度不大于10000。Input 输入的第一个数字 N 代表测试样例数目接下来有 2∗N 行字符串。 每两行字符串的第一个字符串为待匹配的字符串第二个字符串为要匹配的字符串。Output 题意要求的最大字符串匹配长度。Sample Input 2 abcdabc abc abcdabcd abcd ​ Sample Output 3 8 ​代码实现 int maxStrMatchLen(char *str_a,char *str_b){int cnt0,sum0,index_b0;int len_astrlen(str_a);int len_bstrlen(str_b);if(strstr(str_a,str_b)){//长字符串中是否存在一个短字符串cnt;sumlen_b;}if(cnt1){//如果已经存在一个//非完整字符也可算入长度for(int istrstr(str_a,str_b)-str_alen_b;ilen_a;i){if(str_a[i]!str_b[index_b])break;else{sum;//更新长度if(index_blen_b-1){//更新短字符串比对下标index_b0;}index_b;//短下标增加}}}return sum; }int main(){char str_a[10000],str_b[10000];int n;scanf(%d,n);while(n--){scanf(%s%s,str_a,str_b);printf(the max match str len is : %d\n,maxStrMatchLen(str_a,str_b));}} 题目十二 Description 给定一个字符串s1只包含小写字母再给定密钥 n 后将其加密为s2。 输出加密后字符串加密规则对于密钥n将字符串中每一个字符替换为字母表顺序从左至右后的第n位字母。 注意z 后面是 a 例如密钥n1 aabb - bbcc, z - aInput 输入的第一行为加密位n 输入的第二行为字符串s1。 0 n 26 0 s1长度 100Output 输入字符串s2Sample Input1 2 abc ​ Sample Output1 cde ​ Sample Input2 0 abc ​ Sample Output2 abc 代码实现 void transform(int n,char *str){char alphabet1[26],alphabet2[26];//alphabet1--正常字母表//alphabet2--转换后的字母表for(int i0;i26;i){alphabet1[i]ai;}for(int i0;i26;i){if(in26){//未超过26字母alphabet2[i]alphabet1[i]n;}else{//超过从a开始alphabet2[i]ain-26;}}int lenstrlen(str);for(int i0;ilen;i){str[i]alphabet2[strchr(alphabet1,str[i])-alphabet1];//将str[i]在正常字母表中的位置放到转换后的字母表中进行转换} } 题目十三 Description 给你一个正整数组成的数组 nums 返回 nums 中一个 降序 子数组的最大可能元素和。子数组是数组中的一个连续数字序列。已知子数组[nums l ​,nums l1 ​,...,nums r−1 ​,nums r ​] 若对所有 il i rnums i ​nums i1 ​都成立则称这一子数组为 降序 子数组。注意大小为1 的子数组也视作 降序 子数组。Input 第一行输入数组长度 n 第二个输入数组元素1, 2, 3, ... n个0 n 1000 0 nums[i] 10000Output 降序子数组最大和Sample Input1 6 10 20 30 5 10 50 ​ Sample Output1 50 ​ 解释[50] 是元素和最大的降序子数组最大元素和为 50 。Sample Input2 1 10 ​ Sample Output2 10 ​ Sample Input3 0 ​ Sample Output3 0 0 代码实现 int maxSum(int *num,int len){int sum0,max0,index0;while(indexlen){//防止越界int sumnum[index];//存入当前值//防止越界且要满足降序while(indexlen num[index]num[index-1]){sumnum[index];//存入下一个值并后移}maxmaxsum?sum:max;//更新最大值}return max; } 题目十四 Description 给你一个字符串 s 和一个字符 c 且 c 是 s 中出现过的字符。返回一个整数数组 answer 其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。两个下标 i 和 j 之间的 距离 为 abs(i - j) 其中 abs 是绝对值函数。保证字符c出现在字符串s中。 ps: 若字符串s为空应输出距离0Input 第一行字符串长度n 第二行字符串s 第三行字符c0 num长度500Output 返回距离数组Sample Input 12 aobeoeeiqote e ​ Sample Output 3 2 1 0 1 0 0 1 2 2 1 0 ​ 解释字符 e 出现在下标 3、5、6 和 11 处下标从 0 开始计数。 距下标 0 最近的 e 出现在下标 3 所以距离为 abs(0 - 3) 3 。 距下标 1 最近的 e 出现在下标 3 所以距离为 abs(1 - 3) 2 。 对于下标 4 出现在下标 3 和下标 5 处的 e 都离它最近但距离是一样的 abs(4 - 3) abs(4 - 5) 1 。 距下标 8 最近的 e 出现在下标 6 所以距离为 abs(8 - 6) 2 。 代码实现 int main(){char str[500],ch;int n;scanf(%d,n);if(n0){//一个字符返回0printf(0\n);return 0;}scanf(%s,str);scanf( %c,ch);//预留一个空格区分str和ch输入int arr[n],target[500],index0,len0;for(int i0;in;i){if(str[i]ch){target[len]i;//标记目标字符数量与位置}}for(int i0;in;i){int min9999,temp;for(int j0;jlen;j){tempabs(target[j]-i);//记录每个目标字符与当前字符距离minmintemp?temp:min;//更新最小距离}arr[index]min;//存入距离}for(int i0;in;i){printf(%d ,arr[i]);}printf(\n); } 题目十五 题目描述 根据主函数和头文件提示编写两个子函数void removeDigits(char *s);和void reverseStr(char *s);其功能分别为删除字符串s中的数字字符将字符串 s 逆序。其中当s的长度为0时void reverseStr(char *s);需要在s中保存表示NoCharacters的字符串。输入格式 输入一个长度不超过100的字符串 s。输出格式 先移除字符串s中的所有数字符号再输出处理后的字符串的逆序。输入样例1 11A2b3C45 ​ 输出样例1 CbA ​ 输入样例2 AAbbccDD ​ 输出样例2 DDccbbAA ​ 输入样例3 1234567 ​ 输出样例3 NoCharacters ​ 说明输入的字符串全是数字字符移除数字字符后字符串长度为0此时void reverseStr(char *s);需要在s中保存表示NoCharacters的字符串。 代码实现 void removeDigits(char *s){int lenstrlen(s);int index0;//慢指针for(int i0;ilen;i){if(!isdigit(s[i])){//非数字s[index]s[i];//填充}}s[index]\0;//结尾结束符 }void reverseStr(char *s){int lenstrlen(s);if(len0){char str[]NoCharacters;int lstrlen(str);strcpy(s,str);s[l]\0;//结束符return;}//标准反转法for(int i0;ilen-i-1;i){char chs[i];s[i]s[len-i-1];s[len-i-1]ch;} } 题目十六 题目描述 编写函数void oddReverse(char *s),将所有奇数位的字符反转。输入格式 输入一个字符串 s保证输入字符串 s 的长度大于等于1小于等于100输出格式 输出修改后的字符串 s。输入样例1 012345输出样例1 052341输入样例2 01234输出样例2 03214输入样例3 0输出样例3 0 代码实现 int main(){char str[100];scanf(%s,str);int lenstrlen(str);//只有一位奇数位if(len4){return 0;}//两位奇数位及以上//偶数位数情况if(len%20){for(int i1,jlen-1;ij;i2,j-2){char chstr[i];str[i]str[j];str[j]ch;}}//奇数位数情况else{for(int i1,jlen-2;ij;i2,j-2){char chstr[i];str[i]str[j];str[j]ch;}}printf(%s\n,str); } 题目十七 请根据主函数和头文件提示编写子函数void merge(int *arr, int start, int mid, int end); void mergeSort(int *arr, int start, int end); ​ 以实现归并排序。void merge(int *arr, int start, int mid, int end); 将两个已排序的子数组进行合并第一个子数组从下标start开始到下标mid结束第二个子数组从下标mid1开始到下标end结束。 void mergeSort(int *arr, int start, int end); 输入数组arr、起始下标start和结束下标end将arr中从下标start到下标end的子数组进行排序。 代码实现 void merge(int *arr, int start, int mid, int end){int mstart,nmid,pmid1,qend,index0;int b[end-start1];//临时存储数组(可以用malloc之后free掉)while(mn pq){//都没有越界if(arr[m]arr[p]){b[index]arr[m];}else{b[index]arr[p];}}while(mn){//只剩前半段b[index]arr[m];}while(pq){//只剩后半段b[index]arr[p];}for(int istart;iend;i){arr[i]b[i-start];//复制到原数组} }void mergeSort(int *arr, int start, int end){if(startend)//段中元素为1return;else{int mid(startend)/2;//中间位置mergeSort(arr,start,mid);//前半段排序mergeSort(arr,mid1,end);//后半段排序merge(arr,start,mid,end);//两段合并} } 题目十八 题目描述 编写函数void rotate(int ** matrix,int n)将一个n*n的矩阵顺时针旋转90度。输入格式 第一行输入n 后面输入n*n个数字 1n10矩阵中数字非负数输出格式 按照n*n方阵格式输出矩阵输入样例1 3 1 2 3 4 5 6 7 8 9输出样例1 7 4 1 8 5 2 9 6 3输入样例2 1 1输出样例2 1 代码实现 void rotate(int ** matrix,int n){int temp;for(int i0;in/2;i){for(int j0;jn-i-1;j){tempmatrix[i][j];//存储左上角matrix[i][j]matrix[n-1-j][i];//左下角代替左上角matrix[n-1-j][i]matrix[n-i-1][n-j-1];//右下角代替左下角matrix[n-i-1][n-j-1]matrix[j][n-i-1];//右上角代替右下角matrix[j][n-i-1]temp;//原先的左上角代替右上角}} } 题目十九 题目描述 编写函数void myshift(char *s),在不打乱s原本相对位置情况下将偶数位上的字符全部挪到奇数位字符的前面。输入格式 输入一个字符串 s保证输入字符串 s 的长度大于等于1小于等于100输出格式 输出修改后的字符串 s。输入样例1 012345输出样例1 024135输入样例2 01234输出样例2 02413输入样例3 0输出样例3 0 代码实现 int lenstrlen(s);int len10;int len20;char tmp[105];for(int i0;ilen;i){if(i%20){s[len1]s[i];len1;}else{tmp[len2]s[i];len2;}}for(int i0;ilen2;i)s[ilen1]tmp[i]; } 题目二十 题目描述 n (n100)个学生排队报数编号为1到n然后从1数到3循环报数每次数到3的人就退出最后留下来的是编号多少的学生。比如总共4名学生编号为1234。第一次报数1报数12报数23报数34报数13号退出第二次报数1报数22报数34报数12号退出依此类推直到只剩1名学生输出其编号。示例输入1 4示例输出1 1示例输入2 10示例输出2 4 代码实现 int main(){int n,k1,i0;scanf(%d,n);int countn,end;int nums[n];for(int i0;in;i){nums[i]i1;}while(count1){//结束条件只剩一个编号if(nums[i]!0){//未被标记则进行报数nums[i]k;}if(k3){//重置报数k1;}if(nums[i]3){//标记nums[i]0;count--;}i;if(in){//从头进行i0;}}for(int j0;jn;j){if(nums[j]!0){printf(%d\n,j1);break;}} } 题目二十一 题目描述 设计一个程序实现对输入字符串数组按字符串长度进行排序功能。具体要求如下编写函数void sortByLength(char *strArray[], int numStrings);用于对输入的字符串数组 strArray 按字符串长度进行升序排序。在主程序中接受用户输入的字符串数组然后调用函数进行排序。输出排序后的字符串数组。第一行输入字符串数量nn20 第2-n1行输入字符串每个字符串长度小于100说明相同长度的字符串排序按照输入顺序排序示例输入1 4AppleBananaOrangeGrapes示例输出1 AppleBananaOrangeGrapes 代码实现 void sortByLength(char *strArray[], int numStrings){for(int i0;inumStrings-1;i){for(int jnumStrings-1;ji;j--){if(strlen(strArray[j])strlen(strArray[j-1])){char *chstrArray[j];strArray[j]strArray[j-1];strArray[j-1]ch;}}} }int main(){int numStrings;scanf(%d,numStrings);char *strArray[numStrings];char inputString[100];for(int i0;inumStrings;i){scanf(%s,inputString);strArray[i](char*)malloc(sizeof(char)*100);strcpy(strArray[i],inputString);}sortByLength(strArray,numStrings);for(int i0;inumStrings;i){printf(%s\n,strArray[i]);free(strArray[i]);strArray[i]NULL;}free(strArray);} 题目二十二 题目描述 大宝和阿里正在进行一场有趣的翻转游戏。大宝首先写下一个句子而阿里的任务是写出这个句子的翻转版本。期待你能和他们成功完成这个有趣的挑战设计一个程序实现对输入句子中每个单词的反转功能。具体要求如下编写一个函数 ​void reverseWords(char *sentence);​用于对输入句子中的每个单词进行反转。 在主程序中接受用户输入的句子然后调用函数进行单词反转。 输出反转后的句子。 示例输入1 Hello World! Have a nice day.示例输出1 olleH dlroW! evaH a ecin yad.示例输入2 ni hao, wo shi SYSU示例输出2 in oah, ow ihs USYS ​ 提示 使用以下函数需声明#include ctype.h 函数isspace(a)可判断a字符是否为空格函数ispunct(a)可判断a字符是否为标点符号 函数strcspn(s, \n)表示去除数组s中的换行符 代码实现 void reverse(char *sentence,int start,int m){//反转单个单词for(int jstart;jm-jstart;j){char chsentence[j];sentence[j]sentence[m-jstart];sentence[m-jstart]ch;} }void reverseWords(char *sentence){int lenstrlen(sentence);int start0,i;if(len0)return;for(i1;ilen;i){if(isspace(sentence[i]) ispunct(sentence[i-1])){reverse(sentence,start,i-2);// for(int jstart;ji-2-jstart;j){// char chsentence[j];// sentence[j]sentence[i-2-jstart];// sentence[i-2-jstart]ch;// }starti1;//更新反转的起点}else if(isspace(sentence[i]) !ispunct(sentence[i-1])){reverse(sentence,start,i-1);// for(int jstart;ji-1-jstart;j){// char chsentence[j];// sentence[j]sentence[i-1-jstart];// sentence[i-1-jstart]ch;// }starti1;}}//处理末尾if(ispunct(sentence[i-1])){reverse(sentence,start,i-2);// for(int jstart;ji-2-jstart;j){// char chsentence[j];// sentence[j]sentence[i-2-jstart];// sentence[i-2-jstart]ch;// }}else{reverse(sentence,start,i-1);// for(int jstart;ji-1-jstart;j){// char chsentence[j];// sentence[j]sentence[i-1-jstart];// sentence[i-1-jstart]ch;// }}sentence[i]\0;//结束符 } 题目二十三 题目描述 编写一个程序从用户输入中读取两个整数数组 A 和 B然后判断数组 B 是否是数组 A 的子数组。如果是输出 Yes以及B 在 A 中的起始位置如果不是输出 No。 第一行输入数组A的大小 第二行输入数组A 第三行输入数组B的大小 第四行输入数组B 输出结果如果是子数组输出yes以及B 在 A 中的起始位置如果不是输出No示例输入1 5 1 2 3 4 5 3 1 2 3示例输出1 Yes,0示例输入2 10 2 4 5 6 2 6 7 4 21 11 5 3 5 2 5 4示例输出2 No 代码实现 int main(){int m,n;scanf(%d,m);int a[m];for(int i0;im;i){scanf(%d,a[i]);}scanf(%d,n);int b[n];for(int i0;in;i){scanf(%d,b[i]);}int flag1;for(int i0;im-n;i){for(int j0;jn;j){if(a[ij]!b[j]){flag0;break;}if(jn-1){flag1;}}if(flag){printf(Yes,%d\n,i);return 0;}}printf(No\n); } 题目二十四 题目描述 编写一个函数void insertAndSort(int n, int a[], int *size);将n插入到数组a[]中并按从小到大的顺序输出插入新数后的数组a[]。 输入要求 第一行输入要插入的数n 第二行输入数组的元素个数sizesize50 第三行输入数组元素a[i]示例输入1 52 6 32 45 353 24 234 564示例输出1 24 32 45 52 234 353 564示例输入2 846 10 23 543 5657 232 56 767 744 231 351 31示例输出2 23 31 56 231 232 351 543 744 767 846 5657 代码实现 void insertAndSort(int n, int a[], int *size){a[*size]n;//bubble sortfor(int i0;i*size;i){for(int j*size;ji;j--){if(a[j]a[j-1]){int tempa[j];a[j]a[j-1];a[j-1]temp;}}}for(int i0;i*size1;i)printf(%d ,a[i]);printf(\n); }int main(){int n,size;scanf(%d%d,n,size);int a[size1];for(int i0;isize;i)scanf(%d,a[i]);insertAndSort(n,a,size); } 题目二十五 题目描述 请你实现一个函数它将删除一个链表中节点值为 value 的节点如果有的话并将该节点的前后节点如果有的话拼接起来以保持链表的连贯性最后返回链表头如删除后链表为空则返回NULL。 ListNode.h文件中已经给出链表节点 ListNode 以及函数 deleteNodeOfList 的声明请在ListNode.c 中实现该函数。输入输出描述 你无需处理输入和输出只需要实现删除函数即可 输入第一行输入两个数 n value 分别代表链表的节点数和需要删除的值第二行输入n个数表示这个链表的每个节点值 输出删除后的链表的每个节点值如果链表为空则输出 NULL链表节点数 n 范围为 [0, 50] value 以及链表的每个节点的值 val范围为[-100, 100] 保证链表内的节点值两两互不相同 样例输入 1 4 2 1 4 2 3 ​ 样例输出 1 1 4 3 ​ 样例输入 2 1 3 5 ​ 样例输出 2 5 ​ 样例输入 3 0 1 ​ 样例输出 3 NULL ​代码实现 struct ListNode* deleteNodeOfList(struct ListNode* list, int value){if(listNULL)return list;struct ListNode *headlist,*prevlist;if(head-valvalue){headhead-next;free(prev);return head;}struct ListNode *currprev-next;while(curr){if(curr-valvalue){prev-nextcurr-next;free(curr);currprev-next;continue;}prevcurr;currprev-next;} return head; } //递归法 struct ListNode* deleteNodeOfList(struct ListNode* list, int value){if(listNULL)return list;if(list-valvalue){struct ListNode *newheadlist-next;free(list);listnewhead;listdeleteNodeOfList(list,value);}else{list-nextdeleteNodeOfList(list-next,value);}return list;//返回最初的head指针 } 题目二十六 题目描述 请你定义一个结构体表示课程信息它包括课程名、上课时间和下课时间。现在你要编写一个程序输入当天的所有课程然后按照上课时间从早到晚的顺序输出当天课表。输入输出描述 输入第一行为当天课程总数 n接下来 n 行每行有三个值 class_name、start_time 、end_time 分别表示课程名、上课时间和下课时间。 输出按照上课时间从早到晚的顺序输出当天课表输出格式类似 08:00 ~ 09:00 : C_Programing如当天没有课程则输出 QiDong// printf的格式化字符串输出可参考: printf(%02d:00 ~ %02d:00 : %s\n, start_time, end_time, class_name); ​ n 范围为 [0, 20] class_name 是只包含大小写字母以及下划线的字符串长度范围为 [1, 15] 上下课时间都是整数且 6≤ start_time end_time ≤22 保证每门课的上课时间两两互不相同 样例输入 1 5 C_Programing 10 12 English 7 9 Physics 13 15 Calculus 18 19 PE 16 17 ​ 样例输出 1 07:00 ~ 09:00 : English 10:00 ~ 12:00 : C_Programing 13:00 ~ 15:00 : Physics 16:00 ~ 17:00 : PE 18:00 ~ 19:00 : Calculus ​ 样例输入 2 0 0 ​ 样例输出 2 QiDong 代码实现 struct Class{char class_name[20];int start_time;int end_time; };int cmp(const void *a,const void *b){return (*(struct Class*)a).start_time-(*(struct Class*)b).start_time; } int main(){int n;scanf(%d,n);if(n0){printf(QiDong!\n);return 0;}struct Class lesson[n];for(int i0;in;i)scanf(%s%d%d,lesson[i].class_name,lesson[i].start_time,lesson[i].end_time);qsort(lesson,n,sizeof(struct Class),cmp);for(int i0;in;i){printf(%02d:00 ~ %02d:00 : %s\n, lesson[i].start_time,lesson[i].end_time,lesson[i].class_name);} } 题目二十七 题目描述 请对链表排序问题使用归并排序吧从小到大排序尽量不使用数组而在原链表上进行排序。输入描述 第一行为正整数n代表链表节点个数。0 n 200000 第二行为n个数代表链表节点的数值。样例输入 5 5 4 2 1 3 ​ 样例输出 1 - 2 - 3 - 4 - 5 - null ​ 提示 归并排序的实现可能需要使用到以下知识递归 链表拆分 -- 快慢指针 链表合并 -- 尽量使用迭代(递归可能会爆栈)代码实现 struct ListNode {int val;struct ListNode* next; };struct ListNode* mergeSort(struct ListNode* head){if(headNULL || head-nextNULL)return head;struct ListNode *prevNULL;struct ListNode *slowhead,*fasthead;while(fast!NULL fast-next!NULL){prevslow;slowslow-next;fastfast-next-next;}prev-nextNULL;struct ListNode *list1mergeSort(head);struct ListNode *list2mergeSort(slow);return merge(list1,list2); }struct ListNode* merge(struct ListNode* list1, struct ListNode* list2){struct ListNode *head(struct ListNode*)malloc(sizeof(struct ListNode));head-nextNULL;struct ListNode *currhead;while(list1!NULL || list2!NULL){if(list1NULL){curr-nextlist2;currcurr-next;list2list2-next;}else if(list2NULL){curr-nextlist1;currcurr-next;list1list1-next;}else{int val1list1-val;int val2list2-val;if(val1val2){curr-nextlist1;currcurr-next;list1list1-next;}else{curr-nextlist1;currcurr-next;list1list1-next;}}}curr-nextNULL;struct ListNode *reshead-next;free(head);return res; } 题目二十八 题目描述 用链表实现一个栈及相关函数需要实现的函数如下struct Stack* initStack();初始化一个栈返回其指针。 int top(struct Stack* stack);获取栈顶元素若栈为空返回-1。 void push(struct Stack* stack, int val);插入一个元素。 int pop(struct Stack* stack);删除一个元素返回元素值若栈为空返回-1。 int empty(struct Stack* stack);检查栈是否为空若为空返回1若不空返回0。 void freeStack(struct Stack* stack);释放栈的内存。 保证栈中每一个元素val都大于等于0。输入描述 第一行输入正整数n代表程序需要执行的操作数。 接下来n行每行包含字符串s(操作种类)及操作需要的参数。1 n 1000样例输入 15 top empty push 2 push 3 top empty pop push 6 push 7 pop pop pop pop push 9 top ​ 样例输出 top: fail stack empty: true push: 2 push: 3 top: 3 stack empty: false pop: 3 push: 6 push: 7 pop: 7 pop: 6 pop: 2 pop: fail push: 9 top: 9​ 提示 栈 -- 先进后出 代码实现 struct ListNode {int val;struct ListNode* next; };struct Stack {struct ListNode* head; };struct Stack* initStack(){struct Stack *stack(struct Stack*)malloc(sizeof(struct Stack));struct ListNode *head(struct ListNode*)malloc(sizeof(struct ListNode));head-nextNULL;stack-headhead;return stack; }int top(struct Stack* stack){if(stack-headNULL)return -1;elsereturn stack-head-val; }void push(struct Stack* stack, int val){struct ListNode *newnode(struct ListNode*)malloc(sizeof(struct ListNode));newnode-valval;newnode-nextstack-head-next;stack-head-nextnewnode; } int pop(struct Stack* stack){if(empty(stack)) return -1;struct ListNode *headstack-head;struct ListNode *currhead-next;int valcurr-val;head-nextcurr-next;curr-nextNULL;free(curr);return val; }int empty(struct Stack* stack){return stack-head-nextNULL; }void freeStack(struct Stack* stack){struct ListNode *headstack-head;while(head!NULL){struct ListNode *temphead;headhead-next;temp-nextNULL;free(temp);}free(stack); } 暂时写这么多后续复习补充
http://www.pierceye.com/news/269407/

相关文章:

  • 长沙做网站的包吃包住4000网站图片如何做水印
  • wordpress的固定链接怎么设置包头整站优化
  • 瓯海建设网站中国建设劳动协会网站
  • 烟台专业做网站公司有哪些中企动力重庆分公司
  • iis 怎么绑定网站二级目录广东东莞市
  • 运城网站制作公司成crm软件
  • 阿里云网站备案登陆荆州网站开发
  • 06628 网页制作与网站建设深圳建筑人才网为什么电脑打不开
  • 企业网站建设方讯快速建站代理
  • 全面的基础微网站开发wordpress首页插件
  • 陕西省住房和城乡建设厅网站上怎么打印证书中盛客户管理软件
  • html网站标题怎么做的国外免费推广平台有哪些
  • 网站制作com cn域名有什么区别网站制作哪家好
  • 平湖网站设计北京广告公司名录
  • 不良网站进入窗口免费正能量安全的南昌网站制作
  • 商品交换电子商务网站开发网站首页制作公司
  • wordpress全站备份建设网站和推广
  • 广州市官网网站建设哪家好上海营销型网站建设公司
  • 江山网站制作瑞安自适应网站建设
  • 生意网官方网站高端建设网站
  • 公司网站建设南宁腾讯企业邮箱登录入口手机版
  • 简历网站推荐做网站公司是干什么的
  • 网站备案率是什么会展相关app和网站的建设情况
  • 南京网站设计网站建设上海网站域名备案处
  • 做网站市场分析三视觉平面设计网
  • 网站建设中++模板企业网站部署计划
  • 房产部门成立网站wordpress站内搜索次数
  • 网站建设合同管辖地广州敏城建设工程有限公司网站
  • 班级网站主页设计模板购买网站域名空间
  • 做响应式网站最大宽度景观设计公司起名