注册 登录
编程论坛 C语言论坛

写的一样为什么是错的

书施工工艺 发布于 2022-03-13 16:38, 1551 次点击
我写的
#include <stdio.h>
int main()
{
    int i,j,k,n;
    printf("parcissus numbers are");
    for (n=100;n<1000;n++)
    {
        i=n/100;
        j=n/10-i*10;
        k=n%10;
        if (n==i*i*i + j*j*j + k*k*k)
            printf("%d",n);
    }
    printf("\n");
    return 0;
}
原题目
(第三节实验课)6、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3。
答案:
#include <stdio.h>
int main()
 {
  int i,j,k,n;               //i,j,k保存个位数 十位数 百位数 n保存三位数
  printf("parcissus numbers are ");
  for (n=100;n<1000;n++)    //三位数
   {
    i=n/100;    //分离百位数
    j=n/10-i*10; //分离十位数
    k=n%10;    //分离个位数
    if (n==i*i*i + j*j*j + k*k*k)  //判断是否是水仙花数
      printf("%d ",n);           //打印水仙花数
   }
  printf("\n");
  return 0;
  }
显示IBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/作业.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
3 回复
#2
rjsp2022-03-13 17:39
error LNK2001: unresolved external symbol _WinMain@16
估计是你的VC工程类型建错了,应该建 控制台工程。

程序代码:
#include <stdio.h>

int main( void )
{
    printf( "parcissus numbers are" );
    for( unsigned n=100; n<1000; ++n )
    {
        unsigned a = n/1%10;
        unsigned b = n/10%10;
        unsigned c = n/100%10;
        if( n == a*a*a + b*b*b + c*c*c )
            printf(" %d", n );
    }
    putchar( '\n' );
}
#3
jack101412022-03-17 08:56
链接错误!
#4
nantz2022-03-27 07:01
我说具体点,c语言是用库链接成机器执行码的。
main 和 winmain 只是程序和操作系统的入口。
要想入口程序执行正常,必须初始化代码,如c0.asm 和crt0.asm,mscrt0.asm 等汇编初始码。
而且链接器有一定的规则。
如链接时要指定操作系统名称 subsystem:windows 等等。初学可用DOS6.22版本或以下的DOS操作系统。这样进化快点。
C语言可用TC2.0 truboC 3.1。如果用linux 下的 GCC 那也可以的,可以了解更多。
windows 下用 VC 不用选择其它的了吧。这样问题少点,速度也不差。其它的只是C的编辑器,很多只在发展。都是业余工具。
个人一直认为免费的 wacom C 不错,现在1.9免费版,不常用,速度快,DOS,windows 都不错。就是现在有的代码达不到64位。可以考虑一下。
1