//echo_eof #include<stdio.h> int main() { int ch;//注意类型,因为EOF为-1,char为0-255 while((ch=getchar())!=EOF) putchar(ch); getch(); return 0; } #include<stdio.h> int main() { int ch; int i=0; while((ch=getchar())!=EOF) i++; printf("%d",i); getch(); return 0; } #include<stdio.h> #include<ctype.h> int main() { int ch; int lowers=0; int uppers=0; while((ch=getchar())!=EOF) { if(islower(ch)) lowers++; else if(isupper(ch)) uppers++; } printf("lowers=%d,uppers=%d/n",lowers,uppers); getch(); return 0; } #include<stdio.h> #include<stdbool.h> #include<ctype.h> int main(void) { int ch; bool prev=false; int i=0; int n=0; float a; while((ch=getchar())!=EOF) { if(!isspace(ch)&&!ispunct(ch)) i++; if(!isspace(ch)&&!prev) { prev=true; n++; } if(isspace(ch)&&prev) prev=false; } a=(float)i/(float)n; printf("There are %d words./n%.2f",n,a); getch(); return 0; } #include <stdio.h> #include <ctype.h> int main(void) { int high = 100; int low = 1; int guess = (high + low) / 2; char response; printf("Pick an integer from 1 to 100. I will try to guess "); printf("it./nRespond with a y if my guess is right, with"); printf("/na h if it is high, and with an l if it is low./n"); printf("Uh...is your number %d?/n", guess); while ((response = getchar()) != 'y') /* get response */ { if (response == '/n') continue; if (response != 'h' && response != 'l') { printf("I don't understand that response. Please enter h for/n"); printf("high, l for low, or y for correct./n"); continue; } if(response=='h')//二分搜索 high=guess-1; if(response=='l') low=guess+1; guess=(low+high)/2; printf("Well, then, is it %d?/n", guess); } printf("I knew I could do it!/n"); getch(); return 0; } #include<stdio.h> #include<ctype.h> int main(void) { int ch; while(isspace(ch=getchar(ch)))//注意这里 continue; putchar(ch); getch(); return 0; } //读取整数输出比整数小于或是等于的素数。 #include<stdio.h> #include<stdbool.h> int main() { unsigned long lim; unsigned long num; unsigned long div; bool prime; printf("Please enter a number:/n"); while(scanf("%lu",&lim)==1&&lim>0) { if(lim>4) { for(num=2;num<=lim;num++) { for(div=2,prime=true;(div*div)<=num;div++)//判断素数,只需一半 { if(num%div==0) prime=false; if(prime==true) printf("The %lu is prime./n",num); } } } else if(lim>=3) { printf("The 2 is prime./n"); printf("The 3 is prime./n"); } else if(lim>1) printf("The 2 is prime./n"); printf("Please enter another limit; "); printf("Enter q to quit./n"); } getch(); return 0; } //打开一个文件并显示内容 #include<stdio.h> #include<stdlib.h>//为了exit() int main(){ int ch; FILE*fp; char fname[50];//用于存放文件名 printf("Enter the name of the file./n"); scanf("%s",fname); fp=fopen(fname,"r");//打开文件读取 if(fp==NULL)//打开文件失败 { printf("Failed to open file./n"); exit(1);//终止程序 } while((ch=getc(fp))!=EOF) putchar(ch); fclose(fp);//关闭文件 getch(); return 0; } int get_int(void) { int intput; char ch; while(scanf("%d",&intput)!=1) { while((ch=getchar())!='/n') putchar(ch);//剔除错误输入 printf("is not an integer./nPlease enter an"); printf("integer value,such as 25,-178,or 3:"); } return intput; } //按行和列打印字符 #include<stdio.h> void display(char cr,int lines,int width); int main() { int ch; int rows,cols;//定义行数和列数 printf("Please enter a character and two integers:/n"); while((ch=getchar())!='/n') { if(scanf("%d %d",&rows,&cols)!=2) break; display(ch,rows,cols); while(getchar()!='/n') continue; printf("Enter another character and two integers:/n"); printf("Enter a newline to quit ./n"); } printf("Bye!/n"); getch(); return 0; } void display(char cr,int lines,int width) { int row,col; for(row=1;row<=lines;row++) { for(col=1;col<=width;col++) putchar(cr); putchar('/n'); } } bool bad_limits(int begin,int end,int low,int high) { bool not_good=false; if(begin>end) { printf("%d isn't smaller than %d./n",begin,end); not_good=true; } if(begin<low||end<low) { printf("Values must be %d or greater./n",low); not_good=true; } if(begin>high||end>high) { printf("Values must be %d or less./n"high); not_good=true; } return not_good; } /输入确认,计算特定范围内整数的平方和 #include<stdio.h> #include<stdbool.h> int get_int(void); bool bad_limits(int begin,int end,int low,int high); double sum_square(int a,int b); int main(void) { const int MIN=-1000; const int MAX=+1000; int start; int stop; double answer; printf("The program computes the sum of the squares of" "integers in a range./n"); start=get_int(); printf("upper limit:"); stop=get_int(); while(start!=0||stop!=0) { if(bad_limits(start,stop,MIN,MAX)) printf("Please try again./n"); else { answer=sum_square(start,stop); printf("The sum of the squares of the integers from"); printf("from %d to %d is %g/n",start,stop,answer); } printf("Enter the limits:/n"); printf("lower limits/n"); start=get_int(); printf("upper limits/n"); stop=get_int(); } printf("DONE!"); getch(); return 0; } int get_int(void) { int intput; char ch; while(scanf("%d",&intput)!=1) { while((ch=getchar())!='/n') putchar(ch);//剔除错误输入 printf("is not an integer./nPlease enter an"); printf("integer value,such as 25,-178,or 3:"); } return intput; } double sum_square(int a,int b) { double total=0; int i; for(i=a;i<=b;i++) total+=i*i; return total; } bool bad_limits(int begin,int end,int low,int high) { bool not_good=false; if(begin>end) { printf("%d isn't smaller than %d./n",begin,end); not_good=true; } if(begin<low||end<low) { printf("Values must be %d or greater./n",low); not_good=true; } if(begin>high||end>high) { printf("Values must be %d or less./n",high); not_good=true; } return not_good; } #include<stdio.h> char get_choice(void); void count(void); int get_int(void); char get_first(void); int main() { int choice; while((choice=get_choice())!='q') { switch(choice) { case 'a':printf("Buy low,sell high./n"); break; case 'b':putchar('/a'); break; case 'c':count(); break; default:printf("Program error!/n"); break; } } getch(); return 0; } char get_choice(void) { int ch; printf("Enter the letter of your choice./n"); printf("a)advice b)bell"); printf("c)count q)quit/n"); ch=get_first(); while((ch<'a'||ch>'c')&&ch!='q') { printf("Please enter a,b,c or q:/n"); ch=get_first(); } return ch; } char get_first(void) { int ch; ch=getchar(); while(getchar()!='/n') continue;//跳过本行的剩余部分 return ch; } void count(void) { int n,i; printf("Count how far? Enter an integer:/n"); n=get_int(); for(i=1;i<=n;i++) printf("%d/n",i); while(getchar()!='/n') continue; } int get_int(void) { int intput; char ch; while(scanf("%d",&intput)!=1) { while((ch=getchar())!='/n') putchar(ch);//剔除错误输入 printf("is not an integer./nPlease enter an"); printf("integer value,such as 25,-178,or 3:"); } return intput; }