c语言syntax error : missing ';' before 'type' 高手指导啊

#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#define randomize() srand((unsigned)time(NULL)) //定义一个宏用来产生随机数的
#define N 10 //调动的次数
#define RealPage 4

struct Page
{
int pn; //虚页号
int pfn; //实页号
int times;
//struct Page *next; //指向下一个页面
};
int count,k,i,j,flag,call[N];
struct Page MemPage[RealPage];
void output()
{
printf("\n\n-------------内存页面情况为-------------------\n");
printf("调度顺序为:");
int p ;
for(p=0;p<N;p++)
printf("%d ",call[p]);
printf("\n");
for(k=0;k<RealPage;k++)
printf("序号:%d 虚页号:%d 实页号:%d Time:%d count:%d\n",k,MemPage[k].pn,MemPage[k].pfn,MemPage[k].times,count);

}
int main()
{
count = 0; //替换计数器
int init_t;
for(init_t=0;init_t<RealPage;init_t++)
//MemPage[init_t].pfn = -1;
randomize();
printf("调度顺序为:");
for(i=0;i<N;i++)
{
call[i] = rand()%10;
printf("%d ",call[i]);
}
//开始调度了
for(i=0;i<N;i++)
{
flag = 1;
int m;
for(m=0;m<RealPage && MemPage[m].pn!=call[i];m++)
{
if(MemPage[m].pfn == 0) {
MemPage[m].pfn = 3478 - m*79;
MemPage[m].times = 1;
MemPage[m].pn = call[i];
count ++;
break;
}
}
//output();
for(j=0;j<4 && flag!=0;j++)
{

if(call[i] == MemPage[j].pn)
{
flag = 0;
break;
}
//在实页中找不到此页,用LRU算法进行替换
else
{
if(j == RealPage-1) //表示全都比较一遍了,还是没找到相同的页,进行替换
{
int t1,t2,temp;
for(t1=0;t1<RealPage;t1++) //算出在内存中时间最长者,将其替出来
{
for(t2=t1+1;t2<RealPage;t2++)
if(MemPage[t1].times > MemPage[t2].times)
temp = t1;
else
temp = t2;
}
MemPage[temp].pn = call[i]; //替换
MemPage[temp].times = 1; //时间重新开始计时
count ++;
}
}
}
int r;
for(r=0;r<RealPage;r++)
MemPage[r].times ++;
int n = 755599998;
while(n--);
output();

}
printf("\n 缺页率为:%f\n\n",(float)count/10);
return 0;
}
D:\C++\页面调度模拟\最终\程序.c(21) : error C2143: syntax error : missing ';' before 'type'
D:\C++\页面调度模拟\最终\程序.c(22) : error C2065: 'p' : undeclared identifier
D:\C++\页面调度模拟\最终\程序.c(22) : warning C4552: '<' : operator has no effect; expected operator with side-effect
D:\C++\页面调度模拟\最终\程序.c(22) : error C2143: syntax error : missing ';' before ')'
D:\C++\页面调度模拟\最终\程序.c(32) : error C2143: syntax error : missing ';' before 'type'
D:\C++\页面调度模拟\最终\程序.c(33) : error C2065: 'init_t' : undeclared identifier
D:\C++\页面调度模拟\最终\程序.c(46) : error C2143: syntax error : missing ';' before 'type
……………………………………………………

C语言中的参数的定义必须放在函数体的开始位置,修改如下:
#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#define randomize() srand((unsigned)time(NULL)) //定义一个宏用来产生随机数的
#define N 10 //调动的次数
#define RealPage 4

struct Page
{
int pn; //虚页号
int pfn; //实页号
int times;
//struct Page *next; //指向下一个页面
};
int count,k,i,j,flag,call[N];
struct Page MemPage[RealPage];
void output()
{ int p;
printf("\n\n-------------内存页面情况为-------------------\n");
printf("调度顺序为:");

for(p=0;p<N;p++)
printf("%d ",call[p]);
printf("\n");
for(k=0;k<RealPage;k++)
printf("序号:%d 虚页号:%d 实页号:%d Time:%d count:%d\n",k,MemPage[k].pn,MemPage[k].pfn,MemPage[k].times,count);

}
int main()
{ int init_t;
count = 0; //替换计数器

for(init_t=0;init_t<RealPage;init_t++)
//MemPage[init_t].pfn = -1;
randomize();
printf("调度顺序为:");
for(i=0;i<N;i++)
{
call[i] = rand()%10;
printf("%d ",call[i]);
}
//开始调度了
for(i=0;i<N;i++)
{ int m,r,n = 755599998;
flag = 1;

for(m=0;m<RealPage && MemPage[m].pn!=call[i];m++)
{
if(MemPage[m].pfn == 0) {
MemPage[m].pfn = 3478 - m*79;
MemPage[m].times = 1;
MemPage[m].pn = call[i];
count ++;
break;
}
}
//output();
for(j=0;j<4 && flag!=0;j++)
{

if(call[i] == MemPage[j].pn)
{
flag = 0;
break;
}
//在实页中找不到此页,用LRU算法进行替换
else
{
if(j == RealPage-1) //表示全都比较一遍了,还是没找到相同的页,进行替换
{
int t1,t2,temp;
for(t1=0;t1<RealPage;t1++) //算出在内存中时间最长者,将其替出来
{
for(t2=t1+1;t2<RealPage;t2++)
if(MemPage[t1].times > MemPage[t2].times)
temp = t1;
else
temp = t2;
}
MemPage[temp].pn = call[i]; //替换
MemPage[temp].times = 1; //时间重新开始计时
count ++;
}
}
}

for(r=0;r<RealPage;r++)
MemPage[r].times ++;

while(n--);
output();

}
printf("\n 缺页率为:%f\n\n",(float)count/10);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-29
test.c:3:1: error: 'main' must return 'int'
void main(void)
^~~~
int
test.c:21:20: error: expected expression
            length(int x);
                   ^
test.c:23:5: error: 'case' statement not in switch statement
    case 2:
    ^
test.c:24:14: error: expected expression
        area(int x);
             ^
test.c:26:5: error: 'case' statement not in switch statement
    case 3:
    ^
test.c:27:16: error: expected expression
        volume(int x);
               ^
test.c:30:9: error: expected expression
        int i;
        ^
test.c:29:5: error: 'default' statement not in switch statement
    default:
    ^
test.c:45:17: error: use of undeclared identifier 'number'
    scanf("%d", number);
                ^
test.c:48:17: error: use of undeclared identifier 'x'
    scanf("%d", x);
                ^
test.c:56:33: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]
    printf("圆周长为:%d\n", C);
                     ~~     ^
                     %f
test.c:64:33: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]
    printf("圆面积为:%d\n", S);
                     ~~     ^
                     %f
test.c:72:33: warning: format specifies type 'int' but the argument has type 'double' [-Wformat]
    printf("球体积为:%d\n", V);
                     ~~     ^
                     %f
3 warnings and 10 errors generated.

第2个回答  2019-05-29
1、把main函数中的第二个int i;去掉;
2、把int number,x;这一行移到int i;的下一行。
如果还有问题请留言。
第3个回答  2013-07-15
# include<stdio.h>
# include<malloc.h>
int main(void)
{
int len;
printf("请输入你需要分配的数组的长度:len = ");
scanf("%d",&len);
int * pArr = (int *)malloc(sizeof(int) * len);
*pArr = 4;
pArr[1]= 10;
printf("%d,%d",*pArr,pArr[1]);
free(pArr);//把pArr所代表的动态分配的20个字节的内容释放
return 0;
}

求大神 error C2143: syntax error : missing ';' before 'type'
C语言程序要求所有变量都在函数一开始全部声明。你的 struct node *head,*tail,*cnew;head=NULL;int num;这句话 head=NULL之后在int num就不行了,会报syntax error : missing ';'before 'type'另外你定义的是int num;后面使用 if(n==0) break;所以包'n' : undeclared identifier ...

c语言syntax error : missing ';' before 'type' 高手指导啊
include include<stdlib.h> define randomize() srand((unsigned)time(NULL)) \/\/定义一个宏用来产生随机数的 define N 10 \/\/调动的次数 define RealPage 4 struct Page { int pn; \/\/虚页号 int pfn; \/\/实页号 int times;\/\/struct Page *next; \/\/指向下一个页面 };int count,k,i,j...

c语言 syntax error : missing ';' before 'type'
楼上说的没错。因为你是静态申请数组,所以需要给指定的值,而不能用变量,你可以:float p[9]={1,0,0,0,1,0,0,0,1};p[6]=-x; p[7]=-y;这样来达到你想要的效果。希望对你有所帮助。

error C2143: syntax error : missing ')' before ';'是什么错误,找遍...
在运行程序时发现了一个问题,总是提示一个错误:error C2143: syntax error : missing before type。解决方法如下:把所有变量的声明放在可执行代码之前。出现此问题的原因在于:将文件保存成了 .c 格式。如果是cpp格式就能正常编译。改成.cpp就可以正常运行,和你变量声明的位置就没有关系了。一般在...

syntax error : missing ';' before 'type' 高手求指导
int main(void){ int count, i, m, n, sum;int repeat, ri;int prime(int m);scanf("%d", &repeat);for(ri = 1; ri <= repeat; ri++){ scanf("%d%d", &m, &n);count=0;sum=0;for(m=m;m<=n;m++){ if(prime(m)==1){ count+=1;sum+=i;} } printf("Count =...

...syntax error : missing ';' before 'type'该错误如何解决?谢谢啦...
int main(){ int i;double a,b,c,d,e,f,cash;\/\/这2行给你写前面了,具体原因往下看 printf("请输入本月利润:\\n");\/\/反斜杠打错了吧?scanf("%d",&i);\/\/你不先给 i 赋值,就直接使用 i ?a=0.1*i;\/\/下边这几行有几个乘号忘了写啦 b=100000*0.1+(i-100000)*0.075;c=...

C错误救助:error C2143: syntax error : missing ';' before 'type'
估计你用的是 C 语言环境,要把变量定义放到前面。而且你这段代码是测试sizeof和int型数据大小的,在不同的编译环境中不进相同。\/\/\/ VC++ \/\/ DEV C++ \/\/ TC 下编译通过 include<stdio.h> include<stdlib.h> int main(int argc,char *argv[]){ char *a;int b, c; \/* 修改 *\/ pr...

C语言老是提示出错syntax error : missing ';' before 'type'
一般是语句缺少“;”号或者for循环里缺少“;”号,如果实在找不到可以把代码贴出来看下 ;C语言在定义变量前不允许使用printf();。把前面所有的printf(),放到 int n那句的后面!

C语言问题:syntax error : missing ';' before 'type'等等
syntax error : missing ';' before 'type'(这一点要注意在输入分号时,应该是在英文状态下)undeclared identifier (这一点要注意有些变量要先声明再使用)

error C2143: syntax error : missing ';' before 'type'
变量声明要放在其它代码之前,修改一下就行了:include <stdio.h> void main(){ FILE *fp;char filename[20];char string[81];\/\/放这儿 printf("Enter the file name:");scanf("%s",filename);}

相似回答