下列程序的功能是;把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(
下列程序的功能是;把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调用函数readwriteDat()把结果输出到out63.dat文件中。
例如;s字符串中原有内容为Mn,123xyZ,则调用该函数后,结果为n,123xyZM。
注意:部分源程序已给出。
请勿改动主函数main()和输入输出函数readwriteDAT()的内容。
试题程序:
include<conio.h>
include<stdio.h>
define N 81
void readwriteDAT();
void chg(char *s)
{
}
main ( )
{
char a [N];
clrscr ( );
printf("Enter a string :");
gets (a);
printf("The original string is :");
puts (a);
chg (a);
printf("The string after modified :");
puts (a);
readwriteDAT ( )
}
void readwriteDAT ()
{
int i;
char a [N];
unsigned char *p;
FILE *rf,*wf;
rf=fopen("in63.dat","r");
wf=fopen("out63.dat","w");
for(i=0;i<10;i++)
{
fgets(a,80,rf);
p=strchr(a,'\n');
if(p) *p=0;
chg(a);
fprintf(wf,"%s\n",a);
}
fclose(rf);
fclose(wf);
}
void chg(char*s) { int i,strl; char ch; strl=strlen(s); /*求字符串的长度*/ ch=*s; /*将第一个字符暂赋给ch*/ for(i=0;istrt-1/i++) /*将字符依次左移*/ *(s+i)=*(S+i+1); *(s+strl-1)=ch; /*将第一个字符移到最后*/ } 解析:本题考查的知识点如下:
(1)数组中元素的移动。
(2)指针的使用。
我们可以使用一个循环实现数组中所有字符元素的左移。这里要注意的是第1个字符要移至最后1个字符处,所以首先要将第1个字符保存。在移动时,要从左到右依次移动,否则,左侧的字符会在移动前被其右侧的字符覆盖。在这里使用了指针,初始时,指针指向数组的第1个元素,随着地址的增加指针指向数组后面的元素。例如,若地址加2,则指向数组的第3个元素。
P217、教室中一个拉线开关控制着三盏日光灯,那么这三盏日光灯[]A.一定是并联的;B.一定是串联 物理 2020-04-27 …
如图长方体ABCD-A′B′C′D′有个面,条棱,个顶点.与棱AB垂直相交的棱有条,与棱AB平行的 数学 2020-05-21 …
串的长度是指A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含 计算机类考试 2020-05-24 …
若有字符串“software”,则其长度为3的子串有()个。 计算机类考试 2020-05-26 …
如图,B是直线l上的一点,线段AB与l的夹角为α(0°<α<180°),点C在l上,若以A、B、C 数学 2020-07-18 …
A、B、C三人各有苹果若干,要求互相赠送,先由A给B、C,所给的苹果数等于B、C原来各有的苹果数; 数学 2020-07-22 …
分析图表,回答有关问题.(1)图中B是,F是,G是.(2)1个A与C有两种比例关系:或,每个C含有个 语文 2020-11-01 …
串的长度是()A.串中不同字母的个数B.串中不同字符的个数C.串中所含字符的个数,且大于串的长度是( 其他 2020-11-07 …
C#找两个字符串相同的部分有两个字符串:a:/1/2/3/4/5/6/7/8/9/10/11/12/ 英语 2020-11-07 …
下列句中加点的成语或熟语使用不正确的一项是()A.他怒不可遏地扬起手往桌上一拍霍地站了起来。B.全校 语文 2020-11-26 …