C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx

上传人:b****3 文档编号:2278505 上传时间:2022-10-28 格式:DOCX 页数:24 大小:24.15KB
下载 相关 举报
C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx_第1页
第1页 / 共24页
C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx_第2页
第2页 / 共24页
C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx_第3页
第3页 / 共24页
C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx_第4页
第4页 / 共24页
C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx

《C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx》由会员分享,可在线阅读,更多相关《C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx(24页珍藏版)》请在冰豆网上搜索。

C二级操作题7一维字符数组元素位置移动及二维字符数组处理.docx

C二级操作题7一维字符数组元素位置移动及二维字符数组处理

二级C机试资料第七课

第七课

教学内容:

一维字符数组元素位置移动及二维字符数组处理类算法

教学目的:

掌握一维字符数组元素位置移动及二维字符数组处理类算法的考题

 

教学内容:

一、一维字符数组元素位置移动及二维字符数组处理类算法的考题特点

此类算法多以填空题和程序设计题为考试形式。

常见考点:

1、一维字符数组元素位置移动。

2、二维字符数组排序,比较大小,连接。

二、课堂练习

第一套

1、程序填空题(字符数组循环左移)

给定程序的功能是把s串中所有的字符前移一个位置,串中的第一个字符移到最后。

例如:

s串中

原有的字符串为:

Mn.123xyZ,则调用该函数后,s串中的内容为:

n.123xyZM。

#include

#defineN81

fun(char*s)

{charb[N];

fprintf(b,"%s%c",s+1,*s);//把从s+1开始的字符串和第一个字符存入数组b中

/**************found**************/

strcpy(___1___);//s,b

}

main()

{chara[N];

printf("Enterastring:

");gets(a);

printf("Theoriginalstringis:

");puts(a);

/**************found**************/

fun(___2___);//a

printf("Thestringaftermodified:

");

/**************found**************/

___3___(a);//puts

}

2、程序改错题(将最大值之前的字符往后移动一个位置,最大值放在第一个位置)

给定程序modi.c中,函数fun的功能是:

在字符串str中找出ASCII码值最大的字符,将其放在

第一个位置上;并将该字符前的原字符向后顺序移动。

例如,调用fun函数之前给字符串输入:

ABCDeFGH,调用后字符中的内容为:

eABCDFGH。

请改正程序中的错误,使它能得出正确结果。

注意:

不要改动main函数。

#include

fun(char*p)

{charmax,*q;inti=0;

max=p[i];//先假设第一个元素是最大值while(p[i]!

=0)

{if(max

/************found************/

 

第1页共15页

二级C机试资料第七课

p=q+i;//q=p+i

}

i++;

}

/************found************/

while(qp

{*q=*(q-1);q--;

}

p[0]=max;

}

main()

{charstr[80];

printf("Enterastring:

");gets(str);

printf("\nTheoriginalstring:

");puts(str);fun(str);

printf("\nThestringaftermoving:

");puts(str);

printf("\n\n");

}

3、程序设计题(向左平移m个字符)

请编写函数fun,函数的功能是:

移动字符串中的内容,移动的规则如下:

把第1到第m个字符平

移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

例如,字符串中原有的内容为:

ABCDEFGHIJK,m的值为3,则移动后字符串中的内容应该是:

DEFGHIJKABC。

注意:

部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数

fun的花括号中填入你编写的若干语句。

#include

#include

#defineN80

voidfun(char*w,intm)

{inti,j,n;chart;n=strlen(w);for(i=0;i

{

t=w[0];

for(j=1;j

w[n-1]=t;

}

}

main()

{chara[N]="ABCDEFGHIJK";intm;

printf("Theoriginalstring:

\n");puts(a);printf("\n\nEnterm:

");scanf("%d",&m);fun(a,m);

第2页共15页

二级C机试资料第七课

printf("\nThestringaftermoving:

\n");puts(a);

printf("\n\n");

}

第二套

1、程序填空题(找最短行及其下标)

给定程序中,函数fun的功能是:

求ss所指字符串数组中长度最短的字符串所在的行下标,作为函

数值返回,并把其串长放在形参n所指变量中。

ss所指字符串数组中共有M个字符串,且串长

在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

#include

#include

#defineM5

#defineN20

intfun(char(*ss)[N],int*n)

{inti,k=0,len=N;/**********found**********/

for(i=0;i<___1___;i++)//M

{len=strlen(ss[i]);

if(i==0)*n=len;//*n记录最短行的长度

/**********found**********/

if(len___2___*n)//<

{*n=len;

k=i;

}

}

/**********found**********/

return(___3___);//k

}

main()

{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};

intn,k,i;

printf("\nTheoriginalstringsare:

\n");

for(i=0;i

k=fun(ss,&n);//k记最短行的下标

printf("\nThelengthofshorteststringis:

%d\n",n);

printf("\nTheshorteststringis:

%s\n",ss[k]);

}

2、程序改错题(找最长行)从N个字符串中找出最长的那个串

给定程序modi.c中,函数fun的功能是:

从N个字符串中找出最长的那个串,并将其地址作为函

数值返回。

各字符串在主函数中输入,并放入一个字符串数组中。

请改正程序中的错误,使它能得出正

确结果。

注意:

不要改动main函数。

#include

#include

#defineN5

#defineM81

/************found************/

 

第3页共15页

二级C机试资料第七课

fun(char(*sq)[M])//char*fun(char(*sq)[M])

{inti;char*sp;

sp=sq[0];//先假设第0行为最长的行,sq[0]*(sq+0)表示&str[0][0]

for(i=0;i

if(strlen(sp)

sp=sq[i];

/************found************/

returnsq;//sp

}

main()

{charstr[N][M],*longest;inti;

printf("Enter%dlines:

\n",N);for(i=0;i

\n",N);

for(i=0;i

printf("\nThelongeststring:

\n");puts(longest);

}

3、程序设计题(比较两个字符串的长度)

请编写一个函数fun(),它的功能是:

比较两个字符串的长度,(不得调用C语言提供的求字符串长

度的函数),函数返回较短的字符串。

若两个字符串长度相等,则返回第1个字符串。

例如,输入nanjing

nanchang为回车键),函数将返回nanjing。

注意:

部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

char*fun(char*s,char*t)

{inti,m=0,n=0;for(i=0;s[i]!

='\0';i++)

m++;//记s串的长度

for(i=0;t[i]!

='\0';i++)

n++;//记t串的长度

if(m<=n)

returns;

else

returnt;

}

main()

{chara[20],b[10],*p,*q;inti;

printf("Input1thstring:

");gets(a);

printf("Input2thstring:

");gets(b);

printf("%s",fun(a,b));

}

第三套

 

第4页共15页

二级C机试资料第七课

1、程序填空题(字符串排序)用冒泡法对6个字符串进行排序

给定程序功能是用冒泡法对6个字符串进行排序。

#include

#defineMAXLINE20

fun(char*pstr[6])//pstr是指针数组,实质为二级指针变量

{inti,j;

char*p;

for(i=0;i<5;i++)

{for(j=i+1;j<6;j++)

{

/**************found**************/

if(strcmp(*(pstr+i),___1___)>0)//*(pstr+j)

{p=*(pstr+i);

/**************found**************/

pstr[i]=___2___;//*(pstr+j)

/**************found**************/

*(pstr+j)=___3_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1