C语言基础编程问题错误

#include <stdio.h>
int Perimeter(int x,int y);
int main()
{
int length,wide,pmt;
printf("请输入矩形的长和宽:");
scanf("%d%d",&length,&wide);
pmt=Perimeter(length,wide);
printf("矩形的周长是:%d\n",pmt);
return 0;
}
int Perimeter(int x,int y)
{
int z;
z=2*x+2*y;
return z;
}
请问哪里错了?该怎么修改
C:\Program Files\Microsoft Visual Studio\MyProjects\test、\1-1.cpp(3) : warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored
C:\Program Files\Microsoft Visual Studio\MyProjects\test、\1-1.cpp(3) : error C2146: syntax error : missing ';' before identifier 'main'
C:\Program Files\Microsoft Visual Studio\MyProjects\test、\1-1.cpp(3) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
这是提示的内容

'\n'没有消失,遗留在输入缓冲区;后面有scanf("%c", &b)的话,b就被赋与'\n'。 用空格分割,b会变成空格;用回车分割,b会变成'\n';如果后面还有字符输入语句,就等待输入,因为输入缓冲区里这时没有数据了。 当前面的输入语句把广义空格(' '、'\t'、'\n'等)遗留在输入缓冲区里,而后面又有字符输入语句时,要在后面的字符输入语句前加getchar()或接收字符的其他函数或清除输入缓冲区函数fflush(stdin)来清除掉遗留在输入缓冲区中的字符,以避免后面的字符接收函数错误接收。getchar()是函数getche()的变体之一,是早先UNIX下定义的。getchar()、getche()和scanf("%c",&x)都有差别:getchar()接收的'\n'是10,getche()接收的\n'是13,而scanf("%c",&x)不接收'\n'。这些细节全靠用多了记住,没有别的办法。scanf(“%c%*c”,&a)接收一个字符赋给a,紧接着再接收一个字符,但不赋给任何变量。 char a[100]={0}; 将100个1字节元素全部赋0。你写“写int a[100]={0}和int a[100]={'0'}的效果是一样的”不可能:int a[100]={0};将100个int元素全赋0,而int a[100]={'0'};则将a[0]赋'0'即十进制48,后面99个全是0。 a[0]会变成NULL, 因为NULL的定义就是0;“我想让a[0]等于0这个数字,不想让它变为空”做不到。因为0按数字解释就是0,而按字符解释就“空”——其实NULL、'\0'、0的定义都是十进制数0,只是NULL是系统定义的符号常量,常用于指针的无效状态,'\0'是用转义字符表示的常量,常用于字符串的结尾,而0就是数字0了——这样区分主要是为了方便代码的阅读,你可以试着把现成代码中的NULL、'\0'、0都换成三者之一,效果是一样的。 一般没有区别,不过要看编译器对eof是怎么定义的。eof常见的是被定义为-1的,而~(-1)=0,所以二者才没有区别。 全部初始化为0。 是a的ASCII码值。 顺便说一句,输入输出函数是C的复杂库函数,有问题可以具体续问,在这里三言两语说不明白……
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16

代码没错

是不是输入的时候格式错了,建议这句

scanf("%d%d",&length,&wide);
改为:
scanf("%d,%d",&length,&wide);//中间加个逗号,输入的时候两个数之间也要加逗号。

追问

没用,不是那里错了,那边是对的

追答

第二句末尾是个中文分号,改成英文的就好了。

int Perimeter(int x,int y);

int main(int argc, char** argv) 
{
int length,wide,pmt;
  printf("请输入矩形的长和宽:");
  scanf("%d,%d",&length,&wide);
  pmt=Perimeter(length,wide);
  printf("矩形的周长是:%d\n",pmt);
  return 0;
system("pause");
return 0;
}
int Perimeter(int x,int y)
{
  int z;
  z=2*x+2*y;
  return z;
}

追问

谢谢

本回答被提问者采纳
第2个回答  2015-10-19
请问你的程序中出现的问题是什么,你没说清楚哦~
int Perimeter(int x,int y);

是这个;错误导致程序不能运行的意思吗?追问

我要是知道哪里错了我不就修改了嘛?

追答

你这个是源程序复制过来的吗?
如果是
int Perimeter(int x,int y);
;是中文的

追问

没用还是错的,或者帮我打一份有用我检查下

第3个回答  2015-10-19
scanf("%d%d",&length,&wide);错了

应该是scanf("%d,%d",&length,&wide);追问

那里没错

第4个回答  2019-03-12
没问题啊,书上有原题
相似回答