编程题:
59.请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为:
AAAA
BBBBBBB
CC
则合并后的字符串的内容应是AAAABBBBBBBCC。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的
若干语句。
#include
#define M 3
#define N 20
void fun(char a[M][N], char *b)
{
}
main()
{
char w[M][N]={“AAAA”, “BBBBBBB”,”CC”},i;
char a [100]={“###############################”};
printf(“The string:\n”);
for(i=0; i puts(w[i]); printf(“\n”); fun(w,a); printf(“The A string:\n”); printf(“%s”,a); printf(“\n\n”); } 62.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include int fun(int n) { } main() { int n,sum; printf(“Input n: “); scanf(“%d”,&n); sum=fun(n); printf(“sum=%d\n”,sum); } 改错题: 28.下列给定程序中,函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include #include /********found********/ void fun(char s[], int n) { char a[80], *p; int i ; /********found********/ s=p; for(i=0;i a[i]=’*'; do { a[i]=*p; /********found********/ i++; } while(*p); /********found********/ a[i]=0; strcpy(s,a); } main() { int n; char s[80]; clrscr(); printf(“\nEnter a string :”); gets(s); printf(“\nThe string \%s\n”,s); printf(“\nEnter n(number of *): “); scanf(“%d”,&n); fun(s,n); printf(“\nThe string after inster: \%s\n”,s); } 29.下列给定程序中,函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include int fun(int a,int b) { int r,t; /********found********/ if(a { t=a; b=a; b=t; } r=a%b; while(r!=0) { a=b; b=r; r=a%b; } /********found********/ return(a); } main() { int num1,num2,a; printf(“Input num1 num2 : “); scanf(“%d%d”,&num1,&num2); printf(“num1=%d num2=%d\n\n”,num1,num2); a=fun(num1,num2); printf(“The maximun common divisor is %d\n\n”,a); }