返回:贺老师课程教学链接
【项目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;
}