资源描述
三级数据库技术机试 -274( 总分: 100.00 ,做题时间: 90 分钟 )一、上机题( 总题数: 1,分数: 100.00)1.下列程序的功能是;把 s 字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数 chg(char*s) 实现程序要求,最后调用函数 readwriteDat() 把结果输出到 out63.dat 文件中。例如;s字符串中原有内容为 Mn, 123xyZ,则调用该函数后,结果为 n, 123xyZM。 注意:部分源程序已给出。请勿改动主函数 main() 和输入输出函数 readwriteDAT() 的内容。试题程序:#include #include #define N 81void 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);分数: 100.00 ) 正确答案: (void chg(char*s)int i, strl ;char ch ; strl=strlen(s) ; /* 求字符串的长度 */ ch=*s ; /* 将第一个字符暂赋给 ch*/ for(i=0 ; i strt-1/i+)/*将字符依次左移 */*(s+i)=*(S+i+1);*(s+strl-1)=ch ; /* 将第一个字符移到最后 */)解析: 解析 本题考查的知识点如下:(1) 数组中元素的移动。(2) 指针的使用。我们可以使用一个循环实现数组中所有字符元素的左移。这里要注意的是第1 个字符要移至最后 1 个字符处,所以首先要将第 1 个字符保存。在移动时,要从左到右依次移动,否则,左侧的字符会在移动前被其 右侧的字符覆盖。在这里使用了指针,初始时,指针指向数组的第1 个元素,随着地址的增加指针指向数组后面的元素。例如,若地址加 2 ,则指向数组的第 3 个元素。
展开阅读全文