C Primer Plus 第8章 字符输入/输出和验证输入 编程练习
2017-05-16 12:53
495 查看
1. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch=getchar()) != EOF) ct++; printf("%d characters read.", ct); return 0; }
2. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch = getchar()) != EOF) { if (ch >= 32){ putchar(ch); printf("/%d ",ch); ct++; } else if (ch == '\n'){ printf("\\n"); putchar(ch); ct = 0; //因为要换新的一行了所以ct清0 } else if (ch == '\t'){ printf("\\t"); ct++; } else //打印控制字符 { putchar('^'); putchar(ch + 64); printf("/%d ", ch); } if (ct == 10){ printf("\n"); ct = 0; } } return 0; }
3. #include <stdio.h> #include <ctype.h> int main(){ char ch; int a,b,c; a = b = c = 0; while ((ch = getchar()) != '#') { if (isupper(ch)) a++; else if (islower(ch)) b++; else c++; } printf("capital:%d lower case:%d other:%d", a, b, c); return 0; }
4. #include <stdio.h> #include <ctype.h> //用来区分字母和字母的大小写 #include <stdbool.h> int main(){ char ch; bool inword = false; int n_chars = 0; int n_words = 0; int value; while ((ch = getchar()) != '#') { if (isalpha(ch)) n_chars++; if (!isspace(ch) && !inword) { inword = true; //开始一个新的单词 n_words++; //单词加1 } if (isspace(ch) && inword) inword = false; //单词结束 } value = n_chars / n_words ; printf("chars : %d\n", n_chars); printf("words : %d\n", n_words); printf("average value : %d", value); return 0; }
5. #include <stdio.h> //如果50太大,则50变为最大值。反之则为最小值。 int main(){ char ch; int guess = 50, MAX = 100, MIN = 0; printf("Uh...is your number is %d\n",guess); while ((ch = getchar()) != 'y') { if (ch == 'b') { MAX = guess; guess = (guess + MIN) / 2; printf("Well, then, is it %d\n",guess); } else if (ch == 'l') { MIN = guess; guess = (guess + MAX) / 2; printf("Well, then, is it %d\n",guess); } else printf("Sorry, I understand only big , less , yes.\n"); while ((ch = getchar()) != '\n') continue; } printf("I konw i could do it"); return 0; }
6. //重要!! char get_first(void){ char ch; while((ch = getchar()) == '\n') continue; while (getchar() != '\n') continue; return ch; }
7. #include <stdio.h> char get_choice(void); char get_first(void); #define WORK_OVERTIME 40 #define RATE1 0.15 #define RATE2 0.20 #define RATE3 0.25 #define BREAK1 300.0 #define BREAK2 450.0 #define BASE1 (BREAK1 * RATE1) #define BASE2 (BASE1 + ((BREAK2 - BREAK1) * RATE2)) int main(void) { int hr; char choice; double wage,income,tax,wage2; printf("------------------------------------------------------------------------\n"); printf("Enter the number number corresponding to the desired pay rate or action:\n"); printf("a) $8.15/hr b) $9.33/hr\n"); printf("c) $10.00/hr d) $11.20/hr\n"); printf("q) quit\n"); printf("------------------------------------------------------------------------\n"); printf("Please enter your choise:"); while (choice = get_choice() ){ if (choice == 'q') break; switch (choice){ case 'a': wage2 = 8.75; break; case 'b': wage2 = 9.33; break; case 'c': wage2 = 10.00; break; case 'd': wage2 = 11.20; break; } printf("Please enter the hours:"); scanf("%d",&hr); if (hr <= WORK_OVERTIME) wage = hr * wage2; else wage = WORK_OVERTIME * wage2 +((hr - WORK_OVERTIME) * wage2 * 1.5); if (wage <= BREAK1){ tax = wage * RATE1; } else if (wage > 300 && wage <= 450 ){ tax = BASE1 + (wage - BREAK1) * RATE2; } else tax = BASE2 + (wage - BREAK2) * RATE3; income = wage - tax; printf("The wage: %.2f income:%.2lf tax:%.2lf\n", wage, income, tax); printf("------------------------------------------------------------------------\n"); printf("Enter the number number corresponding to the desired pay rate or action:\n"); printf("1) $8.15/hr 2) $9.33/hr\n"); printf("3) $10.00/hr 4) $11.20/hr\n"); printf("5) quit\n"); printf("------------------------------------------------------------------------\n"); printf("Please enter your choise:"); } return 0; } //get_choice 输入正确的符号 char get_choice(void){ char ch; ch = get_first(); while (ch != 'q' && (ch < 'a' || ch > 'd')){ printf("Please enter the : a b c d q\n"); printf("Please enter your choise:"); ch = get_first(); } return ch; } //get_first 读取第一个符号 扔掉其他符号 char get_first(void){ int ch; ch = getchar(); while (getchar() != '\n') continue; return ch; }
8. #include <stdio.h> char get_choice(void); char get_first(void); double get_number(void); int main(void){ char choice; double num1,num2,result; while ((choice = get_choice()) != 'q'){ printf("Enter the first number:"); num1 = get_number(); printf("Enter the second number:"); num2 = get_number(); if (choice == 'a') { result = num1 + num2; printf("%.1lf + %.1lf = %.1lf\n", num1, num2, result); } if (choice == 's') { result = num1 - num2; printf("%.1f - %.1f = %.1f\n", num1, num2, result); } if (choice == 'm') { result = num1 * num2; printf("%.1f * %.1f = %.1f\n", num1, num2, result); } if (choice == 'd') { if (num2 == 0) { printf("Enter a number other than 0: "); num2 = get_number(); result = num1 / num2; printf("%.1f / %.1f = %.1f\n", num1, num2, result); } else printf("%.1f / %.1f = %.1f\n", num1, num2, result); } } return 0; } char get_choice(void){ char ch; printf("Enter the operation of your choice:\n"); printf("a. add s. subtract\n"); printf("m. multiply d. divide\n"); printf("q. quit\n"); ch = get_first(); while ((ch != 'a') && (ch != 's') && (ch != 'm') && (ch != 'd') && (ch != 'q')){ printf("Please choice such as a s m d q:"); ch = get_first(); } return ch; } char get_first(void){ char ch; while((ch = getchar()) == '\n')//ch = getchar();之前用的的是这个,结果总是把回车给ch continue; //还总是检查不出来问题,终于找出来问题在哪里了。!! while (getchar() != '\n') continue; return ch; } double get_number(void){ double num; char ch; while (scanf("%lf", &num) != 1){ while ((ch = getchar()) != '\n') putchar(ch); //处理错误的输入。 printf("is not an number.\n"); printf("Please enter a number , such as 2.5, -1.78E8, or 3:"); } return num; }
相关文章推荐
- C primer plus 第八章 字符输入输出与输入验证 编程练习 个人答案
- C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案
- 《C++ Primer Plus(第六版)》(41)(第十七章 输入、输出和文件 编程练习和答案1)
- C Primer Plus (第五版) 第十三章 文件输入/输出 编程练习
- 《C++ Primer Plus(第六版)》(42)(第十七章 输入、输出和文件 编程练习和答案2)
- 【C语言学习】《C Primer Plus》第8章 字符输入/输出和输入确认
- C Primer Plus 第4章 字符串和格式化输入/输出 编程练习
- C primer plus第8章(字符输入/输出和输入确认)习题
- C primer plus 第七章 练习2: 编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII码。每行打印8个字符/编码对。
- C primer plus 第八单元-字符输入/输出确认
- C Primer Plus 第八章——字符输入/输出和输入确认
- C语言编程(练习4:字符输入和输出 )
- c++ primer plus 第五版 第七章 编程练习 第 8 题 (字符数组转成字符串,trim使用,判断空行)
- C和指针 第一章编程练习3 输入字符输出并输出校验和
- C语言编程(练习3:字符输入和输出 )
- 《C Primer Plus 第五版》第十章(数组和指针)编程练习
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(二)
- C primer plus第13章(文件输入/输出)对文本文件及二进制文件的处理
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出(三)
- C Primer Plus 5th 翻译 第四章:字符串和格式化输入/输出