📄 judge data.c
字号:
#include<stdio.h>
#include<stdlib.h>
bool judge(char s[],int n)
{
int i,j;
for(j=1;j<n+1;j++) /*首先扫描一遍,来确定是不是有小数点*/
if(s[j]=='.')
goto loopa;
goto loopb;
loopa: /*有小数点的情况*/
if(s[0]=='-') /*如果第一个字符是-号*/
{
for(i=1;i<n;i++)
{
if(s[i]=='0'||s[i]=='1'||s[i]=='.'&&i!=n) /*如果是0、1、.则继续扫描*/
continue;
else if(s[i]>='2'&&s[i]<='7') /*如果是2到7中任意一数,则说明一定不是二进制数,跳转*/
goto loopa1;
else if(s[i]>='8'&&s[i]<='9') /*如果是8、9则说明一定不是二进制和八进制数,跳转*/
goto loopa2;
else if(s[i]>='A'&&s[i]<='F') /*如果是A到F中任意字符,则说明一定不是二进制、八进制、十进制,跳转*/
goto loopa3;
else /*如果其他情况则不是数*/
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='R')
printf("文本文件中是个负二进制小数!\n");
else if(s[n]=='O')
printf("文本文件中是个负八进制小数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa1:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='7'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='8'&&s[i]<='9')
goto loopa2;
else if(s[i]>='A'&&s[i]<='F')
goto loopa3;
else
{
printf("文本文件不是数!\n");
return(0);
}
}
if(s[n]=='O')
printf("文本文件中是个负八进制小数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa2:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='A'&&s[i]<='F')
goto loopa3;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa3:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='F'||s[i]=='.'&&i!=n)
continue;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='H')
printf("文本文件中是个负十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
}
if(s[0]=='+'||s[0]>='0'&&s[0]<='9'||s[0]>='A'&&s[0]<='F')
{
if(s[0]>='2'&&s[0]<='7')
{
i=1;
goto loopa4;
}
if(s[0]>='8'&&s[0]<='9')
{
i=1;
goto loopa5;
}
if(s[0]>='A'&&s[0]<='F')
{
i=1;
goto loopa6;
}
for(i=1;i<n;i++)
{
if(s[i]=='0'||s[i]=='1'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='2'&&s[i]<='7')
goto loopa4;
else if(s[i]>='8'&&s[i]<='9')
goto loopa5;
else if(s[i]>='A'&&s[i]<='F')
goto loopa6;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='R')
printf("文本文件中是个正二进制小数!\n");
else if(s[n]=='O')
printf("文本文件中是个正八进制小数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa4:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='7'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='8'&&s[i]<='9')
goto loopa5;
else if(s[i]>='A'&&s[i]<='F')
goto loopa6;
else
{
printf("文本文件不是数!\n");
return(0);
}
}
if(s[n]=='O')
printf("文本文件中是个正八进制小数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa5:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='A'&&s[i]<='F')
goto loopa6;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制小数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopa6:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='F'||s[i]=='.'&&i!=n)
continue;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='H')
printf("文本文件中是个正十六进制小数!\n");
else
printf("文本文件中不是数!\n");
return(1);
}
else
{
printf("文本文件中不是数!\n");
return(0);
}
loopb: /*无小数点*/
if(s[0]=='-')
{
for(i=1;i<n+1;i++)
{
if(s[i]=='0'||s[i]=='1'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='2'&&s[i]<='7')
goto loopb1;
else if(s[i]>='8'&&s[i]<='9')
goto loopb2;
else if(s[i]>='A'&&s[i]<='F')
goto loopb3;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='R')
printf("文本文件中是个负二进制整数!\n");
else if(s[n]=='O')
printf("文本文件中是个负八进制整数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb1:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='7'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='8'&&s[i]<='9')
goto loopb2;
else if(s[i]>='A'&&s[i]<='F')
goto loopb3;
else
{
printf("文本文件不是数!\n");
return(0);
}
}
if(s[n]=='O')
printf("文本文件中是个负八进制整数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb2:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='A'&&s[i]<='F')
goto loopb3;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个负十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个负十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb3:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='F'||s[i]=='.'&&i!=n)
continue;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='H')
printf("文本文件中是个负十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
}
if(s[0]=='+'||s[0]>='0'&&s[0]<='9'||s[0]>='A'&&s[0]<='F')
{
if(s[0]>='2'&&s[0]<='7')
{
i=1;
goto loopb4;
}
if(s[0]>='8'&&s[0]<='9')
{
i=1;
goto loopb5;
}
if(s[0]>='A'&&s[0]<='F')
{
i=1;
goto loopb6;
}
for(i=1;i<n;i++)
{
if(s[i]=='0'||s[i]=='1'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='2'&&s[i]<='7')
goto loopb4;
else if(s[i]>='8'&&s[i]<='9')
goto loopb5;
else if(s[i]>='A'&&s[i]<='F')
goto loopb6;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='R')
printf("文本文件中是个正二进制整数!\n");
else if(s[n]=='O')
printf("文本文件中是个正八进制整数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb4:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='7'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='8'&&s[i]<='9')
goto loopb5;
else if(s[i]>='A'&&s[i]<='F')
goto loopb6;
else
{
printf("文本文件不是数!\n");
return(0);
}
}
if(s[n]=='O')
printf("文本文件中是个正八进制整数!\n");
else if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb5:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]=='.'&&i!=n)
continue;
else if(s[i]>='A'&&s[i]<='F')
goto loopb6;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]>='0'&&s[n]<='9')
printf("文本文件中是个正十进制整数!\n");
else if(s[n]=='H')
printf("文本文件中是个正十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
loopb6:
for(;i<n;i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]>='A'&&s[i]<='F'||s[i]=='.'&&i!=n)
continue;
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
if(s[n]=='H')
printf("文本文件中是个正十六进制整数!\n");
else
printf("文本文件中不是数!\n");
return(1);
}
else
{
printf("文本文件中不是数!\n");
return(0);
}
}
void main()
{
FILE *fp;
int n=0;
char s[50],ch;
if((fp=fopen("string.txt","wt+"))==NULL)
{
printf("Cannot open file !!");
getchar();
exit(1); /*有错误的关闭*/
}
ch=fgetc(fp);
printf("请输入字符:\n");
ch=getchar();
while (ch!='\n')
{
fputc(ch,fp); /*fputc函数有一个返回值,如写入成功则返回写入的字符, 否则返回一个EOF*/
ch=getchar();
n++;
}
rewind(fp); /*使文件的位置指针重新返回文件的开头*/
fgets(s,n+1,fp);
fclose(fp);
printf("%s",s);
printf("\n");
n=n-1;
judge(s,n);
}
/*注:程序中二进制以R结尾;八进制以O结尾;十进制以0-9结尾;十六进制以H结尾*/
/*此程序可以判别数的正负、进制以及小数点*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -