生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第95套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第95套:
給定程序中,函數fun的功能是:計算N×N矩陣的主對角線元素和反向對角線元素之和,并作為函數值返回。注意:要求先累加主對角線元素中的值,然后累加反向對角線元素中的值。例如,若N=3,有下列矩陣: 1 2 3 4 5 6 7 8 9 fun函數首先累加1、5、9,然后累加3、5、7,函數的返回值為30。 請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結構! 給定源程序:
#include <stdio.h>
#define N 4
fun ( int t
[ ] [ N
] , int n
)
{ int i
, sum
;
___1___
;
for ( i
= 0 ; i
< n
; i
++ )
sum
+ = ___2___
;
for ( i
= 0 ; i
< n
; i
++ )
sum
+ = t
[ i
] [ n
- i
- ___3___
] ;
return sum
;
}
main ( )
{ int t
[ ] [ N
] = { 21 , 2 , 13 , 24 , 25 , 16 , 47 , 38 , 29 , 11 , 32 , 54 , 42 , 21 , 3 , 10 } , i
, j
;
printf ( "\nThe original data:\n" ) ;
for ( i
= 0 ; i
< N
; i
++ )
{ for ( j
= 0 ; j
< N
; j
++ ) printf ( "%4d" , t
[ i
] [ j
] ) ;
printf ( "\n" ) ;
}
printf ( "The result is: %d" , fun ( t
, N
) ) ;
}
解題思路: 第一處:變量sum是用來存放主對角線元素和反向對角線元素之和,要對其進行初始化,所以應填:sum=0。 第二處:對主對角線元素值累加,所以應填:t[i][i]。 第三處:對反向對角線元素值累加,所以應填:t[i][n-i-1]。
例如,若給m輸入 -100,給n輸入90,則函數求得的一個根值為2.000。 請改正程序中的錯誤,使它能得出正確結果。 注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。 給定源程序:
#include <stdio.h>
#include <math.h>
double funx ( double x
)
{ return ( 2 * x
* x
* x
- 4 * x
* x
+ 3 * x
- 6 ) ; }
double fun ( double m
, double n
)
{
int r
;
r
= ( m
+ n
) / 2 ;
while ( fabs ( n
- m
) < 0.001 )
{ if ( funx ( r
) * funx ( n
) < 0 ) m
= r
; else n
= r
; r
= ( m
+ n
) / 2 ;
}
return r
;
}
main ( )
{ double m
, n
, root
;
printf ( "Enter m n : \n" ) ; scanf ( "%lf%lf" , & m
, & n
) ;
root
= fun ( m
, n
) ;
printf ( "root = %6.3f\n" , root
) ;
}
解題思路: 第一處:變量r應該定義為實數型double或浮點型float變量。 第二處:while必須先滿足條件,才做循環體的內容,所以應改為:while(fabs(m-n)>0.001)。
假定輸入的字符串中只包含字母和號。請編寫函數fun,它的功能是: 除了字符串前導和尾部的號之外,將串中其它*號全部刪除。形參h已指向字符串中第一個字母,形參p已指向字符串中最后一個字母。在編寫函數時,不得使用C語言提供的字符串函數。 例如,字符串中的內容為:ABCDEFG*******,刪除后,字符串中的內容應當是:ABCDEFG ****。在編寫函數時,不得使用C語言提供的字符串 函數。 注意: 部分源程序在文件PROG1.C中。 請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括中填入你編寫的若干語句。 給定源程序:
#include <stdio.h>
void fun ( char * a
, char * h
, char * p
)
{
}
main ( )
{ char s
[ 81 ] , * t
, * f
;
printf ( "Enter a string:\n" ) ; gets ( s
) ;
t
= f
= s
;
while ( * t
) t
++ ;
t
-- ;
while ( * t
== '*' ) t
-- ;
while ( * f
== '*' ) f
++ ;
fun ( s
, f
, t
) ;
printf ( "The string after deleted:\n" ) ; puts ( s
) ;
NONO ( ) ;
}
解題思路: 本題是考察字符串的操作。
把r指針左邊的字符仍存放字符串a首地址開始的位置上。 把r指針和p指針中間的字符進行判斷,其字符是否是’’,如果不是’’,則把這些字符放到第1步操作字符串a的后面。 把p指針右邊的字符放到第2步操作字符串a的后面。 最后給字符串a加上結束符。 參考答案:
void fun ( char * a
, char * h
, char * p
)
{
int j
= 0 ;
char * q
= a
;
while ( * q
&& q
< h
) a
[ j
++ ] = * q
++ ;
while ( * h
&& * p
&& h
< p
) {
if ( * h
!= '*' ) a
[ j
++ ] = * h
;
h
++ ;
}
while ( * p
) a
[ j
++ ] = * p
++ ;
a
[ j
] = 0 ;
}
總結
以上是生活随笔 為你收集整理的全国计算机等级考试题库二级C操作题100套(第95套) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。