1、三级数据库技术机试-274 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是;把 s 字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调用函数 readwriteDat()把结果输出到 out63.dat 文件中。例如;s 字符串中原有内容为 Mn,123xyZ,则调用该函数后,结果为 n,123xyZM。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#includeconio.h#includes
2、tdio.h#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;r
3、f=fopen(“in63.dat“,“r“);wf=fopen(“out63.dat“,“w“);for(i=0;i10;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)_三级数据库技术机试-274 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是;把 s 字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数chg(char*s)实现程序要求,最后调
4、用函数 readwriteDat()把结果输出到 out63.dat 文件中。例如;s 字符串中原有内容为 Mn,123xyZ,则调用该函数后,结果为 n,123xyZM。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#includeconio.h#includestdio.h#define N 81void readwriteDAT();void chg(char *s)main ( )char a N;clrscr ( );printf(“Enter a string :“);gets (a);printf(“The or
5、iginal 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;i10;i+)fgets(a,80,rf);p=strchr(a,/n);if(p) *p=0;chg(a);fprintf(wf,“%s/n“,a)
6、;fclose(rf);fclose(wf);(分数:100.00)_正确答案:(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 个元素。