《C语言及程序设计》实践参考——随便改

返回:贺老师课程教学链接

【项目3-随便改】保持下面程序主体for循环部分不变,用你能想到的办法修改程序,使下面程序的输出的a每次都能变化,输出1 2 3 4

#include<stdio.h>
void change(int a)
{
    a=a+1;
}
int main()
{
    int a=0;
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        change(a);
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

[参考解答]
改法1:a作为全局变量,change为无参函数

#include<stdio.h>
int a=0; //*
void change() //*
{
    a=a+1;
}
int main()
{
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        change(); //*
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

改法2:change函数改为传地址

#include<stdio.h>
void change(int *a)
{
    *a=*a+1;
}
int main()
{
    int a=0;
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        change(&a);
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

改法3:让change函数返回值

#include<stdio.h>
int change(int a)
{
    a=a+1;
    return a;
}
int main()
{
    int a=0;
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        a = change(a);
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

改法4:让a作全局变量,change为无参函数

#include<stdio.h>
int a=0;
void change()
{
    a=a+1;
}
int main()
{

    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        change();
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

改法5:a作为change函数中的静态变量

#include<stdio.h>
int change()
{
    static int a=0;
    a=a+1;
    return a;
}
int main()
{
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        printf("%d ",change());//如何使这里a的值,每次都发生改变
    }
    return 0;
}

你可能感兴趣的:(C语言)