标题:读程序题看不懂
只看楼主
PGLWGES
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-7-30
结帖率:100%
 问题点数:0 回复次数:3 
读程序题看不懂
#include<stdio.h>
int a = 1;
int main()
{
    int sub(int a);
    int a;
    for (a = 1;a < 10;a++)
    {
        sub(a++);
        printf("%d", a);
    }
    return 0;
}
int sub(int a)
{
    a = a * a;
    return a;
}
最后输出为什么是2 4 6 8 10?
不是调用函数求平方吗?
搜索更多相关主题的帖子: int 调用 return 输出 sub 
2020-12-15 17:38
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 楼主 PGLWGES
第1次循环:a = 1, a = a * a = 1 * 1 = 1,返回后自增 1 ,输出 a = 2;
第2次循环:a = 3, a = a * a = 3 * 3 = 9,返回后自增 1 ,输出 a = 4;
第3次循环:a = 5, a = a * a = 5 * 5 = 25,返回后自增 1 ,输出 a = 6;
第4次循环:a = 7, a = a * a = 7 * 7 = 49,返回后自增 1 ,输出 a = 8;
第5次循环:a = 9, a = a * a = 9 * 9 = 81,返回后自增 1 ,输出 a = 10;
至此,a = 10 已经大于循环设定的条件 a < 10,循环结束。为什么没有输出 1,9,25,49,81 呢?原因是函数里的变量虽然与主程序里的变量是同名同姓,但它们却不是同一个变量!!!我将程序稍加改改,就看明白了
程序代码:
#include<stdio.h>
int a = 1;
int main()
{
    int sub(int c);        // 定义函数(注意:形参变了)
    int a, b;
    for (a = 1;a < 10;a++) // 循环9次
    {
        b = sub(a++);          // 以整型变量每次自增方式调用函数
        printf("%d  %d", a,b); // 输出
    }
    return 0;
}
int sub(int c)             // 定义函数体(注意:形参变了)
{
    c = c * c;             // 求得平方值,再赋给整型变量 c
    return c;              // 返回 c
}
2020-12-15 19:01
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
sub返回的值没有赋值给a,sub做了无用功,没啥用。
sub的时候a+1,循环里a+1,因此是输出偶数
2020-12-15 19:22
PGLWGES
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-7-30
得分:0 
懂了懂了,谢谢
2020-12-17 19:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504266-1-1.html




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

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