原题:
请对p_star50(void)进行20次调用,p_star50(void)实现在一行输出50个“*”号。
即输出一个20*50的矩形阵嘛,思路是先搞定p_star50(void),
再到main()里把p_star50(void)调用20次。
代码大概的框架
void p_star50(void)
{
//声明变量
for(; ;)
printf("*");
return;
}
main()
{
//声明变量
for(; ;)
{
p_star50(void);
printf("\n");
}
return 0;
}
思路理清楚之后开始注入灵魂~把之前缺的什么变量啊都补齐
//p_star50()
void p_star50(void)
{
//int i;
for(i=1;i<=50 ;i++)
printf("*");
return;
}
PS:for循环这里很容易写错,循环次数很容易多一或少一,干脆死记好了。
以循环50次为例,有两种写法:
for(i=1;i<=50 ;i++)
for(i=0;i<50 ;i++)
主函数里面的for循环
for(i=1;i<=20 ;i++)
{
p_star50(void);
printf("\n");
}
综上,所以整个完整的代码应该是
#include<stdio.h>
int main(void)
{
//变量及函数的声明;
void p_star50(void);
int n;
for(n=1;n<=20;n++)
{
p_star50();
putchar('\n');
}
return 0;
}
void p_star50(void)
{
//变量声明
int i;
for(i=1;i<=50;i++)
{
putchar('*');
}
return;
}
运行效果图:
你以为一个咸鱼一开始就能把功能实现吗??
并没有……
这条咸鱼一开始完成的效果是这样的……
所以emmmmm剩下的小星星都去了哪里,可能是被咸鱼吞了吧……
事实上,是本咸鱼粗心地把return放错了地方,you see~
这位return兄dei应该在for循环之外才对呀
否则刚走完第一遍循环就GG了
PS:return关键字的作用是结束一个函数!!
搞完简单的小例题之后,本咸鱼想再搞一个变种,
输出n行m列的矩阵
也成功了,
比起之前那个简单版本的就是多了一个输入,
(然而我又发现我对形参实参有误解,这个后面再说)
代码如下
#include<stdio.h>
//任务:输出n行m列的星号
//调用p_star_m(int m)
int main(int n,int m)
{
//变量声明
void p_star_m(int m);
int i;
int j;
//提示输入
printf("请输入行数:");
scanf("%d",&i);
printf("请输入列数:");
scanf("%d",&j);
// 循环体
for(n=1;n<=i;n++)
{
p_star_m(j);
printf("\n");
}
return 0;
}
void p_star_m(int m)
{
//变量声明
int j;
for(j=1;j<=m;j++)
{
printf("*");
}
return;
}
/*传参必须用另外的字母传,
比如main()的形参为n和m,
那么键盘传进来的数就应该用其他变量名来存,
这是为了避免混淆??
所以又在main()中声明了i和j两个变量存储实参,
键入的时候就变成&i.&j了
字母关系真的是贼他么的难搞啊
**********************************/
PS:形参实参不能同名
我的误解已经写进代码里了,貌似同名会产生形参被覆盖的问题,不是很懂。
OK,结束了
看完这篇文章有没有一种又被浪费了3分钟的既视感~哈哈哈哈