当前位置:首页 » 编程语言 » 标记的方式c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

标记的方式c语言

发布时间: 2022-05-15 23:24:41

c语言中的EOF标记怎么用

EOF一般作为文件的结尾标记。其值是-1,也就是说在<stdio.h>如下定义#define
EOF
-1
-1对应着ctrl+Z,在有些系统也对应着f6键。
文件的结尾都有EOF,因此可以用如下程序显示一个文件的内容:
char
c;
FILE
*fp;
fp
=
fopen("filename.txt",
"rt");
while((c=fgetc(fp)!=EOF)putchar(c);
也可以如下写:
while((c=fgetc(fp)!=-1)putchar(c);
.

② C语言中注释的方式

较早时候只支持/* */方式。

C99标准开始已经支持//方式注释了,这种注释没有问题。

另外,你说的全选加注释,应该是IDE提供的快捷方式,比如说在eclipse中选中代码
后,使用ctrl+/即可注释或者解除注释。

③ 在C语言中”*”号作为一种标记时表示

1 表示乘法, 要有左右值
2 在定义或声明时,表示指针变量,如 int *p ; //p为指向int型的指针
3 取值, 如 int temp = *p; //表示将地址为p的值赋给temp

④ 如何用标记法删除c语言程序中信息

#include <stdio.h>

int state;

int c1,c2;

void change_state(int c);

int main(int argc, const char * argv[]) {
int c;
state = 0;
c1 = 0;
c2 = 0;
while ((c=getchar())!=EOF) {
c1 = c2;
c2 = c;
change_state(c);
}
if (/* DISABLES CODE */ (0)==1) {
printf(“just test://abcd”);
printf(“just test:/*hello*/”);
}
}

/*状态机函数*/
void change_state(int c){
if (state==0) {//普通状态
if (c==’/’) {
state = 1;
}else if (c=='”‘){
state = 5;
putchar(c);
}else if (c==’\”){
state = 6;
putchar(c);
}
else{
state = 0;
putchar(c);
}
}else if (state==1) {//检测到1个’/’
if (c==’/’) {
state = 2;
}else if (c==’*’){
state = 3;
}else{
state = 0;
putchar(c1);
putchar(c);
}
}else if (state==2) {// “//”注释状态
if (c==’\n’) {
state = 0;
putchar(c);
}else{
state = 2;
}
}else if (state==3) {// “/*”注释状态
if (c==’*’) {
state = 4;
}else{
state = 3;
}
}else if (state==4) {
if (c==’/’) {
state = 0;
}else{
state = 3;
}
}else if (state==5){//在”字符串里
if (c=='”‘) {
state = 0;
putchar(c);
}else if(c==’\\’){
state = 7;
putchar(c);
}else{
state = 5;
putchar(c);
}
}else if (state==6){//在’字符里
if (c==’\”) {
state = 0;
putchar(c);
}else if(c==’\\’){
state = 8;
putchar(c);
}else{
state = 6;
putchar(c);
}
}else if (state==7){//在”字符串里的”\”
state = 5;
putchar(c);
}else if (state==8){//在’字符串里的”\”
state = 6;
putchar(c);
}
}

以本段代码作为输入,结果如下:

#include <stdio.h>

int state;

int c1,c2;

void change_state(int c);

int main(int argc, const char * argv[]) {
int c;
state = 0;
c1 = 0;
c2 = 0;
while ((c=getchar())!=EOF) {
c1 = c2;
c2 = c;
change_state(c);
}
if ( (0)==1) {
printf(“just test://abcd”);
printf(“just test:/*hello*/”);
}
}
void change_state(int c){
if (state==0) {
if (c==’/’) {
state = 1;
}else if (c=='”‘){
state = 5;
putchar(c);
}else if (c==’\”){
state = 6;
putchar(c);
}
else{
state = 0;
putchar(c);
}
}else if (state==1) {
if (c==’/’) {
state = 2;
}else if (c==’*’){
state = 3;
}else{
state = 0;
putchar(c1);
putchar(c);
}
}else if (state==2) {
if (c==’\n’) {
state = 0;
putchar(c);
}else{
state = 2;
}
}else if (state==3) {
if (c==’*’) {
state = 4;
}else{
state = 3;
}
}else if (state==4) {
if (c==’/’) {
state = 0;
}else{
state = 3;
}
}else if (state==5){
if (c=='”‘) {
state = 0;
putchar(c);
}else if(c==’\\’){
state = 7;
putchar(c);
}else{
state = 5;
putchar(c);
}
}else if (state==6){
if (c==’\”) {
state = 0;
putchar(c);
}else if(c==’\\’){
state = 8;
putchar(c);
}else{
state = 6;
putchar(c);
}
}else if (state==7){
state = 5;
putchar(c);
}else if (state==8){
state = 6;
putchar(c);
}

perfect!

⑤ 什么是c语言中的标识符

在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。

在使用标识符时还必须注意以下几点:

(1)标准C不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。

(2)在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。

(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便阅读理解,作到“顾名思义”。

⑥ c语言中做标记的技巧

#include<stdio.h>
int main()
{
int list[100],n,i,j,from=0,to=0,flag=0,count=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&list[i]);
}

for(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
if(list[j]==list[j+1])
count++;
else break;
if(count>flag)
{
from=i;to=j;
i=j+1;
flag=count;
count=0;
}
}

if(flag==0) printf("No equal number list.\n");
else printf("The longest equal number list is from %d to %d.\n",from,to);
getch();
}

⑦ 怎么样用c语言编写文法压缩用加标记法实现

基本方法是
从识别符号向终结符过度时,从含有识别符号的规则入手,寻找所有规则中左部为识别符号的规则,然后搜索这些找到的规则的右部是否含有非终结符,若含有则从所有规则中找出左部为这个非终结符的规则,并标记,当搜完第一次后,循环查找具有标记的规则,按照上面的方式继续标记剩下的规则,直到没有新的规则被标记 退出 删除未标记的规则体
反方向同理……
说什么都不如看代码 下面是我写文法压缩时候写的压缩函数
void Mylist::condense(char spot,CString gettofun)
{
//condense with spot way
addsignal(spot,1);
for(int i=1;i<7;i++)
{
for(int j=0;j<count;j++)
{
if(readsignal(j)==i)
{
int rightlength=findright(j).GetLength();
for(int k=0;k<rightlength;k++)
{
if(gettofun.Find(findright(j).GetAt(k))!=-1)
{
addsignal(findright(j).GetAt(k),i+1);
}
}
}
}
}
// unsigned the wordrule like s::=s*
bool caiding=false;
for(int j=0;j<count;j++)
{
int rightlength=findright(j).GetLength();
for(int k=0;k<rightlength;k++)
{
if(findleft(j)!=findright(j).GetAt(k))
caiding=true;
}
if(caiding==false)
{signal(j,0);}
}
//format every node have been signed
for(int m=0;m<count;m++)
{
if(readsignal(m)!=0)
{
signal(m,1);
}
}
//decide which to begin
for(m=0;m<count;m++)
{
if((gettofun.FindOneOf(findright(m))==-1)&&(readsignal(m)!=0))
{
signal(m,2);
}
}
//right way condense
int q=2;
for(int worry=0;worry<10;worry++){
for(int j1=0;j1<count;j1++)
{
if(readsignal(j1)==q)
{
for(int i1=0;i1<count;i1++){
//int right=findright(i1).GetLength();
for(int i2=0;i2<findright(i1).GetLength();i2++)
{
if(findleft(j1)==findright(i1).GetAt(i2))
{
signal(i1,q);
}
}

}
}
}//^
}
}
这里说明一下
其中的findright(int i) 函数的功能是从第i条文法规则中找到它的右部 返回值为CString类型
signal(int i,int j)函数 是在第i条规则中找到它的标志位(即加标记)并把j放入这个标志位 以示本条规则已经做好了标记
addsignal(char i,int j) 则是找到左部名为i的规则,并标记他的标志位为j addsignalright同理
本函数传递进来的有两个参数 其中spot是识别符号Z,CString类型的是终结符号队列,包含所有已知的终结符号
在说明一点 wordrule是一个文法体class的对象 它是一个链表 每一个结点(node)为一个规则:
class node
{
public:
char leftwords;
int signal;
CString rightwords;
node *next;
public:
node(char,CString);
virtual ~node();
};
希望对你有所帮助

⑧ c语言如何在整数数组中做记号

这个没有,c++标准库中vector可以使用迭代器vector的end()函数返回指向vector尾部迭代器的下一位置。
如果你想实现这一功能,可以自定义一个index,或者指针ptr,来指向当前数组最后一个元素的下一位置。当然您需要自己维护这个变量。插入,删除(模拟的删除咯)等操作都需要修改这一变量。

⑨ C语言关于标记的问题

地址是针对内存区域的,只有变量、指针、还有函数在内存当中有一个确定的入口地址,C语言的语句在内存中没有地址。不过你可以把“L”中的语句写成“L()”函数的形式,再用函数指针的方式获得L函数的地址。