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

[复制链接]
发表于 2018-6-14 21:45:29 | 显示全部楼层 |阅读模式
扫码加微信
第3次作业, q) ^3 h! @( E- D6 t
一、填空题(本大题共20分,共 10 小题,每小题 2 分)
/ i) }6 P; Y9 Y4 {3 U6 D& H* b( \1.
7 G; a4 J  x9 p! t% b函数reverse的原型为:void reverse(char *s);,其功能是颠倒存放字符串s,函数定义代码已经写入到源程序问文件myfuns.cpp。下面程序利用函数reverse将键盘上输入的字符串进行颠倒并输出。请选择合适选项填空完成程序。
% k2 o' B( E9 M$ h#include <stdio.h>
+ u9 H1 }5 B& e- E#include      ①     & w1 m% A% B- {* ?
int main()! N  T: o0 q+ ^5 T+ m# d
{
4 l- ~! t1 l( b/ O( |    char s[200];2 }! V4 k5 W8 ~- ?; {' J
    printf("?s: ");
+ [# h9 x( W- \  K2 w7 T/ p0 o    gets(s);
6 ]& U- ^+ |( C! ^6 R) |    reverse(s);; O/ M/ g7 z7 q, P3 h
    puts(s);( A1 V5 U. }8 w, W
    return 0;
! }  c, A! C3 Y! _: A}+ |3 A4 r* N- |: U) R- \' k0 f
A  "void reverse(char *s);"+ e0 N/ m* L# x1 v
B  void reverse(char *s);) |$ E* p; g7 a9 J
C  myfuns.cpp8 J+ z* A9 g8 Y  g; l
D  "myfuns.cpp"
3 V, V6 V  p, i; K8 q; G0 I& V+ s8 a
8 T, g( G0 L' a2.
( N* ~2 I" M, D" B. }+ V下面程序的功能是:通过宏定义MOD求4个实型数据a+b与c+d的余数。请选择合适选项填空完成程序。8 @  r6 U4 m4 L7 W3 S: d& F
#include <stdio.h>
* t; I% W; m3 t$ r! S  d! a6 p, j#include <math.h>% W! S7 ]4 H2 A2 @% x
#define MOD(x,y)      ①     
' e7 F: g9 x3 a( [- A7 @- a& n7 uint main()# i8 L( s, ~4 r# E6 k4 o
{   ( A3 A! p/ O1 H
    double a,b,c,d,e;
/ A1 ^5 ]5 {: n  V    printf("?a&b:");
: K; M+ y& F6 M' z# v    scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);
; I: }6 |+ U2 o$ i% j    e=MOD(     ②     );
  ?; ]2 I2 l& J* S  C    printf("e=%lf\n",e);
9 M% Z6 }, x) q    return 0;
! O* o5 n0 q9 D/ Z  y9 r1 s- B}
/ c! Q/ \& }- `3 E2 NA  a,b,c,d# L7 l+ Q" r4 {
B  a+b,c+d3 @: ~! y6 E/ @: [0 `
C  MOD((x),(y))
9 {7 o  K' I( a: ]! s) c( RD  fmod((x),(y))1 x: K4 Q  s; Q
# R1 E3 z# B' m  ?
3. 3 N" p/ f. P( K" w7 v" Y4 ]5 `, n
下面程序的功能是:随机产生20个实数存放到一维数组a中,并通过指向数组a的指针移动的方式输出所有数组元素值。请选择合适选项填空完成程序。  }# ]  [5 w; G, Y. V/ ~. _
#include <stdio.h>
0 D" E: \. ?& O' E#include <stdlib.h>5 Y) b" y" {! e" ?- Z) a2 h
#include <time.h>
  a0 K7 w" a; ^7 \3 W; }( v6 H#define N 20) L2 V7 h, K3 [7 T+ t, S8 Z' P* `
int main()
4 y$ n6 k; O1 [: p. d' R& ?) i{; h- p8 |, _4 o( r* J& Z: L
    double a[N],*p;( Q7 T- C" X! D6 Z
    int i;
3 Z% I* t# E3 M* E6 M: D3 L: [7 |    srand(time(NULL));  I* X) [" x# I' J8 T1 C( A$ b
    for(i=0;i<N;i++)1 M$ y" @3 o6 v3 D: P# W1 r/ E
        a=rand()%100+rand()%100*1e-2;
: U! z& y0 F  g0 o* ^& T    p=a;
0 x" m! E# `  |' r1 K6 Q    while(p<     ①     )' h) ^' e1 ?3 `, N* Y1 g2 v) f
    {3 m% [6 c$ K% D  w
        printf("%7.2lf",     ②     );
1 B! R4 b4 n2 y- @" O# ]        p++;# L( Z" K3 u9 D5 ^+ W9 q
    }
& L: T% u4 [( F* o! c+ ^  E    printf("\n");
/ Y6 `( p' ^: M4 l    return 0;
, ^' d/ I# v+ P3 C4 }, v) L4 B}. ?. t4 Q: ?; q: C
A  a1 T7 N- a9 P7 z" H' i! e, {$ x0 y
B  a+N
0 ?9 y! Y+ p- @% a( Q( D1 UC  p
: G  D) e4 I! vD  *p2 S, `: F. E$ I- M& a7 n8 S
! X$ C* n# f0 a2 H# R
4. 下面程序的功能是:输出person数组中年龄最大者的姓名和年龄信息。请选择合适选项填空完成程序。 3 R- ^5 h9 I3 E) _" C( ?, _- k
#include<stdio.h>
, R2 f  ]# N9 Ostruct man
7 @. U9 p& J6 B5 ^+ F# b+ k) ]/ V' u' j{ 9 p& f6 {) e1 @( L9 ]7 D
char name[20];
+ C/ s8 @' u+ \+ M! z1 e! }# z9 o    int age; $ c- Q- F$ K* `; F1 E( ^& ?
}person[]={"li=ming",18,"wang-hua",19,"zhang-ping",20}; ! D. r. P5 C* u
int main() ! h; F: j5 K5 i+ T! `
{
  F7 a* f6 F: ~# cstruct man *p,*q; & O# z% K/ n" h' X5 ~6 Q% \
int old=0; - ]& }5 P2 H; E8 U0 n7 n. H
p=person; - \# G5 q, a3 f5 F
while(p<person+3)
3 q9 {2 L# S% ~# k! M  Z  _9 E; j{
) U2 J5 [- M( B9 Z3 c7 Yif(     ①         ) % @$ _6 h5 @( k% f
{
9 v9 @8 G3 Q0 h, s: Lq=p; - E! l1 J  A. _3 z/ ^
old=p->age; $ V9 A: q8 p  W' I) }
}
3 c: }- Z& s- _p++;
% j7 k* `/ Z. F6 B}
3 @7 |1 s% j3 j/ s0 `5 x* s; \9 D   printf("%s %d\n",     ②        );
7 ?9 B3 Q# L1 u7 J% M9 [   return 0;
* q4 d( |( q- |' \} 6 H$ ?7 O/ g# N7 Q: J! g$ W6 u; B/ _
A  q->name,q->age ! e2 I* M' D# [' y% s/ @
B  *q->name,q->age
# P! ]' S3 n; G$ e; rC  old<p.age
: L' R( G$ u  n2 X+ cD  old<p->age
( t/ A' R' _9 ?# c5 N5. 8 ~% P% D! u' A$ m+ L- v( y
下面程序的功能是:求实型变量b的小数部分,请选择合适选项填空完成程序, @0 S1 v6 z- j6 Z0 p
#include <stdio.h>
- d% L) F1 I7 Uint main()+ O$ [0 ]7 B/ a8 ^7 y# b
{   , p* @+ z: @% X& ]: z
    double b;
5 b. A0 G$ {( P: w) c) w    scanf("%lf",&b);
- f+ m6 t! E5 W- B    printf("%lf\n",           );
5 g5 {. c- c4 a1 \; H8 p: K# |/ c5 }- ]    return 0;4 j. a( {, y) N: x% ?
}
3 f+ M8 r' |, PA b%(int)b) t5 j; F/ ?/ l1 {1 [* S; E
B (int)b/b
) X1 R# |4 `7 f! f6 w3 J' kC (int)b-b
9 ~# S; |  b0 z  w8 f0 T  Q% vD b-(int)b
0 o3 C' P, X8 J1 Q) \
. a& p$ J' S9 l5 }' G6. 下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。
. I" i  f  \3 L- x: @+ S#include <stdio.h>
$ r, \4 Z, F& g7 a* aint add(     ①    ); ' R; f4 d7 C  }$ @7 e  n
int main() ! c5 q! W  c: ]* ]# `4 w& Z' e, o
{
, a* P1 ^; R+ ]# I" p% ^, iint a,b,c,sum; : C3 G0 [# b4 ?) ~
printf("?a,b,c: ");
2 K$ n* s% v  l# v6 Nscanf("%d,%d,%d",&a,&b,&c); 8 W# ~$ g& A/ @) v( r
sum=add(     ②        );
3 B: i  `3 g+ e, S+ U' N6 Eprintf("sum=%d\n",sum); 9 m" Y5 @) \- d0 ]
return 0;
% G% y' Z( p! P8 Q  q* Q0 N2 Z}
" \/ R2 J8 }: A2 W$ f& N" J2 Eint add(int a,int b)
6 M* G4 r' s  X& i& s4 c4 A{ . Y# }% U$ _9 ?
return a+b;
6 C1 h, X, L! b' t& ]}
) K' L' z- H+ t+ }* g' k6 AA add(a,b),c * n/ v. C& F  a
B a,b,c % ~7 B& P/ _4 d& a8 Z: `2 C- T/ ]
C int a;int b
7 w  f- u# s' ^% uD int,int
" s8 P2 n2 _- r. v# Y7 k7.
6 W; A6 |6 p. R0 W下面程序运行时,若输入数据为:123456789,则输出结果为:a=123,b=89,请选择合适选项填空完成程序。* b3 m% U8 h6 ^7 O9 T
#include <stdio.h>
- T7 _" z# H1 [6 L) c% dint main()
% O! q4 R( f2 @' j: c1 f" r, a/ h{   
" N! Y6 A; q' @0 _* E7 j& ~    int a,b;
& `; z+ b$ j' i2 V# ?4 t    scanf("         ",&a,&b);+ E8 U' |) @# q6 d( U9 Y$ N
    printf("a=%d,b=%d\n",a,b);: S6 b/ A- \  }3 U/ q7 B% }; S
    return 0;2 ]: o4 |; _2 |% c& s" S, R& P
}+ T6 t( O2 X1 {/ S* X' o
A %3d%2d5 {7 e9 |: C0 N- u+ V0 ?
B %3d%*d%2d5 `' l1 F% B* p8 Y; e" ?' Y$ m+ {
C %3d%*4d%2d# q* `* e  `7 M# r9 h
D %3d%4d%2d
0 [8 K! O6 h% f9 q: v& c9 X* J0 |8 v+ G
8. ! D5 Q+ N  E  A; i4 X8 S8 G+ V
#include <stdio.h>- `2 I( Y; U$ e, K. o( f
#include <math.h>2 m" T5 C9 H6 r& y' u
double sincos(double x,double *co);
! s" F/ d2 Z( ?5 T+ j6 Aint main()
5 ^) v2 u1 e+ \; y! d- G7 m" \{+ o5 r) T+ e( g
    double x,sinv,cosv;' }- E# O* ^' B8 I- z' T1 ~" M! O( Q
    printf("?x: ");* d4 C# k: p5 c8 k; q
    scanf("%lf",&x);  L+ H  m) v% o7 s
    sinv=sincos(     ①     );
2 [( q6 E7 E8 I' O    printf("sinv=%lf,cosv=%lf\n",sinv,cosv);3 n1 s  i5 Z% ]# k! q+ H. Q
    return 0;* s9 L& d3 t' z8 |+ g0 r
}9 b4 A, A8 i  F8 I! T  Q1 K
double sincos(double x,double *co)
* |; }: `( ^: A) A' t4 J{
" U: ]  J6 o3 t; D0 X    x=x*3.1415926/180;
$ e/ D7 n+ g' `4 W* }         ②    =cos(x);
1 f0 b. f! z" t- ?( h8 K    return sin(x);2 G$ D' q6 m$ H4 V$ y' ~/ g
}0 k( ^: c  w; Y0 D
A x,cosv
, u, I- I0 E1 ]; I! \- ^B x,&cosv# P# C1 `% K( u) \* e5 f
C *co6 z5 [! b$ Z& l
D co
( R) ]7 u5 l+ Z7 @/ V" @) {& Y) ~* q: H
9. 下面程序的功能是:从文件mydata.txt中读出3个结构体变量到数组a中,然后将数组a的内容输出到屏幕上。请选择合适选项填空完成程序。
& m+ S$ j) J$ T- ?) ]#include <stdio.h> 3 `8 ^1 ?- a& j# P
struct test
$ B0 u' G5 [( E# W$ ]{ 8 E( ^3 |0 _! r- D9 z% @% X% G
double x; & v) Q/ f2 H. v. Z6 A  T9 _, k
int y;
& M" T7 ?4 C: J! ^};
' s, v; ^4 v1 S/ Fint main()
- @$ ?) E: N! v# @$ E7 @1 `  B0 q{ ; k1 m! f& |: S8 {( _9 O
FILE *f;
& e) Q$ N7 t2 Z2 @5 l$ ~- C" d     ①       a[3]; . _; Z! r# A  S; A
int i; . _1 D7 H2 j3 o
f=fopen("mydata.txt","rb"); ' D/ R1 Q9 F5 M$ a
if(f==NULL)
3 F7 c  o9 y2 k; y0 v6 c3 [& x6 `{ % b: q* N; E; f3 }' {
printf("Can't create file.\n");
0 }4 G- N% z7 s7 z, v; ~return -1; 9 S" k8 z* l1 d+ ^4 G* f; K. T4 J
}
) C5 [+ T5 [0 @, v: ]) g) A$ Qfor(i=0;i<3;i++)
; E; E6 y) C8 ufread(     ②       );
$ o; h0 V, T' M9 D. F! @fclose(f); 5 M. M. h2 Y, H
for(i=0;i<3;i++) , B4 M" V  X, H) n( }
printf("%lf,%d\n",a.x,a.y); : n* Z3 D8 x; j; S" \9 W& U; d9 W+ h) q
return 0; # N3 m  S) W$ G% w+ l
}
& N+ p# \+ H3 j& a. B0 fA  struct test ' [& T. {: u9 @; \: H! l
B  test
: @0 R+ |' }: a* d2 pC  &a,sizeof(struct test),1,f 5 Q0 i  N/ {1 n% j0 l
D  a,sizeof(struct test),1,f
" e4 \/ k8 @( G% F/ U( `) y& P10. % g  [* F6 H- ~+ j
下面程序的功能是:随机产生15个整实数存放到二维数组a中,并通过指向数组a的指针输出所有数组元素值。请选择合适选项填空完成程序。  l8 K$ n: W$ p+ D/ a5 }8 Q
#include <stdio.h>: n$ x; u+ Y) P5 o9 O# p. t
#include <stdlib.h>! d6 x7 P  _) s+ q, ?" e- l0 G+ r
#include <time.h>& E0 n2 I; e, _( f9 H; F
#define M 3
1 I5 D, ~* B/ i8 ?/ u2 K8 K! g9 b#define N 5$ r+ J1 o  a. B4 A
int main()5 G& z' Q" M( r+ o9 I
{/ Z: U! Z$ F! h. d. X/ ?
    int a[M][N],*p;
( c/ y: v: |# N1 T: n- g& y- Z8 R    int i,j;) p+ J: p7 i/ r) \6 R! F
    srand(time(NULL));
. `8 g5 A3 s% @  M. B    for(i=0;i<M;i++)
" O0 }- n) ~0 Z        for(j=0;j<N;j++)) f$ {% R  t) G" E
            a[j]=rand()%100;
: o# t, g2 \. k/ h& ~; x    p=     ①        ;
8 W2 X% z+ _7 t6 Q: k    for(i=0;i<M;i++)
! _8 x  ?) _! C: _& x* j) o    {5 F1 Q& o/ p9 J& w* T
        for(j=0;j<N;j++)6 Q% W& \8 u0 r* T# e8 N) |4 X" a
            printf("%4d",     ②        );1 S' x& @) j  Q+ \
        printf("\n");% {# w9 v: g) x; N/ }
    }6 V# U5 c9 `9 ?( y
    return 0;
, P+ |% t; w' @: j6 J: q}. t2 ^: n' n7 S
A  a3 d8 ~- Y" p6 @) B
B  (p+i*N+j)
2 ^* a4 z' X7 A* j$ O. r  t1 KC  a[0]
6 P) s6 I9 d4 DD  *(p+i*N+j)+ y- q* m& n  K( n, i% k# j. c$ c

" o, n* d5 u0 \; U: K' @
( d5 F  a, k$ l/ R" A: T' @二、程序阅读题(本大题共40分,共 5 小题,每小题 8 分)) w3 j0 t. Z5 P( n
1. ! X$ Z8 C# H+ M
#include <stdio.h>3 e4 K( H* a9 h5 m) m7 @
#include <string.h>+ ^' ~8 k3 ?- c( c5 n# d! S1 u8 Y
#define N 0
& J9 y: f% s! F) ~7 m8 o  s- U: uint main()7 R# c: ]* B, m# l
{4 ~7 k/ V( f* i; }. L
    char s[100]="abcdefg";% r% R8 a% I& c9 @4 y, H
#if N- {: ^3 @+ a# C
    printf("字符串s的长度为:%d\n",strlen(s));# u% e, f5 ^. {
#else+ K, ]) Q5 D% v6 U! |4 Y
    printf("字符串s占据的空间长度为:%d\n",sizeof(s));/ U; e' G& y  n2 X: Y: ?
#endif/ a) w& I% ]/ T, j* J8 f
    return 0;
1 j/ n# r3 V" R& t- H}
8 N2 ?7 \: X0 u1 [1 v# T
* E$ |8 H3 ^/ y8 d; H, I2. (写出下面程序执行的结果) % W8 b; M& I% K' x- W
#include <stdio.h> & \: l8 e, R4 B. I8 W7 f- d
int main()
0 f, G8 W/ A( r, i! }{
5 c$ e! [+ v4 b* f2 s0 wint x,b1,b2,b3; ) A2 `' q& M1 F* y  j0 D! k  [
    x=300; 7 V+ h9 A/ Y  D' {) y& q
  b3=x/100; , s, i, u+ F& R2 n& D: A
  b2=(x-b3)/100; & p1 n/ F6 V2 _6 A$ H; s% a( v2 w
  b1=x%10;
* ]1 p0 |: U# o, j  x=b1+b2+b3;
" C5 |' l& c( ]0 y9 F* C1 q7 C6 @0 s4 |  printf("%d\n",x); ) B/ D# K" @+ D1 O! l' n
return 0; 7 B8 _0 @8 Q* i3 r& |
}
" [$ v' G4 l: e) [. r4 k3. (写出下面程序执行的结果) % E7 K" L! ?% W6 p# M8 G& v' c
#include <stdio.h>
" v* Y' U7 f0 G; oint main()
- Z* i$ c/ B& b* p{ $ {1 O+ S9 _4 J; s$ [, N2 W. S: }
int i,j,k;char ch='1'; 2 F3 F5 ]2 e0 E* Q$ r
   for(i=0;i<=3;i++) # N4 C" `8 ?( R, u7 J* X
   { for(j=0;j<=3-i;j++) 1 f" F. A* S* v1 q$ D7 u/ v
   printf(" "); * ^6 a" `5 ~! }$ m5 [- [% i% L8 @4 \
for(k=0;k<=2*i;k++) 4 S9 q# l0 Y( I! I! S
printf("%c",ch);
3 d+ j$ e9 f" Y( c! j. Bprintf("\n"); 3 B, Y! X( N) S) O8 E1 F1 }% W$ F2 s
ch=ch+1; 1 v) f, y) N$ \+ ?5 n
} 2 Z3 F2 m) u2 h" I9 B& r+ n# p3 F
for(i=0;i<=2;i++) ' w8 s5 r. n2 Z+ h% W
{ for(j=0;j<=i+(3-2);j++) * w! B; W9 O$ L2 O
printf(" "); ; |% n9 D" R  s: G/ \9 A& H0 t
for(k=0;k<=4-2*i;k++)
* J, E) c- F! b7 jprintf("%c",ch);
6 }; ]2 j1 ^2 `! {7 e) {printf("\n");
2 _6 x: Y0 S/ Z# A0 y  V. }/ R6 G" d    ch=ch-1; $ C' A, h* L8 p& V' x
} $ n. Z7 b7 N" V& u' V+ R
return 0; : ^' n( f* Q+ _5 _4 U
} 0 e  ]/ y/ ]) X7 N% ^
4. ! d/ A; ]3 C& T7 S& R' i/ R1 d8 {$ i
#include<stdio.h>
' x  F$ F5 H; }  W4 D! x' }int main(); i/ V  S& l3 Q
{   ) N3 a' g1 c; q/ j4 z- E% p3 d5 B
    union
2 [2 Z# E5 U% o9 P    {   8 r1 ]0 N, \& C# t. j
        int a;
4 W+ y/ h. Y+ i& l        char c[4];
" f: q) U1 G5 H# j. t    }s;3 a$ m. d$ S' {
    s.a=0x46474849;" \. b' E1 ?) V9 }9 V6 [' ?
    for(int i=0;i<4;i++)
$ k( f. R6 B% j) X; T! e9 A        printf("%c",s.c);. u! p0 O* N% y; ?+ Y
    printf("\n");% q$ X( `, `- l
    return 0;
  B1 D& G- O- N1 n( y- I7 l}# a) `1 A& x) X
& M+ g* U/ P1 `* S- f
5. (写出下面程序执行的结果)
9 h, v# }$ V7 d#include <stdio.h>
* n$ p* K/ d- gint main()
" N: p  a" x* W2 }* v{ * s/ q) t- ^' q
int i,j,m=3;
  `' a% C) d3 ?, G6 n, `. X* mfor(i=0;i<m;i+=2)
1 q) }) c. g% D    for(j=m-1;j>=0;j--)
! T3 ?% t! s+ f* [       printf("%1d%c", i+j,j ? 'H' : '$' );
8 b, T& S" F5 n: T$ Z: [4 r6 M7 Jprintf("\n");
6 h& }+ w! g8 b+ [: h: ?return 0;
3 q0 s1 d5 w0 w! J6 V, j} ! g  g" V$ G* H! ^# }$ F; v

# ]! A& p) g& H5 v! T- q三、程序设计题(本大题共40分,共 4 小题,每小题 10 分)5 u  z1 y7 ^" s8 U( t* U9 T# e
1. 从键盘输入一个指定金额(单位:元,例如345),然后存储显示支付该金额需要的各种面额钞票的数目。5 M; A$ u" \) g$ ^9 D, C
2. 编程序求出100~1000之间的每一个整数各自的各位数字之和,要求求每个整数各位数字之和的函数单独编写。
  D9 ^# q7 g, M' D2 x6 P4 Q3. 函数r_getbits的原型为:int r_getbits(unsigned x,unsigned  pos,unsigned n);,其功能是返回变量x从pos位置开始从右向左计数的n位值。请编制函数r_getbits并用相应的主函数进行测试。
4 `6 g. i7 r+ Y4 w% H4. 编程序实现功能:利用一维数组,判定从键盘输入的任意正整数是否“回文数”,所谓“回文数”是指正读反读都相同的数,如:123454321。, f6 ]2 G5 J8 }
8 u4 ?1 W, j( j; z! A, O4 a, j  I
$ d: m9 \& `) c4 w4 Q
* x' a& g2 ~; C& n! M
答案:8 X5 j0 N, B, m, h  @5 ]9 l! i
0 ~2 J3 K+ `* N2 [5 x

0 |+ d( C# d. r: @8 b+ {一、填空题(20分,共 10 题,每小题 2 分)
5 @5 `* a0 h- z; u5 K. T
( S& O! j# Z) b, e( {& E1. / ?: g, u2 m) V$ f8 K. C3 o2 r6 h
参考答案:
. [9 Y& s$ G5 I/ g! f# U- gD& Y6 `" l+ u& \- Z1 }# k
解题方案:3 W: d$ b; x! o' h

5 ~$ B; N1 y4 u3 g1 G* p  U' v评分标准:, X! W7 ]7 I- G1 U+ y' b% W
( [* ^1 C) ^8 D4 I" a, W" M
2. ( R4 O+ J  k8 B) C, x; V
参考答案:) p! {2 z% Z5 r/ q# R1 b- M
①  D
' P2 \) C6 y8 O& x②  B8 V) i1 U9 }" N

6 n) }) s: w* T8 u0 z/ u5 S) b& B* Q解题方案:4 F8 s  h/ ]+ Q/ n
4 ~* u1 p/ p3 m/ f% `. q
评分标准:$ i3 ?* `( g3 O  w( Z3 a5 r
1 m6 p6 H( c6 B" v: l0 I
3.
/ s8 N! X/ p2 O) J4 @7 }& W参考答案:
# p2 e$ O5 ~2 {+ E" O. n①  B
8 V3 ^& o4 d: Z$ u7 q3 M' O) g! Q$ g) l②  D
, [5 N8 S, V8 ?# b2 ^) J) O  C; `* L: [% A
解题方案:
8 n* W+ O8 u( I2 J% D" J
/ k4 o! e/ W- M; Z) z评分标准:
) j7 \8 `- S. ~$ m6 I
+ E  {1 x+ M7 M5 N2 v5 u4. 7 @) H( ^. n2 }0 b8 l
参考答案:3 \4 f. W; n4 c
①  D
( w3 d* M% J& [8 L9 g②  A
# `, m6 n+ d0 l* ~% }/ i3 l1 z* P+ @8 ^% X
解题方案:
! [' a( d, j7 g! _% c
" R' o2 A$ m6 M% L. _! j% L$ ?2 @$ \2 `评分标准:# G& J, W  S; R7 D) p
2 `# ~! i" G+ r* S/ ?
5.
8 U4 r+ S2 W! x" g, y! |+ [参考答案:
- W' P' }2 Q" |+ jD& w" s) J7 ^5 B$ B4 ~6 I3 C( B
解题方案:: ~2 h( c- R& |. ]9 J9 S

9 k3 z( D7 |3 x  U6 c评分标准:0 v1 `9 f3 n/ K1 [# O# ~: j

9 T+ |( U. M. [6. # }0 H7 w4 l* n) E7 j. q) s2 o- d; w
参考答案:
& R4 g6 D9 h& G①  D7 Q" ~! K  J# E- l0 T
②  A  j& C" v" e; C8 Y
: n4 a" B( s7 _3 Z) I% I
解题方案:
# {! e& G1 w  @/ f# K) m! P0 p$ `* m8 v) Q6 r* x
评分标准:
9 J$ U4 U6 v  w: s* _+ u
! l0 H$ X8 P0 u6 @2 a7.
9 U- Y8 K* k0 X2 p+ s- v6 V2 s" h3 K0 @参考答案:
; y) b3 F; R3 y" ]6 XC
; N# X. b2 i1 L* A& O4 m解题方案:
. `2 r4 r" F4 A
1 }; K" w6 Z2 G# X1 M8 ]: J# S评分标准:
- n+ |9 S8 i) O8 d0 T
6 b* i  s3 |4 B) [6 S& J3 p( v1 }% j8.
* ]2 V8 ~# e1 u+ y" I& \参考答案:+ X0 p3 u' _: F9 ~
①  B$ d/ H6 o5 Y' Z' ]" U: q2 ~
②  C- Z& c1 I4 w* H* q
' e/ h$ p  b2 ]. }' B. ~
解题方案:* @+ r- |  M+ T% }7 K7 v0 [: p
$ F+ H1 ^2 s, I/ H
评分标准:% j, I+ _: O' Q; z' |

* @/ Z; ~8 @) ~1 A1 u; |9.
4 I. v$ v+ O7 `& s; z参考答案:
" M" V7 _) z8 D5 y0 g①  A
2 _- K6 Y6 b5 B  J8 o2 f' S6 H' F0 F  k②  C
# V- m  N) J& @) E- r2 c& m' b! ]: D+ q; F
解题方案:
, k9 x. b! I4 @7 ]. G
' c( R# T* Q0 j- @评分标准:6 [# X  k6 G' L' C& O' u: J7 O

; Z# N0 c: Y. ~/ o* y10.
" H8 h* V$ k) _3 L- {5 v参考答案:$ ]! W, a! M* k  C5 P* _
①  C. [  o( E6 t, Z0 \2 Q
②  D
. s! y) X* w  s( V
9 q) H% `3 E$ e" d$ [解题方案:; A6 z: M( @' s1 @$ y; v
3 a0 u& W4 c2 A. g
评分标准:3 s% p8 A. _/ M, T
  R3 H8 O5 k" d; @- J: {" T' d2 ]" b
5 O6 k  Y, ?: F) h% ~9 o
二、程序阅读题(40分,共 5 题,每小题 8 分)
5 K! ]3 [( j% `* o( t8 P. K/ t% q1 _% B; [7 ^! i) o
1.
2 V0 k! o% b( W参考答案:% `. ?% K, i8 ]; X: S
字符串s占据的空间长度为:100/ r5 o1 S$ `% n$ o" ~: w
. K% z  Q7 U" b# ?9 ]
解题方案:
( k# L( x- d7 y5 m( y& m4 L# [
, C, @6 E0 `" D, H; T+ Q: A! O% m评分标准:& E( t3 F# `/ p) T1 r
5 {6 x1 v! Y: G$ I$ T' p
2. 4 Q; j8 j8 r1 x- v- h
参考答案:
( V+ a2 F& \) P( w0 d6 p57 B$ l% M# C" }+ h1 z% ~
解题方案:0 r' @& y3 o5 s# p/ @
9 j  K) [5 T' C* x; A7 i* a
评分标准:
. }* D$ o& Q$ {7 W/ q, Q0 F2 V" x# z/ U! _
3.
& s) r4 I$ a3 q2 N/ H参考答案:; s1 J& l7 Y/ p; x: S, `$ D3 I
1
* s  y3 _/ e. N$ E: Y   222
5 O3 t1 u; v* @$ z4 W6 h8 Z5 G. ?  33333
- l4 E5 b" h) U( H 4444444
& x2 Y/ i: d+ }0 U; r+ A  55555; h* P4 \" e8 U8 m
   444
+ \. v. }& I7 G3 h7 a4 |    3   
1 W/ E; c8 i! t1 i6 ^6 z: I$ u: k- I+ y7 O6 ?
解题方案:
0 V& L! {. \1 }0 U! i& [' T( N3 o6 P1 w2 r% G& |+ q
评分标准:7 ]) K4 j  q; \1 m5 U* I
1 o$ m9 _, [- j' K
4.
% P2 z1 l' I1 b& ~: l参考答案:
; R- ~% {& C! v5 x  l$ }! ~4 \IHGF
' w; _% B2 i; I/ [( Y8 K3 B* y* Z- D, o  u* i% ^
解题方案:) a4 f. A5 `+ `1 r

4 ~. x3 l- y4 x" D5 e评分标准:' a' ]) f9 U3 I2 T5 H( A/ ^2 B5 n0 U5 B4 I
; F: h- n9 e5 J; p
5. 8 |  U2 z( F* l" h4 k
参考答案:
( ^, l/ h, Z& L6 w2H1H0$4H3H2$0 X$ l' o* I8 V- k9 L* f/ |
解题方案:
! N8 B3 z2 l: c+ A7 o- ?5 u
6 V5 X& }# n8 n) T/ N评分标准:
3 p! p) g5 O2 |+ J2 J* G. V
* a$ Z1 C1 r# X# K7 n) }
0 |, D' @" U! z: S. g0 G) b三、程序设计题(40分,共 4 题,每小题 10 分). Y, ~. ~/ Z. X6 W/ R
) |2 ]) B0 {6 M& N0 e
1.
/ Z: P- H6 i. h& w; m, \; S6 W参考答案:
0 [. a, }: \8 @#include<stdio.h>6 M6 t* P7 n  S6 H- h
typedef struct Currency2 q5 C4 C7 O; `& s
{
0 |4 V6 b# |/ ~7 ~8 [: D1 h# r* l    char Denomination[10];0 _7 S; f# i2 A1 ]/ I
    int Value;
+ E5 h( O8 Z6 }# ]- }- ~    int Num;5 Y* N3 _; }8 T" @2 u
}CUR;
- m1 z" Y. \6 @3 L7 k% p* U" aint main()6 ]6 {2 ~- g7 p/ j! E* d
{. r1 x2 s  H, A; ^) F, O
    CUR Currencys[]={"佰元",100,0,"伍拾元",50,0,"贰拾元",20,0,"拾元",10,0,
2 o! o# @1 F5 v5 I2 {! v( o8 X! V- r/ S                    "伍元",5,0,"贰元",2,0,"壹元",1,0};4 ]4 e6 z( w; W# l! @7 J
    int Money;
/ f2 \; R7 f* v$ V6 V; P3 g    scanf("%d",&Money);4 H0 t' H4 C1 c* I9 W' d8 c
    for(int i=0;i<7;i++)+ D  K5 S8 w6 S( R
    {   Currencys.Num=Money/Currencys.Value;
/ n# v, L2 j6 X: y( |; e$ e        Money%=Currencys.Value;
! z5 ^( Z, s; G0 ?    }; Z! A& M: k& h, p9 j1 r" z' q- `
    for( i=0;i<7;i++)
7 ?7 \' f) [4 v/ A3 Z            printf("%s:%d张\n",Currencys.Denomination,Currencys.Num);' S  R) G+ u* W
    return 0;
/ T% H2 C& Q: J}
/ _! [2 O4 E2 N" J7 Y  ], n) K: z- q" D2 M5 i5 g$ Y- G' x3 T9 l8 Q& ]
解题方案:% j$ U  L5 @5 `6 L# \$ _! ~
" @  x0 _, r) F: o6 n
评分标准:# R/ p6 R+ ~0 _5 e, t  L, h. B

+ r: o4 z" o! C3 O) E2. ! ?7 a1 n4 Y! U7 Q" V0 @, f) ?& e
参考答案:
$ m) Z9 l, F- u6 z* L6 B#include <stdio.h>/ c2 g+ m9 d5 E( m( z' {) z
#define N 10009 H  P" B6 F! z) b, C" @# y2 E
int main()
* W1 f) S- s% M{   1 Y! _$ z* b: L+ Z
    int sum(int x);
7 t, Y- T5 v6 g8 a    int n;4 e4 @. u* h8 x/ C; \6 T+ f' d$ h" X3 }
    for(n=100;n<=N;n++)
3 P5 w: v$ E" M* L0 R, ]        printf("%4d",sum(n));
1 v' S! P) B) S3 l1 g    printf("\n");; i: M* D/ k1 |+ C
    return 0;
- P8 \$ _1 t; d' X$ I" }! c% A4 t}* o9 ]7 B/ f# \  A
int sum(int x)' f: I# Z: v% j8 R) V
{   
# w3 W0 r  p& d7 s    int s=0;$ Z0 x: \, E2 F: V+ h
    while(x)* n5 r- ~. d; P" \, w; ^2 M- E0 B
    {   s+=x%10;# t  `* I5 _6 M
        x/=10;& `- Z" r' k) S2 p% n4 B
    }& }" Z5 F2 E$ w4 Q/ k4 l$ j
    return s;
0 i) y  w7 L  E6 r}
" t/ a% c% K  P* ~( E& X- ?' g$ a9 p. X' k1 z& N" q
解题方案:3 }- `$ w! Z. j+ v2 u9 B1 h
3 Z3 r7 W# x8 U0 m: G- R
评分标准:
2 V0 z6 a" c; u9 R% t+ p: i9 ?- A! S. g" b1 P* J4 Y
3. " M6 O6 s* j" d
参考答案:% s7 Q4 u9 p9 b8 l
#include <stdio.h>
8 y$ W1 n- m. }* Fint main()1 j: G' w6 A# i- ~
{& |6 ^: w4 i9 n1 W: S
    int r_getbits(unsigned x,unsigned pos,unsigned n);
( K3 z5 z5 V. G2 t    unsigned num,pos,n;
* b$ a2 ?% l$ y    printf("Input num,pos and n: ");3 Y$ e- I  k4 Y8 v- U+ z
    scanf("%u,%u,%u",&num,&pos,&n);2 F7 O6 M% h* J& @6 F
    printf("%d\n",r_getbits(num,pos,n));
( t3 a& x  T/ E9 c8 f- c    return 0;
+ n9 N/ }! k+ |3 a/ u3 \$ P' I5 K+ o}+ o, F3 Q6 b* ~5 z' t# x* R( n
int r_getbits(unsigned x,unsigned pos,unsigned n)4 s, g' j, L6 `/ L3 K
{
, y! x- K2 Q3 W  w" P1 D    int len;
- w2 l; t- [& U; M2 g    len=(x>>(pos+1-n))&~(~0<<n);
1 Z, \8 E5 V' m' ?1 ]' p& F    return len;
+ U( w3 U5 E+ y! w9 G( P}
4 w+ d& S  E  L+ w
: y5 [# j5 p; o解题方案:6 d/ T" z6 B/ z
4 H, E9 y) b/ o  O
评分标准:7 `; e1 j+ T5 d5 e1 B
9 _1 @4 y& i1 K0 ]4 h* M& H
4. % k/ Y8 N  H  m, c6 m
参考答案:
  o4 q. d- p* H- y9 r2 k1 o7 c#include <stdio.h> - }1 D! Q  e- q. k
int main() 2 T8 ]6 l6 L. r$ Z$ j1 V! V: @7 N+ a
{5 _1 G3 [# T( b" G1 c- s
    int n,nt,na[10],i,j;  k" u; _' \! O5 P% y5 s
    printf("?n: ");
6 o! ~! @" C0 H0 d8 n    scanf("%d",&n);
2 |8 W/ G8 K3 x* k    nt=n;; ^8 B% I& j8 |( N9 `; S# k5 s* r
    for(j=0;n!=0;j++)//将n分解成数字依次放入数组
: v5 W( f; {; G$ m4 v    {5 h! B4 y+ U! {; A7 U  U
        na[j]=n%10;' ^7 E7 _8 X7 m: d
        n/=10;2 U$ J. Y7 E* w2 \) r
    }* o6 J) v- b) E' L, S
    for(i=0,j=j-1;i<j;i++,j--)
( Q! L2 W* x8 u( z8 i        if(na!=na[j])
; V( N" c7 [; \! @, b! z1 S2 u            break;3 u; \5 ?! k0 S6 c4 t- a
    if(i>=j)
! Z! M8 k7 C; i, m  P/ `4 y* F        printf("%d是回文数!\n",nt);
- N7 ^, Y2 {2 \( x    else
9 ]4 `$ f, \2 e+ `0 h" B        printf("%d不是回文数!\n",nt);
$ _* i9 {" j' Q$ `    return 0;- j9 j( J, w' J) F
}( H2 O2 v% T; |' M" f3 o* L
6 b/ _1 Q# `! Y$ s" U; p  s7 D
解题方案:' j- U  Z# O2 j  v6 C+ o
- Z3 ]% F, g& F  T
评分标准:
' p  f$ K3 j* X. E( X- j! _% c5 E' ?9 L) w

+ Q/ _5 c; ?2 p# j$ t+ G4 N
快速回复 返回顶部 返回列表