SDUT 名单真相
来源:互联网 发布:linux如何开启ping 编辑:程序博客网 时间:2024/04/27 18:54
Problem Description
马上就要考试了,小银变的非常的紧张(平时不好好的听课),昨天小银得到了一个成绩单,但是小银在打印的时候将名单上人的顺序倒置了,所以小银想知道真正的顺序。
成绩单的每一行包括:姓名 城市 成绩。姓名和城市保证全是小写字母(不超过15个字符),成绩不大于100.
Input
多组输入,每组的第一行输入一个n(1 <= n <= 1000).表示名单上人的数量,接下来n行每行包括人的姓名 城市 成绩。
Output
输出名单的真正的顺序。
Example Input
3
xiaotong ningbo 100
xiaoyin zhejiang 100
xiaojin jiangxi 100
Example Output
xiaojin jiangxi 100
xiaoyin zhejiang 100
xiaotong ningbo 100
Hint
Author
绝尘
#include <stdio.h>struct node{ char na[16]; char ho[16]; int sc;}st[1000];int main(){ int n,i; while(~scanf("%d",&n)) { for(i=0;i<n;i++) { scanf("%s %s %d",st[i].na,st[i].ho,&st[i].sc); } for(i=n-1;i>=0;i--) { printf("%s %s %d\n",st[i].na,st[i].ho,st[i].sc); } } return 0;}
注意
while(~scanf()):
可以经常在ACM代码中看到 while(~scanf("%d",&n)){ } 这样的代码,意思是在读到输入结尾时循环也结束。
一般在读到输入流结尾时,scanf返回的是EOF。
EOF是在头文件stdio.h中定义的常量,一般为-1。
-1 的原码是10000001,反码是1111110,补码是11111111。复习一下,正数的原码、反码、补码都是一样的;负数的原码是符号位为1,反码是(对原码)符号位不变、其余位取反,补码是(对原码)符号位不变、其余位取反、末位加1.
~EOF则是对EOF进行按位取反操作,则为00000000。所以while条件不满足,循环结束。
资料来源
关于while循环中的~scanf()
- SDUT 名单真相
- 名单真相
- 名单真相
- 名单真相
- 名单真相
- 名单真相
- 名单真相
- 结构体、共用体和枚举之名单真相
- SDUT 数据结构实验之排序七:选课名单
- sdut 3404 数据结构实验之排序七:选课名单
- 数据结构实验之排序七:选课名单 (sdut oj3404)
- SDUT 3404 数据结构实验之排序七:选课名单
- SDUT OJ 3404 数据结构实验之排序七:选课名单
- SDUT 3404:数据结构实验之排序七:选课名单
- SDUT-数据结构实验之排序七:选课名单
- 真相
- 真相与真相
- 日货名单
- 1701H2 17.10.18王建瑜 连续第八天
- 最大公约数与最小公倍数
- 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行
- SDUT 简单枚举类型——植物与颜色
- SDUT 英文金曲大赛
- SDUT 名单真相
- SDUT 选票统计*
- SDUT 最终排名
- SDUT 选夫婿1
- SDUT 来淄博旅游
- single-number-ii Java code
- 常见js相应样式
- sonar 不再支持 cobertura 插件(sonar支持的插件表)
- SDUT 王小二切饼