编程题:
88.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun(char *a)
{
}
main()
{
char s[81];
printf(“Enter a string :\n”);
gets(s);
fun( s );
printf(“The string after deleted:\n”);
puts(s);
}
91.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后,c=5241。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun(int a, int b, long *c)
{
}
main()
{
int a,b;
long c;
clrscr();
printf(” Input a, b: “);
scanf(“%d%d”, &a,&b);
fun(a,b,&c);
printf(” The result is :%ld\n”, c);
}
改错题:
51.下列给定程序中,函数fun的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中。例如:把3个串abe,CD,EF串连起来,结果是abcCDEF。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
/********found********/
int fun ( char str[][10], int m, char *pt )
{
int k, q, i ;
for ( k = 0; k < m; k++ )
{
q = strlen ( str [k] );
/********found********/
for (i=0; i pt[i] = str[k,i] ; pt += q ; pt[0] = 0 ; } } main( ) { int m, h ; char s[10][10], p[120] ; clrscr() ; printf(“\nPlease enter m:” ) ; scanf(“%d”, &m) ; gets(s[0]) ; printf( “\nPlease enter %d string:\n”, m ); for ( h = 0; h < m; h++ ) gets( s[h]) ; fun(s, m, p) ; printf( “\nThe result is : %s\n”, p) ; } 54.下列给定程序中,函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。 请改正函数fun中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include /********found********/ double fun(char*s, char*t) { int s1=0,t1=0; char *ss, *tt; ss=s; tt=t; /********found********/ while(*ss) { s1++; (*ss)++; } /********found********/ while(*tt) { t1++; (*tt)++; } if(t1>s1) return t; else return s; } main() { char a[80],b[80],*p,*q; int i; clrscr(); printf(“\nEnter a string : “); gets(a); printf(“\nEnter a string again : “); gets(b); printf(“\nThe longer is :\n\n%s\n”,fun(a,b)); }