把isdigit记成了 isnum 投机取巧了也不知道对不对 还是按着规范来心里有底
如果无输出 检查if 是否写了= 而不是==
enum date {JAN ,FEB ,MAR,
APR,MAY,JUN, JULY,AUG,SEP, OCT,NOV,DEC,MON=1,
TUE,WED
,THU,FRI,
SAT,SUN
,found=1949} ;
如何输入多组数据呢?
经过不懈测试 发现不能输入负数,好了这就告诉我们不能投机
加了if(c==’-’) {isfu=true;continue;} 发现负数也能搞定
#include<stdio.h>
#include<string.h>
#include<ctype.h>
using namespace std;
struct item{
char it[50];
int val;
}buf[1000];
int main(){
char c;
char in[50];
int ins=0;
int size=0;
int value=-2;
int num=0;
bool isfu=false;
while(scanf("%c",&c)!=EOF){
if(c==';') break;
if(isalpha(c)){
in[ins++]=c;
}else{
if(c==' '||c=='\n') continue;
if(in[0]==0) continue;
if(c=='=') continue;
if(c=='-') {
isfu=true;
continue;
}
if(isdigit(c)){
num=num*10+(c-'0');
continue;
}
in[ins]=0;
strcpy(buf[size].it,in);
if(num==0)
value++;
else{
if(isfu==true)
value=(0-num);
else
value=num;
isfu=false;
}
buf[size++].val =value;
ins=0;
num=0;
}
}
for(int i=1;i<size;i++){
printf("%s %d\n",buf[i].it,buf[i].val );
}
return 0;
}