我的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;
}
#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;
}
#include <math.h> 傻眼貓咪 发表于 2021-12-24 14:28
#include
感谢你的帮助,但是不是这个哦,我试过的,我这个版本不用加math.h就能用的了sqrt,第一张图就是例子,我也加过,依然报错 哦哦,我还以为是这个 试一试这两个代码,是不是一个能用另一个不能用?
#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;
}
人造人 发表于 2021-12-24 14:45
试一试这两个代码,是不是一个能用另一个不能用?
都能用,两个的差别只有一个需要输入,一个不能输入 2068533370 发表于 2021-12-24 14: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;
} 人造人 发表于 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;
} 人造人 发表于 2021-12-24 16:28
还是不行,算了,估计又是内存中我不知道的错误,不弄了,我把悬赏给你,毕竟你花了这么多时间来帮我
页:
[1]