1、C二级操作题7一维字符数组元素位置移动及二维字符数组处理二级 C 机试资料 第七课第七课教学内容: 一维字符数组元素位置移动及二维字符数组处理类算法教学目的: 掌握一维字符数组元素位置移动及二维字符数组处理类算法的考题教学内容:一、一维字符数组元素位置移动及二维字符数组处理类算法的考题特点此类算法多以填空题和程序设计题为考试形式。常见考点:1、一维字符数组元素位置移动。2、二维字符数组排序,比较大小,连接。二、课堂练习第一套1、程序填空题 (字符数组循环左移)给定程序的功能是把 s 串中所有的字符前移一个位置,串中的第一个字符移到最后。 例如: s 串中原有的字符串为: Mn.123xyZ ,
2、则调用该函数后, s 串中的内容为: n.123xyZM 。#include #define N 81fun ( char *s ) char bN ;fprintf(b, %s%c, s + 1, *s) ; / 把从 s+1 开始的字符串和第一个字符存入数组 b 中/*found*/strcpy(_1_) ; /s,bmain( ) char a N ;printf ( Enter a string : ); gets ( a );printf ( The original string is : ); puts( a );/*found*/fun ( _2_ ); /aprintf (
3、The string after modified : );/*found*/_3_ ( a ); /puts2、程序改错题( 将最大值之前的字符往后移动一个位置,最大值放在第一个位置 )给定程序 modi.c 中,函数 fun 的功能是:在字符串 str 中找出 ASCII 码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。 例如,调用 fun 函数之前给字符串输入:ABCDeFGH ,调用后字符中的内容为: eABCDFGH 。 请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数。#include fun(char *p) char max,*q;
4、 int i=0;max=pi; /先假设第一个元素是最大值 while (pi!=0)if (max pi) max=pi;/*found*/第1页共15页二级 C 机试资料 第七课p=q+i ; / q=p+ii+;/*found*/while ( qp*q=*(q-1); q-;p0=max;main() char str80;printf(Enter a string:);gets(str);printf(nThe original string:); puts(str); fun(str);printf(nThe string after moving:); puts(str);pr
5、intf(nn);3、程序设计题( 向左平移 m个字符 )请编写函数 fun ,函数的功能是:移动字符串中的内容,移动的规则如下:把第 1 到第 m 个字符平移到字符串的最后,把第 m+1 到最后的字符移到字符串的前部。 例如,字符串中原有的内容为:ABCDEFGHIJK , m 的值为 3,则移动后字符串中的内容应该是: DEFGHIJKABC 。注意:部分源程序存在文件 prog.c 中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。#include #include #define N 80void fun(char *w, int
6、m) int i,j,n; char t; n=strlen(w); for(i=0;im;i+)t=w0;for(j=1;jn;j+) wj-1=wj;wn-1=t;main() char aN= ABCDEFGHIJK; int m;printf(The original string:n);puts(a); printf(nnEnter m: );scanf(%d,&m); fun(a,m);第2页共15页二级 C 机试资料 第七课printf(nThe string after moving:n);puts(a);printf(nn);第二套1、 程序填空题( 找最短行及其下标 )给定
7、程序中,函数 fun 的功能是:求 ss 所指字符串数组中 长度最短 的字符串所在的行下标,作为函数值返回, 并把其串长放在形参 n 所指变量中。 ss 所指字符串数组中共有 M 个字符串, 且串长 N 。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#include #include #define M 5#define N 20int fun(char (*ss)N, int *n) int i, k=0, len= N; /*found*/for(i=0; i _1_; i+) / Mlen=strlen( ssi );if(i=0) *n=len; / *n
8、记录最短行的长度/*found*/if(len _2_ *n) / *n=len;k=i;/*found*/return(_3_); / kmain() char ssMN=shanghai,guangzhou,beijing,tianjing,chongqing;int n,k,i;printf(nThe original strings are :n);for(i=0;i M;i+) puts( ssi );k=fun(ss,&n); /k 记最短行的下标printf(nThe length of shortest string is : %dn,n);printf(nThe shorte
9、st string is : %sn, ssk );2、程序改错题 (找最长行 ) 从 N 个字符串中找出 最长 的那个串给定程序 modi.c 中,函数 fun 的功能是:从 N 个字符串中找出 最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数。#include #include #define N 5#define M 81/*found*/第3页共15页二级 C 机试资料 第七课fun(char (*sq)M) / char *fun( char (*sq)M ) int i;
10、 char *sp;sp=sq0; /先假设第 0 行为最长的行 , sq0 *(sq+0) 表示 &str00for(i=0;i N;i+)if( strlen(sp) strlen( sqi ) )sp=sqi;/*found*/return sq; /spmain() char strNM, *longest ; int i;printf(Enter %d lines :n,N); for (i=0;i N;i+) gets(stri); printf(nThe N string :n,N);for (i=0;i N;i+) puts(stri); longest=fun(str);pr
11、intf(nThe longest string:n);puts(longest);3、程序设计题( 比较两个字符串的长度 )请编写一个函数 fun() ,它的功能是:比较两个字符串的长度, (不得调用 C 语言提供的求字符串长度的函数),函数返回较短 的字符串。 若两个字符串长度相等, 则返回第 1 个字符串。 例如,输入 nanjing nanchang ( 为回车键),函数将返回 nanjing 。注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中填入所编写的若干语句。#includechar *fun (char *s, cha
12、r *t) int i,m=0,n=0; for(i=0;si!=0;i+)m+; / 记 s 串的长度for(i=0;ti!=0;i+)n+; / 记 t 串的长度if(m=n)return s;elsereturn t;main() char a20,b10,*p,*q; int i;printf(Input 1th string: ); gets(a);printf(Input 2th string: ); gets(b);printf(%s,fun(a,b);第三套第4页共15页二级 C 机试资料 第七课1、程序填空题 (字符串排序 ) 用冒泡法对 6 个字符串进行排序给定程序功能是用冒泡法对 6 个字符串进行排序。#include #define MAXLINE 20fun ( char *pstr6) / pstr 是指针数组 , 实质为二级指针变量 int i, j ;char *p ;for (i = 0 ; i 5 ; i+ ) for (j = i + 1; j 0) /*(pstr+j)p = *(pstr + i) ;/*found*/pstri = _2_ ; /*(pstr + j)/*found*/*(pstr + j) = _3_
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1