生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第99套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第99套:
函數fun的功能是:將形參a所指數組中的前半部分元素中的值和后半部分元素中的值對換。形參n中存放數組中數據的個數,若n為奇數,則中間的元素不動。 例如:若a所指數組中的數據依次為:1、2、3、4、5、6、7、8、9,則調換后為:6、7、8、9、5、1、2、3、4。 請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結構! 給定源程序:
#include <stdio.h>
#define N 9
void fun ( int a
[ ] , int n
)
{ int i
, t
, p
;
p
= ( n
% 2 == 0 ) ? n
/ 2 : n
/ 2 + ___1___
;
for ( i
= 0 ; i
< n
/ 2 ; i
++ )
{
t
= a
[ i
] ;
a
[ i
] = a
[ p
+ ___2___
] ;
___3___
= t
;
}
}
main ( )
{ int b
[ N
] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } , 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" ) ;
}
解題思路: 第一處:如果n是奇數,則中間的元素不動,所以應填:1。 第二處:使用for循環(huán)語句來交換數組元素的值,所以應填:i。 第三處:使用中間變量t來交換的,所以應填:t。
給定程序MODI1.C中函數fun的功能是:把主函數中輸入的3個數,最大的放在 a中,最小的放在c中,中間的放在b中。 例如,輸入的數為:55 12 34, 輸出結果應當是:a=55.0 , b=34.0 , c=12.0。 請改正程序中的錯誤,使它能得出正確結果。 注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。 給定源程序:
#include <stdio.h>
void fun ( float * a
, float * b
, float * c
)
{
float * k
;
if ( * a
< * b
)
{ k
= * a
; * a
= * b
; * b
= k
; }
if ( * a
> * c
)
{ k
= * c
; * c
= * a
; * a
= k
; }
if ( * b
< * c
)
{ k
= * b
; * b
= * c
; * c
= k
; }
}
main ( )
{ float a
, b
, c
;
printf ( "Input a b c: " ) ; scanf ( "%f%f%f" , & a
, & b
, & c
) ;
printf ( "a = %4.1f, b = %4.1f, c = %4.1f\n\n" , a
, b
, c
) ;
fun ( & a
, & b
, & c
) ;
printf ( "a = %4.1f, b = %4.1f, c = %4.1f\n\n" , a
, b
, c
) ;
}
解題思路: 第一處:在函數fun體中,k是一個浮點型變量,所以應改為:float k;。 第二處:三個數比較大小,第1個條件是第1個比第2個小,則交換。第3個條件是第2個比第3個小,則也交換。第2個條件是應該第1和第3個小,則交換就符合題意了,所以應改為: if(*a<*c)。
學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:把分數最高的學生數據放在b所指的數組中,注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。 注意: 部分源程序在文件PROG1.C中。 請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入 你編寫的若干語句。 給定源程序:
#include <stdio.h>
#define N 16
typedef struct
{ char num
[ 10 ] ;
int s
;
} STREC
;
int fun ( STREC
* a
, STREC
* b
)
{
}
main ( )
{ STREC s
[ N
] = { { "GA05" , 85 } , { "GA03" , 76 } , { "GA02" , 69 } , { "GA04" , 85 } , { "GA01" , 91 } , { "GA07" , 72 } , { "GA08" , 64 } , { "GA06" , 87 } , { "GA015" , 85 } , { "GA013" , 91 } , { "GA012" , 64 } , { "GA014" , 91 } , { "GA011" , 77 } , { "GA017" , 64 } , { "GA018" , 64 } , { "GA016" , 72 } } ;
STREC h
[ N
] ;
int i
, n
; FILE
* out
;
n
= fun ( s
, h
) ;
printf ( "The %d highest score :\n" , n
) ;
for ( i
= 0 ; i
< n
; i
++ )
printf ( "%s %4d\n" , h
[ i
] . num
, h
[ i
] . s
) ;
printf ( "\n" ) ;
out
= fopen ( "c:\\test\\out.dat" , "w" ) ;
fprintf ( out
, "%d\n" , n
) ;
for ( i
= 0 ; i
< n
; i
++ )
fprintf ( out
, "%4d\n" , h
[ i
] . s
) ;
fclose ( out
) ;
}
解題思路: 本題是找出最高成績,再把N名學生的成績等于最高成績的記錄存入b所指的數組中。具體 操作請看答案程序中的說明。 參考答案:
int fun ( STREC
* a
, STREC
* b
)
{
int i
, max
= a
[ 0 ] . s
, n
= 0 ;
for ( i
= 1 ; i
< N
; i
++ )
if ( max
< a
[ i
] . s
) max
= a
[ i
] . s
;
for ( i
= 0 ; i
< N
; i
++ )
if ( max
== a
[ i
] . s
) b
[ n
++ ] = a
[ i
] ;
return n
;
}
總結
以上是生活随笔 為你收集整理的全国计算机等级考试题库二级C操作题100套(第99套) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。