1、程序设计/*请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。试题程序:*/#include #define N 80int fun(char str) /*Begin*/ /* End */void main() char sN; FILE *out; char test80=1234321,123421,123321,abcdCBA; int i; printf(Enter a string : ); gets(s); p
2、rintf(nn); puts(s); if(fun(s)printf(YESn); elseprintf(NOn); /*/ out=fopen(debugout12.dat,w); for(i=0;i4;i+) if(fun(testi)fprintf(out,YESn);elsefprintf(out,NOn); fclose(out); /*/【参考代码】int fun(char str) int i,n=0,fg=1,j=0; while (strj) n+; j+; for(i=0;in/2;i+) /*循环比较字符*/ if(stri=strn-1-i); /*相同,什么都不作*
3、/ else /*不同,直接跳出循环*/ fg=0; break; return fg; /*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。 试题程序:*/#include#include#define N 80int fun(char *s) /*Begin*/*End*/void main() FILE *wf; char lineN; int num=0; printf(Enter a string:n ); gets(line); num=fun(line
4、); printf(The number of word is:%dnn ,num);/*/ wf=fopen(d:out19.dat,w); fprintf(wf,%d,fun(This is a big car); fclose(wf);/*/【参考代码】 int i,j=0; for(i=0;si!=0;i+) if(si!= &(si+1= |si+1= 0)/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/ j+; return j;/*返回单词个数*/ /*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号
5、全部删除。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字符串中的内容则应当是*ABCDEFG。 试题程序: */#include #include void fun (char *a)/*Begin*/*End*/void main() char s81; FILE *in,*out; int i; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n); puts(s); /*/ in=fopen(in21.dat,r); out
6、=fopen(debugout21.dat,w); for(i=0;i8;i+) fscanf(in,%s,s); fun(s); fprintf(out,%sn,s); fclose(in); fclose(out); /*/【参考代码】 int i=0; char *p=a; while(*p&*p=*) ai=*p;i+;p+; while(*p) if(*p!=*) ai=*p;i+; p+; ai=0;/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字
7、符串中的内容则应当是A*BC*DEF*G*。注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */#include void fun (char *a)/*Begin*/*End*/void main() FILE *wf,*in; int i; char s81,t81=*A*BC*DEF*G*; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n);puts(s);/*/ in=fopen(in18.dat
8、,r); wf=fopen(debugout18.dat,w); for(i=0;i8;i+) fscanf(in,%s,t); fun(t); fprintf(wf,%sn,t); fclose(in); fclose(wf);/*/【参考代码】 char *p=a; while(*p=*) p+; /*指针p指向字符串第一个字母*/ for(;*p!=0;p+,a+) *a=*p; *a=0; /*请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。注意:部分源程序给出如下。请勿改
9、动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#include #include #define N 81void fun(char*s)/*Begin*/*End*/void main() char aN; FILE *out; printf(Enter a string:); gets(a); printf(The original string is:); puts(a); fun(a); printf(n); printf(The string after modified:); puts(a); strcpy(a,Hello Wor
10、ld! This is a first C program!); fun(a); /*/ out=fopen(d:out17.dat,w); fprintf(out,%s,a); fclose(out); /*/【参考代码】 char ch; int i,m,n; i=0; m=n=strlen(s)-1; while(i(n+1)/2) ch=si; si=sm; sm=ch; i+; m-; /*请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。例如,当a=
11、45,b=12,调用该项函数后,c=4152。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: */#include #include void fun(int a ,int b,long *c) /*Begin*/ /*End*/void main() int a,b; long c; FILE *out; printf(Input a ,b: ); scanf(%d%d,&a,&b); fun(a,b,&c); printf(The result is :%ldn,c); /*/ out=fopen(debu
12、gout20.dat,w); for(a=10;a20;a+) fun(a,109-a,&c);fprintf(out,%dn,c); fclose(out);/*/【参考代码】*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10; 程序改错/*下列给定程序中函数fun的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#incl
13、ude #include #include void fun (char *s, char *t ) int i,s1; s1=strlen(s); for (i=0;is1;i+)/*ERROR*/ ti=ss1-1; for (i=0;is1;i+) ts1+i=si;/*ERROR*/ t2*s1=0;void main()char s100, t100; printf(nPlease enter string s: ); scanf(%s,s); fun(s,t); printf (The result is: %sn,t);【参考答案】ti=ss1-1-i;ti=ss1-i-1i;【
14、参考答案】t2*s1=0;t2*s1=0;/*下列给定程序中,函数fun的功能是:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序: */#include /*ERROR*/fun(char *p) char max, *q;int i=0; max=pi; while (pi!=0) if (maxpi) /*ERROR*/ p =
15、 q +i;max=pi; i+; /*ERROR*/ while(qp)while(pq)/*下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#include #include #include #include #define N 80int fun(char *s,char *t) int n; char *p, *r; n=0; p=&s0;/*ERROR*/ *r=t; w
16、hile(*p) if(*r=*p)r+;if(*r=0)n+;/*ERROR*/【1】; p+; return n;void main()char aN,bN; int m; system(CLS); printf(nPlease enter string a: );gets(a); printf(nPlease enter substring b: );gets(b); m=fun(a,b); m=printf(nThe result is :m=%dn,m);【参考答案】r=t;【参考答案】r=t;r=&t0;/*下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学
17、生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩: 80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为4(平均分为75.5625)。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */#include #include #define N 20int fun(float *s, int n,float *aver) float ave ,t=0.0; int count=0,k,i; for(k=0;kn;k+)/*ERROR*/ t=sk
18、; ave=t/n; for(i=0;in;i+) if(siave) count+;/*ERROR*/ *aver=&ave; return count;void main() float s30,aver; int m,i; printf(nPlease enter m: ); scanf(%d,&m); printf(nPlease enter %d mark :n,m); for(i=0;im;i+) scanf(%f,s+i); printf(nThe number of students :%dn,fun(s,m,&aver); printf(Ave=%fn,aver);【参考答案
19、】t+=sk;t=t+sk;【参考答案】*aver=ave;/*下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65 b=60 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:*/#include #include /*ERROR*/void fun(int a,b) int t;/*ERROR*/ t=b;b=a;a=t;void main()int a,b; printf(Enter a, b: ); scanf(%d%d,&a,&b); fun(&a, &b); p
20、rintf(a=%d b=%dn , a,b);【参考答案】void fun(int *a,int *b)【参考答案】t=*b;*b=*a;*a=t;t=*b,*b=*a,*a=t;t=*a;*a=*b;*b=t;t=*a,*a=*b,*b=t;/*给定程序中函数fun的功能是:把主函数中输入的3个数,最大的放在 a中,最小的放在c中,中间的放在b中。 例如,输入的数为:55 12 34, 输出结果应当是:a=55.0 , b=34.0 , c=12.0。 请改正程序中的错误,使它能得出正确结果。 给定源程序:*/ #include void fun(float *a,float *b,flo
21、at *c) /*ERROR*/float *k; if( *a*c ) k=*c; *c=*a; *a=k; if( *b*c ) k=*b; *b=*c; *c=k; int main() float a,b,c; printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); fun(&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); return 0; 【参考答案】float k;【参考答案】
22、*a*a/*给定程序中函数fun的功能是:把主函数中输入的3个数,最大的放在 a中,最小的放在c中,中间的放在b中。 例如,输入的数为:55 12 34, 输出结果应当是:a=55.0 , b=34.0 , c=12.0。 请改正程序中的错误,使它能得出正确结果。 给定源程序:*/ #include void fun(float *a,float *b,float *c) /*ERROR*/float *k; if( *a*c ) k=*c; *c=*a; *a=k; if( *b*c ) k=*b; *b=*c; *c=k; int main() float a,b,c; printf(In
23、put a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); fun(&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); return 0; 【参考答案】p=j;【参考答案】p=i;程序填空/*给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。注意:部分源程序给出如下。请勿
24、改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:*/#include void fun(char *s ) int i,j,n; for(i=0;si!=0;i+)/*FILL*/ if(si=0 1 sii;j-)/*FILL*/sj+1= 3 ;sj+1=*;i=i+1;void main()char s60=ba3a54cd23a;printf(n the original string is: %sn,s);fun(s);printf(nthe result is: %sn,s);【参考答案】&【参考答案】00【参考答案】sj*(s
25、+j)请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main() char str181,str281; char *p1=str1,*p2=str2; do printf( Input str1 n);gets(str1);printf( Input str2 n);gets(str2);/*FILL*/ while( 【1】 );/*FILL*/ while( 【2】 )*p1+=*p2+; printf( Display str1 n);/*FILL*/ puts( 【3】 )
26、; 【参考答案】strlen(str1)strlen(str1)【参考答案】*p2*p2!=0【参考答案】str1/*给定程序的功能是:分别统计字符串中大写字母和小写字母的个数。 例如,给字符串ss输入:AaaaBBbl23CCccccd,则输出结果应为:upper=5,lower=9。注意:部分源程序给出如下。请勿改动函数中的其他内容,仅在横线上填入所编写的若干表达式或语句。试题程序: */#include #include void fun(char *s,int *a,int *b) while(*s) if(*s=A & *s=a & *s=z)/*FILL*/【2】 ; s+; vo
27、id main() char s100; int upper=0,lower=0; printf(nPlease a string: ); gets(s); fun(s,&upper,&lower);/*FILL*/ printf(n upper=%d lower=%dn,【3】 ); 【参考答案】(*a)+(*a)*a+=1*a=*a+1【参考答案】(*b)+(*b)*b+=1*b=*b+1【参考答案】upper,lower/*请补充main函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当按回车键时结束输入,最后输出这个字符数组中的所有字符。注意:部分源程序给出如下。请勿改动m
28、ain函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:*/#include #include void main() int i=0; char s81; char *p=s; printf( Input a string n); for(i=0;i80;i+) si=getchar();if(si=n)/*FILL*/【1】 ; /*FILL*/ si= 【2】 ; printf( display the string n); while(*p)/*FILL*/putchar( 【3】 );【参考答案】Break【参考答案】00【参考答案】*p+/
29、*下面程序是实现两数的交换,如输入5 9,输出9 5。*/#includevoid swap(int *p1, int *p2);int main() int a,b; int *point1,*point2;/*FILL*/ scanf(%d %d, 1 ); point1=&a; point2=&b;/*FILL*/ swap( 2 );printf(n%d,%dn,a,b);return 0 ;void swap(int *p1, int *p2) int p; p=*p1;/*FILL*/ 3 ; *p2=p;【参考答案】&a,&b【参考答案】point1,point2&a,&b【参考答案】*p1=*p2
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100