好文档 - 专业文书写作范文服务资料分享网站

C primer plus课后编程练习答案

天下 分享 时间: 加入收藏 我要投稿 点赞

第8章 字符输入/输出和输入确认 编程练习

下面的一些程序要求输入以EOF终止。如果您的操作系统难以使用或不能使用重定向,则使用一些其他的判断来终止输入,例如读取&字符。

1.设计一个程序,统计从输入到文件结尾为止的字符数。

#include <>

int main(void) { int i;

for(i=0; getchar() != EOF; i++); printf(\ return 0; }

2.编写一个程序,把输入作为字符流读取,直到遇到EOF。令该程序打印每个输入字符及其ASCII编码的十进制值。注意在ASCII序列中空格字符前面的字符是非打印字符,要特殊处理这些字符。如果非打印字符是换行符或制表符,则分期打印\\n或\\t。否则,使用控制字符符号。例如,ASCII的l是Ctrl+A,可以显示为AA。注意A的ASCⅡ值是Ctrl+A的值加64。对其他非打印字符也保持相似的关系。除去每次遇到一个换行符时就开始一个新行之外,每行打印10对值。

#include <>

int main(void) {

char ch; int i;

for(i=1; (ch=getchar()) != EOF; i++) {

if (ch >= ' ' || ch == '\\n' || ch == '\\t') printf(\ else printf(\ printf(\

if(i%8 == 0) printf(\ }

return 0; }

3.编写一个程序,把输入作为字符流读取,直至遇到EOF。令其报告输入中的大写字母个数和小写字母个数。假设小写字母的数值是连续的,大写字母也是如此。或者你可以使用ctypc,h库中的合适的函数来区分大小写。

#include <> #include <>

int main(void) { char ch;

int lower=0,upper=0;

while ( (ch=getchar()) != EOF ) {

if ( islower(ch) ) lower++; if ( isupper(ch) ) upper++; }

printf(\

return 0; }

4.编写一个程序,把输入作为字符流读取,直至遇到EOF。令其报告每个单词的平均字母数。不要将空白字符记为单词中的字母。实际上,标点符号也不应该计算,但现在不必考虑这一点(如果您想做得好一些,可以考虑使用系列中的ispunct()函数)。

#include <> #include <>

int main(void) {

int num=0; char ch; bool word=0;

while ( (ch=getchar()) != EOF ) {

if ( isalpha(ch) && !word ) {

word = 1; num++; }

if ( !isalpha(ch) ) {

word = 0; } }

printf(\

return 0; }

5,修改程序清单8,4中的猜测程序,使其使用更智能的猜测策略。例如,程序最初猜50,让其询问用户该猜测值是大、小还是正确。如果该猜测值小,则令下一次猜测值为50和100的中值,也就是75。如果75大,则下一次猜测值为75和50的中值,等等。使用这种二分搜索(binary search)策略,起码如果用户没有欺骗,该程序很快会获得正确答案。

#include <>

int main(void) {

int guess, max = 100, min = 1; char response;

printf(\ printf(\ printf(\

printf(\

printf(\

while((response = getchar()) != 'y') {

if (response == 'b') {

max = guess - 1;

printf(\ }

else if (response == 'l') {

min = guess + 1;

printf(\ }

else printf(\ while (getchar() != '\\n'); }

printf(\ return 0; }

6.修改程序清单中的get_first()函数,使其返回所遇到的第一个非空白字符。在一个简单的程序中测试该函数。

#include <> #include <>

char get_first(void);

int main(void) { char ch;

while((ch = get_first() ) != EOF) {

putchar(ch); }

return 0; }

char get_first(void) { int ch;

while( isspace( ch = getchar() ) ); while ( getchar() != '\\n');

return ch; }

7.修改第7章的练习8,使菜单选项由字符代替数字进行标记。

#include<> #include<>

char get_first(void); 班

#define TIME 40 率

#define LIMIT1 300 lf\\n\

printf(\ scanf(\

if (hours > 40) hours = 40 + (hours - 40) * ; gross = hours * basic;

printf(\ if (gross <= LIMIT1) tax = gross * RATE1;

else if (gross <= LIMIT2) tax = LIMIT1 * RATE1 + (gross - LIMIT1) * RATE2; else tax = LIMIT1 * RATE1 + LIMIT2 * RATE2 + (gross - LIMIT1 - LIMIT2) * RATE3; printf(\

printf(\ return(0); }

char get_first(void) add s. subtract m. multiply d. divide q. quic

Enter first number: Enter second number: one one is not an number.

Please enter a number, such as . , or 3. 1 + 1 =

Enter the operation of your choice: a. add s. subtract m. multiply d. divide q. quit

Enter first number: Enter second number: O Enter a number other than 0: / = 92

C primer plus课后编程练习答案

第8章字符输入/输出和输入确认编程练习下面的一些程序要求输入以EOF终止。如果您的操作系统难以使用或不能使用重定向,则使用一些其他的判断来终止输入,例如读取&字符。1.设计一个程序,统计从输入到文件结尾为止的字符数。#includein
推荐度:
点击下载文档文档为doc格式
3ty247x5vm0a6ri16ozy38gut0xsx2013u8
领取福利

微信扫码领取福利

微信扫码分享