题目
统计一个文本文件中 字母,数字,空格,其他字符的个数 。 并用条形图显示出他们的个数
[此贴子已经被作者于2005-2-26 17:23:31编辑过]
#include <stdio.h> void main(){ int total[255]; FILE *fp; char i,x,filename[30]; printf("Please input filename:"); scanf("%s%c",filename,&x); if( (fp=fopen(filename,"r"))==NULL ){ printf("Sorry can not find the file!"); exit(1); } for(i=33;i<=126;i++) total[i]=0; while(fread(&x,1,1,fp),!feof(fp)){ fseek(fp,-1L,1); total[fgetc(fp)]++; }
for(i=33;i<=126;i++){ printf("\n%c:%d",i,total[i]); getch(); } }
#include <stdio.h> #include <graphics.h>
void show_xy(){ cleardevice(); setfillstyle(1,7); bar(10,10,630,485); setcolor(BLUE); line(30,30,30,451); line(30,451,600,451); line(30,30,25,40); line(30,30,35,40); line(600,451,590,451-5); line(600,451,590,451+5); } void show_bar(int value,int x,char s[],int color){ x++; setcolor(RED); outtextxy(30+10*x,460,s); setfillstyle(1,color); bar(30+10*x,450,30+10*x+8,450-value*5); } void show(int *total){ char s[2]; char i; show_xy(); /*show_bar(10,0,"~",RED);*/ for(i=33;i<=33+50;i++){ s[0]=i; s[1]='\0'; show_bar(total[i],i-33,s,BLUE); } getch(); show_xy(); for(i=33+51;i<=33+93;i++){ s[0]=i; s[1]='\0'; show_bar(total[i],i-33-51,s,BLUE); } getch(); }
void main(){ int total[255],gm,gd=DETECT; FILE *fp; char i,x,filename[30]; printf("Please input filename:"); scanf("%s%c",filename,&x); if( (fp=fopen(filename,"r"))==NULL ){ printf("Sorry can not find the file!"); exit(1); } for(i=33;i<=126;i++) total[i]=0; while(fread(&x,1,1,fp),!feof(fp)){ fseek(fp,-1L,1); total[fgetc(fp)]++; } initgraph(&gd,&gm,""); show(total); closegraph(); }