鱼C论坛

 找回密码
 立即注册
查看: 1822|回复: 10

[已解决]我的sqrt函数使用报错,为什么?

[复制链接]
发表于 2021-12-24 14:16:38 | 显示全部楼层 |阅读模式
10鱼币
事情是这样的,在使用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[13]={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[2]=year(i);
                        for(z=1;z<=day[j];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[13]={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[2]=year(i);
                        for(z=1;z<=day[j];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;
}
2.png
23.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[13]={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[2]=year(i);
                        for(z=1;z<=day[j];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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-24 14:28:10 From FishC Mobile | 显示全部楼层
#include <math.h>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-24 14:34:28 | 显示全部楼层

感谢你的帮助,但是不是这个哦,我试过的,我这个版本不用加math.h就能用的了sqrt,第一张图就是例子,我也加过,依然报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-24 14:38:59 From FishC Mobile | 显示全部楼层
哦哦,我还以为是这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-24 14:56:57 | 显示全部楼层
人造人 发表于 2021-12-24 14:45
试一试这两个代码,是不是一个能用另一个不能用?

都能用,两个的差别只有一个需要输入,一个不能输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-24 15:21:10 | 显示全部楼层
2068533370 发表于 2021-12-24 14:56
都能用,两个的差别只有一个需要输入,一个不能输入

两个代码都发一下,能用的那个和不能用的那个都发一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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[13]={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[2]=year(i);
                        for(z=1;z<=day[j];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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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[13]={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[2]=year(i);
                        for(z=1;z<=day[j];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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-24 17:48:38 | 显示全部楼层

还是不行,算了,估计又是内存中我不知道的错误,不弄了,我把悬赏给你,毕竟你花了这么多时间来帮我
abc.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-29 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表