[闲聊]关于C的几个问题

C、C++和Java语言
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

[闲聊]关于C的几个问题

#1

帖子 flyinflash » 2007-04-20 12:37

1、C死了没有?
似乎大多数人都在学C++,Java,其它网络编程语言,深入学C有何用武之地?

2、算法、数据结构最重要?
我正在学C,是不是没有必要太过注重C的细节,只需学习基本语法,花更多的精力在算法、数据结构上?

3、头文件差异?
我仅有针对Windows下的教程/书,有些代码似乎在Linux下运行有问题(我用gcc4编译的),是不是头文件的问题?
例如
#include <math.h>
....
a = sqrt(b);
....

a是算不了的。
头像
jiangpeng
帖子: 223
注册时间: 2006-07-25 9:33
送出感谢: 0
接收感谢: 0
联系:

#2

帖子 jiangpeng » 2007-04-20 12:44

man sqrt
Take what man makes and use it, But do not worship it, For it shall pass. -- Anonymous

Twitter @jiangpeng
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
送出感谢: 0
接收感谢: 2 次
联系:

Re: [闲聊]关于C的几个问题

#3

帖子 dbzhang800 » 2007-04-20 13:01

flyinflash 写了: 3、头文件差异?
我仅有针对Windows下的教程/书,有些代码似乎在Linux下运行有问题(我用gcc4编译的),是不是头文件的问题?
例如
#include <math.h>
....
a = sqrt(b);
....

a是算不了的。
编译的时候 加 -lm没?
skyboy
帖子: 31
注册时间: 2005-10-26 22:18
送出感谢: 0
接收感谢: 0

Re: [闲聊]关于C的几个问题

#4

帖子 skyboy » 2007-04-20 15:51

flyinflash 写了:1、C死了没有?
似乎大多数人都在学C++,Java,其它网络编程语言,深入学C有何用武之地?
c死了没有?
要看你的视角了。
如果你是研究算法等计算机科学理论的大牛,哪种语言都是无所谓的。
如果你是动手写操作系统、做嵌入式开发、系统驱动等关注底层技术的小牛,C依然是首选。
如果不关注底层技术的话,可以迁移到C++
如果重在开发效率而不是运行效率,java等更适合
flyinflash 写了: 2、算法、数据结构最重要?
我正在学C,是不是没有必要太过注重C的细节,只需学习基本语法,花更多的精力在算法、数据结构上?
你对自己的定位?你的目标?
flyinflash 写了: 3、头文件差异?
我仅有针对Windows下的教程/书,有些代码似乎在Linux下运行有问题(我用gcc4编译的),是不是头文件的问题?
例如
#include <math.h>
....
a = sqrt(b);
....

a是算不了的。
第一,你没有真正描述清楚你遇到的问题。怎么编译的?出了什么错?有什么错误信息?运行环境?
第二,这种问题,其实你自己google一下一般都能解决。
第三,读一下《提问的智慧》吧
HP nx 6120,
cpu CM 1.5G,
chip 915GM,
memory 512M,
harddisk 40G 5400rpm。

ubuntu 7.04 feisty,
with beryl, etc.
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#5

帖子 flyinflash » 2007-04-21 18:36

先谢谢skyboy。

本人对《提问的智慧》没有多少好感,因为它似乎倍受爱折腾、有大量空闲和上网时间的人的青睐,很遗憾,我不是这种人。

定位不好说,我是学文科的。但是,计算机是我爱好。我觉得编辑能锻炼人的思维,开发智力。我的确有想过开发一个专门跑在龙芯下的系统——在人的意识下工作,而不是用鼠标和键盘(经过扩展后,最好是能人机结合——就是芯片进脑)。呵呵,说起来有点天方夜谭

有没有关于在Linux下学C的好书?介绍几本,最好是.pdf或者.doc,更好是.txt。
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#6

帖子 flyinflash » 2007-04-21 18:50

#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
 { x=sqrt(i+100);   /*x为加上100后开方后的结果*/
  y=sqrt(i+268);   /*y为再加上168后开方后的结果*/
   if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    printf("\n%ld\n",i);
 }
}

代码: 全选

//3.c
#include "math.h"
int main()
{
    long int i,x,y,z;
    for (i=1;i<100000;i++)
    { 
        x=sqrt(i+100);   /*x为加上100后开方后的结果*/
        y=sqrt(i+268);   /*y为再加上168后开方后的结果*/
        if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
            printf("\n%ld\n",i);
    }
    return 0;
}

代码: 全选

gcc 3.c -o 3
gcc4.0编译出错。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#7

帖子 BigSnake.NET » 2007-04-21 18:54

代码: 全选

        x=sqrt(i+100);   /*x为加上100后开方后的结果*/
        y=sqrt(i+268);   /*y为再加上168后开方后的结果*/ 
有全角空格
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
skyboy
帖子: 31
注册时间: 2005-10-26 22:18
送出感谢: 0
接收感谢: 0

#8

帖子 skyboy » 2007-04-21 20:39

嘘,不要生气。

你这次描述问题,比第一次清楚了一点。不过描述的时候如果再给出错误信息(比如gcc编译的错误信息)就更好了。
楼上给出了你出错的原因。正解。

你看,跟第一次比,你描述问题清楚了,很快就得到了解答。
《提问的智慧》讲的就是这样的提高你的工作效率的方法,为什么不喜欢呢?
毕竟,求人以鱼,不如求人以渔。
flyinflash 写了: 本人对《提问的智慧》没有多少好感,因为它似乎倍受爱折腾、有大量空闲和上网时间的人的青睐,很遗憾,我不是这种人。
磨刀不误砍柴工。
你“不是这种人”是指?
“爱折腾”---似乎是一个hacker的基本特征
“有大量空闲和上网时间”---这是一篇讲如何节省你的时间的文章。如果你读过它,你第一次提出问题的时候,就会有人解答了。
flyinflash 写了: 定位不好说,我是学文科的。但是,计算机是我爱好。我觉得编辑能锻炼人的思维,开发智力。我的确有想过开发一个专门跑在龙芯下的系统——在人的意识下工作,而不是用鼠标和键盘(经过扩展后,最好是能人机结合——就是芯片进脑)。呵呵,说起来有点天方夜谭
这个设想---跟龙芯有什么关系?为什么说“专门跑在龙芯下”?
ps:你知道龙芯使用的是哪些指令集么?
flyinflash 写了:有没有关于在Linux下学C的好书?介绍几本,最好是.pdf或者.doc,更好是.txt。
先把C学好,
然后,想在linux下作开发的话,看《APUE》入门
HP nx 6120,
cpu CM 1.5G,
chip 915GM,
memory 512M,
harddisk 40G 5400rpm。

ubuntu 7.04 feisty,
with beryl, etc.
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#9

帖子 flyinflash » 2007-04-22 21:39

我不是hacker。
这个设想---跟龙芯有什么关系?为什么说“专门跑在龙芯下”?
纯粹是好玩。
想在linux下作开发的话,看《APUE》入门
我不是想干什么开发,只是想学C。
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#10

帖子 flyinflash » 2007-04-22 21:40

我不是hacker。
这个设想---跟龙芯有什么关系?为什么说“专门跑在龙芯下”?
纯粹是好玩。
想在linux下作开发的话,看《APUE》入门
我不是想干什么开发,只是想学C。
头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25
送出感谢: 0
接收感谢: 0

#11

帖子 titainium » 2007-04-24 15:30

顺便说一句,linux不用.doc,用的是OpenOffice.
Titainium
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33
送出感谢: 0
接收感谢: 0

#12

帖子 猛将兄 » 2007-04-24 19:02

个人认为,如果你是文科,以后不想以编程为职业,你又不想做hacker,又不想搞明白《提问的智慧》,还是不要用c了
可以用一些隐藏很多细节的语言实现一些小程序
在龙芯下面开发程序也不是那么难,大部分人不需要和指令集打交道

我说话比较直,希望楼主能明白直人的意思
skyboy
帖子: 31
注册时间: 2005-10-26 22:18
送出感谢: 0
接收感谢: 0

#13

帖子 skyboy » 2007-04-24 19:43

猛将兄 写了:个人认为,如果你是文科,以后不想以编程为职业,你又不想做hacker,又不想搞明白《提问的智慧》,还是不要用c了
猛将兄 写了:我说话比较直,希望楼主能明白直人的意思
赞猛将兄!
HP nx 6120,
cpu CM 1.5G,
chip 915GM,
memory 512M,
harddisk 40G 5400rpm。

ubuntu 7.04 feisty,
with beryl, etc.
luoweitong
帖子: 15
注册时间: 2007-03-16 0:27
送出感谢: 0
接收感谢: 0
联系:

#14

帖子 luoweitong » 2007-04-25 19:10

ubuntu中有什么软件是学习C/C++的吗?因为现在在学C语言。
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#15

帖子 flyinflash » 2007-05-12 13:53

猛将兄 写了:个人认为,如果你是文科,以后不想以编程为职业,你又不想做hacker,又不想搞明白《提问的智慧》,还是不要用c了
可以用一些隐藏很多细节的语言实现一些小程序
在龙芯下面开发程序也不是那么难,大部分人不需要和指令集打交道

我说话比较直,希望楼主能明白直人的意思
哈哈哈哈,我脸皮厚。

我先谢谢您的建议。

回正题。

代码: 全选

//3e.c
/*
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
*/
#include <stdio.h>
#include <math.h>
int main ()
{
	float j, k;
	int i;
	
    printf("\n");
	for (i = 1; i <= 100000; i++)
	{
		j = sqrt(i+100);	/*j为i加上100后开方后的结果*/
		k = sqrt(i+268);	/*k为i加上168后开方后的结果*/

		if (j*j == i+100 && k*k == i+268)	/*如果一个数的平方根的
		                                    平方等 于该数,这说明
											此数是完全平方数*/
            printf(" i = %d\n",i);
	}
    printf("\n");
//	getch();
}
上次由 flyinflash 在 2007-05-12 13:59,总共编辑 1 次。
回复

回到 “C/C++/Java”