當前位置:首頁 » 編程語言 » 標記的方式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函數的地址。