数学建模社区-数学中国
标题:
数据结构之字符串学习感悟
[打印本页]
作者:
慢跑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 }" T
struct 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. E
getcher就是用来存那个多余的回车的。
; `, ]- R) c% T% p' {/ c% B
原来,只需要在第一个循环,scanf之后加入getchar();就可以解决了问题。
% I1 a+ s- }7 I. J, t! L- K3 J
9 E# i3 \ u2 z! N' \) R
2 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