重庆大学网院2018年C语言程序设计 ( 第3次 )答案参考

[复制链接]
发表于 2018-6-14 21:45:29 | 显示全部楼层 |阅读模式
扫码加微信
第3次作业+ P9 ~  F* f6 Z4 Y4 r
一、填空题(本大题共20分,共 10 小题,每小题 2 分)
/ v6 I& f/ ?  Y5 ^/ d1.
7 F6 J: i. Y# q0 B6 @: v函数reverse的原型为:void reverse(char *s);,其功能是颠倒存放字符串s,函数定义代码已经写入到源程序问文件myfuns.cpp。下面程序利用函数reverse将键盘上输入的字符串进行颠倒并输出。请选择合适选项填空完成程序。: I1 @3 I9 p3 D) }. R6 `
#include <stdio.h>
  H" Q, p0 Q, z#include      ①     
9 ]2 r6 T5 I, @0 r$ fint main()4 Z7 v1 @, _0 v6 l% w, r' g* }
{
: N+ l& Y/ w. v$ X    char s[200];6 D$ c( Q$ n8 I% S0 ]
    printf("?s: ");; H, _. S$ T" y) K- u" l8 m6 o- q
    gets(s);
6 K, b: K" D3 J+ l4 J& J6 G9 P$ z    reverse(s);6 r9 O$ Y) [. j# s( P! G- d
    puts(s);. O* t3 ^  W$ }2 T  Z
    return 0;2 E& H* Y" n$ ~
}& @) i# u9 M  q: K, d) {
A  "void reverse(char *s);"0 {9 }' R/ r7 l" L  f+ a; v
B  void reverse(char *s);
3 t7 y6 U8 |0 s- T: |) SC  myfuns.cpp
4 ?; _+ x( Y* Q0 g5 z* ^( oD  "myfuns.cpp"
8 f+ E7 k: y" {7 b$ I! N7 c! |9 K+ S) m  @
2.
0 O$ B' ]6 Q2 ]6 I下面程序的功能是:通过宏定义MOD求4个实型数据a+b与c+d的余数。请选择合适选项填空完成程序。
+ N& x1 o' }7 k4 Y' V#include <stdio.h>
( E) r; q7 Y0 F/ y: s: n/ ?+ g1 z4 w#include <math.h>
* H( D& _8 k7 z& v, J5 ~#define MOD(x,y)      ①     , D5 L+ \/ y1 X2 G
int main()
5 [+ Q& v, Z2 w/ k! D{   
( |$ \! I9 N: y2 D    double a,b,c,d,e;1 r% e% }, H# ^, r/ Y
    printf("?a&b:");9 E5 u7 I  [* f0 {. z
    scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);
) h) r: Y9 r9 j# O% ^    e=MOD(     ②     );
. I) q3 n/ }. p4 m' f+ u2 P    printf("e=%lf\n",e);; `" s& S! W: H8 G
    return 0;( w) x8 T) n1 J+ O3 f4 E
}- K5 m! l) F1 C# ]
A  a,b,c,d
* l% v  l1 t; m4 N4 \& O0 JB  a+b,c+d& ?8 b/ C, c7 l" @) |
C  MOD((x),(y))( U/ e- n. s* W9 C3 G8 M
D  fmod((x),(y))
4 ?; @) _/ u: X/ i& i. l3 H
% ]  h4 G% D- E3. $ J+ n; ]; a9 J
下面程序的功能是:随机产生20个实数存放到一维数组a中,并通过指向数组a的指针移动的方式输出所有数组元素值。请选择合适选项填空完成程序。
$ G! k/ ~" H5 `#include <stdio.h>( H6 r, t4 ^' W, G; T
#include <stdlib.h>
3 E1 j3 G0 y$ T6 o#include <time.h>
0 @: ?+ }- A6 E; D" U- F, l. |9 [8 L& m#define N 20
# t# m/ n1 N* C, h1 r. X  U" [int main()
3 C6 O; H. B. o* d4 I{
1 F4 C/ X' ?; a    double a[N],*p;, I& Z( }- ^9 v& c$ W2 W
    int i;
/ p5 N9 S" `- W/ u: n& I9 [% L    srand(time(NULL));, b1 F- y/ [* A7 y5 Q
    for(i=0;i<N;i++)9 T9 x$ f9 q! z" m2 @% _
        a=rand()%100+rand()%100*1e-2;
0 c$ Y% C! i9 i# Y  v7 G% [    p=a;
* D- |+ P# H: s/ t3 p    while(p<     ①     )
* O$ Z6 N  Z! |3 n7 x! K+ v7 ?& O/ E    {% s- Z2 J% [. z* d7 _
        printf("%7.2lf",     ②     );
3 S+ g$ z; `6 \6 m- N* v; d        p++;  o1 ~/ y* }2 v" P2 T
    }& Z. \6 C, s, t' |$ f4 `1 b, o% ]
    printf("\n");
6 |0 N. R/ L, `: |. T    return 0;3 y* [, \7 E. V/ R$ h) B  @
}6 Q) W& @1 w7 n( c1 c
A  a
( s) ]' b6 I6 Z) ^" r5 kB  a+N$ p- N' v  [7 Q: w# w" X
C  p
4 w$ m9 M/ Y. x5 |D  *p+ p$ c1 d' y' G4 h; f1 q1 N

* }' J! J% d5 S$ W' y4. 下面程序的功能是:输出person数组中年龄最大者的姓名和年龄信息。请选择合适选项填空完成程序。 2 q! }& \! A$ g' `2 k
#include<stdio.h>
' v6 F' D, @- Wstruct man 6 C; u, Z/ {1 A  r5 p1 o! w( ]% u
{ / l5 a) j" F& Y
char name[20]; " U, H9 i* ?: [6 z
    int age; . @" M% S; F# a* d8 k+ c
}person[]={"li=ming",18,"wang-hua",19,"zhang-ping",20};
) y: {- t  p5 P$ ~- U3 J, `, Kint main() 0 k, H/ V/ U% y0 k6 g- q
{
8 T# L, |' `  Vstruct man *p,*q; 5 I3 U5 R) `9 ~/ P, b
int old=0;
" {2 S' v% e# B- v6 y# c5 ]6 n; v/ pp=person;
/ E( x2 f2 p7 P, X. W3 e, L9 Gwhile(p<person+3)
7 g% o( F/ U* M{
7 ~6 L" W+ ?" V' }0 qif(     ①         )
( ]- z8 I; }6 U% }" J{
1 i0 w* W6 S4 B! s4 B, E8 B$ L4 Bq=p; 9 J& B, b; p- g+ Z2 t# ]/ h
old=p->age;
) N- k5 ^9 Q/ z5 l) v}
2 [- P/ e% ]0 Jp++;
: B- j. X( H9 T* g}
$ e; M; Q! l( B. G1 |   printf("%s %d\n",     ②        ); 3 g" O( x" J$ K* K" @
   return 0;
1 M( s, i' C; R! `/ c$ @} 6 v& f0 f; U- M
A  q->name,q->age
2 z$ e' ~- B5 H8 c6 @0 @$ rB  *q->name,q->age 2 Q. Y  a: p2 c" _
C  old<p.age
+ x1 \# ?! H) l& {1 WD  old<p->age ( R  N1 h3 L1 A, c7 A0 L
5. 0 u7 P3 J; z. J& G
下面程序的功能是:求实型变量b的小数部分,请选择合适选项填空完成程序
, s5 ~7 C+ l! V: ?3 [7 N#include <stdio.h>
* Y9 q! t% \% P  v  \int main()6 L. @4 E! d) H2 d4 l
{   
& z# y3 d" O+ g- G8 m* [5 ^% `    double b;
2 J, ]0 S' s, y( W- _    scanf("%lf",&b);
% M# O7 {7 g/ t& i    printf("%lf\n",           );
2 n9 w) f7 v) w# K8 A. ^    return 0;) o4 i& H7 C6 K9 d( ^! f
}1 g* Y: g% L  P6 p# a+ n7 W! H  W+ I0 o
A b%(int)b; T* t- w' X& \: z% d
B (int)b/b
; N+ X4 _( m& k8 I& oC (int)b-b( w6 c" R6 b, z, N; ]! N1 L
D b-(int)b6 ~+ n3 a6 x1 n) Z  R
" d+ R# E- ^1 u2 Z# r) s* ~
6. 下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。
3 P: l6 d: }. y7 t7 R8 J#include <stdio.h> 4 g2 p+ ]5 y4 i' r, G9 o6 |
int add(     ①    );
+ X) Z9 E, }2 Tint main() # p0 @8 z( y( A$ V
{ / \6 M; V$ R/ ]- N; w8 o
int a,b,c,sum; " U& h4 f8 `: P9 X* W4 M) ^
printf("?a,b,c: "); ! c# N4 \, X$ [5 p' i/ `$ c& Q, e3 q9 [$ k
scanf("%d,%d,%d",&a,&b,&c); 3 @  l1 J8 j; P5 B  O% i) h
sum=add(     ②        );
# g/ b0 u$ N1 E% m3 |1 [printf("sum=%d\n",sum); 1 B  e" N( Z5 w8 H1 M$ C- z
return 0;
2 T! X" {; {' p# i: {}
# E& ^6 H( B* e, _- E' O% R" [int add(int a,int b)
$ O& H# Y, `' U6 g, r2 d/ w, J{
# R  C7 q9 J+ B9 greturn a+b; % |/ a3 T5 ?  W! c
} * Z' W- A9 u* k/ o" b
A add(a,b),c
, D" Z/ S& ^6 YB a,b,c / Y4 g- e; P3 x( |) ~
C int a;int b 7 h3 `+ F' \$ a& n7 U- A* Q2 n
D int,int
, Y5 W' O3 \; g& T" H1 ~6 h- G6 U7. # z% W% W# Y2 Z$ w0 h( @, O6 m
下面程序运行时,若输入数据为:123456789,则输出结果为:a=123,b=89,请选择合适选项填空完成程序。
9 O  |+ g% u$ x" X#include <stdio.h>
  C3 _6 u) S2 A3 t7 b: Lint main()
! ?, r4 X' w" I{   7 g* m0 z+ {) i8 W/ J, f, i
    int a,b;
. Z# c1 E: R+ A    scanf("         ",&a,&b);
( p4 r, W, S3 l0 g+ F    printf("a=%d,b=%d\n",a,b);
; o/ Z5 z% W3 J) U2 R- g    return 0;# G* g; R3 v& Z6 g( h7 \2 r
}) H  w# z! m9 s+ r5 d2 L0 h2 y+ E! M
A %3d%2d
  u/ K4 [( T: \( m/ {B %3d%*d%2d
7 \; G9 s8 C  ^$ {* B( U; t9 l+ kC %3d%*4d%2d
7 k3 L( K+ n1 W& a) D0 TD %3d%4d%2d2 P8 y  R! Z0 q" l9 m3 ~! G$ c% ^
1 |# [* R6 [( \: t
8.
4 L/ K. b- N/ ]3 o/ G#include <stdio.h>
6 E+ g1 V+ u, d' e( B7 m+ }#include <math.h>0 Q, o  j3 d- l& _+ r
double sincos(double x,double *co);2 ~2 Y; q: e% V/ ^2 \
int main()4 e% v! z. g& A  [/ {( \4 j
{! I" t/ |9 v1 O1 c
    double x,sinv,cosv;3 H' _5 J; I$ {8 \4 K
    printf("?x: ");
6 h) g+ V9 t8 H% G1 b. [6 e* }    scanf("%lf",&x);* F5 p, u# w- P: }% J/ d
    sinv=sincos(     ①     );
) }+ K# G: V! I1 q    printf("sinv=%lf,cosv=%lf\n",sinv,cosv);
8 q# n% d" Y2 W" q    return 0;
) i; U- G2 H. W$ O0 u}9 W3 |$ K* y! E+ p5 [0 |
double sincos(double x,double *co)- H# ?; Z: W8 u' `- j" w: W3 `; o
{
0 k7 t, V3 g# U; b, D! K) g    x=x*3.1415926/180;0 ^; g! F# B; m: \' g
         ②    =cos(x);8 Y! l9 I7 q& b# K& b9 u3 ?. v# c
    return sin(x);; X- r3 |" f- b' B. S
}. ]" _1 H  X  S) o
A x,cosv
: Q2 b% Q/ L/ ~+ Q1 Y% zB x,&cosv
, ~6 t5 z, X( ]7 j! ]- b4 U6 PC *co: p! D* s1 o* B8 K
D co0 h1 ?& I$ T% J5 i1 w5 d# x: ^- m
) V6 P) R: Z) D, }+ U  G
9. 下面程序的功能是:从文件mydata.txt中读出3个结构体变量到数组a中,然后将数组a的内容输出到屏幕上。请选择合适选项填空完成程序。 1 O& F/ j6 Z$ ?
#include <stdio.h>
/ G% N  p7 v' S4 O4 c  s& G2 f6 Jstruct test
( n- {6 I) j1 H# z9 ^% z4 p{
* I+ q, M- Y9 T$ G4 G4 L% Rdouble x;
/ W: m, R/ j0 ^: n! vint y; % u9 P" r5 T. T. p1 d3 G1 C8 t$ _
}; 8 c& }* `" D. `4 ]7 D8 |
int main()
* ]& J- w" _* Y: {, ^' c7 T{ . x* s- N. T& Z3 g$ w
FILE *f; 2 k: R/ N! s7 W) w7 H( _- P7 Z
     ①       a[3];
: I7 A. P( B- k" ^7 ~4 m0 Qint i; : G( d- p  z' L- P" t
f=fopen("mydata.txt","rb");
6 C8 V9 z$ x% I+ T+ l7 bif(f==NULL)
7 U. W, f) i; r; D% {" e{
% M8 f$ K) K! k4 Y& O+ mprintf("Can't create file.\n"); / ~8 l, m! P0 S% O7 V/ l# Y$ I
return -1; + q1 d/ R% u. y9 j: q
} 9 ~2 ]& Q) y  |. ?" _) Y
for(i=0;i<3;i++)
9 n- [: x# c' v) K3 g3 ~fread(     ②       );
$ v9 p0 h5 }( I0 X& y$ D/ R0 sfclose(f);
  n8 Q, H% B: }5 o9 @+ Xfor(i=0;i<3;i++) 8 C% D* A" z3 O8 `
printf("%lf,%d\n",a.x,a.y);
  H9 y* l& j9 k5 v) Rreturn 0; - C; K& i# o2 X3 B3 D
}
1 ?: d* S9 Z8 S4 X8 c5 ^! k. AA  struct test
2 c& v3 \6 c# t* O% uB  test
5 T  w: T1 ?( ]0 `) yC  &a,sizeof(struct test),1,f
4 ]* B% ]2 v" y/ S7 C# sD  a,sizeof(struct test),1,f
  V/ D% g  z$ j& f" p5 \10.
, {. x' ]+ w1 w+ e; i1 h% `下面程序的功能是:随机产生15个整实数存放到二维数组a中,并通过指向数组a的指针输出所有数组元素值。请选择合适选项填空完成程序。
. o& K  n: \! K7 |2 V: x#include <stdio.h>% Q- f( }' ~( r; V% w
#include <stdlib.h>
& u) D( n6 A  E: N# ]  N. g' P+ T#include <time.h>7 Z4 i* ]8 ~/ _: t& Z  l
#define M 3" |1 \3 u& i5 D
#define N 50 r: A, v' D6 `( a0 q; |) R) n& g. {( t
int main()7 ]3 U7 a# ~2 A! N
{
3 D; ?- |* l3 h4 O: Q5 M1 h    int a[M][N],*p;% `( x# z/ \3 a% ]( k3 T
    int i,j;
" r7 ]9 T4 o" o+ o5 ~9 T# p+ {    srand(time(NULL));! \% C) \& N, P) S1 `  M
    for(i=0;i<M;i++). s3 }5 E( U) Z5 l
        for(j=0;j<N;j++)
8 `0 k! G) \* Q; f0 S" d  `- v            a[j]=rand()%100;- r( T* P% f" k! E$ T& p
    p=     ①        ;) l) ~) O. u; D: O
    for(i=0;i<M;i++)7 i) S8 o) I# y$ z' E
    {; A/ ]7 \1 b% ?+ n8 O
        for(j=0;j<N;j++)6 C" R+ u  g4 f- p; C, O
            printf("%4d",     ②        );1 r$ A1 r, ?: ?4 e" w
        printf("\n");
% }8 {6 u$ w+ g+ C; W7 o7 q" @$ K    }% f& B8 v3 l7 _: Q3 B6 y+ F- n% v
    return 0;
7 G! O: w& w/ m* Z* f. M}
! b4 Z/ H) r& n* c  _. r. B# W6 dA  a
* }6 c1 Z9 r4 N( @( ?; c% A! HB  (p+i*N+j)
" v3 G, f2 `: h, }( r5 LC  a[0]
7 J' X: p4 s7 X- O4 ?D  *(p+i*N+j)1 t% L: f3 X, y# `: Y+ P1 g5 w

/ Y1 b8 J. E6 W  Y/ }, }. ?5 |' l& B7 d* Y
二、程序阅读题(本大题共40分,共 5 小题,每小题 8 分), k1 E/ M) d7 Y3 ^7 K1 s
1.
7 y/ O, p# Q; w6 d' B( ~. c#include <stdio.h>
# L) S& s: q7 u9 M#include <string.h>" i- ?9 \$ ]+ u- Q: [$ l# `
#define N 0
8 G7 V% C* x; N2 o1 x: x4 jint main()4 ]4 d% U) w, Q7 T% R: q
{# c/ N1 k2 j6 z
    char s[100]="abcdefg";
0 C2 j7 C" ~! H; J& r) D2 _1 F& d7 T#if N3 p& \" _' F; X, w$ B' L4 F8 E
    printf("字符串s的长度为:%d\n",strlen(s));% \7 q1 w+ d% L% {. ^0 z
#else
9 k! @3 m7 N: J" i; l/ b  x    printf("字符串s占据的空间长度为:%d\n",sizeof(s));8 u8 M6 `- @6 Z' T8 G3 Q
#endif
! t, G$ W) K8 h1 B    return 0;
7 ~/ ^# Z* n4 w  `}
& R8 p; L3 V& M) i
5 C! _9 N* \' @7 w& F2. (写出下面程序执行的结果) : [# a- T0 O9 Z
#include <stdio.h>
" L6 M4 a: r9 r" ~9 m9 fint main() - ]4 p1 g8 ?7 q3 k: \  ?; ^
{
, l9 p4 [$ ^4 p# u" a/ Z* p% ]. oint x,b1,b2,b3; 2 J8 T  z. Q/ ~  W( \5 {0 n) m
    x=300; 4 u. Z* F% _5 r/ @, [
  b3=x/100;
# t& i8 _" h( l  m. C+ S  b2=(x-b3)/100;
4 d7 J; J/ u# |  b1=x%10; ; V8 L3 T* g( @) t! Y
  x=b1+b2+b3;
! K) C4 ~- _. e. U0 [. x: T  printf("%d\n",x); $ ?, J& u* c! i
return 0;
( m3 ]) i% R7 ^9 a5 D; |) _}
; R$ ~5 ?" e+ w$ ^2 t3. (写出下面程序执行的结果) / ^; i9 k7 G3 d+ t9 c
#include <stdio.h>
+ B) i* L5 ]# a, V1 S8 ?int main()
+ q9 e% g* V4 x2 G{ 2 K8 ^9 r2 H# [
int i,j,k;char ch='1';
+ ~3 F! e8 v! n   for(i=0;i<=3;i++)
* ~4 [6 l9 `, w- T   { for(j=0;j<=3-i;j++) ! K$ q7 O/ [, n4 f+ N6 W3 v
   printf(" ");
' z  ]1 K' h% t5 O0 Vfor(k=0;k<=2*i;k++) 2 ]0 }' E' e4 o( Z' N: }0 H
printf("%c",ch);
5 S) q; r' B3 H$ yprintf("\n");
1 x2 ?! u. v. R7 dch=ch+1; . p" u  M/ \/ _: b1 p
}   c4 d$ f" q7 G# r+ T, @
for(i=0;i<=2;i++) + l* g7 x* t$ j8 ]/ Y9 W9 \5 ?
{ for(j=0;j<=i+(3-2);j++) ! l1 W1 G1 Z6 Y
printf(" "); # C: U* q2 f$ E. R
for(k=0;k<=4-2*i;k++) - [. K6 W, O& d3 {7 H+ R  q( \
printf("%c",ch); 8 K' G  c" W* K4 M/ j1 f# q2 }
printf("\n");
2 `8 m7 H2 R" h: f    ch=ch-1;
2 v" p* f6 F; Z3 I}
4 M8 ~/ `5 O1 Qreturn 0;
  z' Q4 y9 X' k/ \. g& p8 [& U3 s} / [0 z5 f0 a, e  G) x
4. 1 K' E3 s, ?, O
#include<stdio.h>
9 [; v: C5 |; x: }: O1 p! Yint main()' }! R, l1 t0 P1 o" W. {+ h+ Q
{   
7 H0 i9 o6 o- Z1 q    union4 _$ E# [6 r4 E1 F8 I
    {   
/ U# y9 I- g  t9 |7 s* B        int a;
! w7 M) X  F( o        char c[4];* e5 E; B; k3 m
    }s;
6 j  Y( O; A1 t' @5 ^. y) @, A    s.a=0x46474849;
5 w7 S. l" ?1 c7 p6 a5 `3 S. B8 V$ a3 M    for(int i=0;i<4;i++)
' G3 M- v+ d- }* `# \4 v4 C        printf("%c",s.c);( Y/ H( `1 q% j* e2 j* O
    printf("\n");
: s( d+ ?2 g+ B, z- C    return 0;- T; O: e* d9 ]" p3 Y
}# X2 h0 A' w% w

! p) Y3 I2 ?! {5 C  a4 d5. (写出下面程序执行的结果) , r! c. S/ M. P# B& q# ?
#include <stdio.h>
/ n* t. ~/ V: E6 {" S+ E3 dint main() , m* T" y% j) A9 w0 a# r
{   _$ B) O, I# ]* _2 @3 X, V
int i,j,m=3; . {' T& }1 S  O/ r- t" x
for(i=0;i<m;i+=2)
8 a+ |6 h/ L& K0 a1 K6 `2 `0 N    for(j=m-1;j>=0;j--)
: @! W( [7 T8 ]* {; ]       printf("%1d%c", i+j,j ? 'H' : '$' );
# \: ?: h) v3 b( D% A  Oprintf("\n");
9 A  k* g) H( n' b6 Y+ L5 B4 ereturn 0; % H& h  f2 n+ _. o  M  \! t
}
3 u. L3 H: R8 x) w  j' B: {- M* r0 ]& g0 I! q( ^4 }4 ~
三、程序设计题(本大题共40分,共 4 小题,每小题 10 分)
3 C8 m8 Q; I0 W* R1 N5 [1. 从键盘输入一个指定金额(单位:元,例如345),然后存储显示支付该金额需要的各种面额钞票的数目。
! o3 d0 W% t/ z0 Z& q4 {# m0 F2. 编程序求出100~1000之间的每一个整数各自的各位数字之和,要求求每个整数各位数字之和的函数单独编写。
2 {$ X. o( T7 g1 i5 Z3. 函数r_getbits的原型为:int r_getbits(unsigned x,unsigned  pos,unsigned n);,其功能是返回变量x从pos位置开始从右向左计数的n位值。请编制函数r_getbits并用相应的主函数进行测试。3 t7 K0 A1 R" [) Y* F9 y
4. 编程序实现功能:利用一维数组,判定从键盘输入的任意正整数是否“回文数”,所谓“回文数”是指正读反读都相同的数,如:123454321。& m) [, q+ H  ^& }8 U
+ Z5 v2 y9 t4 }" ~) ^

8 [" ?) Q; Y  V* v1 b) ]; _  h  R9 P, @" Z9 o
答案:
5 X) f' B. B2 C8 m5 j- `
) a7 |3 y) U( P. V- s) T( W, j% W" O+ D3 n8 ~( C( L3 P
一、填空题(20分,共 10 题,每小题 2 分)
3 h! h% O" E. i. a( C0 p) ~  f- h0 o7 a! a% z, Q% A# n( Y
1.
% n9 Z+ Z+ t* M; ~参考答案:  W! G. q1 e' ~+ }! h4 L4 Y
D
8 {1 P$ s* S4 @) ^7 k0 q4 j解题方案:1 R: E! a) [" w* f& l9 H0 [$ R$ c; v
' r* b, t# N# r9 l* X3 G
评分标准:" [# J# H" }; p2 f
4 H* f: |3 Y8 Y2 {! E) U6 |$ Q
2. ( S$ n* P# t. C  B! X
参考答案:
9 _& F' Z# V5 `# x- n①  D
, [1 f  B, q! `2 Q  D②  B
4 I( s0 s5 W) P7 G& r( m0 z' m6 p' ~, z1 b
解题方案:
$ b4 G9 B. S- P5 V' R: F; g7 t" y# Q4 |# {; |
评分标准:1 w) g& y/ y0 d4 Y5 |6 Q
, M9 I" C6 h- H2 E5 w- A
3. $ `, H" G1 n; W4 V0 U; j$ j
参考答案:" r8 w: w8 d3 m( `$ g' g7 m
①  B) u; C. n7 {7 y2 F6 W5 M
②  D
8 R7 [( T7 b2 o8 h) U( c& a
$ L' e* ]7 m/ i$ f& E) w! t解题方案:+ j! X1 X0 R* N6 @- p" ?- X6 G! |

6 u" @' G( V) h* l- U, u' z, P5 q6 K评分标准:- j$ c( w" O) x" B  }9 i# c. S
* C0 v* q( @: ^0 ~, x" X7 ?9 T
4.
* T$ a4 J& s# Q* [2 Y: F$ n6 x2 k2 T# A参考答案:8 ~9 N: |0 F( H& I! G
①  D
& O4 F) Q* U1 R0 O. w4 h1 g( b②  A. G7 g. U) M& ^7 {2 Z3 I* [" t) i: x

5 F( H5 p1 F* T( \% l& q解题方案:9 u! I6 a+ J, c. k
* ^5 @9 t, \, ]
评分标准:8 j1 h7 n& W, B

* F' w9 S. G  {, V' Q: X5. ! L; g; f, K1 r
参考答案:2 I6 ]( n4 ^4 E0 J
D0 P+ f7 R$ k# G% e" B# q
解题方案:" ]2 g$ V- Y, K. g+ w9 t

" X. E2 s7 b& B4 }评分标准:
: Q3 E1 S; L$ E- d! M" L0 ^2 ?
; h8 u3 I0 A2 ^3 n( t! ~: O6.
0 f# B" w, B$ b3 Q. G参考答案:
5 W6 |5 {: q* j( N, d①  D
1 q; S; {& v8 z' }, z" y②  A& N6 }$ I7 f+ k9 d" \

8 v6 j' z' v/ ~# h$ @. W4 h解题方案:8 d, ^' Y* z4 |' `/ T

$ S8 ]- o  c* M$ ^/ @. A评分标准:- V( N% k1 }1 T$ N$ H
$ r1 c' B5 r9 L* Q* }) A
7. 4 i8 T# U% z0 \2 \6 N' `% e
参考答案:
7 _0 }4 H- a9 c1 bC/ {$ y. \. j0 D/ h
解题方案:
6 q$ }' E9 ~( u& p: j& l) G
0 P' z4 H/ K+ D% m- n评分标准:0 E6 a. J9 H6 Z" K  z) ~

% Y. n6 ^4 T0 z' X, b) C2 d8 d8.
9 w0 Q1 t3 E5 u, v2 @: R参考答案:9 |7 I6 a0 }- o6 L7 |/ a5 d
①  B
, Z0 K& y7 l. Q& ]( b) a②  C7 S  V0 U* V+ M* l% i4 |8 e1 ^" ~
7 h& J, W# U# @
解题方案:5 n% S. D% }+ P( D" x0 y1 R
4 b7 A  s: I$ m2 @! B
评分标准:
! M4 ]) z4 ~+ Z0 u4 v7 T. ~% n, {0 K- T  ~( l& F, q. @
9. % |% w- R5 ~3 X
参考答案:( {& E) V4 O$ Z) i
①  A5 c: @- i# [/ O, l6 t: c
②  C  f9 }( m% @* u7 k: p
6 G+ y9 a, L* s/ L  a$ p
解题方案:* Q! ?$ k. M/ Q6 z7 L0 Y

) E/ r8 u) e: Z4 K. C  I: z' G  o2 x: g评分标准:
7 c/ K4 J4 w$ E: ^
& j9 r% y; I' Z6 F% y10.
( v9 l$ L" }: O! ^9 W( y" `参考答案:# y* L* g$ `2 H; C
①  C' s$ }" M, s( _, K+ t6 J. F: `
②  D: k( i. [3 \" w
& n$ b6 }7 X+ r) Y5 Q
解题方案:! D' O( g! E1 s' q( W

* I3 K' \" {. J. E7 b$ G评分标准:( z3 H( o9 B8 ?6 q" V, A, F0 L

! E  `6 C* l  f6 w0 z5 {, V$ K4 e) Y  R1 R
二、程序阅读题(40分,共 5 题,每小题 8 分)# G' A% M! }1 h; o( t9 \" j
, X9 E9 i1 d% E
1.
" F- T5 _" T! u" s7 y3 p: x参考答案:
' K0 D0 G  O5 ~8 c- }% y字符串s占据的空间长度为:100
  Z% [9 n: n5 u5 z
/ L) L8 _/ L5 U4 c# {2 y解题方案:
+ R4 \- z8 n: D8 O, y0 g4 u6 b7 E$ N  ?) l$ \
评分标准:0 z$ ^' \- R( g1 D- A

' R/ M  h( M% s- r2. 5 d) }+ Z% P3 x* r# i) N
参考答案:, n8 ^" X/ e# ~
5! w' K0 X' F* `: d, Y& P; W7 S0 H
解题方案:
& t5 G$ E; N. ], G
: i- g9 Y& h% Y  H评分标准:
  j% M" e% W' v% U4 b# k: ]. q( c! |! x6 g, _- w
3. $ w6 `6 C$ \- w; D' y6 I
参考答案:
( ^8 C# ?2 r* X/ W8 H$ y0 W! @% _ 1
- T$ v  N6 C; X) h6 w: r8 h6 ~) E   222
  M  ]0 q2 a  @) Z  333336 s- D' g& Y& k" W$ D8 ]
44444445 }3 J- H% p5 @* `/ a; y* W
  55555. N0 p' q9 B% z9 L9 U8 S  u2 F: j( H
   444. N/ T8 \0 y8 a$ W3 G+ l( B' K  e( v% w
    3   
7 \4 N$ P9 d: x; n
* m( P- S) [: t解题方案:
2 a+ f$ R, j3 K8 W9 f" g% |2 b, b" ?: z" l* }( X
评分标准:
+ r, H/ H. _7 H1 j' |5 J
1 Z" h" _4 L: I, `' y3 c) H3 z4. $ c) w% R2 h* w) i: P
参考答案:- S# h9 h( L) _7 v$ l; Y
IHGF
( _! X+ j% |: b$ N4 |0 z" `- f* k6 _6 o3 x) F  Z
解题方案:
- p+ y  x  ?$ j  _/ ]# o& i3 ]) X* @6 V4 T8 p. f) f! t; L. l* t/ P
评分标准:
. n$ _2 g" J1 J- d2 k. X, \1 X! [2 u8 T2 K$ f
5. 4 f/ E- m; t( w6 G
参考答案:. W7 R/ _$ o/ U
2H1H0$4H3H2$' R, y9 d, y( j
解题方案:
; |. W- l, p7 j1 W, i) F9 n- Z3 @( L; l' J/ _1 g
评分标准:- ]' j" j( U& b$ s) k% q0 A
6 V, I; f) O( F5 L7 f

  g) _9 j3 {0 C% u三、程序设计题(40分,共 4 题,每小题 10 分)' [9 |6 H/ @1 I

5 K: f/ s+ }' K, z4 j0 R* d1.
( x, G( Z$ E0 {; Y0 S; r参考答案:( O8 g) s3 C* C
#include<stdio.h>. b) _0 F8 r" X" ?* R
typedef struct Currency
6 I) _' _/ I: y+ P1 e9 q{
/ W3 h4 E( X) _9 g7 ]0 y    char Denomination[10];
5 k$ h. X3 [9 D, t0 q1 @; d0 a  b    int Value;. K$ F4 i% u: X: g1 D) y
    int Num;1 G( W' U0 c. x4 a5 ?
}CUR;; Q: l1 b) I& z( n* ?4 T
int main()
% K+ a2 @4 Q& ~2 i{
! t5 g; B- k7 U8 R* x* z    CUR Currencys[]={"佰元",100,0,"伍拾元",50,0,"贰拾元",20,0,"拾元",10,0,
2 m) A9 g* H" o+ x0 Z                    "伍元",5,0,"贰元",2,0,"壹元",1,0};
, v3 W4 H# C9 i9 O, {    int Money;
: l  O6 M1 }+ {- w4 I    scanf("%d",&Money);; U5 }+ L2 U6 Z  I' {
    for(int i=0;i<7;i++)
6 N4 `& T) H+ M: U5 _1 v: @$ S    {   Currencys.Num=Money/Currencys.Value;8 U) D0 \6 m7 e* m. r( f) \4 Q1 s
        Money%=Currencys.Value;3 n, K( t% d/ b
    }
$ N) P! X3 G) b* X    for( i=0;i<7;i++)
2 X+ p5 ]+ o& q0 {' q            printf("%s:%d张\n",Currencys.Denomination,Currencys.Num);( e* Q; _; p  a* Y) q' D: a" W
    return 0;' O; y1 d/ f! ]2 u' d
}$ d% o' S, F* W
, d6 D3 w% P$ |& ]/ p; [6 x
解题方案:
- Y; t8 U( }+ j) ]* O- b8 [. z
) M4 T5 q/ [* [, I& Z( \. u8 ]( _评分标准:
4 T# t+ Y% d+ U6 ~6 [2 E/ Q" v1 s& W* f% W: g$ N
2. ! d7 T+ z6 q1 x/ C" G5 |9 W
参考答案:; z. |( s0 F6 Q7 {0 I. L
#include <stdio.h>
8 P2 N& V2 }; F; R7 ?5 f: t0 z#define N 1000
5 f  n% {, O2 B; H+ d' K. ?int main()
1 i4 h' ]7 \  @( A  W{   % ~: y3 q; M4 }% S
    int sum(int x);  t5 D2 |4 @7 d) b
    int n;0 d6 I* y8 g( Z: `
    for(n=100;n<=N;n++)
' p) v& S; J; v, s; d        printf("%4d",sum(n));! D9 B$ B: V. Y) R3 F
    printf("\n");
! K4 x( f; F$ @/ b    return 0;, O$ \2 M- h% h8 b7 @
}
/ N2 n, ?' `4 p  P7 E# k1 Bint sum(int x)
* m: V2 ]& w1 Q' m) z0 k{   
! f' U$ \4 k$ d& ]    int s=0;# M7 J" F9 g3 E
    while(x)
% N, V% b7 A& I  H- e  ?    {   s+=x%10;
1 k8 ^' M  M4 V4 J, g$ g7 \$ V        x/=10;& X/ h1 |: o+ ~* j
    }
; m0 Y3 W" x& y0 d& v0 ~) b    return s;- l. [; B$ A: i
}
- r& M9 E& X% Z
0 _- ?" D/ @6 t0 d解题方案:
) ]! E8 V4 D: G0 }1 B& C6 f( I* I4 M& E
评分标准:
' X. e. Z2 a$ h6 B
, }9 ~$ I6 ~: R- i3.   s, l1 c5 [! b* W0 D) f5 ~4 U
参考答案:; ~3 `5 L$ L# A3 n; \% J  o* U8 T6 q
#include <stdio.h>1 j2 h5 M+ a( f; z) M- y
int main()  v9 m( q& ?" o1 B0 z6 t
{8 t- v  K/ |* Q, B+ e, N3 X8 w
    int r_getbits(unsigned x,unsigned pos,unsigned n);7 `( _: S' R' d2 z
    unsigned num,pos,n;3 F7 `  H' v3 \. r! F" E/ ^
    printf("Input num,pos and n: ");/ o( A" P. H! o' n& y
    scanf("%u,%u,%u",&num,&pos,&n);4 i8 q+ T- a5 ?! ^6 v  r
    printf("%d\n",r_getbits(num,pos,n));5 E6 E7 _  n) o2 O
    return 0;+ _) _1 ~  O4 B& m- F0 U
}) b) F% R/ o2 @3 l- C9 r
int r_getbits(unsigned x,unsigned pos,unsigned n)5 X2 |. Z% D2 o8 L- V* g
{
1 ^3 {& i, M4 u! e3 j! e# e5 T    int len;
4 ?3 n" U3 H- O    len=(x>>(pos+1-n))&~(~0<<n);
2 r6 H6 r" t, y4 E& h    return len;" }* w4 k6 P; A& Y% M, \1 r$ I
}/ B! B9 Z( v+ Q$ S8 L# o" E5 X

4 S* j' X  {2 u) M. ?解题方案:1 R% k' |" l" r# r: u% D" S) M

; e+ }. }% `6 j2 A& u# ]评分标准:! B2 F! M6 Y7 ?

" v5 B1 m  Q4 R0 y+ a4 `$ [% S4. ) s6 f  a& x$ J' {1 }; S1 p/ ^' ~
参考答案:
' }; c3 C$ ^, E& E9 Z4 o#include <stdio.h>
8 I/ p1 m7 I$ Q) K+ S, G# q2 i8 e: J5 K+ ]int main()
+ T' p! x# [8 |! `; _$ n{1 w  O; v2 |$ A, t7 P" N
    int n,nt,na[10],i,j;) d. K2 f. Z; L# A) U# Q; {
    printf("?n: ");
% W" M) T2 t. l  m; f% ~    scanf("%d",&n);
3 z/ }1 f) F3 K  a0 m& j, D    nt=n;; J8 `+ y/ b& {4 z7 [
    for(j=0;n!=0;j++)//将n分解成数字依次放入数组, H7 J) D) F! E; S0 O
    {
( ~! o) e7 C) a  H6 C- O0 {8 N        na[j]=n%10;
, k4 v( A  `' D+ U- e5 y        n/=10;
2 ?5 K% o2 i/ {, u5 s8 I  t7 N- }+ \    }
! w1 y) b8 H7 f    for(i=0,j=j-1;i<j;i++,j--)
  L0 E: I6 z: t        if(na!=na[j])
6 d1 g; i& @; W9 x) r            break;
! I; f# {2 I0 s& F* I$ B    if(i>=j)
8 ]) S3 g6 K3 L8 \6 J% |        printf("%d是回文数!\n",nt);/ w4 y5 o! u# I$ b+ w
    else
0 U% D% m: [5 z, S0 R9 l& h        printf("%d不是回文数!\n",nt);+ j9 L5 r; m" i5 G
    return 0;
' y7 ?: a* o8 ~  q" v}
# p# V" r1 e* F1 {3 S
& o0 v9 O3 s8 D( P! L解题方案:
4 G9 K- i8 e2 Q2 p" E1 r6 z! k* P5 ?# J* X6 I' [. p% e
评分标准:+ G6 q' B5 q* n0 q$ d1 n

6 E" Y4 j% W6 {: a: K/ t. q* O1 |% f, u" A- ~9 @
快速回复 返回顶部 返回列表