如何解决函数在C中不起作用的问题
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <string.h>
int main(void){
float lp=0;
float cp=0;
char rc[5];
int yes=0;
int country=0;
char correct[5];
int mod=0;
float FunLength(float *lp);
printf("Please follow the steps:\n")
printf("------------------------------------------------ 1\n");
printf("Enter Lenght:\n");
float FunLength(float *lp);
do{
printf("-------------------------------------------------2\n");
printf("do you know the circumference?: \n");
scanf("%s",rc);
if(!strcmp(rc,"yes")){
yes=1;
break;
}
if(!strcmp(rc,"no")){
yes=2;
break;
}
else{
printf("You have to write 'yes' or 'no'\n");
printf("it's not difficult,commit yourself and\n");
printf("you will make it.\n");
}
}while(yes==0);
if(yes==1){
do{
printf("-----------------------------------------------2.5\n");
printf("Enter circumference: ");
scanf("%f",&cp);
if(cp>13){
printf("tray again");
}
if(cp<8){
printf("try again");
}
}while(cp<8 || cp>13);
}
printf("-----------------------------------------------3\n");
printf("Select country:\n");
printf("1.Austria\n2.Belgium\n3.Bulgaria\n4.Cyprus\n5.Croatia\n");
do{
printf("N° ");
scanf("%d",&country);
if(country>5){
printf("Wrong value\n");
printf("Try Again\n");
}
}while(country==0 || country>5);
printf("Summary:\n");
printf("Length: %fcm\n",lp);
if(yes==1){
printf("Circumference: %fcm\n",cp);
}
else if(country==1){
printf("Country: Austria");
}
else if(country==2){
printf("Country: Belgium");
}
else if(country==3){
printf("Country: Bulgaria");
}
else if(country==4){
printf("Country: Cyprus");
}
else if(country==5){
printf("Country: Croatia");
}
printf("Is it correct?: ");
scanf("%s",correct);
if(!strcmp(correct,"no")){
printf("What do you want to change?:\n");
printf("1.Length 2.Circumference 3.Country\n");
do{
printf("N° ");
scanf("%d",&mod);
if(mod>3){
printf("Wrong Value\n");
printf("Try Again\n");
}
}while(mod==0 || mod>3);
}
return 0;
}
float FunLength(float *lp){
float temp=0;
printf("Enter Length::\n");
do{
scanf("%f",&temp);
*lp=temp;
if(*lp>22){
printf("Try Again\n");
}
if(*lp<8){
printf("Try Again\n");
}
}while(*lp>22 || *lp<8);
return *lp;
}
这就是我的代码,将用户人数与欧洲平均人数进行比较。我将使用功能和结构。我想我会在与每个国家进行比较时使用结构。现在,我将使用函数来使程序更“可重用”。问题是以下函数float FunLength(float *lp)
无法正常工作。我究竟做错了什么?我也想使用函数对第2点和第3点做同样的事情。请帮助我,如果您对当前代码或继续代码有任何建议,我将不胜感激。
解决方法
“ FunLength”代码的类型冲突。c:16:10:注意:此处以前的“ FunLength”声明是
在您的代码示例中,您两次制作FunLength()
的原型。 删除一个或另一个:
float FunLength(float *lp);/// here
printf("Please follow the steps:\n")
printf("------------------------------------------------ 1\n");
printf("Enter Lenght:\n");
float FunLength(float *lp);///and here
然后,根据注释中的对话,使所有定义彼此一致,以使它们支持您的工作:
更改以下内容:
float FunLength(float *lp);//prototype
收件人:
void FunLength(float *lp);
并且:
float FunLength(float *lp){//function definition
收件人:
void FunLength(float *lp){
由于该函数现在为void
,因此删除其return语句:
//return *lp;
}
,但其功能就像未执行一样。
FunLength()
未执行,因为未在任何地方调用它。确定要调用的位置后,请按以下方式调用它:
(简化的main()
函数)
int main(void)
{
float val = 0.0;
FunLength(&val);
printf("%f\n",val);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。