编程题:
1.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
char *fun(char (*a)[81],int num)
{
}
main()
{
char ss[10][81],*max;
int n,i=0;
clrscr() ;
printf(“输入若干个字符串:”);
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],”****”)==0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
max=fun(ss,n);
printf(“\nmax=%s\n”,max);
}
2.假定输入的字符串中只包含字母和*号。请编写函数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)
{
}
main()
{
char s[81],*t,*f;
int m=0, tn=0, fn=0;
printf(“Enter a string:\n”);
gets(s);
t=f=s;
while(*t)
{
t++;
m++;
}
t–;
while(*t==’*')
{
t–;
tn++;
}
while(*f==’*')
{
f++;
fn++;
}
fun( s, m,fn,tn );
printf(“The string after deleted:\n”);
puts(s);
}
改错题:
3.下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为4(平均分为:75.5625)。
请改正程序中的错误,使它能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#define N 20
int fun(float *s,int n,float *aver)
{
float ave,t=0.0;
int count=0,k,i;
/********found********/
for(k=0;k
t=s[k];
ave=t/n;
for(i=0;i
if(s[i]
count++;
/********found********/
*aver=&ave;
return count;
}
main()
{
float s[30],aver;
int m,i;
clrscr();
printf(“\nPlease enter m: “);
scanf(“%d”, &m);
printf(“\nPlease enter %d mark :\n “, m);
for(i=0;i
scanf(“%f”,s+i);
printf(“\nThe number of students : %d\n”,fun(s,m,&aver));
printf(“Ave=%f\n”,aver);
}
4.下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。例如,若输入77777,则输出将是32767。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
int fun(char *p)
{
int n;
/********found********/
n=*p-’o';
p++;
/********found********/
while(*p!=0)
{
n=n*7+*p-’o';
p++;
}
return n;
}
main()
{
char s[6];
int i;
int n;
printf(“Enter a string (0catal digits): “);
gets(s);
if(strlen(s)>5)
{
printf(“Error:string too longer !\n\n”);
exit(0);
}
for(i=0;s[i];i++)
if(s[i]’7′)
{
printf(“Error: %c not is ocatal digits!\n\n”,s[i]);
exit(0);
}
printf(“The original string: “);
puts(s);
n=fun(s);
printf(“\n%s is convered to intege number: %d\n\n”,s,n);
}