| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2291 人关注过本帖
标题:C语言初学不懂返回值和一些其他的定义,求解
只看楼主 加入收藏
苏啊婷
Rank: 1
等 级:新手上路
帖 子:10
专家分:8
注 册:2015-12-9
收藏
得分:0 
#include<stdio.h>
#include<math.h>
float f1(int a,int b,int c)
{
    float x1,x2;
    x1=(-b+sqrt(b*b-4*a*c))/2*a;
    x2=(-b-sqrt(b*b-4*a*c))/2*a;
    int s[2]={x1,x2};
    return s[2];
}
main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(b*b-4*a*c>0) printf("x1=%d x2=%d",f1(a,b,c));
}

返回值的设置是不是出现了问题?运行出来x1,x2都等于0
2015-12-10 16:18
苏啊婷
Rank: 1
等 级:新手上路
帖 子:10
专家分:8
注 册:2015-12-9
收藏
得分:0 
回复 6楼 newdos
我有点看不懂这个程序,能在旁边注解一下吗?谢谢
2015-12-10 16:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
以下是引用苏啊婷在2015-12-10 16:19:32的发言:

我有点看不懂这个程序,能在旁边注解一下吗?谢谢

你还没学到那个知识点,先不要管它。

授人以渔,不授人以鱼。
2015-12-10 22:22
kehanping
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:88
注 册:2015-12-10
收藏
得分:4 
拿本c语言的教材学习一下啊!你问的很多知识是语法规则,容易学的!
2015-12-10 22:46
Zzling_001
Rank: 1
来 自:安徽阜阳
等 级:新手上路
帖 子:13
专家分:7
注 册:2015-12-10
收藏
得分:4 
回复 10楼 苏啊婷
定义函数的话前面那个int,float是指函数返回值类型,,如果是void的话就是指这个函数不在主函数中返回值
2015-12-10 23:16
Zzling_001
Rank: 1
来 自:安徽阜阳
等 级:新手上路
帖 子:13
专家分:7
注 册:2015-12-10
收藏
得分:0 
回复 6楼 newdos
大神   这个程序我看不懂呢,,在电脑上显示没有error也没有警告 但是输出不对啊  也没有键入a,b,c   能详细的奖一下么??
2015-12-10 23:19
ms268el8
Rank: 4
等 级:业余侠客
威 望:1
帖 子:84
专家分:299
注 册:2015-11-30
收藏
得分:0 
回复 10楼 苏啊婷
因為指標可以使兩個函式中的變數間接共用記憶體空間,在f()函式中宣告一個指標參數,接收呼叫方傳進來的變數的記憶體位址。其後在f()函式中對指標進行運算,就可以影響到呼叫方的變數。相當於呼叫方的變數接收到f()函式回傳的值。所以不需要return任何回傳值。而一個函式可以宣告不止一個指標參數。所以使用指標時,可以達到回傳多個變數值的效果。

2015-12-11 10:48
newdos
Rank: 9Rank: 9Rank: 9
等 级:禁止访问
威 望:6
帖 子:251
专家分:1169
注 册:2012-8-13
收藏
得分:0 
回复 17楼 Zzling_001
那个只是给楼主示例如何返回二个参数的办法。没有发现楼主的公式还有点问题。

#include <stdio.h>
#include <math.h>

struct Result
{
    double x1;
    double x2;
};

//求解一元二次方程式的实根解函数
struct Result foo(int a, int b, int c);

int main()
{
    struct Result r={0,0};
    int a, b, c;
    printf("请输入一元二次方程式的a,b,c值:\n");
    scanf("%d %d %d", &a, &b, &c);
    r = foo(a,b,c);
    printf("实根解为:x1=%lf, x2=%lf\n", r.x1, r.x2);
    return 0;
}

struct Result foo(int a, int b, int c)
{
    struct Result ret;

    ret.x1 = (-b+sqrt(b*b-4*a*c))/ (2*a);
    ret.x2 = (-b-sqrt(b*b-4*a*c))/ (2*a);

    return ret;
}

如果你看不懂这个版本,可以看下面这个版本:

#include <stdio.h>
#include <math.h>

//求解一元二次方程式的实根解函数
void foo(int a, int b, int c, double *x1, double *x2)
{
   *x1 = (-b+sqrt(b*b-4*a*c))/ (2*a);
   *x2 = (-b-sqrt(b*b-4*a*c))/ (2*a);

}

int main()
{
    int a, b, c;
    double x1 = 0, x2 = 0;

    printf("请输入一元二次方程式的a,b,c值:\n");
    scanf("%d %d %d", &a, &b, &c);

    if(a > 0 && (b*b-4*a*c) > 0){
        foo(a,b,c, &x1, &x2);
        printf("实根解为:x1=%lf, x2=%lf\n", x1, x2);
    }
    else{
        printf("方程式a,b,c的值有错\n");
    }

    return 0;
}

2015-12-11 15:22
快速回复:C语言初学不懂返回值和一些其他的定义,求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071505 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved