首页编程c语言自学路线?如何自学编程

c语言自学路线?如何自学编程

编程之家2026-05-31727次浏览

大家好,如果您还对c语言自学路线不太了解,没有关系,今天就由本站为大家分享c语言自学路线的知识,包括如何自学编程的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

c语言自学路线?如何自学编程

C语言入门怎么自学 需要哪些资料

参考我的自学路线:

0.选定了C就别放弃。入门C可能需要一个多月的连续学习时间,但其他听上去更“厉害”的编程语言会花费更长的时间,并且它们需要有C的基础才能深入学习。

1.一台笔记本或平板,不推荐在手机上编程。

2.如果是windows操作系统,下载安装mingw,在命令行下熟悉了“编辑—编译—链接—执行”这个基本流程之后,就可以尝试VS2017 community或者Code::Blocks或者其他任何C/C++的集成开发环境。

想学好就不要直接用IDE!在从命令行转到IDE之前,你甚至可以花半个小时的时间熟悉一下Makefile,不学这个也没事。

3.一本《C Primer Plus》实体书,简单详细,入门经典。不推荐看电子版,伤眼睛。

c语言自学路线?如何自学编程

4.一支笔,如果不想在书上记笔记,则你还需要一本笔记本。

5.最重要的:受得了枯燥。知识点不弄懂不跳过。看书的时候不做一些不相干的事:看电影,聊天,玩游戏……

我在过去的四个月里看完了《C Primer Plus》和《C++ Primer》,为了学好编程彻底放弃了玩游戏、听音乐(一听歌就会跟着唱,没办法认真学习)。

说实话,完整地看完第一遍是一个很痛苦的过程,不过现在再复习起来,最多也就是两天一遍。每次复习都能巩固新知识。

自学C语言教程

没有基础可以入门,通过努力可以达到初、中级程序员的程度,但再往上走,就比较困难了。后面需要不少算法、英文和数学知识。

教程的话可以参考下面两本教程:

c语言自学路线?如何自学编程

谭浩强:《C语言程序设计》

李铭城黄中豪陈宇芬:《资料结构 C》

英文的话,进入初级之前都不怎么需要。但是进入中级后,需要读一些英文资料。不过现在翻译比较厉害,绝大部分的资料都有翻译。但是要进入高级,就必须要学习英文了,因为最新最核心的资料都是英文的,翻译的往往都会有错误。

另外数学在早期影响不大,但是进入中级后就必须要了。因为估算算法时间复杂度、空间复杂度、图、树等等,都涉及不少数学知识。当然如果只是做简单应用或者驱动的话,这方面要求就不会太高。

最后给一个学习大概的路线图:

入门级的学习,只要能够掌握:代码三大结构(循环、分支、顺序)、流程图、C语言关键字和语法、输入输出、文件操作、套接字操作。就算是初级满级了。

初级程序员:数据结构和算法(排序,查找)、了解软件开发模型(瀑布模型、敏捷模型、原型模型等等)、了解UML、系统常用API、网络通信、编译和SDK环境搭建

中级程序员:设计模式、多线程编程、网络通信(服务器、客户端)、面向对象编程、掌握UML、系统网络/文件/互斥/线程/事件/安全API、STL、相关法律法规、知道一些常用软件架构(MVC等)

c语言编写路线

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

#define MAX 100

#define MAXNUM 10000000

int previous[MAX-1];//求路径需要

int pp[MAX-1];//记录最短路径

typedef struct graphnode

{

int vexnum;//顶点

int arcnum;//弧

int gra[MAX][MAX];//邻接矩阵表示0或1

}Graph;

int dist[MAX];//最短距离

int arc[MAX][MAX];//权

int main()

{

void Dijkstra(Graph*g,int v);

int i,j,n,m;

int v;//源点

Graph*G;

G=(Graph*)malloc(sizeof(Graph));

printf("vexnum:\n");

scanf("%d",&G->vexnum);

printf("arcnum:\n");

scanf("%d",&G->arcnum);

printf("graph:\n");

for(i=0;i<G->vexnum;i++)

for(j=0;j<G->vexnum;j++)

{

scanf("%d",&G->gra[i][j]);

}

for(i=0;i<G->vexnum;i++)

for(j=0;j<G->vexnum;j++)

{

if(G->gra[i][j]==1)

{

printf("请输入%d到%d的权值:",i,j);

scanf("%d",&arc[i][j]);//若有弧则输入i到j直接的权

}

else

arc[i][j]=MAXNUM;

}

printf("请输入源点v的值:");

scanf("%d",&v);

Dijkstra(G,v);

printf("请输入源点所要到达的点:\n");

scanf("%d",&n);

pp[0]=0;

i=1;

m=n;//记录n的值

while(n!=0)//求0到其他点路径

{

pp[i]=previous[n];

i++;

n=previous[n];

}

printf("Path:0->");

for(j=G->vexnum-1;j>=0;j--)

if(pp[j]!=0)

printf("%d->",pp[j]);

printf("%d\n",m);

return 0;

}

void Dijkstra(Graph*G,int v)

{

int previous[MAX-1];

int newdist;

bool sign[MAX];

if(v<0||v>MAX-1)

{

printf("该源点不存在!\n");

return;

}

for(int i=0;i<G->vexnum;i++)//初始化

{

dist[i]=arc[v][i];

sign[i]=false;

if(dist[i]==MAXNUM)

previous[i]=0;

else

previous[i]=v;

}

dist[v]=0;

sign[v]=true;

for(i=0;i<G->vexnum;i++)// i<n-1待定

{

float temp=MAXNUM;

int u=v;//u中间变量

for(int j=0;j<G->vexnum;j++)

if((!sign[j])&&(dist[j]<temp))

{

u=j;

temp=dist[j];

}

sign[u]=true;

for(j=0;j<G->vexnum;j++)

if((!sign[j])&&(arc[u][j]<MAXNUM))

{

newdist=dist[u]+arc[u][j];

if(newdist<dist[j])

{

dist[j]=newdist;

previous[j]=u;

}

}

}

for(i=0;i<G->vexnum;i++)

if(dist[i]!=MAXNUM)

printf("从%d到%d的最短路径是%d\n",v,i,dist[i]);

else

printf("从%d到%d无最短路径\n",v,i);

printf("\n");

}

这是Dijkstra算法求单源最短路径算法上程序中假定顶点从0开始,搜索整个图,然后求出0到其他各点的最短距离,存放在dist数组中,main函数后面几行是求0到其他各点的路径基本上能满足你的要求了

关于c语言自学路线和如何自学编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java小游戏网站?诺基亚java游戏合集求一个简单的编程代码,初学编程100个代码