生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第88套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第88套:
函數fun的功能是:把形參a所指數組中的最大值放在a[0]中,接著求出a所指數組中的最小值放在a[1]中;再把a所指數組元素中的次大值放在a[2]中,把a數組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數組中的數據最初排列為:1、4、2、3、9、6、5、8、7,則按規則移動后,數據排列為: 9、1、8、2、7、3、6、4、5。形參n中存放a所指數組中數據的個數。
請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h>
#define N 9
void fun(int ___1___
, int n
)
{ int i
, j
, max
, min
, px
, pn
, t
;
for (i
=0; i
<n
-1; i
+=___2___
)
{ max
= min
= a
[i
];
px
= pn
= i
;
for (j
=___3___
; j
<n
; j
++)
{ if (max
< a
[j
])
{ max
= a
[j
]; px
= j
; }
if (min
> a
[j
])
{ min
= a
[j
]; pn
= j
; }
}
if (px
!= i
)
{ t
= a
[i
]; a
[i
] = max
; a
[px
] = t
;
if (pn
== i
) pn
= px
;
}
if (pn
!= i
+1)
{ t
= a
[i
+1]; a
[i
+1] = min
; a
[pn
] = t
; }
}
}
main()
{ int b
[N
]={1,4,2,3,9,6,5,8,7}, i
;
printf("\nThe original data :\n");
for (i
=0; i
<N
; i
++) printf("%4d ", b
[i
]);
printf("\n");
fun(b
, N
);
printf("\nThe data after moving :\n");
for (i
=0; i
<N
; i
++) printf("%4d ", b
[i
]);
printf("\n");
}
解題思路:
第一處:形參a應定義指針整型變量,所以應填:*a。
第二處:外for循環每次增量應該加2。
第三處:內for循環的初始值應為:i+1。
給定程序MODI1.C中函數fun的功能是:按順序給s所指數組中的元素賦予從2 開始的偶數,然后再按順序對每五個元素求一個平均值,并將這些值依次存放在 w所指的數組中。若s所指數組中元素的個數不是5的倍數,多余部分忽略不計。
例如,s所指數組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
給定源程序:
#include <stdio.h>
#define SIZE 20
fun(double *s
, double *w
)
{ int k
,i
; double sum
;
for(k
=2,i
=0;i
<SIZE
;i
++)
{ s
[i
]=k
; k
+=2; }
sun
=0.0;
for(k
=0,i
=0;i
<SIZE
;i
++)
{ sum
+=s
[i
];
if(i
+1%5==0)
{ w
[k
]=sum
/5; sum
=0; k
++; }
}
return k
;
}
main( )
{ double a
[SIZE
],b
[SIZE
/5];
int i
, k
;
k
= fun(a
,b
);
printf("The original data:\n");
for(i
=0; i
<SIZE
; i
++)
{ if(i
%5==0) printf("\n");
printf("%4.0f", a
[i
]);
}
printf("\n\nThe result :\n");
for(i
=0; i
<k
; i
++) printf("%6.2f ",b
[i
]);
printf("\n\n");
}
解題思路:
第一處:變量名書寫錯誤,應為sum。
第二處:由于%的優先級比+優先,所以必須加上括號,因此改為:if((i+1)%5==0)。
學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組 s中,請編寫函數fun,它的功能是:把低于平均分的學生數據放在b所指的數組中, 低于平均分的學生人數通過形參n傳回,平均分通過函數值返回。
注意: 部分源程序在文件PROG1.C中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入
你編寫的若干語句。
給定源程序:
#include <stdio.h>
#define N 8
typedef struct
{ char num
[10];
double s
;
} STREC
;
double fun( STREC
*a
, STREC
*b
, int *n
)
{
}
main()
{ STREC s
[N
]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
STREC h
[N
],t
;FILE
*out
;
int i
,j
,n
; double ave
;
ave
=fun( s
,h
,&n
);
printf("The %d student data which is lower than %7.3f:\n",n
,ave
);
for(i
=0;i
<n
; i
++)
printf("%s %4.1f\n",h
[i
].num
,h
[i
].s
);
printf("\n");
out
= fopen("c:\\test\\out.dat","w") ;
fprintf(out
, "%d\n%7.3f\n", n
, ave
);
for(i
=0;i
<n
-1;i
++)
for(j
=i
+1;j
<n
;j
++)
if(h
[i
].s
>h
[j
].s
) {t
=h
[i
] ;h
[i
]=h
[j
]; h
[j
]=t
;}
for(i
=0;i
<n
; i
++)
fprintf(out
,"%4.1f\n",h
[i
].s
);
fclose(out
);
}
解題思路:
本題是利用循環計算出記錄結構中學生成績的平均值,再把低于平均值的記錄存放到b所指的數組中。具體操作請看答案程序中的說明。
參考答案:
#include <stdio.h>
#define N 8
typedef struct
{ char num
[10];
double s
;
} STREC
;
double fun( STREC
*a
, STREC
*b
, int *n
)
{
int i
;
double ave
= 0.0 ;
*n
= 0 ;
for(i
= 0 ; i
< N
; i
++) ave
= ave
+ a
[i
].s
;
ave
/= N
;
for(i
= 0 ; i
< N
; i
++)
if(a
[i
].s
< ave
) {
b
[*n
]=a
[i
] ;
(*n
)++;
}
return ave
;
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第88套)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。