面向对象程序设计寒假作业3

作业描述 详情
这个作业属于哪个课程 2020面向对象程序设计
这个作业要求在哪里 面向对象程序设计寒假作业3
这个作业的目标 完善编程题
作业正文 如下
其他参考文献 freopen

编程题

  • 继续完成作业二的编程题。
  • 优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。
  • 思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。

这里先补一下作业2的新功能,用freopen函数,通过命令行读取文件并运行

在主函数中新增代码行如下

char file[100];
printf("请输入文件地址\n");
scanf("%s",file);
freopen(file,"r",stdin); 

D盘中的记事本

一开始输不出来

本来是百思不得其解的,后来看某位同学的作业后才得知要转化为ANSI编码,后来另存为了一下

另存为ANSI编码后就可以了,十分感谢那位同学

新增两位数的输入

如果不是知道char数组中的两个元素是可以读入一个汉字真的是不会写。
新增的二位输入函数

int erwei(char a[])
{
char hz1[10],hz2[10];
int c,d;
hz1[0]=a[0];hz1[1]=a[1];hz1[2]='\0';
hz2[0]=a[4];hz2[1]=a[5];hz2[2]='\0';
c=trans(hz1),d=trans(hz2);
return c*10+d;
}

简单测试二位输入函数的代码

#include<iostream>
#include<string.h>
char hz[11][11]={"零","一","二","三","四","五","六","七","八","九","十"};
int trans(char a[])
{
int i;

for(i=0;i<11;i++){
if(strcmp(hz[i],a)==0){
return i;
}}}
int erwei(char a[])
{
char hz1[10],hz2[10];
int c,d;
hz1[0]=a[0];hz1[1]=a[1];hz1[2]='\0';
hz2[0]=a[4];hz2[1]=a[5];hz2[2]='\0';
c=trans(hz1),d=trans(hz2);
return c*10+d;
}

int main()
{
    char sz[100];
    scanf("%s",sz);
    int i,sum=0;
    char sz1[100],sz2[100];
    for(i=2;i<4;i++)
    {int k=i-2;
	sz1[k]=sz[i];
	}
    sz1[2]='\0';
    sum=erwei(sz);
    printf("%d",sum);
    return 0;
}

测试样例

然后是完整代码,对完整代码的修改就不赘述了

#include<stdio.h>
#include<string.h>
char hz[11][11]={"零","一","二","三","四","五","六","七","八","九","十"};
int trans1(char a[])
{int i;
for(i=0;i<11;i++){
if(strcmp(hz[i],a)==0){
return i;
}
}
}
int erwei(char a[])
{
char hz1[10],hz2[10];
int c,d;
hz1[0]=a[0];hz1[1]=a[1];hz1[2]='\0';
hz2[0]=a[4];hz2[1]=a[5];hz2[2]='\0';
c=trans1(hz1),d=trans1(hz2);
return c*10+d;
}
int trans(char a[]){
int i,k=0;
for(i=0;i<11;i++){
if(strcmp(hz[i],a)==0){
return i;k=1;
}if(k==0)return erwei(a);
 }
}
int judge(int n,char a[],char b[]){
int sum;
sum=trans(b);
if(strcmp(a,"增加")==0) return n+sum;
else if(strcmp(a,"减少")==0) 
{if(n<=sum)
return 0;
else return n-sum;}
}
int main()
{
int s;
char a[101],b[101],c[101],d[101];
char file[100];
printf("请输入文件地址\n");
scanf("%s",file);
freopen(file,"r",stdin); 
scanf("%s %s %s %s",a,b,c,d);
s=trans(d);
while(scanf("%s %s",b,c)!=EOF)
{
	if(strcmp(b,"看看")!=0)
	{
		scanf("%s",d);
		s=judge(s,c,d);
	}
	else {if(s<100)
		{
		if(s<=10)printf("%s",hz[s]);
		
		else if(s%10==0){printf("%s十",hz[s/10]);
		}
		else if(s>10&&s<20)printf("十%s",hz[s-10]);
		else printf("%s十%s",hz[s/10],hz[s%10]);}
		else{
		if(s%100==0)printf("%s百",hz[s/100]);
		else if(s%10==0)printf("%s百%s",hz[s/100],hz[s%100/10]);
		else printf("%s百%s十%s",hz[s/100],hz[s%100/10],hz[s%100%10]);
	}
	}
}
return 0;
}

分别是用freopen的输入和不用的输入


posted @ 2020-02-16 18:42  xtzc  阅读(116)  评论(0)    收藏  举报