生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第24套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第24套:
程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。函數fun的功能是將形參a中的數據進行修改,把修改后的數據作為函數值返回主函數 進行輸出。 例如:傳給形參a的數據中,學號、姓名、和三門課的成績依次是:10001、 “ZhangSan”、95、80、88,修改后的數據應為:10002、“LiSi”、96、81、89。 請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結構! 給定源程序:
#include <stdio.h>
#include <string.h>
struct student
{
long sno
;
char name
[ 10 ] ;
float score
[ 3 ] ;
} ;
__1__
fun ( struct student a
)
{ int i
;
a
. sno
= 10002 ;
strcpy ( __2__
, "LiSi" ) ;
for ( i
= 0 ; i
< 3 ; i
++ ) __3__
+ = 1 ;
return a
;
}
main ( )
{ struct student s
= { 10001 , "ZhangSan" , 95 , 80 , 88 } , t
;
int i
;
printf ( "\n\nThe original data :\n" ) ;
printf ( "\nNo: %ld Name: %s\nScores: " , s
. sno
, s
. name
) ;
for ( i
= 0 ; i
< 3 ; i
++ ) printf ( "%6.2f " , s
. score
[ i
] ) ;
printf ( "\n" ) ;
t
= fun ( s
) ;
printf ( "\nThe data after modified :\n" ) ;
printf ( "\nNo: %ld Name: %s\nScores: " , t
. sno
, t
. name
) ;
for ( i
= 0 ; i
< 3 ; i
++ ) printf ( "%6.2f " , t
. score
[ i
] ) ;
printf ( "\n" ) ;
}
解題思路: 本題是對結構體變量中的值進行修改并通過函數值返回。 第一處:必須定義結構返回類型,所以應填:struct student。 第二處:對姓名進行修改,所以應填:a.name。 第三處:分別對成績增加1分,所以應填:a.score[i]。
假定整數數列中的數不重復,并存放在數組中。給定程序MODI1.C中函數fun的功能是:刪除數列中值為x的元素。n中存放的是數列中元素的個數。 請改正程序中的錯誤,使它能得出正確結果。 注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。 給定源程序:
#include <stdio.h>
#define N 20
fun ( int * a
, int n
, int x
)
{ int p
= 0 , i
;
a
[ n
] = x
;
while ( x
!= a
[ p
] ) p
= p
+ 1 ;
/
if ( P
== n
) return - 1 ;
else
{ for ( i
= p
; i
< n
; i
++ )
/ a
[ i
+ 1 ] = a
[ i
] ;
return n
- 1 ;
}
}
main ( )
{ int w
[ N
] = { - 3 , 0 , 1 , 5 , 7 , 99 , 10 , 15 , 30 , 90 } , x
, n
, i
;
n
= 10 ;
printf ( "The original data :\n" ) ;
for ( i
= 0 ; i
< n
; i
++ ) printf ( "%5d" , w
[ i
] ) ;
printf ( "\nInput x (to delete): " ) ; scanf ( "%d" , & x
) ;
printf ( "Delete : %d\n" , x
) ;
n
= fun ( w
, n
, x
) ;
if ( n
== - 1 ) printf ( "***Not be found!***\n\n" ) ;
else
{ printf ( "The data after deleted:\n" ) ;
for ( i
= 0 ; i
< n
; i
++ ) printf ( "%5d" , w
[ i
] ) ; printf ( "\n\n" ) ;
}
}
解題思路: 第一處: 條件語句中的小寫p錯寫成大寫P了。 第二處: 刪除元素,應該是后面位置的元素值賦值給前面的位置上,所以應改為: a[i]=a[i+1];。
學生的記錄由學號和成績組成,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" , 91 } , { "GA017" , 64 } , { "GA018" , 64 } , { "GA016" , 72 } } ;
STREC h
[ N
] ;
int i
, n
; FILE
* out
;
n
= fun ( s
, h
) ;
printf ( "The %d lowest 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
) ;
}
解題思路: 本題是把符合條件的學生記錄存入到另一個結構體,人數通過函數返回,記錄由實參b返回。
符合條件的學生人數存在變量j(初始值為0)中,最后返回其值。 利用for循環語句,依次判斷是否符合條件,如果成績相等,則把記錄存入b中,人數j加1;如果當前成績a[i].s小于最低成績min,那么人數重新初始化為0,把當前成績存入最低成績中,人數j加1。 直至循環結束為止。 參考答案:
int fun ( STREC
* a
, STREC
* b
)
{
int i
, j
= 0 , min
= a
[ 0 ] . s
;
for ( i
= 0 ; i
< N
; i
++ ) {
if ( min
> a
[ i
] . s
) {
j
= 0 ; b
[ j
++ ] = a
[ i
] ; min
= a
[ i
] . s
;
}
else if ( min
== a
[ i
] . s
)
b
[ j
++ ] = a
[ i
] ;
}
return j
;
}
總結
以上是生活随笔 為你收集整理的全国计算机等级考试题库二级C操作题100套(第24套) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。