在线等待,回答的好我会额外奖励分,最高限额+20。
我做判断三角形的程序,我想要的是建立一个数据输入文本,内容是用户随便添加的N组三角形边长如:
1 2 3
4 5 6
3 3 3
然后对每组数据进行判断。我完成了结果的文本输出。
我现在做的程序代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
float a;
float b;
float c;
int k;
void writefile(){
FILE* fp;
int i;
if((fp=fopen("result.txt", "a+"))==NULL) exit(0);
fprintf(fp,"%f %f %f",a,b,c);
switch(k)
{ case 5: fprintf(fp,"\t\t\t边长存在小数\n");break;
case 1: fprintf(fp,"\t\t\t输入越界\n");break;
case 2: fprintf(fp,"\t\t\t等边三角形\n");break;
case 3: fprintf(fp,"\t\t\t等腰三角形\n");break;
case 4: fprintf(fp,"\t\t\t普通三角形\n");break;
case 0: fprintf(fp,"\t\t\t非三角形\n");break;
default:fprintf(fp,"\t\t\tERROR\n");exit(0);}
fclose(fp); }
int main(){
char d='Y';
printf("请输入边长 a,b,c(1~100的整数): \n");
while (d=='Y'){
scanf("%f %f %f",&a,&b,&c);
if(int(a)-a<0||int(b)-b<0||int(c)-c<0)
k=5;
else if(((a>100)||(a<1))||((b>100)||(b<1))||((c>100)||c<1)) k=1;
else if((a+b>c)&&(a+c>b)&&(b+c>a)){
if((a==b)&&(b==c)) k=2;
else if(((a==b)||(b==c)||(a==c))&&(!((a==b)&&(b==c)))) k=3;
else k=4;}
else k=0;
writefile();
printf("是否继续输入?输入Y为继续输入,输入其他任意字符,则程序退出。");
scanf("%s",&d); }
return 0; }
我提问最主要的问题是建立 文本输入数据流 的解决方案,整数判断问题可以暂缓
确实是判断整数有问题,请赐教!
同时把文本输入的也指导下吧,呵呵
您的解释还是不能判断 如:3.0000和3的问题啊?