二、 改錯題(本題20分)
下列給定程序中,函數fun的功能是:通過某種方式實現兩個變量值的交換,規定下允許增加語句和表達式。例如變量a中的值原為8,b中的值原為3,程序運行後a中的值為3,b的值為8。 請改正程序中的錯誤,使其能得出正確結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
程序:
#include <conio.h>
#include <stdio.h>
int fun(int *x, int y)
{
int t;
/********found********/
t = x; x = y;
/********found********/
return (y);
}
main()
{
int a = 3, b = 8;
printf("%d %d\n", a, b);
b = fun(&a, b);
printf("%d %d\n", a, b);
}
三、編程題 (本大題共分兩個小題,第一題30分,第二題35分,共65分)
1.請編寫函數FUN,它的功能是:求出SS所指字符串中指定字符的個數,並返回此值。
例如,若輸入字符串123412132,輸入字符1,則輸出3。
注意:部分源程序給出如下,請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:#include <conio.h>
#include <stdio.h>
#include <string.h>
#define M 81
int fun(char *ss, char c)
{
}
main()
{
char a[M], ch;
FILE *out;
printf("\nPlease enter a string:");
gets(a);
printf("\nPlease enter a char:");
ch = getchar();
printf("\nThe number of the char is: %d\n", fun(a, ch));
out=fopen ("out.dat", "w");
strcpy(a, "The number of the char is: ");
fprintf(out, "%d", fun(a, ' '));
fclose (out );
}
2. 請編寫一個函數fun,它的功能是:計算並輸出給定整數n的所有因子(不包括1與自身)之和。規定n的值不大於1000。 例如,若主函數從鍵盤給n輸入的值為856,則輸出為sum=763。 注意:請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
你的題呢