2016年二級C語言上機試題及答案
第一題:給定程序中,函數fun的功能是:計算N*N矩陣的主對角元素和反向對角元素之和,並作為函數值返回。注意:要求先累加主對角線元素中的值,然後累加反向對角線元素中的值。
例如,若N=3,有下列矩陣:
1 2 3
4 5 6
7 8 9
fun函數首先累加1、5、9,然後累加3、5、7,函數的返回值為30。
請勿改動主函數main和其他函數中的任何內容,僅在fun函數的`橫線上填入所編寫的若干表達式或語句。
#include
#define N 4
fun(int t[][N], int n)
{
int i, sum;
___1___;
for (i=0; i sum += ___2___;
for (i=0; i sum += t[i][n-i-___3___];
return sum;
}
main()
{
int i, j, t[][N] =
{21, 2, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 3, 10};
printf("nThe original data:n");
for (i=0; i {
for (j=0; j printf("M", t[i][j]);
printf("n");
}
printf("The result is: %d", fun(t, N));
}
答案:
第1處填空:sum=0;
第2處填空:t[i][i]
第3處填空:1
第二題:下列給定程序中,函數fun的功能是:根據整型參n,計算如下公式的值。
例如,若n=10,則應輸出0.617978。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不要更改程序的結構!
#include
#include
/********found********/
fun(int n)
{
double A = 1;
int i;
/********found********/
for(i=2;i A = 1.0/(1+A);
return A;
}
main()
{
int n;
printf("nPlease enter n: ");
scanf("%d", &n);
printf("A%d=%lfn", n, fun(n));
}
答案:
第1處:fun(int n) 應改為 double fun(int n)
第2處:for(i=2;i
第三題:請編寫函數fun,其功能是:將兩個兩位數的正整數a、b合併形成一個整數在c中。合併的方式是:將a數的十位和個位依次放在c數的百位和個位上,b數的十位和個位數依次放c數的千位和十位上。
例如,當a=45,b=12,調用該函數後,c=1425。
請勿改動主函數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: %ldn", c);
out=fopen ("", "w");
for (a = 0; a < 10; a++)
{
fun(a+28, a+82, &c);
fprintf(out, "%ldn", c);
}
fclose (out );
}
答案:
void fun( int a, int b, long *c)
{
*c=(b/10)*1000+(a/10)*100+(b)*10+a;
}