




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 请补充函数fun,该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,其长度作为参数传入函数fun。 函数fun,用for一个个查找,函数中参数的长度决定了if判断满足条件:%2=0,就使得下一个字符串的内容复制到当前字符。然后s+,接着在赋值。例如,输入abcdef,输出ace。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #define N 80(1) void fun(char s,int n) (2) j=0 (3) sj=0 【1】从下面的main函数里函数调用可得到格式定义。 int i, j; 【2】; for (i=0;in;i+)这里n是数组的长度。即控制了条件。 if(si%2!=0) 不为偶数就放入s数组里。sj+=si; 【3】; sj=0。给数组的最后一个字符赋值结束标志。删除部分元素可以给sj重新赋值。最后给s加上结束标志。void main() int i=0, strlen=0; char strN;定义一个数组。 system(CLS); printf(nInput a string:n); gets(str);输入的字符串放入str中。 while(stri!=0)从第一个开始到最后。 strlen+;用来计算字符串长度。i+; fun(str, strlen);从调用结果可知,我们的fun函数是一个没有返回值类型的函数,第一个参数为地址,装str的地址,第二个为长度,定义一个int型的变量。 printf(n* display string *n); puts (str);【考点分析】 本题考查:函数定义,需要确定类型标识符、函数名和形式参数。变量初始化,变量声明后,要进行初始化赋值,我们对变量进行初始化时,必须确定好变量的作用。字符串结束标识0,用来结束字符串,是经常考查的知识点。 【解题思路】 填空1:由main函数调用函数fun的格式可以知道,函数fun没有返回值,第一个参数是字符数组,第二个参数是整型变量。 填空2:变量j声明时,没有初始化,所以在使用j之前要将它初始化为0。 填空3:当把所有ASCII码为偶数的字符都存入字符串s中后,要在最后加上0,表示字符串的结束。2. 请补充main函数,该函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。结果仍然保存在原串中。 例如,输入abcdef,指定字符为e,则输出abcd。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #define N 80void main() int I=0;控制循环。 char strN; char ch; system(CLS); printf(n Input a string:n); gets(str);输入字符串 printf(n Input a charator;n); scanf(%c, &ch);给定删除字符. while(strI!=0)从循环里开始查找. if(strI=ch)如果不相等就继续循环什么不执行相等到赋值。【1】跳出while循环以后直接在给该字符赋予结束标志。【2】;使查找往下。 strI=【3】; 给当前字符赋予字符串结束标志。 printf(n* display string *n); puts(str);(1) break; (2) i+或+i或i+=1或i=i+1 (3)0 删除某元素后面的元素可以直接在其后加上结束标志符。【考点分析】 本题考查:break语句,通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行以后的语句。当break语句用于for、while、do-while循环语句时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句一起使用,即满足条件时便跳出循环;字符串结束标识0,上机考试时经常考查。 4. 下列给定程序中,函数fun的功能是:删除字符串s中所有空白字符(包括Tab符、回车符及换行符)。输入字符串时用#结束输入。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include fun(char *p) int i, t; char c80; for(i=0,t=0;pi;i+)只要不为结束标志往下。 if(!isspace(*(p+i) ct+=pi;当满足条件时因此给c赋值。 ct=0; strcpy(p,c);由于把字符c中的内容给p则说明字符给了c。采用isspace判断是否空格什么换行符。然后如果不是就赋值给新串。最后strcpy到原串。void main()char c,s80; int i=0; printf(Input a string: ); c=getchar();得到第一个字符。 while(c!=#)只要不为结束符号。 si=c;i+;c=getchar();这个字符给字符串往下直接得到字符。 si=0;最后给上结束标志。 fun(s);函数调用。 puts(s); (1)错误:ct=0; 正确:ct=0;字符串结束标识0, 0属于一个字符,其ASCII码为0。【解题思路】 该程序的if条件中应用了isspace函数,该函数的功能是检查ch是否空格、跳格符(制表符)或换行符。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0(ASCII码为0),这是字符串结束的标志。5. 请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 3 4 4 5 6 67 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #define N 80int fun(int a, int n) int i,j=1; i=1.j=1.a0=a1.不执行.i+=2.a0!=a2.a1=a2=3;i+=3. for(i=1;in;i+) j+=2.这时候不同数字的个数有两个.2和3. if(aj-1!=ai) aj+=ai; /*若该数与前一个数不相同,则要保留*/ return j; /*返回不同数的个数j+是个数。下标从0开始到j*/ void main() FILE *wf; int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10, i, n=20; printf(The original data :n); for(i=0; in; i+) printf(%3d,ai); n=fun(a,n); printf(nnThe data after deleted :n); for(i=0; in; i+) printf(%3d,ai); printf(nn); wf=fopen(out.dat,w); for(i=0; in; i+) fprintf(wf,%3d,ai); fclose(wf);6. 给定程序的功能是:将未在字符串s中出现而在字符串t中出现的字符,形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,但去掉重复字符。 例如,当s=1 2345,t=24677时,u中的字符为67。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include void fun(char *s,char *t,char *u) int I,j,s1,t1,k,u1=0; s1=strlen(s);s1记录s字符串的长度。 t1=strlen(t);t1记录t字符串的长度。 for(I=0;It1;I+) 从t第一个字符串开始逐个字母查。 for(j=0;j=s1) 就是t中出现s未出现的 for(k=0;k=u1)uu1+=【2】; 把当前字符串赋值给u。 填空2:当判断没有重复字符时,填入u字符串。 【3】=0;最后给u字符串赋值结束标志。(1) break (2) ti (3) uu1查找某个字符在某两个字符串中出现否可以固定一个素组元素然后对另外一个素组的元素逐个查找相等跳出不等赋值。main() char s100,t100,u100; printf(nPlease enter string s: ); scanf(%s,s); printf(nPlease enter string t: ); scanf(%s,t); fun(s,t,u); printf(The result is:%sn,u); 【解题思路】 填空1:根据题意可知, 新形成的字符串u中要去掉重复字符,所以当判断出有重复字符时,应立即结束循环。 填空3:当全部判断完成后,给字符串u加入结束符0。3. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是A*BC*DEF*G*。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun (char *a)没有返回值因此需要通过地址和*访问数组。 char *p=a; while(*p=*) p+; 使得指针p计算到前面*,并且指向第一个字符。 for(;*p!=0;p+,a+) 只要没结束,当前所指字符赋与数组a。 *a=*p; *a=0; /*在字符串最后加上结束标记符*/ 如果要删除前部分*号可以用另外一个指针指向需要保留的首元素然后在接着赋值到原串即可。#include void fun(char *a) char *p=a; while(*p=*) p+; strcpy(a,p); void main() FILE *wf; char s81,t81=*A*BC*DEF*G*; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n);puts(s); wf=fopen(out.dat,w); fun(t); fprintf(wf,%s,t); fclose(wf); 7. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是*ABCDEFG。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(char *a) 接收到这个字符数组的首地址。 如果前面一个为字符。后面一个为星号就把星号后的字符内容放入前面元素。 int i=0; char *p=a; p指向了a数组第一个元素。 while(*p&*p=*) *p是星号不是结束标志。 ai=*p;i+;p+; a数组赋予原值。i和p都向后移动。 while(*p) 当*p不再是星号并且不是结束标志而是字母时 if(*p!=*) 当所指元素内容不是星号。 ai=*p;i+; 就为原值同时a数组元素继续增加但是p指向字母。 p+; 当元素是星号时。p往后移动指向了字母。 ai=0; 最后赋予结束标志符。(1)定义一个临时指针p,初始指向原串首地址;(2) 利用循环把字符串前导*号拷贝到原串;(3) 继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结尾字符 ackslash 0。void main() char s81; FILE *out; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n); puts(s); out=fopen(out.dat,w); strcpy(s,*A*BC*DEF*G*); fun(s); fprintf(out,%s,s); fclose(out);8. 请编写一个函数,用来删除字符串中的所有空格。 例如,输入asd af aa z67,则输出为asdafaaz67。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include voidfun (char *str)前面一个为空格后面一个为字符就把字符赋值给前面元素。接收到字符串首地址。 int i=0; char *p=str; p指向字符串 while(*p) 只要不为结束标志。 if(*p!= )/*删除空格*/ 如果当前字符不为空格是字符。 stri=*p; i+; 赋给原值。I+往素组后面走一个元素到达空格的话。 p+; stri=0; /* 加上结束符*/ main() char str81; char Msg=Input a string:; int n; FILE *out; printf(Msg); gets(str); puts(str); fun(str); printf(* str: %sn,str); out=fopen(out.dat,w); fun(Msg); fprintf(out,%s,Msg); fclose(out);9. 请编写函数fun,该函数的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数、字符2的ASCII码值为偶数、,都应当删除,其他依次类推。最后t所指的数组中的内容应是ACEG135。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 删除偶数。我们就赋值奇数。试题程序: #include#include#include#includevoid fun(char *s, char t)没有返回值的函数只能通过地址访问s和t。 int i=0; i控制循环。 for(;*s!=0;s+) 只要没有到达结束标志。 if(*s%2=1)满足ascll值为奇数。 ti+=*s; 为奇数的字符依次存入数组t中*/ ti= 0; /*在字符串的末尾加上串结束符*/ void main() FILE *wf; char s100,t100; system(CLS); printf(nPlease enter string S: ); scanf(%s,s); fun(s,t); printf(nThe result is :%sn,t); wf=fopen(out.dat,w); fun(ABCDEFG12345,t); fprintf(wf,%s,t); fclose(wf);10. 请编写一个函数void fun (char a , charb , int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define LEN 20void fun (char a , char b , int n) int i,k=0; 找n我们就把不是n的内容放入b。 for(i=0;ai!=0;i+) if(i!=n) /*将不是指定下标的字符存入数组b中*/ bk+=ai; bk=0; /* 在字符串最后加上结束标记*/ void main ( ) FILE *wf; char strlLEN, str2LEN; int n ; system(CLS); printf (Enter the string : n) ; gets (strl) ; printf (Enter the position of the string deleted: ) ; scanf (%d, &n) ; fun (strl, str2, n) ; printf (The new string is : %s n, str2) ; wf=fopen(out.dat,w); fun(world,str2,3); fprintf(wf,%s,str2); fclose(wf);【考点分析】 本题考查:删除字符串中指定字符,对于此类题目,我们一般采用保留非指定字符的操作。 11. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容应当是*ABCDEFG*。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(char *a,char *h,char *p) 字符串a的地址h指向头字母p指向尾字母 int i=0; char *q=a; while (qh) /*判断前导*的结束*/ ai=*q;q+;i+; while (qp) /*删除除了字符串中间的*/ if(*q!=*) ai=*q;i+; q+; while (*q) ai=*q;i+;q+; ai=0; main () char s81,*t,*f;FILE *out;printf(Entre a string:n);gets(s);t=f=s;while(*t)t+;t-;while(*t=*)t-;while(*f=*)f+;fun(s,f,t);printf(The sting after deleted:n);puts(s);out=fopen(out.dat,w);strcpy(s,*A*BC*DEF*G*);fun(s,s+4,s+13);fprintf(out,%s,s);fclose(out);【考点分析】 本题考查:while循环条件;指针型变量。 【解题思路】 这类题最重要的就是要选择好判断条件,首先是判断前导*的结束,然后判断是否指向最后一个字母,最后补充尾部*,只要思路对了就可正确解答。 12. 请补充main函数,该函数的功能是:从键盘输入一组字符串,以*结束输入,并显示出这个字符串。 例如,输入abcdefghi*,结果显示adcdefghi。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define N 80void main() int i=-1,j=0; char strN; system(CLS); printf(n Input a string n); do i+;scanf(【1】); (1) %c ,&stri while(【2】); (2) stri!=* printf(n*display the string* n); while(ji) printf(【3】); (3) %c, strj j+; 【考点分析】 本题考查:scanf( )函数和printf( )函数,掌握其一般形式。while循环语句,一般根据题意判断循环条件。 【解题思路】 填空1:本题考查对标准输入函数scanf( )的掌握,因为输入的是字符,所以格式控制符为%c,并将输入的字符存于数组str中,需要注意的是在地址表列中,要在数组元素stri前加上取址符&。 填空2:由于输入的字符串以*号结束,所以只要输入的字符不是*号,就继续输入,即do-while循环继续执行。 填空3:本题考查对标准输出函数printf( )的掌握,因为输出的为字符,所以格式控制符为%c。 13. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中前部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,字符串中的内容为*A*BC*DEF*G*,若n的值为2,删除后,字符串中的内容则应当是*A*BC*DEF*G*;若n的值为4,则字符串中的内容仍为*A*BC*DEF*G*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(char *a,int n ) int i=0, k=0; char *p, *t; p=t=a; /*开始时,p与t同时指向数组的首地址*/ while(*t=*) /*用k来统计前部星号的个数*/ k+;t+; t运行到第一个字母处k记录了有多少个星号。if(kn) 我们要留下n个星号。首先要让指针指向字母头,在让p+k往后退n个位置。 while(*p) 接着把剩余的东西一起赋值给a字符串即可。 ai=*(p+k-n); 留下n个*号然后把后面的字符串逐个移植。 i+; p+; ai=0; /*在字符串最后加上结束标志位*/ void main() FILE *wf; char s81,t81=*A*BC*DEF*G*; int n; printf(Enter a string : n); gets(s); printf(Enter n : ); scanf(%d, &n); fun(s, n); printf(The string after deleted: n); puts(s); wf=fopen(out.dat,w); fun(t,2); fprintf(wf,%s,t); fclose(wf);【解题思路】 while( )循环的作用是计算出前部星号的个数;if( )的作用是判断星号是否多于n个,若是则只保留n个星号,即从字符串前部的倒数第n个星号开始,到最后一个字符都存入数组a中,最后记得在字符串末尾加上结束标志位。13. 假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 例如,若字符串中的内容为*A*BC*DEF*G*,移动后,字符串中的内容应当是A*BC*DEF*G*。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(char *a)void fun(char *a) int i=0,n=0; char *p; p=a; p用作指向指针。 while (*p=*) /*并统计前面*号的个数后*/ n+;p+; while(*p) /*顺便就将所指的内容赋值给a*/ ai=*p;i+;p+; while(n!=0) 等到运行到结束标志符处的时候就接着n赋值*号。 ai=*;i+;n-; ai=0; main () char s81,*p;FILE *out;char test480=*A*BC*DEF*G*,A*B*CD*EF*G*,*A*G*,*d*b*a*e*;int i;printf(Enter a string:n);gets(s);fun(s);printf(The string after moveing:n);puts(s);out=fopen(out.dat,w);for(i=0;i4;i+) fun(testi);fprintf(out,%sn,testi); fclose(out); 【考点分析】 本题考查:移动字符串中指定字符的位置,一般采取while循环语句和指针型变量来完成。 【解题思路】 函数fun的功能是将字符串中的前导*号全部移到字符串的尾部。本题解题思路:(1)定义一个指针并指向字符串的首地址;(2)利用循环语句找出字符串的前导*号的个数n;(3)利用循环语句把剩余的字符拷贝到另一个字符串中;(4)在字符串的末尾接上n个*号。14. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言中提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是ABCDEFG。 要删除星号我们就将不是星号的内容赋值。注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include#includevoid fun(char *a) 接收到a的首地址。 int i,j=0; for(i=0;ai!=0;i+) 从第一个开始到最后一个元素。 if(ai!=*) 只要不为星号。 aj+=ai;就让当前元素赋值给aj是星号则不执行然后i+。 aj=0; /*最后加上字符串结束符0*/ void main() FILE *wf; char s81,p81=*A*BC*DEF*G*; printf(Enter a string:n); gets(s); fun(s); printf(The string after deleted:n); puts(s); wf=fopen(out.dat,w); fun(p); fprintf(wf,%s,p); fclose(wf); 【考点分析】 本题考查:for语句;if条件表达式;如何遍历字符串。 【解题思路】 我们在前面也碰到过同样的问题,本题中是删除多余字符(*),所以用循环从字符串的开始往后逐个进行比较,若不是要删除的字符(用if(ai!=*)来控制)则保留。注意下标变量j要从0开始,最后还要加上字符串结束符0。14. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是*A*BC*DEF*G。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun (char *a) 如果删除尾部的星号就先让指针往移动到末尾。然后在 while(*a!=0) 向前退到不为星号的地方加上结束标志符。 a+; a-; /*指针a指向字符串的尾部*/ while(*a=*) a-; /*指针a指向最后一个字母*/ *(a+1)= 0; /*在字符串最后加上结束标志位*/ void main() FILE *wf; char s81,t81=*A*BC*DEF*G*; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n); puts(s); wf=fopen(out.dat,w); fun(t); fprintf(wf,%s,t); fclose(wf);【解题思路】 删除字符串尾部*号的主要思想就是把不删除的字符保留起来。15. 请补充main函数,该函数的功能是:把字符串str1中的非空格字符拷贝到字符串str2中。 例如,若str1=glad to see you!,则str2=gladtoseeyou!。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define N 80void main() (1) str1i!= (2) i+ static char str1N=glad to see you!; char str2N; int I=0,j=0; system(CLS); printf(n* str1*n ); puts(str1); while(str1I) if(【1】) str2j+=str1I; 【2】; printf(n* str2 *n ); for(I=0;Ij;I+)printf(%c,str2I);【解题思路】 填空1:如果当前字符不为空格,则将它保存在字符串str2中。 填空2:在while循环中,通过i+取得字符串str1中当前字符的下一个字符,继续判断是否为空格。 16. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是A*BC*DEF*G。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun (char *a,int n ,int h , int e) int i,j=0; for(i=h;in-e;i+) /*第一个字母和最后一个字母之间的字符全不删除*/ aj+=ai; 即可将中间元素内容赋值。 aj=0; /*在字符串最后加上结束标记*/ void main() FILE *wf; char s81,*t,*f; char p81=*A*BC*DEF*G*; int m=0,tn=0, fn=0; printf(Enter a string :n); gets(s); t=f=s; while(*t) t+;m+; /*m为字符串的长度*/ t-; /*指针t指向字符串尾部*/ while(*t=*) t-;tn+; /*指针t指向最后一个字母,tn统计尾部*的个数*/ while(*f=*) f+;fn+; /*指针f指向第一个字母,fn统计前导*的个数*/ fun( s, m, fn, tn); printf(The string after deleted:n); puts(s); wf=fopen(out.dat,w); fun(p,21,4,7); fprintf(wf,%s,p); fclose(wf);【解题思路】 注意循环变量i的初值(h)和终止值(n-e),由于h和e分别表示a中的前导*号和尾部*号的个数,n是字符串的长度,所以从ah到an-e-1之间的所有字符都要保留,而其他字符均删除。删除操作(即留下相应字符)现已由循环完成。 本题技巧部分: void fun(char *a,int n,int h,int e ) an-e=0; strcpy(a,a+h); 中间字符复制过去。另外请注意,an-e的作用是在最后一个字母后加上字符串结束符。本程序采用了strcpy( )库函数。假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容应当是ABCDEFG*。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include#includevoid fun(char *a,char *p) char *t=a; t用来控制字符串移动。 for(;t=p;t+) /*将最后一个字母p之前的字母留下来*/ if(*t!=*) *(a+)=*t; for(;*t!=0;t+) *(a+)=*t; /*将p以后的内容赋值*/ *a=0; /*在字符串最后加上结束标记位*/ voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《谁画的鱼最大》课件
- 颅内高压危象和脑疝护理
- 亲子沟通课件
- 亲子行李箱课件
- 亲子安全培训课件
- 自动双层停车场控制系统设计
- 腾讯会议录制讲解方法
- 公司级安全培训经验课件
- 新入职怎么写年终总结
- 腹股沟斜疝术后护理查房
- 湿地巡护员培训课件
- 2025鄂尔多斯市城市建设投资集团招聘92人考试参考题库及答案解析
- 2025年地质实验室技术员综合素质考核试卷及答案解析
- 小班海浪滚滚课件
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 2025年全国企业员工全面质量管理知识竞赛题库及答案(共132题) - 副本
- 会计学全套课件第一学期公开课一等奖省优质课大赛获奖课件
- 公开课第一课素描基础入门课件
- 新旧西藏的对比(分析“西藏”)共22张课件
- 杭州市主城区声环境功能区划分图
- 门机防腐施工方案
评论
0/150
提交评论