首 页 行业热点 新车 试驾评测 养车用车 车型库

c语言读取数据

发布网友

我来回答

1个回答

热心网友

很简单 我先占个座

写完了 超出了我预计时间 6分钟

data.in内容
1 mul 2
4 div 1
5 add 6
8 sub 6
4 mod 3
运行结果
1 * 2
4 / 1
5 + 6
8 - 6
4 % 3
Press any key to continue

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int i,sel;
char line[100]={0},num1[5]={0},num2[5]={0},op[5]={0},oplist[5][5]={"mul","div","add","sub","mod"};
FILE *fp=fopen("data.in","r");;
if (fp==NULL)
{
printf("Error 1\n");
return 1;
exit(0);
}
while (fgets(line,sizeof(line)-1,fp))
{
sscanf(line,"%[0-9] %s %[0-9]\n",num1,op,num2);
printf("%s ",num1);
sel=-1;
for (i=0;i<5;i++)
{
if (strcmp(oplist[i],op)==0)
{
sel = i;
break;
}
}
switch (sel)
{
case 0:printf("* ");
break;
case 1:printf("/ ");
break;
case 2:printf("+ ");
break;
case 3:printf("- ");
break;
case 4:printf("%% ");
break;
default:
printf("Error 2\n");
return 2;
}
printf("%s\n",num2);
}
}追问不好意思 有些不懂 能不能给个关键步骤的注释 还有
输入数据示例1:
345 mul 122
输出结果示例1:
42090

输入数据示例2:
377 mod 27
输出结果示例2:
26

输入数据示例2:
377 mov 27
输出结果示例2:
Error 2

追答嗯 你开始描述不清楚 现在补充了才明白了

我继续改
data.in文件内容

1 mul 2
4 div 1
5 add 6
8 sub 6
4 mod 3
345 mul 122
377 mod 27
377 mov 27

运行情况

输入数据示例1:
1 mul 2
输出结果示例1:
2
输入数据示例2:
4 div 1
输出结果示例2:
4
输入数据示例3:
5 add 6
输出结果示例3:
11
输入数据示例4:
8 sub 6
输出结果示例4:
2
输入数据示例5:
4 mod 3
输出结果示例5:
1
输入数据示例6:
345 mul 122
输出结果示例6:
42090
输入数据示例7:
377 mod 27
输出结果示例7:
26
输入数据示例8:
377 Error 2
Press any key to continue

代码
#include
#include
#include
main()
{
int i,j=1,sel,answer;
char line[100]={0},num1[5]={0},num2[5]={0},op[5]={0},oplist[5][5]={"mul","div","add","sub","mod"}; //运算符存入二维数组 比较时用
FILE *fp=fopen("data.in","r"); //只读方式打开data.in
if (fp==NULL) //如果打开失败
{
printf("Error 1\n"); //报错 Error 1
return 1; //return 1
exit(0); //退出程序
}
while (fgets(line,sizeof(line)-1,fp)) //读整行内容
{
printf("输入数据示例%d:\n",j);
sscanf(line,"%[0-9] %s %[0-9]\n",num1,op,num2); //解析字符串为 3部分
printf("%s ",num1);
sel=-1;
for (i=0;i<5;i++) //中间的那部分字符跟而为字符串数组中操作符比较串
{
if (strcmp(oplist[i],op)==0)
{
sel = i;
break;
}
}
printf("%s ",oplist[sel]);
switch (sel) //根据比较得知是什么操作
{
case 0:answer = atoi(num1) *atoi(num2);
break;
case 1:answer = atoi(num1) /atoi(num2);
break;
case 2:answer = atoi(num1) +atoi(num2);
break;
case 3:answer = atoi(num1) -atoi(num2);
break;
case 4:answer = atoi(num1)%atoi(num2);
break;
default:
printf("Error 2\n");
return 2;
}
printf("%s\n",num2);
printf("输出结果示例%d:\n%d\n",j++,answer);
}
}

你还有上面要补充的吗? 比如 减法是否允许出现负数

除法 除数不能为零 还有除出来的数字要取整还是用浮点?

你还有什么要补充的么?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com