1. 有哪些c语言的小项目适合新手练习的,几百到几千行的那种
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以网络一下:)Kernighan和Ritchie的《TheCProgrammingLanguage》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《CReferenceManual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《PointersonC》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《CTrapsandPitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《ExpertCProgramming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。Unix/Linux还是Windows,这是个很大的问题不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如VisualStudio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的VisutalC++工具栏按钮就可以开始写Hello,World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。所以我建议初学者应该以VisualC++6.0(不是VisualC++.NET)或者DevC++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。VisualC++6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而DevC++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用TurboC2.0作为实验环境,这是相当不可取的,原因其一是TC2.0对C标准几乎没有支持,其二是TC2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC2.0编译出32位程序,不过那过于复杂了)。等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a=b==c、(a=b)==c和a=(b==c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
2. 推荐一些学完C语言可以完成的小项目
贪吃蛇游戏
计算器
黑白棋游戏
迷宫问题
扫地雷游戏
通讯录
学生成绩管理
图书借阅管理等等……
3. 怎么用C语言做项目
所谓项目,在一定的时间内,利用有限的资源和时间,完成特定的目的,这就是项目。
Turbo C 是一种工具,它有它擅长的地方,也有它不擅长的地方
我98年接过一个项目,用TC开发,结果失败,前前后后写了10000多行代码,只完成了一个图形化界面的部分,当时Win 95已经出来了,我写了一个学期的东西,人家用VB一下午就出来了。
但是我也知道TC是完全可以做项目的,我毕业后找工作,一家软件公司差点就要我了,他们就是用TC做项目的,写驱动程序,TC+汇编
写了这么多,不知你看明白了没有,TC能不能做项目,答案是肯定的。至于你要代码,我只能说,要到的可能性不大。因为项目的特性之一就是独特性,每一个项目都有它自己的特点,别人的代码给你也用不上,最多只是起个学习作用。但是对于别人来说,那是职业道德问题,哪个公司的源代码也不会允许拿给外人的。
4. C语言怎么做项目
和所有的项目开发一样,首先进行可行性分析,然后进行需求分析,完成之后进行概要设计,这些工作都和使用的语言无关;再往后,就要给出详细设计,此时开始和开发语言开始建立联系啦,调试,完成后发布。
所以说,项目和语言开发工具有一定的联系,这种联系这发生在软件的开发过程中。
5. 怎么用C语言开发软件
语言本身是一种工具,真正要开发软件还是需要掌握系统提供的API和具体的开发模式。
C语言在Linux可以开发出不错的程序,如果是Windows的话,建议再学学C++,再看看一些关于Win32和MFC的书;
给你推荐几本:《Windows程序设计》蓝皮的,初学Windows编程比较不错
《Windows核心编程》这本是国外写的,再深入的话可以看看
Linux嘛:可以看看《Unix/Linux编程实践教程》,深入的话看《UNIX环境高级编程》
6. C语言可以开发哪些项目
那就很多了,只不过C语言开发比较麻烦,驱动程序,系统底层,游戏引擎,嵌入式开发,单片机等等的都是C语言来开发的。CS就是C语言来开发的引擎
7. 我想用C语言开发一个小项目
很小的游戏,你可以试试猫捉老鼠,请尽量使用图片进行制作。猫捉老鼠的难度还是挺简单的,你可以试试对你生活中有帮助的,例如解方程,解应用题。
我现在正在开发一个游戏,类似于打砖块,但有四个板都能动,就像SHATTER一样。但还是得看自己的爱好,你喜欢什么就做什么。
如果LZ不嫌弃的话,就点一下我下面的最佳答案吧:)
8. 想做程序员,C语言可以开发哪些项目
C语言目前主要用于嵌入式,单片机和操作系统内核的开发,更上层的有更高级的语言代替
9. C语言开发入门及项目实战的前言
欢迎来到C语言的世界,并通过本书学习C语言。本书内容反映了C语言的最新变化,其编排方式非常适合学习和讲授这门语言。
C语言是一种面向过程的编程语言,可用于开发各种应用程序及系统软件,近几年,C语言的发展呈逐年上升趋势,这也说明了C语言的简单、现代特点正被更多人认同。 本书提供了C语言编程从入门到项目开发所必备的知识,并且分篇进行讲解,使读者的学习更有针对性。学习本书内容时,一定要熟练掌握入门篇的所有内容,以便为以后的应用开发打下扎实的基础;然后可以有针对性地学习提高篇的内容,为开发专业软件项目存储必备的知识;最后学习一个项目的完整开发过程,为以后的实际项目开发积累一定的经验。学习本书内容时,各篇内容需要花费的精力比例如下图所示。
第1篇 入门篇(第1~11章):主要包括初识C语言、一个简单的C语言程序、算法入门、常用数据类型、运算符与表达式、数据输入/输出函数、选择及分支结构程序设计、循环结构、数组、函数编程基础、指针解析等内容。通过本篇的学习,读者应熟练掌握C语言编程的基础知识,并能开发一些小型的应用程序。
第2篇 提高篇(第12~17章):主要包括常用数据结构、位运算、存储管理、预处理和函数类型、文件的读写操作、图形图像处理等内容。通过本篇的学习,读者可以开发基本的应用程序,并能够掌握开发综合应用程序的方法。
第3篇 应用篇(第18章):本篇通过一个完整的图书管理系统,运用软件工程的设计思想,讲解如何进行软件项目的实践开发。书中按照编写项目计划书→系统设计→数据库设计→创建项目→实现项目→运行项目→解决开发常见问题的过程进行介绍,带领读者一步一步亲身体验开发项目的全过程。 ? 技术新颖,讲解细致
使用Visual C++ 6.0和Turbo C 2.0进行讲解,淋漓尽致地展示出了C语言的基础知识,使读者能够真正掌握C语言初学者应该学习的知识。
? 实例丰富,贴近实际
对每个技术点进行详细讲解时,都提供了大量的示例和实例进行演示,这些示例和实例大部分来源于实际开发,读者可以学为所用,快速提升自身开发技能,并有效解决实际开发中遇到的各类问题。
? 动手实践,一体学习
每章都提供了大量的上机演练和实战模拟,使读者在学习技术的同时,能够亲自动手实践,体验编程带来的成就感。另外,上机演练和实战模拟的详细讲解及源码与《C语言经典编程282例》中的实例相对应,读者可以根据自身实际情况进行参考。
? 注释详尽,视频讲解
为了便于读者更好地学习和使用本书,书中所有的代码都提供了详尽的注释。而且,本书配套资源提供了覆盖全书的语音视频讲解教学录像,读者可以通过视频快速、直观、轻松地学习。
本书配套资源
本书提供了内容丰富的配套资源,包括自学视频、源程序、素材,以及模块库、案例库、题库、素材库等多项辅助内容,读者朋友可以通过如下方式获取。
第1种方式:
(1)请登陆清华大学出版的网址,在网页右上角的搜索文本框中输入本书书名(注意区分大小写和留出空格),或者输入本书关键字,或者输入本书ISBN号(注意去掉ISBN号间隔线“-”),单击“搜索”按钮。
(2)找到本书后单击超链接,在该书的网页下侧单击“网络资源”超链接,即可下载。
第2种方式:
访问本书的新浪微博:C语言图书,找到配套资源的链接地址进行下载。 ? 大中专院校师生 ? 面临就业的学生
? 零基础学习人员 ? 相关培训机构的老师和学员
? 初、中级程序开发人员 ? 准备从事软件开发工作的求职者
? 编程爱好者 ? 立志编程的其他专业人士
10. c语言做一个小项目(或称大作业),解决一个实际问题。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void xieruwenjian(struct txgl stu[],int count,char wenjian[]);
void huanyuan(struct txgl stu[],char wenjian[]);
void txxxlr(struct txgl stu[],int &count);
void xianshi(struct txgl stu[],int count);
void chaxun(struct txgl stu[],int count);
struct txgl
{
char xinming[10];
char di[30];
int dianhua;
int youbian;
};
void main()
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t ----------------------------------------------------- \n");
printf("\t ----------------------------------------------------- \n");
printf("\n");
printf("\t \n");
printf("\t \n");
printf("\t 欢迎进入通讯管理系统 \n");
printf("\t \n");
printf("\t \n");
printf("\t ----------------------------------------------------- \n");
printf("\t ----------------------------------------------------- \n");
printf("\n");
printf("\n");
printf("\n");
system("PAUSE"); //清屏操作
system("CLS");
int a; //选择使用
int count=0; //学生的个数
char wenjian[]={"stu.txt"};
struct txgl stu[100];
//huanyuan(stu,wenjian);
while(1)
{
printf("1 通讯的信息录入\n");
printf("2 写入文件\n");
printf("3 显示所有信息\n");
printf("4 查询\n");
printf("0 退出\n");
printf("请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:txxxlr(stu,count);break;
case 2:xieruwenjian(stu,count,wenjian);break;
case 3:xianshi(stu,count);break;
case 4:chaxun(stu,count);break;
case 0: exit(0);
default:{
printf("\n你输入的选项有误!请按照提示输入\n");
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
}
}
}
}
void xieruwenjian(struct txgl stu[],int count,char wenjian[])
{
FILE *fp;
if(count<=0)
{
printf("\n没有任何信息无法写入文件\n");
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
return;
}
fp=fopen(wenjian,"w");
for(int i=0;i<count;i++)
{
fprintf(fp,"%s","姓名:");
fprintf(fp,"%s",stu[i].xinming);
fprintf(fp,"%s","地址:");
fprintf(fp,"%s",stu[i].di);
fprintf(fp,"%s","电话:");
fprintf(fp,"%d",stu[i].dianhua);
fprintf(fp,"%s","邮编:");
fprintf(fp,"%d",stu[i].youbian);
fprintf(fp,"\n");
}
fclose(fp);
printf("\n文件写入成功\n");
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
}
void huanyuan(struct txgl stu[],char wenjian[])
{
int i=0;
FILE *fp;
fp=fopen(wenjian,"r");
if(fp==NULL)
printf("没有任何信息读取\n");
else
{
while(!feof(fp)) //feof是文件结束标志的文件,feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0
{
//fscanf(fp,"%s","姓名:");
fscanf(fp,"%s",stu[i].xinming);
printf("%s\n",stu[i].xinming);
//fscanf(fp,"%s","地址:");
fscanf(fp,"%s",stu[i].di);
printf("%s\n",stu[i].di);
//fscanf(fp,"%s","电话:");
fscanf(fp,"%d",&stu[i].dianhua);
printf("%d\n",stu[i].dianhua);
//fscanf(fp,"%s","邮编:");
fscanf(fp,"%d",&stu[i].youbian);
printf("%d\n",stu[i].youbian);
i++;
//fprintf(fp,"\n");
printf("文件读出成功\n");
}
}
fclose(fp);
}
void txxxlr(struct txgl stu[],int &count)
{
char a;//选择退出使用
printf("\n录入的通讯信息,包括,姓名,地址,电话,邮编\n");
do{
printf("\n请输入%d个人的姓名:",count+1);
scanf("%s",stu[count].xinming);
printf("\n请输入%d个人的地址:",count+1);
scanf("%s",stu[count].di);
printf("\n请输入%d个人的电话:",count+1);
scanf("%d",&stu[count].dianhua);
printf("\n请输入%d个人的邮编:",count+1);
scanf("%d",&stu[count].youbian);
count++;
printf("\n请问你还要输入吗?按y确认,按n取消\n");
scanf("%s",&a);
}while(a=='y');
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
}
void xianshi(struct txgl stu[],int count)
{
int i;
if(count<=0)
{
printf("没有任何数据不能显示\n");
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
return;
}
for(i=0;i<count;i++)
{
printf("\n\n\n");
printf("第%d个人的资料\n",i);
printf("姓名:");
printf("%s\n",stu[i].xinming);
printf("地址:");
printf("%s\n",stu[i].di);
printf("电话:");
printf("%d\n",stu[i].dianhua);
printf("邮编:");
printf("%d\n",stu[i].youbian);
printf("\n");
}
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
}
void chaxun(struct txgl stu[],int count)
{
char xm[10];
int i;
if(count<=0)
{
printf("没有任何信息不能实现查询\n");
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
return;
}
printf("请按姓名查询,请输入姓名:\n");
scanf("%s",xm);
for(i=0;i<count;i++)
{
if(strcmp(xm,stu[i].xinming)==NULL) break;
}
printf("\n查询到%s的信息如下:\n",xm);
printf("姓名:%s\n",stu[i].xinming);
printf("地址:%s\n",stu[i].di);
printf("电话:%d\n",stu[i].dianhua);
printf("邮编:%d\n",stu[i].youbian);
printf("\n---------------------------------------------------\n");
printf("\n请选择....\n");
printf("\n---------------------------------------------------\n");
}