K&R 练习题 【每日一题】1-20
2013-05-28 08:23
302 查看
K&R的练习题偏难,但是个个题都是精华,建议先不管练习题,通读几遍,先记住基本的语法,再进行练习,练习时候如果感觉有难度,也可以先看答案,不过,一个题往往有多种解法,看完一种再自己思索下。
K&R 练习题 1-21
//write a program detab that replaces tabs in the input with the proper number of blanks to space to the next tab stop. Assume a fixed set of tab stops. say very n columns.
这个题目的意思,其实是自己定义tab的大小,并让字符按照定义tab的大小排列,比如输入 ab\tb\t, 如果定义tab为5, 则输出ab---b----,都整齐的按照tab定义大小排列。
小时候做数学题,不管会不会解,都要大大的写上一个解字有木有。恩。。。
解:
[align=center]
[/align]
K&R 练习题 1-21
//write a program detab that replaces tabs in the input with the proper number of blanks to space to the next tab stop. Assume a fixed set of tab stops. say very n columns.
这个题目的意思,其实是自己定义tab的大小,并让字符按照定义tab的大小排列,比如输入 ab\tb\t, 如果定义tab为5, 则输出ab---b----,都整齐的按照tab定义大小排列。
小时候做数学题,不管会不会解,都要大大的写上一个解字有木有。恩。。。
解:
#include <stdio.h> #define TABSIZE 10 // 定义一个tab为10个size #define MAX_BUFFER 1000 #define SPACE '-' //为了显示方便,这里用‘-’ 代替空格‘ ’ int CaculatorTabLength(int l, int tabsize) //计算组成一个tab缺少的SPACE个数 { return(tabsize - l%tabsize); //这儿取余数是这个算法的核心,耐心瞅瞅o(∩∩)o.. } int mgetline(char s[], int lim) { int c, i; for(i = 0; i < lim-1 && (c=getchar())!=EOF && c!='\n';i++) s[i] = c; if(c == '\n') { s[i] = '\n'; i++; } s[i] = '\0'; return i; } int main(void) { int len; char line[MAX_BUFFER]; while(len = mgetline(line,MAX_BUFFER)) { int i,j,l,t; for(i = 0, i = 0; i < len; i++) { if(line[i] == '\t') { j = CaculatorTabLength(l,TABSIZE); for(t = 0; t < j; t++) { putchar(SPACE); l++; } } else { putchar(line[i]); l++; } } } return 0; }这个程序的核心是取余计算,相似的题目:不使用printf 或者sprintf的情况下,让输入的字母以N个字符对齐输出。
[align=center]
[/align]
相关文章推荐
- C/C++练习题 (将n(n<20)个数按输入时顺序的逆序排列,用函数实现。)
- K&R 练习题 【每日一题】1-21
- 金融界的tab选项卡效果。 - 星星猫-技巧&源码收集 [每日更新]
- <每日一句英语> 2012-10-22
- <每日一句英语> 2012-10-25
- 20、java jdk 5.0新特性(静态导入&自动装箱和拆箱&增强for循环 &可变参数)
- [bzoj 1305&1433]最大流练习题
- DAY2之Python每日练习题
- [华为机试练习题]20.Home+Work
- nyoj 20 吝啬的国度<vector容器>
- K&R练习题6-1统计关键词出现的次数
- python: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 20: ordinal not in rang
- ACM练习题T-20
- 每日一得 11-03-16~11-03-20
- 每日一题之找出频率>1/k的数字
- PAT乙级1017. A除以B (20)&&1022. D进制的A+B (20)
- 每日站立会议4-20(张硕)
- 冒烟测试(smoke testing)&每日构建 (Daily Build)
- 算法第八章练习题20
- POJ 3695 容斥原理求若干矩形并 (n <= 20)