//读入一行或多行由#结尾的c语言程序,识别并输出其中的整常数和实常数
#include <stdioh>
#include <stringh>
typedef struct
{
char store[100];//单存放每个词的内容
int flag;//标志这个单词是标识符还是常量,flag=1表示整常数,flag=2表示浮点数
}node;
int main()
{
char str[1000];
node n[100];//node来存放单词,一段程序有多个单词,所以需要一个单词数组
int j,i=0,m=0;
printf("请输入一行或多行由#结尾的c程序:\n");
while(str[i++]!='#')//while循环应当改为while((str[i++]=getchar())!‘#’);
{
str[i]=getchar();
}//根据下面的推测应当有"srt[i]='\0';"
i=0;
j=0;
while(str[i]!='#')
{
//判断是不是标识符,并保存。
if(str[i]=='_' || str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z')
{ n[m]flag=0;
n[m]store[j++]=str[i++];
for(;(str[i]=='_' || str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z' || str[i]>='0' && str[i]<='9');i++)//i++后面应当有",j++;",另外不知道判断条件是否有问题
{
n[m]store[j]=str[i];
}//下面加上 "n[m]store[j]='\0';"
m++;j=0;
}
//不是标识符,判断是正常数还是实常数并保存。(这里写一个函数,保存整常数和实常数)
if(str[i]>='0' && str[i]<='9')
{ for(;str[i]!=' ';)
{ if(str[i]!='')
n[m]flag=1;
else {n[m]flag=2;}
n[m]store[j++]=str[i++];
n[m]store[j++]='\0';
}
m++;j=0;
}
}
printf("保留字:\n");
for(i=0;i<m;i++)
{
if(n[i]flag==1)
{
j=0;
while(n[i]store[j]!='\0')
{
printf("%c",n[i]store[j++]);
} printf(" ");
}
printf("整常数:\n");
for(i=0;i<m;i++)
{
if(n[i]flag==1)
{
j=0;
while(n[i]store[j]!='\0')
{
printf("%c",n[i]store[j++]);
}
printf(" ");
}
}
printf("实常数:\n");
for(i=0;i<m;i++)
{
if(n[i]flag==2)
{
j=0;
while(n[i]store[j]!='\0')
{
printf("%c",n[i]store[j++]);
}
printf(" ");
}
}
printf("\n");
return 0;
}//这里多了一个大括号
}
Const 语句
声明用于代替文字量的常数。
语法
[Public | Private] Const constname [As type] = expression
Const 语句的语法包含下面部分:
部分 描述
Public 可选的。该关键字用于在模块级别中声明在所有模块中对所有过程都可以使用的常数。在过程中不能使用。
Private 可选的。该关键字用于在模块级声明只能在包含该声明的模块中使用的常数。不能在过程中使用。
constname 必需的。常数的名称;遵循标准的变量命名约定。
type 可选的。常数的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String 或 Variant。所声明的每个变量都要使用一个单独的 As 类型子句。
expression 必需的。文字,其它常数,或由除 Is 之外的任意的算术 *** 作符和逻辑 *** 作符所构成的任意组合。
说明
在缺省情况下常数是私有的。过程中的常数总是私有的;它们的可见性无法改变。在标准模块中,可以用 Public 关键字来改变模块级常数可见性的缺省值。不过,在类模块中,常数只能是私有的,而且用 Public 关键字也不能改变其可见性。
为了在一行中声明若干个常数,可以使用逗号将每个常数赋值分开。用这种方法声明常数时,如果使用了 Public 或 Private 关键字,则该关键字对该行中所有常数都有效。
在给常量赋值的表达式中,不能使用变量,用户自定义的函数,或 Visual Basic 的内部函数(如 Chr)。
注意 常数可以使程序更具可读性,以及易于修改。在程序运行时,常数不会象变量那样无意中被改变。
如果在声明常数时没有显式地使用 As type 子句,则该常数的数据类型是最适合其表达式的数据类型。
在 Sub、Function 或 Property 过程中声明的常数都是该过程的局部常数。在过程外声明的常数,在包含该声明的模块中被定义。在可以使用表达式的地方,都可以使用常数。
方法一:使用e2prom保存常数,无论外置e2prom或片内e2prom均可,保存、读取方便
方法二:使用flash保存常数,读写时序比e2prom麻烦,需要整区擦除再写,不像e2prom可以直接覆盖。
以上就是关于谁帮我改下c程序 //读入一行或多行由#结尾的c语言程序,识别并输出其中的整常数和实常数 #include <stdio.h全部的内容,包括:谁帮我改下c程序 //读入一行或多行由#结尾的c语言程序,识别并输出其中的整常数和实常数 #include <stdio.h、VB 中的 const 是用来声明什么的~~~、如何使PC通过串口通信设置飞思卡尔单片机嵌入式系统程序中的常数,使程序能在不同系列的产品中通用呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)