首页 » C语言解惑 » C语言解惑全文在线阅读

《C语言解惑》25.1 计算机解题具有多解的特点

关灯直达底部

即使是比较简单的问题,计算机的解题方法也不是惟一的。下面就举一个简单的例子,说明求解问题可以使用不同算法。

【例25.1】给出几个求1至100的奇数和的程序。

【解法一】剔除偶数法。


#include <stdio.h>int main(){    int i=0, sum=0;    for(i=1; i<=100; ++i)    {          if (i %2 == 0)          //剔除偶数                continue;          sum += i;    }    printf("sum=%d/n", sum);     //输出2500    return 0;}  

【解法二】改变步长法。


#include <stdio.h>int main(){     int i=0, sum=0;     for(i=1; i<=100; i += 2)     //步长为2           sum += i;     printf("sum=%d/n", sum);     //输出2500     return 0;}  

【解法三】奇数相加法。


#include <stdio.h>int main(){    int i=0, sum=0;    for(i=1; i<=100; ++i)          if (i %2 == 1)          //奇数相加                 sum += i;    printf("sum=%d/n", sum);     //输出2500    return 0;}  

这个问题简单,效率也不明显。但对大量运算的情况,就要选择合适的算法。这个例子的目的是提醒程序员解题的算法可能很多,要注意选择合适的算法。