生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第78套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第78套:
給定程序中,函數fun的功能是:將N×N矩陣主對角線元素中的值與反向對角線對應位置上元素中的值進行交換。例如,若N=3,有下列矩陣: 1 2 3 4 5 6 7 8 9 交換后為: 3 2 1 4 5 6 9 8 7 請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結構! 給定源程序:
#include <stdio.h>
#define N 4
void fun ( int ___1___
, int n
)
{ int i
, s
;
for ( ___2___
; i
++ )
{ s
= t
[ i
] [ i
] ;
t
[ i
] [ i
] = t
[ i
] [ n
- i
- 1 ] ;
t
[ i
] [ n
- 1 - i
] = ___3___
;
}
}
main ( )
{ int t
[ ] [ N
] = { 21 , 12 , 13 , 24 , 25 , 16 , 47 , 38 , 29 , 11 , 32 , 54 , 42 , 21 , 33 , 10 } , i
, j
;
printf ( "\nThe original array:\n" ) ;
for ( i
= 0 ; i
< N
; i
++ )
{ for ( j
= 0 ; j
< N
; j
++ ) printf ( "%d " , t
[ i
] [ j
] ) ;
printf ( "\n" ) ;
}
fun ( t
, N
) ;
printf ( "\nThe result is:\n" ) ;
for ( i
= 0 ; i
< N
; i
++ )
{ for ( j
= 0 ; j
< N
; j
++ ) printf ( "%d " , t
[ i
] [ j
] ) ;
printf ( "\n" ) ;
}
}
解題思路: 第一處:在函數體fun中,已經使用了t整型數組,所以應填:t[][N]。 第二處:要求填寫for循環語句的初始值和終止值,所以應填:i=0;i<n。 第三處:交換變量的值,根據循環體中的語句可知,s是存放交換的中間變量,所以應填: s。
由N個有序整數組成的數列已放在一維數組中,給定程序MODI1.C中函數fun的功能是:利用折半查找算法查找整數m在數組中的位置。若找到,返回其下標值;反之,返回-1。折半查找的基本算法是:每次查找前先確定數組中待查的范圍:low和high(low<high),然后把m與中間位置(mid)中元素的值進行比較。如果m的值大于中間位置元素中的值, 則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的元素中。直到low>high,查找結束。 請改正程序中的錯誤,使它能得出正確結果。 注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。 給定源程序:
#include <stdio.h>
#define N 10
void fun ( int a
[ ] , int m
)
{ int low
= 0 , high
= N
- 1 , mid
;
while ( low
<= high
)
{ mid
= ( low
+ high
) / 2 ;
if ( m
< a
[ mid
] )
high
= mid
- 1 ;
else If ( m
> a
[ mid
] )
low
= mid
+ 1 ;
else return ( mid
) ;
}
return ( - 1 ) ;
}
main ( )
{ int i
, a
[ N
] = { - 3 , 4 , 7 , 9 , 13 , 45 , 67 , 89 , 100 , 180 } , k
, m
;
printf ( "a數組中的數據如下:" ) ;
for ( i
= 0 ; i
< N
; i
++ ) printf ( "%d " , a
[ i
] ) ;
printf ( "Enter m: " ) ; scanf ( "%d" , & m
) ;
k
= fun ( a
, m
) ;
if ( k
>= 0 ) printf ( "m=%d,index=%d\n" , m
, k
) ;
else printf ( "Not be found!\n" ) ;
}
解題思路: 第一處:函數有返回值,不能定義為void,所以應改為:int fun(int a[],int m)。 第二處:if錯定成If。
假定輸入的字符串中只包含字母和號。請編寫函數fun,它的功能是:除了尾部的號之外,將字符串中其它號全部刪除。形參p已指向字符串中最后的一個字母。在編寫函數時,不得使用C語言提供的字符串函數。 例如,字符串中的內容為:ABCDEFG*****,刪除后,字符串中的內容應當是: ABCDEFG*******。 注意: 部分源程序在文件PROG1.C中。 請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。 給定源程序:
#include <stdio.h>
void fun ( char * a
, char * p
)
{
}
main ( )
{ char s
[ 81 ] , * t
;
printf ( "Enter a string:\n" ) ; gets ( s
) ;
t
= s
;
while ( * t
) t
++ ;
t
-- ;
while ( * t
== '*' ) t
-- ;
fun ( s
, t
) ;
printf ( "The string after deleted:\n" ) ; puts ( s
) ;
NONO ( ) ;
}
解題思路: 本題是考察字符串的操作。
利用循環掃描出p指針左邊的字符是否是’’,如果不是’’,則依次把這些字符移動原字符串a首地址開始存放。 把p指針所指的字符串也依次存放到字符串a中。 最后給字符串a加上結束符。 參考答案:
void fun ( char * a
, char * p
)
{
char * q
= a
;
int j
= 0 ;
while ( * q
&& q
< p
) {
if ( * q
!= '*' ) a
[ j
++ ] = * q
;
q
++ ;
}
while ( * p
) a
[ j
++ ] = * p
++ ;
a
[ j
] = 0 ;
}
總結
以上是生活随笔 為你收集整理的全国计算机等级考试题库二级C操作题100套(第78套) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。