论坛: 编程破解 标题: 此c错在哪? 复制本贴地址    
作者: netax [netax]    论坛用户   登录
main()
   {
     int a,b,c;
     printf("*");
     for(a=1;a<10;a++)
printf("%4d",i);
     printf("\n\n");
     for(b=1;b<10;b++)
     {
printf("%2d",b);
for(c=1;c<=b;c++)
printf("%4d",b*c);
printf("\n");
}
     }

地主 发表时间: 04/04 16:10

回复: 286 [unique]   版主   登录
#include <stdio.h>       //-------------------->No 1
main()
{
int a,b,c;
printf("*");
for(a=1;a<10;a++)
printf("%4d",a);    //------->No 2
printf("\n\n");
for(b=1;b<10;b++)
{
printf("%2d",b);
for(c=1;c<=b;c++)
printf("%4d",b*c);
printf("\n");
}
}


B1层 发表时间: 04/04 17:27

回复: sunyue [sunyue]   论坛用户   登录
1、使用了printf函数,却没声明
2、使用了变量i,却没声明
3、在TC中没有错,但是如果用VC会有个warning,你的main函数不是void型,但是没有设置返回值

其实,你编译的时候,会有错误信息啊。

B2层 发表时间: 04/04 18:21

回复: cwenqiang [cwenqiang]   论坛用户   登录
你用的c是那个啊?

B3层 发表时间: 04/05 08:52

回复: bailove [bailove]   论坛用户   登录
用scanf和printf不用申明也可以啊
  但你用c的缩进习惯没有用好.这习惯是要培养的哦

B4层 发表时间: 04/05 14:15

回复: netax [netax]   论坛用户   登录
我使用的是tc
�x�x各位的�嵝��椭�!是我不小心把a��成了i!
不用��明使用了printf

B5层 发表时间: 04/05 16:23

回复: sunyue [sunyue]   论坛用户   登录
to bailove:
TC可能默认包含了STDIO.H(我不确定,因为好长时间没用TC了)

但是VC和BC不包含头文件的话,会编译出错,认为没有声明
最好养成习惯,使用库函数时,一定要声明

B6层 发表时间: 04/07 10:19

回复: 286 [unique]   版主   登录
各位弟弟妹妹,
    我代替楼主感谢大家的回答,但如果自己本身没把握或不了解的话,最好先确认再回答.
    1 stdio.h不是默认,需要显示声明.
    2 VC,BC和TC语法差不多,也不一定非要头文件.
    3 库函数有些需要声明,但也不是所有的都需要声明.部分声明反而会出错.

B7层 发表时间: 04/07 11:55

回复: sunyue [sunyue]   论坛用户   登录
请教286:
哪些库函数不需要声明呢?
我一直在用VC,但是还没有遇到过不需要声明就可以直接调用的库函数(基本都是需要包含有该函数的头文件来进行声明)
能给举个例子吗?
谢谢

B8层 发表时间: 04/07 12:13

回复: 286 [unique]   版主   登录
1 main(),printf(),scanf(),不要说这些不是库函数.
2 1. 打开VC 
  2. 文件/NEW/Project/"Win32 Console Application" 
  3. "Project name"输入temp
  4. A empty project /Finish
  5. 右击FileView/Source Files,选"Add a file...."
  6. 输入temp.c并双击打开
  7. 在temp.c里输入:
void main(){printf("Just test");}
  8.编译运行



B9层 发表时间: 04/07 12:36

回复: sunyue [sunyue]   论坛用户   登录
VC中,控制台程序的主函数声明,编译和执行并没有错误,比如:
#include <stdio.h>
void main();
void main()
{
   printf("Just test"); 
}
除非声明函数和函数定义形式不同才是错误(这对其他函数也是一样的)比如:
#include <stdio.h>
int main();
void main()
{
   printf("Just test");
}

printf和scanf这类函数在VC中使用的话,之所以不需要自己写:
_CRTIMP int __cdecl printf(const char *, ...);
是因为使用前需要包含stdio.h(在里面已经声明了)。如果像你写的,只写:void main(){printf("Just test");}
你的VC难道编译可以通过?反正我的VC编译会出错:
error C2065: 'printf' : undeclared identifier。
还是没有声明的错误。

B10层 发表时间: 04/07 15:11

回复: 286 [unique]   版主   登录
我们俩在别人的地盘上争,确是有意思.
首先,我说,有些函数不需要声明,而并不是表示声明就出错.
其次,按我的步骤作下来,我那个程序:
void main(){printf("Just test");}
顺利通过.

B11层 发表时间: 04/08 11:49

回复: sunyue [sunyue]   论坛用户   登录
呵呵,我可没和你“争”,只是讨论而已。

关于第一个问题,因为你说的“部分声明反而会出错”,而我确实没发现什么函数在正确声明后出了错误,所以,我才请教你什么函数会声明出错。结果你举的例子……都不会……
主函数可以省略声明,因为它是控制台程序入口,也比较特殊了。
(已经都成了文字游戏了……不想再讨论……声明不声明……反正自己看着办好了)

可是STDIO函数,你的VC真的能不包含任何头文件编译并且执行通过吗?
那么只能说你的VC和别人的都不一样。

B12层 发表时间: 04/08 12:07

回复: bailove [bailove]   论坛用户   登录
谢谢“感觉者”教诲
  还有就是“286”
  习惯是需要养成的


B13层 发表时间: 04/08 17:09

回复: 286 [unique]   版主   登录
我所指“部分声明反而会出错”是指重复声明。
你所用的两个main()函数不是重复声明,是重载。

B14层 发表时间: 04/08 17:28

回复: 286 [unique]   版主   登录
那程序你按我的步骤,没出错,(全是VC系统默认值的情况下)。


B15层 发表时间: 04/08 17:30

回复: sunyue [sunyue]   论坛用户   登录
晕……
我写的那个……你管它叫重载?!
……汗……

算了……不讨论下去了说

B16层 发表时间: 04/08 18:38

回复: lisi99225 [lisi99225]   论坛用户   登录
最后斑竹呢,怎么不说话

B17层 发表时间: 04/08 21:47

回复: 286 [unique]   版主   登录
引用自:http://www.pcvc.net/category/content.asp?sendid=101
所谓函数重载是指同一个函数名可以对应着多个函数的实现。

引用自:回复: 感觉者 [sunyue]    论坛用户
int main();
void main()
{
   printf("Just test");
}


这次该晕的是我了。我真不知道我们学的是不是同一个C语言。

B18层 发表时间: 04/09 14:05

回复: sunyue [sunyue]   论坛用户   登录
int main();
void main()
{
   printf("Just test");
}

int main();没有函数实现,按你说的,居然也可以叫重载?
先去看看重载的定义,然后你再去编译一下看看,如果不出错,我就真的佩服你的C编译器,太厉害了

B19层 发表时间: 04/10 10:23

回复: quest [quest]   版主   登录
刚刚又看了一下,应该是重载,返回类型不一样

[此贴被 探索者(quest) 在 04月10日11时16分 编辑过]

B20层 发表时间: 04/10 10:41

回复: quest [quest]   版主   登录
好象是参数不同或者返回值不同都可以,但好象又不是,C++BUILDER的帮助里面也没有明确说。
晕了...谁帖一段出来看看?

B21层 发表时间: 04/10 11:17

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号