问个好简单的C问题
#include "stdio.h"
#define N 5
int a[N]={10,20,30,40,50};
main()
{int i;
float s,v;
for(s=i=0;i <N;i++)
s=s+a[i];
v=s/N;
ptintf("The average is % 6.2f\n",v);
}
我的问题就是代码的第2行和第3行,第2行是给N赋值为5,为什么第3行不直接写成int a[5]={10,20,30,40,50};
而要多写出第2行代码来呢?
因为第3行可能写到任何位置,如果以后要修改程序时,当然是修改的2行方便了,
下面的程序都不需要修改!
修改int a[]这个数量需要先找到它,然后再修改。而且不止一个地方需要修改。
程序里不止一个地方用到N,方便你以后要改N的值,就可以直接改#define那行,而不用在程序里每个出现N的地方都改
我的问题就是代码的第2行和第3行,第2行是给N赋值为5,为什么第3行不直接写成int a[5]={10,20,30,40,50};
而要多写出第2行代码来呢?
------------------------
如果你直接写a[5],如果你以后修改N的值的话,不是要修改很多地方。
第2行代码多余吗?
第二行是宏定义,N就表示5,代码中出现单独的N的地方就用5去代替,这个替换工作是在编译期完成的,和你说的一样,可以直接用写a[5],但是这样一来后面的循环也得改成i <5,如果用到5的地方多了,有一天你想把5改成6的时候你就发现第二行并不是多的
你这里主要是用到了宏定义.
看看后面的循环,用到了N.
N代表数组的大小,如果想要遍历整个数组,那就得这样写了.
谢谢各位大哥啦
相关问答:
你们现在还在用C吗?C有前途吗?
一定,并永远坚持
引用
一定,并永远坚持
顶
有用。
楼主何出此言
楼主来c版问这个问题是踢馆用意吗哈哈
越来越冷是肯定的,完全淘汰倒也没那么容易
c ......
6月5日消息,XX网站日前评出了10项大势已去的计算机技术。其中,有些技术已经被淘汰,有些即将被淘汰。如著名的Cobol语言,以及IBM的OS/2系统。
以下为XX网站评出的被淘汰的10项计算机技术:
......
'\108'作为字符常量对不对?
转义字符'\ddd'表示3位8进制所代表的字符。 但是108不是正确的8进制表示方法,因此应该是错误的。
但是char a='\108'; 为什么编译不出错呢?
\108 没超过 ......
用这本书入门怎么样呢 跟谭浩强的相比如何? 谢谢
我把这本看了几篇,确实很好的书。就不要拿它跟 谭 的书比了, 谭 的书要照顾全国读者。
不可同日而语
一个是国外的,一个是国内的
学完c primer ......
功能是实现字符串的翻转,不知道哪里有错误,请指教
#include <iostream>
#include <stdio.h>
using namespace std;
void reverse()
{
char ch;
scanf("%c",ch) ......