填空題:
請補充fun函數,該函數的功能是:把一個證書轉換成字符串,并到序保存在字符數組str中。例如:當n=12345678時,str=“87654321”。
請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。
填空題:
#include
#include
#define N 80
char str[N];
void fun(long int n)
{
int i = 0;
while (___1___)
{
str[i] = ___2___;
n /= 10;
i++;
}
___3___;
}
main()
{
long int n = 1234567;
printf("****** the origial data ********\n");
printf("n=%ld", n);
fun(n);
printf("\n%s", str);
}
參考答案:
第一處填空:n>0或0
第二處填空:n%10+’0’或’0’+n%10
第三處填空:str[i]=’\0’或str[i]=0
改錯題:
下列給定程序中,函數fun的功能是:從N個字符串中找出最長的那個串,并將其地址作為函數值返回。各字符串在主函數中輸入,并放入一個字符串數組中。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
改錯題:#include
#include
#define N 5
#define M 81
/********found********/
fun(char (*sq)[N])
{
int i;
char *sp;
sp = sq[0];
for (i=0; i
if (strlen(sp) < strlen(sq[i]))
sp = sq[i];
/********found********/
return sq;
}
main()
{
char str[N][M], *longest;
int i;
printf("Enter %d lines:\n", N);
for (i=0; i
gets(str[i]);
printf("\nThe N string :\n", N);
for (i=0; i
puts(str[i]);
longest = fun(str);
printf("\nThe longest string :\n");
puts(longest);
}
參考答案:
第一處:fun(char (*sq)[N]) 應改為 char * fun(char (*sq)[M])
第二處:return sq;應改為 return sp;
編程題:
請編寫函數fun,其功能是:將兩個兩位數的正證書a、b合并形成一個證書放在c中。合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的百位和個位上。
例如,當a=45,b=12,調用該項函數后,c=4152。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
參考答案:
編程題:#include
#include
void fun (int a, int b ,long *c)
{
}
main ()
{
int a,b;
long c;
FILE *out;
printf ("Input a, b:");
scanf("%d%d", &a, &b);
fun (a, b, &c);
printf ("The result is: %d\n", c);
out=fopen ("out.dat", "w");
for (a = 10; a < 20; a++)
{
fun(a, 109-a, &c);
fprintf(out, "%d\n", c);
}
fclose (out );
}
輸入fun函數:void fun (int a, int b, long*c)
{
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;
}
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |