当一个程序调试需多次手动输入数据时,可采用freopen()库函数,先将测试数据存入文件,再调用该函数将输入由键盘重定向为文件,也可以调用该函数将输出由屏幕重定向为文件,直接在文件中查看。
用法:
freopen( "path","mode", stream );
其中path表示用于存储输入输出的自定义文件路径,mode表示文件打开的模式(如r-只读, w-写),stream表示 一个文件,且通常使用标准流文件。(标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。)
注:在c/c++中,用到的路径名都应使用"\"替代原来的"",如"F:c++程序文件报时助手"应改为"F:\c++程序文件\报时助手"
示例:报时助手
问题描述
给定当前的时间,请用英文的读法将它读出来。
时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
时和分的读法使用的是英文数字的读法,其中0~20读作:
0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
30读作thirty,40读作forty,50读作fifty。
对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen
代码:
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 freopen("F:\c++程序文件\报时助手\test.txt","r",stdin);//输入重定向,输入数据将从test.txt文件中读取 6 freopen("F:\c++程序文件\报时助手\result.txt","w",stdout); //输出重定向,输出数据将保存在result.txt文件中 7 int h,m; 8 printf("Please input h(hour) m(minute): "); 9 while(scanf("%d %d",&h,&m)!=EOF) 10 { 11 char g[50][50]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}; 12 char s[10][10]={"twenty","thirty","forty","fifty"}; 13 if(m==0) 14 if(h<21) 15 printf("%s o'clock",g[h]); 16 else {printf("%s %s o'clock",s[h/10-2],g[h%10]);} 17 else 18 { 19 if(h<21) 20 printf("%s ",g[h]); 21 else {printf("%s %s ",s[h/10-2],g[h%10]);} 22 if(m<21) 23 printf("%s ",g[m]); 24 else {printf("%s %s ",s[m/10-2],g[m%10]);} 25 } 26 printf(" "); 27 } 28 fclose(stdin);//关闭输入文件 29 fclose(stdout);//关闭输出文件 30 31 return 0; 32 }
输入文件test.txt:
输出文件result.txt:
可以看出,程序运行时测试了所有数据,结果保存在一个文件中。