2068533370 发表于 2021-12-24 14:16:38

我的sqrt函数使用报错,为什么?

事情是这样的,在使用c语言练习的时候,最后编译时候报错了
第一张是我测试的时候,发现sqrt是能用的,我用的版本是dev—c++5.11.
但是一样的用法到第二张,结果就报错了。
这是源码,其目的是求2001到2021年之间有多少完全日,就是求完全日(完全日就是年月日加起来是完全平方数)
//i是年,j是月,z是日
#include "stdio.h"

int year(int n){
        if((n%4==0&&n%100!=0) || (n%400==0)){
                return 29;
        }
        else{
                return 28;
        }
}
int quzhen(int n){
        int sum=0;
        while(n){
                int k=n%10;
                sum+=k;
                n=n/10;
        }
        return sum;
}
int check(int n){
        int k;
        k=sqrt(n);
        if(k*k==n){
                return 1;
        }
        return 0;
}
void main(){
        int day={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int ans=0,year,j,z;
        for(i=2001;i<=2021;i++){
                for(j=1;j<=12;j++){
                        day=year(i);
                        for(z=1;z<=day;z++){
                                int a=quzhen(i)+quzhen(j)+quzhen(z);
                                pritnf("%d %d %d\n",i,j,z);
                                if(1){
                                        ans++;
                                }
                        }
                }
        }
        printf("%d",ans);
        return 0;
}

人造人 发表于 2021-12-24 14:16:39

#include "stdio.h"

int year(int n){
      if((n%4==0&&n%100!=0) || (n%400==0)){
                return 29;
      }
      else{
                return 28;
      }
}
int quzhen(int n){
      int sum=0;
      while(n){
                int k=n%10;
                sum+=k;
                n=n/10;
      }
      return sum;
}
int check(int n){
      int k;
      k=sqrt(n);
      if(k*k==n){
                return 1;
      }
      return 0;
}
//void main(){
int main(){
      int day={0,31,28,31,30,31,30,31,31,30,31,30,31};
      //int ans=0,year,j,z;
      int ans=0,year_,j,z;
      int i;
      for(i=2001;i<=2021;i++){
                for(j=1;j<=12;j++){
                        day=year(i);
                        for(z=1;z<=day;z++){
                              int a=quzhen(i)+quzhen(j)+quzhen(z);
                              pritnf("%d %d %d\n",i,j,z);
                              if(1){
                                        ans++;
                              }
                        }
                }
      }
      printf("%d",ans);
      return 0;
}

傻眼貓咪 发表于 2021-12-24 14:28:10

#include <math.h>

2068533370 发表于 2021-12-24 14:34:28

傻眼貓咪 发表于 2021-12-24 14:28
#include

感谢你的帮助,但是不是这个哦,我试过的,我这个版本不用加math.h就能用的了sqrt,第一张图就是例子,我也加过,依然报错

傻眼貓咪 发表于 2021-12-24 14:38:59

哦哦,我还以为是这个

人造人 发表于 2021-12-24 14:45:01

试一试这两个代码,是不是一个能用另一个不能用?
#include <stdio.h>

int main(void) {
    double a = 5;
    double b = sqrt(a);
    printf("%lf\n", b);

    return 0;
}

#include <stdio.h>

int main(void) {
    double a = 5;
    scanf("%lf", &a);
    double b = sqrt(a);
    printf("%lf\n", b);

    return 0;
}

2068533370 发表于 2021-12-24 14:56:57

人造人 发表于 2021-12-24 14:45
试一试这两个代码,是不是一个能用另一个不能用?

都能用,两个的差别只有一个需要输入,一个不能输入

人造人 发表于 2021-12-24 15:21:10

2068533370 发表于 2021-12-24 14:56
都能用,两个的差别只有一个需要输入,一个不能输入

两个代码都发一下,能用的那个和不能用的那个都发一下

2068533370 发表于 2021-12-24 16:12:56

能用的代码
#include "stdio.h"

int abc(int a){
        int b;
        b=sqrt(a);
        return sqrt(a);
}

void main(){
        int a=4,b;
        b=sqrt(a);
        printf("%d",b);
}
不能用的已经发出了,这里我再复制一下把
int year(int n){
      if((n%4==0&&n%100!=0) || (n%400==0)){
                return 29;
      }
      else{
                return 28;
      }
}
int quzhen(int n){
      int sum=0;
      while(n){
                int k=n%10;
                sum+=k;
                n=n/10;
      }
      return sum;
}
int check(int n){
      int k;
      k=sqrt(n);
      if(k*k==n){
                return 1;
      }
      return 0;
}
void main(){
      int day={0,31,28,31,30,31,30,31,31,30,31,30,31};
      int ans=0,year,j,z;
      for(i=2001;i<=2021;i++){
                for(j=1;j<=12;j++){
                        day=year(i);
                        for(z=1;z<=day;z++){
                              int a=quzhen(i)+quzhen(j)+quzhen(z);
                              pritnf("%d %d %d\n",i,j,z);
                              if(1){
                                        ans++;
                              }
                        }
                }
      }
      printf("%d",ans);
      return 0;
}

2068533370 发表于 2021-12-24 16:14:19

人造人 发表于 2021-12-24 15:21
两个代码都发一下,能用的那个和不能用的那个都发一下


能用的代码
#include "stdio.h"

int abc(int a){
      int b;
      b=sqrt(a);
      return sqrt(a);
}

void main(){
      int a=4,b;
      b=sqrt(a);
      printf("%d",b);
}
不能用的已经发出了,这里我再复制一下把
int year(int n){
      if((n%4==0&&n%100!=0) || (n%400==0)){
                return 29;
      }
      else{
                return 28;
      }
}
int quzhen(int n){
      int sum=0;
      while(n){
                int k=n%10;
                sum+=k;
                n=n/10;
      }
      return sum;
}
int check(int n){
      int k;
      k=sqrt(n);
      if(k*k==n){
                return 1;
      }
      return 0;
}
void main(){
      int day={0,31,28,31,30,31,30,31,31,30,31,30,31};
      int ans=0,year,j,z;
      for(i=2001;i<=2021;i++){
                for(j=1;j<=12;j++){
                        day=year(i);
                        for(z=1;z<=day;z++){
                              int a=quzhen(i)+quzhen(j)+quzhen(z);
                              pritnf("%d %d %d\n",i,j,z);
                              if(1){
                                        ans++;
                              }
                        }
                }
      }
      printf("%d",ans);
      return 0;
}

2068533370 发表于 2021-12-24 17:48:38

人造人 发表于 2021-12-24 16:28


还是不行,算了,估计又是内存中我不知道的错误,不弄了,我把悬赏给你,毕竟你花了这么多时间来帮我
页: [1]
查看完整版本: 我的sqrt函数使用报错,为什么?