求C语言高手解决,程序有一处错误始终找不出来。下面是程序代码。回答好了追加100分啊!在线等、很急!

#include<stdio.h>
#include<conio.h>
#include<dos.h>
#define FIRST_BOARD_HOOK_ADDRESS 0x260
#define OFFHOOK_QUEUE_SIZE 16
#define ONHOOK_QUEUE_SIZE 16
#define SUM_BOARD_3
int i;
unsigned char UM_offhook;
unsigned char Lm[1];
unsigned char Subs_Bit[8];
unsigned char OffHook_Queue[OFFHOOK_QUEUE_SIZE];
unsigned char OffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag;
unsigned char OnHook_Queue[ONHOOK_QUEUE_SIZE];
unsigned char OnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag;
unsigned char UM_OffHook_1,UM_OnHook_1;
void ScanFirstBoard(void);
main()
OffHook_Queue[0]=0;
OffHook_Spos=0;
OffHook_Rpos=0;
OffHook_Queue_Flag=0;
OnHook_Queue[0]=0;
OnHook_Spos=0;
OnHook_Rpos=0;
OnHook_Queue_Flag=0;
Lm[0]=0;
Subs_Bit[0]=0x01;
Subs_Bit[1]=0x02;
Subs_Bit[2]=0x04;
Subs_Bit[3]=0x08;
Subs_Bit[4]=0x10;
Subs_Bit[5]=0x20;
Subs_Bit[6]=0x40;
Subs_Bit[7]=0x80;
UM_OffHook_1=0;
UM_OnHook_1=0;
Outportb(0x369,0);
clrscr();
printf("Please offhook,check offhooksubscriber number.\n");
printf("Then onhook,checkonhooksubscriber number.\n");
for(;;)
{
If(kbhir())
Break;
Delay(20);
ScanFirstBoard();
}
Return0;
}
Void ScanFirstBoard()
{
unsigned char Scn;
unsigned char NewScan_OffHook;
unsigned char NewScan_OnHook;
unsigned char OldLm;
unsigned char CurrentBoardNum;
unsigned int JudgeWord;
int i;
CurrentBoardNum=0x01;
Scn=inportb(FIRSR_BOARD_HOOK-ADDRESS)&0xff;
JudgeWord=UM_OffHook_1 & Scn;
i=7;
while(JudgeWord!=0)
{
While((JudgeWord&Subs_Bir[i])!=Subs_Bit[i])
i--;
if(((OffHook_Spos+1)==OffHook_Rpos)||((OffHook_Spos==OFFHOOK_QUEUE_SIZE)&&(OffHook_Spos==0)))
{
Printf("OffHook_Queue is Full. Not Insert. \ n");
}
Else
{
OffHook_Queue[OffHook_Spos]=i;
printf("OffHook_Queue: BoardNum:%d,OffHook_Sub:%d\n",CurrentBoardNum,i+1);
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
printf("OffHook_Queue : %x\n",OffHook_Queue[OffHook_Spos]);
NewScan_OffHook=Scn;
OldLm=Lm[0];
UM_OffHook_1=NewScan_OffHook&(~OldLm);
NewScan_OnHook=Scn;
JudgeWord=UM_OnHook_ 1 &(~NewScan_OnHook);
i=7;
while(JudgeWord ! =0)
{
While((JudgeWord&Subs_Bit[i])!=Subs_Bit[i]
i--;
if(((OnHook_Spos+1)==OnHook_Rpos)||((OnHook_Spos==ONHOOK_QUEUE_SIZE)&&(OnHook_Rpos==0)))
{
Printf("OnHook_Queue is Full . Not Insert. \n");
}
else
{
OnHook_Queue[OnHook_Spos]=i;
printf("OnHook_Queue: %d,OnHook_Sub:%d \n");
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
NewScan_OnHook=Scn;
OldLm=Lm[0];
UM_OnHook_1=(~NesScan_OnHook)&OldLm;
Lm[0]=Scn;
}
错误是
--------------------Configuration: 008 - Win32 Debug--------------------
Compiling...
008.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\008\008.cpp(19) : error C2146: syntax error : missing ';' before identifier 'OffHook_Queue'
C:\Program Files\Microsoft Visual Studio\MyProjects\008\008.cpp(19) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

008.exe - 1 error(s), 0 warning(s)

错误原因主要有:1、C语言是大小写敏感的,注意一些函数和关键字的大小写,如:If和if的区别2、变量的名称错误3、调用的库函数没有头文件,如:inportb/outportb等。
下面的程序可以编译,但是连接时出现库函数没有说明的问题,请添加inportb/outportb对应的头文件!
#include <stdio.h>
#include <conio.h>
#include <dos.h>
# include <stdlib.h>
#define FIRST_BOARD_HOOK_ADDRESS 0x260
#define OFFHOOK_QUEUE_SIZE 16
#define ONHOOK_QUEUE_SIZE 16
#define SUM_BOARD_3
int i;
unsigned char UM_offhook;
unsigned char Lm[1];
unsigned char Subs_Bit[8];
unsigned char OffHook_Queue[OFFHOOK_QUEUE_SIZE];
unsigned char OffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag;
unsigned char OnHook_Queue[ONHOOK_QUEUE_SIZE];
unsigned char OnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag;
unsigned char UM_OffHook_1,UM_OnHook_1;
void ScanFirstBoard(void);
main()
{
OffHook_Queue[0]=0;
OffHook_Spos=0;
OffHook_Rpos=0;
OffHook_Queue_Flag=0;
OnHook_Queue[0]=0;
OnHook_Spos=0;
OnHook_Rpos=0;
OnHook_Queue_Flag=0;
Lm[0]=0;
Subs_Bit[0]=0x01;
Subs_Bit[1]=0x02;
Subs_Bit[2]=0x04;
Subs_Bit[3]=0x08;
Subs_Bit[4]=0x10;
Subs_Bit[5]=0x20;
Subs_Bit[6]=0x40;
Subs_Bit[7]=0x80;
UM_OffHook_1=0;
UM_OnHook_1=0;
outportb(0x369,0);
clrscr();
printf("Please offhook,check offhooksubscriber number.\n");
printf("Then onhook,checkonhooksubscriber number.\n");
for(;;)
{
if(kbhit())
break;
delay(20);
ScanFirstBoard();
}
return 0;
}
void ScanFirstBoard()
{
unsigned char Scn;
unsigned char NewScan_OffHook;
unsigned char NewScan_OnHook;
unsigned char OldLm;
unsigned char CurrentBoardNum;
unsigned int JudgeWord;
int i;
CurrentBoardNum=0x01;
Scn=inportb(FIRST_BOARD_HOOK_ADDRESS)&0xff;
JudgeWord=UM_OffHook_1 & Scn;
i=7;
while(JudgeWord!=0)
{
while((JudgeWord&Subs_Bit[i])!=Subs_Bit[i])
i--;
if(((OffHook_Spos+1)==OffHook_Rpos)||((OffHook_Spos==OFFHOOK_QUEUE_SIZE)&&(OffHook_Spos==0)))
{
printf("OffHook_Queue is Full. Not Insert. \ n");
}
else
{
OffHook_Queue[OffHook_Spos]=i;
printf("OffHook_Queue: BoardNum:%d,OffHook_Sub:%d\n",CurrentBoardNum,i+1);
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
printf("OffHook_Queue : %x\n",OffHook_Queue[OffHook_Spos]);
NewScan_OffHook=Scn;
OldLm=Lm[0];
UM_OffHook_1=NewScan_OffHook&(~OldLm);
NewScan_OnHook=Scn;
JudgeWord=UM_OnHook_1&(~NewScan_OnHook);
i=7;
while(JudgeWord!=0)
{
while((JudgeWord&Subs_Bit[i])!=Subs_Bit[i])
i--;
if(((OnHook_Spos+1)==OnHook_Rpos)||((OnHook_Spos==ONHOOK_QUEUE_SIZE)&&(OnHook_Rpos==0)))
{
printf("OnHook_Queue is Full . Not Insert. \n");
}
else
{
OnHook_Queue[OnHook_Spos]=i;
printf("OnHook_Queue: %d,OnHook_Sub:%d \n");
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
NewScan_OnHook=Scn;
OldLm=Lm[0];
UM_OnHook_1=(~NewScan_OnHook)&OldLm;
Lm[0]=Scn;
}追问

还是不行、自己太菜、帮忙补改一下、

追答

32位版本的C/C++编译器大多数都没有inportb/outportb函数了,这两个函数在16位的DOS编译系统如TC、MSC中存在,如果使用tc一类的编译环境,应该没有问题;
如果使用32位的编译环境如bcb、vc等,需要自己用汇编定义这两个函数或者使用第三方的函数库。

参考:http://www.cppfans.com/articles/system/portrw_winio.asp

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-27
好多好多的问题啊,改了十几处,但是有3处改不了了,缺函数实现:
outportb()
kbhir();
inportb()

具体看注释吧:
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>//这里!这里!这里!这里!这里!这里!
#include<windows.h>//这里!这里!这里!这里!这里!这里!
#define FIRST_BOARD_HOOK_ADDRESS 0x260
#define OFFHOOK_QUEUE_SIZE 16
#define ONHOOK_QUEUE_SIZE 16
#define SUM_BOARD_3
int i;
unsigned char UM_offhook;
unsigned char Lm[1];
unsigned char Subs_Bit[8];
unsigned char OffHook_Queue[OFFHOOK_QUEUE_SIZE];
unsigned char OffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag;
unsigned char OnHook_Queue[ONHOOK_QUEUE_SIZE];
unsigned char OnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag;
unsigned char UM_OffHook_1,UM_OnHook_1;
void ScanFirstBoard(void);
main(){ //这里!这里!这里!这里!这里!这里!
OffHook_Queue[0]=0;
OffHook_Spos=0;
OffHook_Rpos=0;
OffHook_Queue_Flag=0;
OnHook_Queue[0]=0;
OnHook_Spos=0;
OnHook_Rpos=0;
OnHook_Queue_Flag=0;
Lm[0]=0;
Subs_Bit[0]=0x01;
Subs_Bit[1]=0x02;
Subs_Bit[2]=0x04;
Subs_Bit[3]=0x08;
Subs_Bit[4]=0x10;
Subs_Bit[5]=0x20;
Subs_Bit[6]=0x40;
Subs_Bit[7]=0x80;
UM_OffHook_1=0;
UM_OnHook_1=0;
outportb(0x369,0);//这里!这里!这里!这里!这里!这里!
system("cls");//这里!这里!这里!这里!这里!这里!
printf("Please offhook,check offhooksubscriber number.\n");
printf("Then onhook,checkonhooksubscriber number.\n");
for(;;)
{
if(kbhir())//这里!这里!这里!这里!这里!这里!
break;//这里!这里!这里!这里!这里!这里!
Sleep(20);//这里!这里!这里!这里!这里!这里!
ScanFirstBoard();
}
return 0;//这里!这里!这里!这里!这里!这里!
}
void ScanFirstBoard()//这里!这里!这里!这里!这里!这里!
{
unsigned char Scn;
unsigned char NewScan_OffHook;
unsigned char NewScan_OnHook;
unsigned char OldLm;
unsigned char CurrentBoardNum;
unsigned int JudgeWord;
int i;
CurrentBoardNum=0x01;
Scn=inportb(FIRST_BOARD_HOOK_ADDRESS)&0xff;//这里!这里!这里!这里!这里!这里!
JudgeWord=UM_OffHook_1 & Scn;
i=7;
while(JudgeWord!=0)
{
while((JudgeWord&Subs_Bit[i])!=Subs_Bit[i])//这里!这里!这里!这里!这里!这里!
i--;
if(((OffHook_Spos+1)==OffHook_Rpos)||((OffHook_Spos==OFFHOOK_QUEUE_SIZE)&&(OffHook_Spos==0)))
{
printf("OffHook_Queue is Full. Not Insert. \ n");//这里!这里!这里!这里!这里!这里!
}
else//这里!这里!这里!这里!这里!这里!
{
OffHook_Queue[OffHook_Spos]=i;
printf("OffHook_Queue: BoardNum:%d,OffHook_Sub:%d\n",CurrentBoardNum,i+1);
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
printf("OffHook_Queue : %x\n",OffHook_Queue[OffHook_Spos]);
NewScan_OffHook=Scn;
OldLm=Lm[0];
UM_OffHook_1=NewScan_OffHook&(~OldLm);
NewScan_OnHook=Scn;
JudgeWord=UM_OnHook_1 &(~NewScan_OnHook);//这里!这里!这里!这里!这里!这里!
i=7;
while(JudgeWord !=0)//这里!这里!这里!这里!这里!这里!
{
while((JudgeWord&Subs_Bit[i])!=Subs_Bit[i])//这里!这里!这里!这里!这里!这里!
i--;
if(((OnHook_Spos+1)==OnHook_Rpos)||((OnHook_Spos==ONHOOK_QUEUE_SIZE)&&(OnHook_Rpos==0)))
{
printf("OnHook_Queue is Full . Not Insert. \n");//这里!这里!这里!这里!这里!这里!
}
else
{
OnHook_Queue[OnHook_Spos]=i;
printf("OnHook_Queue: %d,OnHook_Sub:%d \n");
}
JudgeWord=JudgeWord&(~Subs_Bit[i]);
i--;
}
NewScan_OnHook=Scn;
OldLm=Lm[0];
UM_OnHook_1=(~NewScan_OnHook)&OldLm;//这里!这里!这里!这里!这里!这里!
Lm[0]=Scn;
}追问

大虾、我照你的改了、发现确实许多错误、求求大虾再试着改改!很急的、谢谢大虾!谢谢大虾!

追答

你按照我的修改,应该就剩3个Error了,这个主要是缺少库函数导致,你用TC试一试,应该能行

追问

二、课程设计的主要内容
设计题目:局内正常通话的呼叫处理程序设计
设计内容:
(1)分析模拟用户线信令处理程序的执行过程。
(2)分析呼叫控制进程在局内正常呼叫时的SDL图。
(3)使用C语言设计实现用户线扫描程序.
那大虾有关于这方面的C语言程序吗?我是学通信的,关于现代交换原理这门课的课程设计、

第2个回答  2011-12-27
在008.cpp的行2146,OffHook_Queue之前少了一个分号;
第3个回答  2011-12-27
main() 后面少个{追问

还是不对啊

第4个回答  2011-12-27
main后面没括号{

求C语言高手解决,程序有一处错误始终找不出来。下面是程序代码。回答好...
错误原因主要有:1、C语言是大小写敏感的,注意一些函数和关键字的大小写,如:If和if的区别2、变量的名称错误3、调用的库函数没有头文件,如:inportb\/outportb等。下面的程序可以编译,但是连接时出现库函数没有说明的问题,请添加inportb\/outportb对应的头文件!include <stdio.h> include <conio.h>...

c语言函数调用问题 (回答好追加100分)
puts("");\/* 本部分代码功能建议:调用用户自定义函数找出每一行上的最大值的列下标并按示例格式要求显示 *\/ \/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) *\/ fun(juZhen,m,n);\/* User Code End(考生添加代码结束。注意:空行...

c语言有一个错误 我找不出来?
看来程序并没有问题。其实程序可以大大简化(如图),因为else的作用,所以简化掉的条件其实已经满足,所以没必要再写了。只是你的程序文件名中含有多个空格,强烈建议在文件名中不要包含空格。请直接删除空格(或改为下划线if_else...),更改文件名后再重新编译、运行程序。

c语言高手,看看我的程序有什么错误,编译不出来!
1, float main() ---> int main()2, #include "stdfx.h" 去掉 3, scanf("%f\\n",&a[i]);---> scanf("%f",&a[i]);

c语言程序纠错,谢啦!!程序见补充。显示没有错误,但是执行了一步之后就...
scanf ("%d", &a[i][j])这里少了一个& 另外除副对角线等的条件应该是这样的吧:if (i+j!=n-1&&i!=n-1&&j!=n-1)

跪求C语言高手,帮忙分析哈这个程序为什么调试没错误,一运行就有一个错 ...
把你的错误,截个图发上来。才好分析。大概看了一下,你new一个对象,后面带括号干啥,你先把()去掉在编译下看看。编译只是语法检查通过了,但是语义检查不一定就检查的出来。

我是c语言菜鸟,跪求高手告诉下面这个程序的问题,总是无法运行 #include<...
include<stdio.h> void main() {int a,b;} 这样写就对了,很简单的,最后大括号别忘了,还有每个句子都是以分号结束。希望对你有所帮助~

c语言入门求助。编译的时候无法启动程序,找不到指定文件,怎么解决呢...
操作方法不对造成的原因。解决方法如下:1、应该先建项目>空白项目。2、头文件鼠标右键添加新建项。3、选择c++文件.cpp 4、新建完成。5、运行过后的exe通过点击正在运行后的项目找到“在文件资源管理器中打开文件夹”就可以看到生成的exe文件了。

求C语言程序高手啊~~ C语言程序不知道哪里错了 可以调试成功但是运行不...
scanf("%d",a[i]);这里没取地址 改为:scanf("%d",&a[i]);还有这里a[i+1]=a[i];改成: a[i+1]=t;

C语言问题求代码高手来解决啊
printf("%5d %s %c %5d %5.2f\\n",p->id,p->name,p->gender,p->age,p->score);p=p->next;} } void search(int id){ Student *p=s;while(p!=0){ if((p->id)==id) {printf("%5d %s %c %5d %5.2f\\n",p->id,p->name,p->gender,p->age,p->score...

相似回答