编程题:
49.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是BDFl2345。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];
clrscr();
printf(“\nPlease enter string S:”);
scanf(“%s”, s);
fun(s, t);
printf(“\nThe result is : %s\n”, t);
}
51.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,若输入17,则应输出:9和4 6 8 9 10 12 14 15 16。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun( int m, int *k, int xx[] )
{
}
main()
{
int m, n, zz[100];
clrscr();
printf( “\nPlease enter an integer number between 10 and 100: ” );
scanf( “%d”, &n );
fun( n, &m, zz );
printf( “\n\nThere are %d non-prime numbers less than %d: “, m, n );
for( n = 0; n < m; n++ )
printf( “\n %4d”, zz[n] );
}
改错题:
84.下列给定程序中,函数fun的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正fun函数中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/********found********/
fun(int m,int k)
{
int aa[20],i;
for(i=0;m;i++)
{
/********found********/
aa[i]=m/k;
m/=k;
}
for( ; i; i– )
/********found********/
printf(“%d”, aa[i] );
}
main()
{
int b,n;
clrscr();
printf( “\nPlease enter a number and a base:\n” );
scanf( “%d%d”,&n,&b );
fun( n, b );
printf(“\n”);
}
86.下列给定程序中,函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为:55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
void fun(float *p,float *q,float *s)
{
float *k;
if ( *p<*q )
/********found********/
{
k=*p;
*p=*q;
*q=k;
}
/********found********/
if ( *s<*p )
/********found********/
{
k=*s;
*s=*p;
*p=k;
}
if( *q<*s )
/********found********/
{
k=*q;
*q=*s;
*s=k;
}
}
main()
{
float a,b,c;
printf(“Input a b c:”);
scanf(“%f%f%f”,&a,&b,&c);
printf(“a=%4.1f,b=%4.1f,c=%4.1f\n\n”,a,b,c);
fun(&a,&b,&c);
printf(“a=%4.1f,b=%4.1f,c=%4.1f\n\n”,a,b,c);
}