void f char pget_first(void) 这个函数 里面的 getvoid f char p怎么理解

博客分类:
下面的一些程序要求输入以EOF终止。如果您的操作系统难以使用或不能使用重定向,则使用一些其他的判断来终止输入,例如读取&字符。
1.设计一个程序,统计从输入到文件结尾为止的字符数。
#include&stdio.h&
int main(void)
int count = 0 ;
printf("input characters:\n");
while(getchar() != EOF)
printf("there are%d characters\n",count);
2.编写一个程序,把输入作为字符流读取,直到遇到EOF。令该程序打印每个输入字符及其ASCII编码的十进制值。注意在ASCII序列中空格字符前面的字符是非打印字符,要特殊处理这些字符。如果非打印字符是换行符或制表符,则分期打印\n或\t。否则,使用控制字符符号。例如,ASCII的l是Ctrl+A,可以显示为AA。注意A的ASCⅡ值是Ctrl+A的值加64。对其他非打印字符也保持相似的关系。除去每次遇到一个换行符时就开始一个新行之外,每行打印10对值。
#include&stdio.h&
#define SPACE ' '
#define ENTER '\n'
#define TAB '\t'
int main(void)
printf("input characters:\n");
int count = 1;
while( (input = getchar() )!= EOF)
if(input == ENTER)
printf("\\n|%d
else if(input == TAB)
printf("\\t|%d
else if( input &= 0 && input & SPACE)
printf("^%c|%d
",input + 64,input);
printf("%c|%d
",input,input);
if(count++ % 10 == 0)
putchar(ENTER);
3.编写一个程序,把输入作为字符流读取,直至遇到EOF。令其报告输入中的大写字母个数和小写字母个数。假设小写字母的数值是连续的,大写字母也是如此。或者你可以使用ctypc,h库中的合适的函数来区分大小写。
#include&stdio.h&
#include&ctype.h&
int main(void)
printf("enter charactes:\n");
int COUNT = 0;
int count = 0;
while( (input =getchar() ) != EOF)
if(islower(input))
if(isupper(input))
printf("lower character is %d, upper character is %d \n",count,COUNT);
4.编写一个程序,把输入作为字符流读取,直至遇到EOF。令其报告每个单词的平均字母数。不要将空白字符记为单词中的字母。实际上,标点符号也不应该计算,但现在不必考虑这一点(如果您想做得好一些,可以考虑使用ctype.h系列中的ispunct()函数)。
#include&stdio.h&
#include&ctype.h&
int main(void)
int words_count = 0;
int character_count = 0;
bool inwords =
printf("enter words:\n");
while( (input = getchar() ) != EOF)
if(!isspace(input) && !ispunct(input))
character_count++;
if(!isspace(input) && !inwords)
//开始一个新单词
words_count++;
//统计单词数
if( (ispunct(input) || isspace(input) ) && inwords)
//到达单词结尾
printf("%d characters read.\n",character_count);
printf("%d words read.\n",words_count);
printf("the average number of letters per word is %.2f .\n",(float)words_count/(float)character_count);
5.修改程序清单8,4中的猜测程序,使其使用更智能的猜测策略。例如,程序最初猜50,让其询问用户该猜测值是大、小还是正确。如果该猜测值小,则令下一次猜测值为50和100的中值,也就是75。如果75大,则下一次猜测值为75和50的中值,等等。使用这种二分搜索(binary search)策略,起码如果用户没有欺骗,该程序很快会获得正确答案。
#include&stdio.h&
void clean(void);
int main(void)
int min = 1;
int max = 100;
int guess = 50;
printf("is it %d?\n",guess);
bool answer =
while( getchar() != 'y')
printf("%d is biger or smaller?(b or s): ",guess);
char adjust = getchar();
if(adjust == 's')
//guess 猜小了
guess = (max + min) / 2;
printf("is it %d?\n",guess);
if(adjust == 'b')
//guess 猜大了
guess = (min + max) / 2;
printf("is it %d?\n",guess);
printf("Good job\n");
void clean(void)
while(getchar() != '\n')
6.修改程序清单8.8中的get_first()函数,使其返回所遇到的第一个非空白字符。在一个简单的程序中测试该函数。
#include&stdio.h&
#include&ctype.h&
char get_first(void);
int main(void)
printf("enter:\n");
char firstChar = get_first();
putchar(firstChar);
char get_first(void)
while(isspace(input = getchar()));
while(getchar() != '\n')
8.编写一个程序,显示一个菜单,为您提供加法、减法、乘法或除法的选项。获得您的选择后,该程序请求两个数,然后执行您选择的操作。该程序应该只接受它所提供的菜单选项。它应该使用float类型的数,并且如果用户未能输入数字应允许其重新输入。在除法的情况中,如果用户输入O作为第二个数,该程序应该提示用户输入一个新的值。一个典型的程序运行应该如下所示:Enter the operation of your choice:a. add
s. subtractm. multiply
d. divideq. quicEnter first number: 22.4Enter second number: oneone is not an number.Please enter a number, such as 2.5. -1.78E8, or 3. 122.4 + 1 = 23.4Enter the operation of your choice:a. add
s. subtractm. multiply
d. divideq. quitEnter first number: 18.4Enter second number: OEnter a number other than 0: 0.218.4 / 0.2 = 92Enter the operation of your choice:a. add
s. subtractm. multiply
d. divideq. quitqBye.
#include&stdio.h&
#include&ctype.h&
float num1,num2;
char get_first(void);
void menu(void);
float get_float(void);
char get_choice(void);
int main(void)
while((choice = get_choice()) != 'q')
printf("enter first number:");
num1 = get_float();
printf("enter second number:");
num2 = get_float();
switch(choice)
case 'a': printf("%.2f + %.2f = %.2f\n",num1,num2,num1+num2);
case 's': printf("%.2f - %.2f = %.2f\n",num1,num2,num1-num2);
case 'm': printf("%.2f x %.2f = %.2f\n",num1,num2,num1*num2);
case 'd': printf("%.2f / %.2f = %.2f\n",num1,num2,num1/num2);
default: printf("program error\n");
printf("Bye!\n");
char get_first(void)
while(isspace(input = getchar()));
while(getchar() != '\n')
void menu()
printf("Enter the operation of your choice:\n");
printf("a. add
s. substract\n");
printf("m. multiply
d.divide\n");
printf("q. quit\n");
char get_choice()
choice = get_first();
while(choice != 'a' && choice != 's' && choice != 'm' & choice != 'd' && choice != 'q')
printf("please response with a,s,m,d or q.\n");
choice = get_first();
float get_float()
while(scanf("%f",&num) != 1)
while((ch = getchar()) != '\n')
putchar(ch);
printf("is not an number.\n");
printf("enter a number,such as 2.5,-1.78E8 or 3:");
浏览: 170358 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'n_words++;/*统计单词数*/;if(isspace(ch)&&inwords);inwords=/*到达单词的尾部*;printf(\;printf(\;printf(\;(float)words/(float)n_wo;return0;};5,修改程序清单8,4中的猜测程序,使其使用更智;#include;intmain(void){
n_words++;
/*统计单词数*/
if(isspace(ch) && inwords)
/*到达单词的尾部*/
(float)words/(float)n_words);
5,修改程序清单8,4中的猜测程序,使其使用更智能的猜测策略。例如,程序最初猜50,让其询问用户该猜测值是大、小还是正确。如果该猜测值小,则令下一次猜测值为50和100的中值,也就是75。如果75大,则下一次猜测值为75和50的中值,等等。使用这种二分搜索(binary search)策略,起码如果用户没有欺骗,该程序很快会获得正确答案。
int main(void) {
int guess, max = 100, min = 1;
printf(\ printf(\ printf(\ printf(\ printf(\ while((response = getchar()) != 'y')
if (response == 'b')
max = guess - 1;
else if (response == 'l')
min = guess + 1;
else printf(\
while (getchar() != '\\n');
printf(\ return 0; }
6.修改程序清单8.8中的get_first()函数,使其返回所遇到的第一个非空白字符。在一个简单的程序中测试该函数。
char get_first(void);
int main(void) {
while((ch = get_first() ) != EOF)
putchar(ch);
return 0; }
char get_first(void) {
while( isspace( ch = getchar() ) );
while ( getchar() != '\\n'); }
7.修改第7章的练习8,使菜单选项由字符代替数字进行标记。
#include #include char get_first(void);
//b.加班 #define TIME 40
//加班(超过TIME小时) = #define ADD
//ADD倍的时间 //c.税率 #define LIMIT1 300
//前LIMIT1美元为RATE1 #define RATE1 0.15
#define LIMIT2 150
//下一个LIMIT2美元为RATE2 #define RATE2 0.20 #define RATE3 0.25 //余下的位RATE3
int main(void) {
double basic,hours,gross,
printf(\ printf(\ printf(\ printf(\ switch( get_first() )
case '1': basic = 8.75;
case '2': basic = 9.33;
case '3': basic = 10.00;
case '4': basic = 11.20;
default: printf(\退出程序
printf(\ printf(\ scanf(\ if (hours > 40) hours = 40 + (hours - 40) * 1.5;
gross = hours *
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) //得到字符串中的第一个非空字符 {
while( isspace( ch = getchar() ) );
while ( getchar() != '\\n'); }
8.编写一个程序,显示一个菜单,为您提供加法、减法、乘法或除法的选项。获得您的选择后,该程序请求两个数,然后执行您选择的操作。该程序应该只接受它所提供的菜单选项。它应该使用float类型的数,并且如果用户未能输入数字应允许其重新输入。在除法的情况中,如果用户输入O作为第二个数,该程序应该提示用户输入一个新的值。一个典型的程序运行应该如下所示: Enter the operation of your choice: a. add
s. subtract m. multiply
d. divide q. quic Enter first number: 22.4 Enter second number: one one is not an number. Please enter a number, such as 2.5. -1.78E8, or 3. 1 22.4 + 1 = 23.4 Enter the operation of your choice: a. add
s. subtract m. multiply
d. divide q. quit Enter first number: 18.4 Enter second number: O Enter a number other than 0: 0.2 18.4 / 0.2 = 92 Enter the operation of your choice: a. add
s. subtract m. multiply
d. divide q. quit q Bye.
#include #include float get_float(void); char get_first(void);
int main(void) {
float num1,num2;
s.subtract:\\n\
d.divide\\n\
select = get_first();
if( select != 'a' && select != 's' && select != 'm' && select != 'd')
num1 = get_float();
num2 = get_float();
while( select == 'd' && num2 == 0)
num2 = get_float();
switch(select)
case 'a': printf(\
case 's': printf(\
case 'm': printf(\
case 'd': printf(\
return(0); }
float get_float(void) //得到一个合适的浮点数,滤除非法数 {
char str[40];
while(scanf(\ {
gets(str);
printf(\ }
while ( getchar() != '\\n'); }
char get_first(void) //得到字符串中的第一个字符,滤除其他字符 {
while( isspace( ch = getchar() ) );
while ( getchar() != '\\n'); }
数 编程练习
1.设计函数 min(x,y),返回两个double数值中较小的数值,同时用一个简单的驱动程序测试该函数。
#include double min(double ,double );
int main(void) {
double x,y;
printf(\ scanf(\ printf(\ return(0); }
double min(double a,double b) {
return a<b?a:b; }
2.设计函数chline(ch, i, j),实现指定字符在i列到j列的输出,并用一个简单的驱动程序测试该函数。
#include void chline(char , int , int );
int main(void) {
printf(\ scanf(\ printf(\ scanf(\ chline(ch,x,y);
return 0; }
void chline(char ch, int i, int j) {
for(k=1; k<i; k++)
printf(\ for( ; k<=j; k++)
printf(\ printf(\}
3.编写一个函数。函数的3个参数是一个字符和两个整数。字符参数是需要输出的字符。第一个整数说明了在每行中该字符输出的个数,而第二个整数指的是需要输出的行数。编写一个调用该函数的程序。
#include void chline(char , int , int );
int main(void) {
printf(\ scanf(\ printf(\ scanf(\ chline(ch,x,y);
return 0; }
void chline(char ch, int column, int row) {
for(y=0; y< y++)
for(x=0; x< x++)
printf(\ } }
4.两数值的谐均值可以这样计算:首先对两数值的倒数取平均值,最后再取倒数。编写一个带有两个double参数的函数,计算这两个参数的谐均值。
三亿文库包含各类专业文献、行业资料、文学作品欣赏、各类资格考试、应用写作文书、幼儿教育、小学教育、112418_C.PrimerPlus(第五版)编程练习全部答案70等内容。 
 C_primer_plus(第五版)课后编程练习答案(完整)_计算机硬件及网络_IT/计算机_专业资料。第一章 概览 编程练习 1.您刚刚被 MacroMuscle 有限公司(Software for ...  C_primer_plus(第五版)课后编程练习答案(完整)_工学_高等教育_教育专区。C_primer_plus(第五版)课后编程练习答案(完整第一章 概览 编程练习 1.您刚刚被 Macro...  C-Primer-Plus(第五版)编程练习全部答案._计算机软件及应用_IT/计算机_专业资料。第一章 概览 编程练习 1.您刚刚被 MacroMuscle 有限公司(Software for Hard ...  C.Primer_Plus(第五版)编程练习全部答案_高等教育_教育专区。第一章 概览 编程练习 1.您刚刚被 MacroMuscle 有限公司(Software for Hard Bodies)聘用。该公司要...  C.Primer Plus(第五版)编程练习全部答案_IT/计算机_专业资料。所有编程练习题目的答案,新手可以参考下第一章 概览 编程练习 1.您刚刚被 MacroMuscle 有限公司(Sof...  C-primer-plus(第五版)课后编程练习答案(完整有目录)_计算机软件及应用_IT/计算机_专业资料。在原来文档的基础上,加了个目录,方便大家查阅 ...  C primer plus(第五版)课后编程练习答案(完整) 第一章 概览 编程练习 1.您刚刚被 MacroMuscle 有限公司(Software for Hard Bodies)聘用。该公司要进入欧洲市场,...  c+++primer+plus+第五版》编程练习习题答案_理学_高等教育_教育专区。word 文档...} // pe2-4.cpp #include &iostream& double C_to_F(double); int main...putchar与getchar以及对缓冲区的理解
getchar 从标准输入里读取下一个字符。该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。如: #include&stdio.h&
getchar 由宏实现:#define getchar() getc(stdin)。getchar有一个int型的返回&#20540;.当程序调用getchar时.程序就等着用户按键.用户输入的被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回&#20540;是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.(putchar也是和着差不多)。
函数名: putchar
定义:该函数将制定的表达式的&#20540;所对应的字符输出到标准输出终端上。表达式可以是字符型或整型,它每次只能输出一个字符。例如:putchar('#');输出#、
提示:使用字符输入/输出函数时,必须在程序的前面加上#include &stdio.h&或#include &stdio.h&
功 能: 在stdout上输出字符
用 法: int putchar(int ch);
putchar函数(字符输出函数)的作用是向终端输出一个字符。其一般形式为 putchar(c)
缓冲区的理解
当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7
,而不是6。
#include&stdio.h&
int main()
{ &&&&&char&
&& &&&&while(1) {
&&&&&& c=getchar();&&&&&&&&&&&&&&&&& &//输入字符
&& &&& &if(c&='A'&& c&='V')&&&&&&&&& putchar(c&#43;4);&&&&&&&&&&&&&& //装换
&&&& &&elseif(c&='W'&&c&='Z') &&&&&&putchar(c-22);
&&&&& &else if(c&='a' && c&='v')&&&&&& putchar(c&#43;4);
&&&&& &else if(c&='w'&&c&='z')&&&&&& &putchar(c-22);
&& && &&else if(c==42)&&&&&&&&&&&&&& &&//当输入*时结束循环
&&&&&&&& & else&&&&&&&&&&&&&&&&&&&&&&&putchar(c);&&& &&&&&&&&&&&&&&&
&&&& return 0;
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &希望对大家有些帮助
本文已收录于以下专栏:
相关文章推荐
单个字符的输入输出函数
本文引用了以下博客
/jiangjun/archive//2503676.html
1相关概念1.1 引入在jdk1.4提供了新的io包,引入了Buffer类(缓冲区)。从概念上来讲,缓冲区是包在一个对象内的基本数据元素数组。Buffer类相比一个简单的数组的优点是它将关于数据的内容...
首先,用getchar()函数进行字符的输入,并不是直接从键盘这个硬件中读取输入的字符,而是从“输入缓冲区”中得到的字符。输入缓冲区是一个字符的队列,其中存储了所有你尚未读取的字符。每次调用getch...
《C语言从键盘输入数据》一节讲到了
getchar()、getche()、getch() 函数,它们都用来从控制台获取字符,getchar() 会等待用户按下回车键才开始读取,而 getche()...
1、getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。
getch()和getche()...
三个函数的对比
conio.h...
最近在学习嵌入式系统,师兄让从linux系统开始抓起,于是乎我就开始了“闹心”的linux之旅。由于要学习制作嵌入式系统的根文件系统,需要在linux系统中访问window目录下的...
GPS型号:SIMCOM7100C
最近在做gps定位这块,发现经纬度定位并不准确,偏差的有点离谱。网上查了好多资料,各种坐标系之间相互转换。
在地图上输入转换后的经纬度,偏的不是一点半点。
C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。其中最常用的有getchar函数和putchar函数。
putchar函数(字符输出函数)
putchar函数的作用是向终端输出...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)[求助]这个 C program 怎样写 偶写了很久也写不到啊_ @ 『 VC-C# 编程 』_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
[求助]这个 C program 怎样写 偶写了很久也写不到啊_ @ 『 VC-C# 编程 』
&&C program
你可能喜欢

我要回帖

更多关于 void f char p 的文章

 

随机推荐