题目:输入两个C语言语句,第一句为正常的C语言变量定义语句,符合C语言语法要求,变量间可以有多个空格,包含数组,指针定义等。第二句为变量运算语句,要求输出第二个C语言语句中未定义的变量。
如
int x12,y=1,num_stu=89,a[30],*p;
Sum = num+x12*y;
输出
Sum num
我这里没有考虑结构体情况,和int x12; float y=1231;这样的情况
对数组情况进行了考虑。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 200
#define WORDSIZE 20
int GetKeyWord(char* variable_arr, int len1, char keyword[MAXSIZE][WORDSIZE]); //存储第一行中的变量名
bool IsValidWord(char c); //字符C是否能作为变量
int GetCalculateWord(char* calculate_arr, int len2, char calculateword[MAXSIZE][WORDSIZE]);//存储第二行中的计算变量
void FindUndefinedWord(char keyword[MAXSIZE][WORDSIZE], int size1, char calculateword[MAXSIZE][WORDSIZE], int size2); //输出未定义变量
int HaveFrame(char calculateword[WORDSIZE]); //变量中含有[]的,即为数组变量,返回数组变量的下标值,如a[5]返回5
bool JudgeArr(char calculateword[WORDSIZE], char keyword[WORDSIZE]); //判读两个数组变量[]前的数组变量名自否相同,如 a[5]与arr[6]比较a与arr
bool IsSameStr(char calculateword[WORDSIZE], char keyword[WORDSIZE]); //判断两个字符串是否相同
int main(){
char variable_arr[MAXSIZE];
char calculate_arr[MAXSIZE];
int len1 = 0, len2 = 0;
char ch;
ch = getchar();
while(ch != '\n'){
variable_arr[len1++] = ch;
ch = getchar();
}
variable_arr[len1] = '\0';
ch = getchar();