编程题:
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);
}