第一题:填空题 请补充fun函数,该函数的功能是把从键盘输入的3 个整数 按从小到大输出。
例如:输入场23 32 14, 结果输出14 23 32 。
注意:部分源程序给出如下。
仅在横线上填入所编写的若干表达式或语句,勿改动函数中的其他任何内容。
#include
#include
main()
{
int x, y, z, t;
printf("Input x,y,z\n");
scanf("%d%d%d", &x, &y, &z);
if (___1___)
{
t = x;
x = y;
y = t;
} /* 交换x,y的值 */
if (___2___)
{
t = z;
z = x;
x = t;
} /* 交换x,z的值 */
if (___3___)
{
t = y;
y = z;
z = t;
} /* 交换z,y的值 */
printf("******the result*******\n");
printf("from small to big: %d %d %d\n", x, y, z);
}
参考答案:
填空题:第1处填空:x>y或y
第2处填空:x>z或z
第3处填空:y>z或z
第二题:改错题 下列给定程序中,函数fun的功能是:将m(1<=m<=10)个字符串连接起来,组成一个新串,放在pt所指字符串中。例如:把3个串abc,CD,EF串连起来,结果是abcCDEF。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序结构!
#include
#include
#include
/********found********/
void fun(char str[][], int m, char *pt)
{
int k, q, i;
for (k=0; 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];
printf("\nPlease enter m:");
scanf("%d", &m);
gets(s[0]);
printf("\nPlease enter %d string:\n", m);
for (h=0; h
gets(s[h]);
fun(s, m, p);
printf("\nThe result is : %s\n", p);
}
参考答案:
改错题:第1处:void fun(char str[][],int m,char *pt)应改为 void fun ( char str[][10], int m,char *pt)
第2处:pt[i]=str[k,i];应改为 pt[i]=str[k][i];
第三题:编程题 请编写函数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];
FILE *out;
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] );
out=fopen("out.dat", "w"); www.Examda.CoM
fun( 28, &m, zz );
fprintf(out, "%d\n", m);
for( n = 0; n < m; n++ )
fprintf(out, "%d\n", zz[n] );
fclose(out);
}
参考答案
编程题:void fun(int m,int *k,int xx[])
{
int i,j;
int t=0;
for(i=2;i
{ j=2;
while(j
{ if(i%j==0)
{ xx[t]=i;
t++;
break;
}
j++;
}
*k=t;
}
}
更多关注: