数学建模社区-数学中国

标题: 数据结构之字符串学习感悟 [打印本页]

作者: 慢跑20    时间: 2014-2-25 22:51
标题: 数据结构之字符串学习感悟
数据结构第一章第一节讲了基础知识,涉及到一个小程序:输入学生学号、姓名,并输出。
' `+ G5 f& \4 K初步代码如下:1 I; R: H, p; E. h) q2 j9 b- n/ z* Q& `
#include<stdio.h>, H- F7 ^1 W$ q6 u' ?5 j
#define n 2
4 E1 o% o/ @$ Q6 \3 }" Tstruct Student{
2 H8 Q& C* V3 j* J9 w        char name[3];
; U1 g' O4 _3 |* b+ z        int num;
6 X) e4 M5 B% x2 Z( L}stu[2];$ Y) t6 K% k0 p
. {0 G4 J: p8 d9 Y; j! j% j+ G- L6 M8 J
int main(){
7 b, H- }0 c5 J+ M2 _/ m        int i;
, H" `4 v8 K* e- ]4 {% r        for(i=0;i<n;i++)3 C1 K& V6 B/ P
        {gets(stu[i].name);
* q# `4 L+ R7 m4 f        scanf("%d",&stu[i].num);
$ [3 f8 a, p, S0 u# ]        }; r# X& |% u" Y+ K9 y
        for(i=0;i<n;i++)4 n/ B/ b$ |: r+ |! k& r) ^
        {puts(stu[i].name);0 P2 z2 Y! r2 W* r, t- ?
        printf("%d\n",stu[i].num);, V& a. E5 F0 K" `1 G5 K
        }
1 m, Y$ I8 v) p5 c2 l1 _: O        return 0;
7 e5 `) e6 j6 n9 F}* }- a& p7 ^: q9 P7 w1 h
比如我想输入第一个学生的姓名:s1,学号:10、& R  h8 N& o& D: v5 u# n
然后输入第二个学生的姓名:s2,学号:20.
2 S; r: T- |$ J5 Y' w/ s+ A* S6 w但是还没有输完,只输入了s2,就显示除了结果,而且后边的结果不正确。7 H0 l! w& f( n$ u% j4 `& T6 t
这是为什么呢?
+ a' C$ U% m( V2 |仔细想一想。& `7 s  B* h2 {7 n% ]8 k! G+ [2 ]
最终才发发现了关键的问题:
7 P% C( _+ P3 n. q3 F9 z- ~在输完第一个学生的学号之后会敲一个回车,计算机把那个回车当成第二个字符串存进第二个字符数组里面了。
- }) T8 N. s1 _: w9 |& P. Egetcher就是用来存那个多余的回车的。
; `, ]- R) c% T% p' {/ c% B原来,只需要在第一个循环,scanf之后加入getchar();就可以解决了问题。% I1 a+ s- }7 I. J, t! L- K3 J

9 E# i3 \  u2 z! N' \) R2 G9 A3 e, C: w9 T, _# v2 d
% a* b/ }9 J1 I9 l/ _4 v+ H

5 x3 `1 B8 T& F! m- M2 z
作者: sdccumcm    时间: 2014-2-26 11:47
支持个      




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5