JAVA的问题,超级简单,你随便编就行
程序编写的错误有3类:语法错,语义错,逻辑错请分别举例,随便举就行~~~~~~~~~~有答案就给分~~~~~~~
程序编写的错误有3类:语法错,语义错,逻辑错请分别举例,随便举就行~~~~~~~~~~有答案就给分~~~~~~~
答案:#include<stdio.h>
#include<malloc.h>
#define size 100
typedef char E;
typedef struct{
int top;
E *base;
int Ssize;
}Stack;
void Init(Stack *S){
S->base=(E *)malloc(size*sizeof(E));
S->top=0;
S->Ssize=size;
}int Len(Stack S){
return(S.top);
}int Top(Stack S,E *e){
if(!S.top)return(0);
*e=S.base[S.top-1];
return(1);
}int Push(Stack *S,E e){
if(S->top>=S->Ssize){
S->base=(E *)realloc(S->base,(S->Ssize+1)*sizeof(E));
if(!S->base)return(0);
S->Ssize++;
}S->base[S->top++]=e;
return(1);
}int Pop(Stack *S,E *e){
if(!S->top)return(0);
*e=S->base[--S->top];
return(1);
}int isEmpty(Stack S){
if(!S.top)return(1);return(0);
}void main(){
FILE *in;
Stack S;
long l=1,k=0;
char i[100],ch;
E t;
Init(&S);
printf("文件名:");
scanf("%s",i);
in=fopen(i,"r");
for(;;){
ch=fgetc(in);
if(ch==-1)break;
else if(ch=='\\'){ch=fgetc(in);continue;}
else if(ch!='\''||ch!='\"'&&!Top(S,&t)&&t=='\''||t=='\"')continue;
else if(ch=='('||ch=='['||ch=='{')Push(&S,ch);
else if(ch==')'){
if(!Top(S,&t)){k++;printf("第%ld行多\')\'\n");}
else if(t!='('&&t!='\''&&t!='\"'){k++;printf("第%ld行\')\'用法错误\n",l);}
else if(t=='(')Pop(&S,&t);
}else if(ch==']'){
if(!Top(S,&t)){k++;printf("第%ld行多\']\'\n");}
else if(t!='['&&t!='\''&&t!='\"'){k++;printf("第%ld行\']\'用法错误\n",l);}
else if(t=='[')Pop(&S,&t);
}else if(ch=='}'){
if(!Top(S,&t)){k++;printf("第%ld行多\'}\'\n");}
else if(t!='{'&&t!='\''&&t!='\"'){k++;printf("第%ld行\'}\'用法错误\n",l);}
else if(t=='{')Pop(&S,&t);
}else if(ch=='\''||ch=='\"'){
if(!Top(S,&t)||t!=ch)Push(&S,ch);
else Pop(&S,&t);
}else if(ch=='\n')l++;
}if(!isEmpty(S)){k++;printf("第%ld行发现未知错误\n",l);}
if(k)printf("共%ld个错误\n",k);
else printf("无错误\n");
fclose(in);
}有什么不明白的地方加我QQ121574379
语法错(分号写成逗号):for(int i=0,i<10,i++);
语义错(本来是要a大于b就交换的,结果却写成这样):if(a > b) a^=b; b^=a; a^=b;
逻辑错(逻辑错了,0不是正数)if(a>=0) System.out.print("a是正数");
1语法错违反语法规范的错误称为语法错, 这类错误通常是在编译的时候发现的,所以又可以称为是编译错误 如:
语句末尾缺少分号
字符串相乖 等等
2语义错
语义错误是指程序在语法上正确,但是在语义上存在错误
如:
除数为0错
给变量赋予超出其范围的值等
3逻辑错
如果程序通过编译,可以运行,但是运行的结果和你想象的不一样
语法错:int i 少写了分号 正确为 int i;
语义错: int i=1;int a=0; int x=i/a; 除数为0;
逻辑错: 程序无错,但是逻辑上错误,比如:int i=0;int a=1 if(i<a){ System.out.println("a比i小");}
正确是:a比i大