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

作者&投稿:赤珠 (联系方式在网页底部的电邮联系)
经典c语言程序100例第一题编译出错~

# include
int main()
{
int i,j,k;
printf("
");
for(i=1;i<5;i++)
for(j=1;j<5;j++)
{
if(i==j)continue;
for(k=1;k<5;k++)
{
if(k==i||k==j)
continue;
printf("%d,%d,%d",i,j,k);
}
}
return 0;
}

应该是没有找到memset的函数声明,这是一个c函数,在这个头文件中有定义,在程序中加上这个头文件试试。

错误原因主要有: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;
}

好多好多的问题啊,改了十几处,但是有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;
}

在008.cpp的行2146,OffHook_Queue之前少了一个分号;

main() 后面少个{

main后面没括号{

相关视频

C语言菜鸟求高手解答...
第一个问题只能说是一个判定条件,不知道你要的结果是什么。。2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个 main(){ int m=5;if(m++>5) printf("%d\\n",m

请用C语言程序编程,高手请帮忙!有重金赏!请看下面题目:
这个阶梯有119步,程序如下:main(){ int x=7;while (x%2!=1 || x%3!=2 || x%4!=3 || x%5!=4 || x%6!=5) x+=7;printf("%d\\n",x);} 程序根据7步刚好走完这一信息,从7开始测试是否满足要求,不满足就加7再测试,知道满足为止。FOR...

c语言求大神帮忙解决编程问题
if (i%7==0) 能被7整除。用 n 计数,满5个则换行。include<stdio.h> int main(){ int i,n=0;for (i=100;i<=1000;i++){ if (i%7==0) {printf("%d ",i); n++;}; \/\/输出和计数 if (n==5){printf("\\n");n=0;}; \/\/换行控制 };return 0;} ...

求C语言高手...解答
程序总体没多少问题,只是估计运行不起来,其实如果你仔细检查的话应该能找到问题的 下面是我在你的基础上面改的,include <stdio.h>\/\/调用系统头文件应该是这样,带双引号的一般是自己定义的头文件 int main(){ int itime,ipay,iday;float ftexes;printf("please input your working hours and a ...

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...