|
离线考核
* O7 J$ R% U/ A: b《C程序设计(高起专)》
$ d( g1 u6 c; I
8 c% Z9 ?7 h$ N* o& }更多资料下载:谋学网(www.mouxue.com)100分
, K9 e% ~+ _# Q2 r' ` h一、阅读程序,在横线上填空(每空2分,共20分。)( Q7 K W5 f6 d7 C$ U. i Z
( w W6 b! u" q1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?1 z# f! h" o ?- Q! S+ G4 a
main( )2 z$ r, Q0 j3 P! K
{ int hb,hm,hl,n=0;//hb,hm,hl分别代表大马,中马和小马
8 s. W% q0 I2 p+ \ for(hb=0;hb<=100;hb+=3 )
- T$ y1 H: c4 r for(hm=0;hm<=100-hb;hm+= (1) ); q4 Z5 ]# |/ }2 [- I, v* `3 ~7 [
{ hl=100-hb- (2) ;
* _/ t- ~; P; [ if(hb/3+hm/2+2* (3) ==100)
2 p$ g" [" e/ T% w m+ {) U { n++;7 f. c$ w$ R; I# w8 W
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
( F# b7 ]+ T3 K }
: u7 c, H( H7 C n7 M$ ] [0 z }
) d, V2 W6 ?, g( [! L printf("n=%d\n",n);
$ K. l* G, G( A& b4 j5 o/ u N }5 N. W! G2 N, b6 N
2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
- n4 B- S# h3 i/ I" i5 [* C9 G #define N 10+ ], f M3 Y% n# P
char str[N];
6 J. u* a* Q2 }" h* p- Z main()
) I% Y" C3 p" h2 A- C { int i,flag;
9 o: k7 E, g8 s3 F$ g/ n8 R: C, e scanf("%s",str);
9 E, z3 W& R7 q% _ sort((4) ___);2 p9 t' l3 |& L- } T$ w
for(i=0;i<N;i++)
) {( ]" h( w& I/ N, [& Y& t. @- \ printf("%c",str); H, g- j& C8 ]1 i; M/ j
printf("\n");% e! Y5 D3 H5 r8 M5 M* B: [
}3 D$ z5 d3 M$ y
sort(char str[N])
4 @6 K$ [ d/ I0 _0 L { int i,j;& b* B; v* ]; p, S( Z t4 y1 |" r
char t;
0 {$ `% z, m! [% P. t for(j=1;j<N;j++)) ^( Y' ~3 ?# {) G4 m" M+ s
for(i=0;(i<N-j)&&(str!='\0');i++)$ U) y! R( l5 m1 [- \5 Y
if(str>str[i+1])
5 h5 a1 }! i2 P2 j { t=str;
& l+ F; z& N. r8 e1 n y _(5) ____;6 i/ V* j. x0 t" p# o
_(6)_ ___;
6 q u7 {. Y+ ?6 c% C" m0 m# B" ` }
: I# h) ]" D% x; ?% ]) N$ K }
" T' I6 z; x* `5 C) {* h- O" P. }. d3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)$ c3 t! R" Y9 s9 e
例如,矩阵为:
" F; ?- E M6 U7 ?* s& m0 F 3 0 0 3
* M5 c8 A" @) Y1 f0 u( d 2 5 7 3
1 I2 I+ K& H% F 1 0 4 2' h0 h: a. S6 T
则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。
( D3 Y( S0 Z2 Y" F+ R add(int m,int n,int arr[])6 F8 S: u7 N" A* A
{ int i,j,sum=0;
4 r4 K# B: [- U9 u1 b: c% [ for(i=0;i<m;i=i+m-1)
& r0 D" }4 u; g6 U+ { for(j=0;j<n;j++)
7 r+ Y3 d _+ x1 C- K* z sum=sum+ (7) ;9 }1 \. u" [; e+ S1 M/ t
for(j=0;j<n;j=j+n-1)3 Y1 W, |* w$ N* t+ W
for(i=1; (8) ;i++)4 O* _/ `9 d& @6 G; q5 o' b2 \
sum=sum+arr[i*n+j];
! G* P) E# N; j return(sum);1 M! U, j" x, E
}
/ q! u* ?. C& }5 K: L2 ~7 v4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
+ C3 ~ N- m; X0 o; Y X- y2 s2 F6 s+ X #define N 10
# J( T% u7 r$ Z# n& d5 a/ G+ \ main()5 c7 H y, F0 ^$ ^) H
{ void maxmin(int arr[],int *pt1,int *pt2,int n);
4 r+ \* G/ q& v- P int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;. `0 A# b p9 i& B* b
p1=&a; p2=&b;( ~. ~ f h' V9 p) c; [" R
maxmin(array,p1,p2,N);. g1 x# D0 S9 y4 j. u2 R4 z
printf("max=%d,min=%d",a,b);
( \( m8 S7 s& p/ b% q }& E6 p9 N. m+ t- B2 v' k9 \/ }
void maxmin(int arr[],int *pt1,int *pt2,int n); x' x# h" C! V- B" Q/ t1 f/ f& F; @" a
{ int i;
, N' u7 X5 D1 ?' G) ~& S *pt1=*pt2=arr[0];
1 W/ G% F( T# c" s* P* h for(i=1;i<n;i++)! N& u# j3 H# y6 e8 u
{ if(arr>*pt1) (9) ;
5 I% T+ C+ }3 c1 n. m; G0 H/ p4 O if(arr<*pt2) (10) ;
; e' \2 `- n. {# I }
/ N0 G- Z7 i( [3 f, C }
& w/ F, a0 X* ^) v" F8 T
0 w+ k2 |* A2 x1 O$ J. F C二、简要回答下列问题(更多资料下载:谋学网(www.mouxue.com)8分,共40分。)
3 p: u7 n; ?, ?1.结构化程序设计中常用的三种程序结构是什么?各自用哪些语句来实现?" v7 M) _0 Z6 M7 C
2.C语言对字符串操作的函数有哪些(举出2个以上)?
& E, D v7 F8 t' W3.C语言的构造类型有哪几种?各自适合描述什么样的问题?$ V& z. n3 n h. s$ b- I7 x# O
4.函数调用有几种方式?函数的实参和形参是怎么进行结合的?
2 a: T6 G! Z1 e& Z6 }- o5.do—while循环和while循环的区别是什么?/ {2 C7 V, w# |$ s: C* \: T
三、编程题(共40分)
) J7 C1 f$ s1 U/ O% }% \: P7 J1.一个班级有10名学生,每个学生的信息包括学号,姓名和成绩。编写一函数sort,实现按学生成绩降序排列,排序方法任选。在函数之前,定义出函数中要使用的数据类型。(15分)/ s* g; M! h5 M# A$ N- n# V' X
2.编写程序打印下面的图形。利用scanf()函数由用户输入星号的行数。(10分)2 k" o- ?, n$ ?; N1 f
*
3 L( I$ G7 f2 O**" s/ B n+ l. v" \2 \6 r8 F
***$ E4 q: Z/ j. ?# d8 t$ O. i |
****" A; _( _- s, Z+ D- ~& P
*****; _8 v2 n2 ~8 N5 h9 P8 v
3.已知定义int型数组a,数组a中的元素均为三位数。编写函数jsVal(),其功能是:统计出3位数均为偶数的数组元素的个数c。
3 M, i- L* K+ c; r& m/ p+ D例如:int a[6]={123,246,345,608,420,987},则统计结果c=3.(15分)0 t$ h8 x; w2 ~( ]% O2 @
# X( O5 t' x7 ]4 { e0 n$ p! ~* L |
|