1
上期答案揭晓首先给大家看看上一篇文章C语言经典100题(13)中第三部分编程题的答案:
#includeint main(){ int i,x,y,z; for(i=100;i<1000;i++) { x=i%10; y=i/10%10; z=i/100%10; if(i==(x*x*x+y*y*y+z*z*z)) printf("%d\n",i); } return 0;}
以上实例输出结果为:
153370371407
2
今日知识分享
引用方式调用函数
通过引用传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。 传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。/* 函数定义 */void swap(int *x, int *y){ int temp; temp = *x; /* 保存地址 x 的值 */ *x = *y; /* 把 y 赋值给 x */ *y = temp; /* 把 temp 赋值给 y */ return;}
现在,让我们通过引用传值来调用函数 swap():
#include /* 函数声明 */void swap(int *x, int *y);int main (){ /* 局部变量定义 */ int a = 100; int b = 200; printf("交换前,a 的值:%d\n", a ); printf("交换前,b 的值:%d\n", b ); /* 调用函数来交换值 * &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */ swap(&a, &b); printf("交换后,a 的值:%d\n", a ); printf("交换后,b 的值:%d\n", b ); return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
交换前,a 的值:100交换前,b 的值:200交换后,a 的值:200交换后,b 的值:100
上面的实例表明了,与传值调用不同,引用调用在函数内改变了 a 和 b 的值,实际上也改变了函数外 a 和 b 的值。
3
今日经典编程题 题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:- 如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。
- 但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。
- 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
各位有兴趣的读者可以自行设计程序实现,我将在下一篇文章揭晓该题的代码实现供参考!
扫码关注我,手把手带你撸代码![c9d44f71382dfa8157cd69c1e8b0636a.png](https://img-blog.csdnimg.cn/img_convert/c9d44f71382dfa8157cd69c1e8b0636a.png)
如果你觉得文章让您增长了知识,
请点击右下方的“在看”
![710c71af53c029fab7d10a00c3b9024f.gif](https://img-blog.csdnimg.cn/img_convert/710c71af53c029fab7d10a00c3b9024f.gif)