编程题:
83.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数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);
}
84.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后,c=1524。
注意:部分源程序给出如下。
请勿改动主函数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);
}
改错题:
43.下面给定程序中.函数fun的功能是:找出100至n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
请改正函数fun中的错误.使它能得出正确的结果。
注意:不要改动main函敛,不得增行或删行;也不得更改程序的结构!
试题程序:
#include
#define N 100
int fun(int *s,int n)
{
int i,j,k,a,b,c;
j=0;
for(i=100; i
{
/********found********/
k=n;
a=k%10;
k/=10;
/********found********/
b=k/10;
c=k/10;
if(a==b && a==c)s[j++]=i;
}
return j;
}
main()
{
int a[N], n, num=0, i;
do
{
printf(“\nEnter n(<=1000): “);
scanf(“%d”,&n);
}
while(n >1000);
num=fun(a,n);
printf(“\n\nThe result :\n”);
for(i=0; i
printf(“%5d”,a[i]);
printf(“\n\n”);
}
44.下列给出程序中,函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输口。
例如,若输入2 若输入4
则输出: 则输出:
1 2 1 2 3 4
2 4 2 4 6 8
3 6 9 12
4 8 12 16
#include
#include
#define M 10
int a[M][M] = {0} ;
/********found********/
fun(int **a, int m)
{
int j,k ;
for ( j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/********found********/
a[j][k] = k*j ;
}
main ( )
{
int i, j, n ;
clrscr( ) ;
printf ( ” Enter n:” ) ;
scanf (“%d”, &n );
fun ( a, n );
for ( i = 0 ; i < n ; i++)
{
for (j = 0 ; j < n ; j++)
printf ( “%4d”, a[i][j] );
printf ( “\n” ) ;
}
}