❶ 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语言编程怎样入门
相对于其他编程语言,C语言还是比较难的。初学者需要注意一下几点:
一是学习顺序
先从熟悉简单的C语言语法开始入门,然后再循序渐进,学习C++语法,WIN32、MFC、QT、网络编程,数据库、数据结构、算法、COM、STL等。构建一个完整的C语言知识体系。这需要一个比较漫长的学习积累的过程。语法入门部分大概2-3个月,其他部分需要学习和工作中慢慢理解和消化了。
二是学习方法
人的知识80%是通过眼睛获取的,但是学习编程有所不同,除了看书、看视频之外,关键是要勤动手,勤动脑。通过做大量的练习、项目实战不断积累代码量。只有代码量足够多了,项目做的多了,才能算是真正学会了。项目能否完成,就是衡量是否学会的唯一标准。后期就是代码的质量和优化问题了,这个只能在项目工作中慢慢积累经验了。
最后强调一点,很多人学不会编程是因为掉坑里了。就是教程或者书上的知识点之间跨越太大,作为一个初学者很难自己摸索出来,前面的知识点没有掌握,接着学习后面的知识,肯定是学不会了。目前绝大多数编程书籍和教程或多或少都有这样的弊端。自学能力比较强的人可以通过各种方法,参考各种网上的资料自己解决。但是大多数自学能力不是很强的人,只能依赖老师、同学、同事或者朋友帮忙指导,或者报名培训机构,老师指导完成了。学习编程通常需要一些好的学习资料,包括纸质的书籍,视频教程,课件,项目练习,代码。零基础入门的书籍推荐《明解C语言》、《C Primer Plus》,还有一本非常特别的汇编和C语言正向逆向结合的书编程达人内部教材《汇编、C语言基础教程》也非常不错,讲解汇编和C语言的本质非常透彻,非常细致。视频资料也是特别多了,各种视频网站、论坛、自媒体都有,比如网易课堂、腾讯课堂、慕客网这些。还有一些论坛,比如CSDN、编程中国等。最重要的一点就是答疑服务,推荐爱达人的网站也很不错,从零基础入门到应用课程,配套的视频、课件、代码、项目、答疑服务都有,还可以兼职接单,学以致用。
❸ C语言入门知识
char a[20],b[20],c[20];上面的a,b,c都是数组变量,在定义时已经为其分配栈内存,而char (*str1)[20],(*str2)[20],(*str3)[20]; 只是分配了4个字节的内存来保存指针变量(即变量本身),而指针的值(即指向)还没有,所以这些指针还不能保存数据!--------------char (*str1)[20],(*str2)[20],(*str3)[20]; str1 str2 str3均为指针,都指向长度为20的char数组.你只定义了指针,但是没有对其进
❹ c语言实训心得3000字
你可以这样写:
下面是我的实训心得:
一、明确学习目的
学习编程对大多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
二、打好基础
学编程要具备一定的基础,总结之有以下几方面:
1、数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
2、逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。
三、注意理解一些重要概念
一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针这些语法、结构的应用例子,做到举一反三,触类旁通。
四、掌握编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。关键是学一种思想,有了思想,那么我们就可以触类旁通。
五、多实践、多交流
掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
六、养成良好的编程习惯
编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
七、上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载。
八、加强计算机理论知识的再学习
学编程是符合“理论→实践→再理论→再实践”的一个认识过程。一开始要具有一定的计算机理论基础知识,包括编程所需的数学基础知识,具备了入门的条件,就可以开始编程的实践,从实践中可以发现问题需要加强计算机理论知识的再学习。程序人人皆可编,但当你发现编到一定程度很难再提高的时候,就要回头来学习一些计算机科学和数学基础理论。学过之后,很多以前遇到的问题都会迎刃而解,使人有豁然开朗之感。因此在学习编程的过程中要不断地针对应用中的困惑和问题深入学习数据结构、算法、计算机原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础和数理逻辑、代数系统、图论、离散数学等数学理论基础知识。这样经过不断的学习,再努力地实践,编程水平一定会不断提高到一个新高度。
❺ C语言实训项目编程一般步骤
称 计算机工程系 专业 网路安全 指导教师
学生姓名 班级
实训
时间 年 月 日---------- 年 月 日
实训项目和地点:
实训项目:C++程序的设计与应用
地点:
实训目的:
在实践过程中,使我们进一步巩固C++程序设计课程所学知识,更加深入地了解面向对象程序设计的主要技术特点以及C++语言的强大编程功能指导学生利用获取信息的手段进一步获取新知识,以解决实训过程中遇到的技术难点,从中提高自学能力;按照软件开发的基本要求引导我们完成实训课题,以便我们了解软件开发的几个重要环节;提高我们的编程技术,使程序的编写更趋于专业化,为从业打下良好的基础、培养我们分工协作的团队精神。
实训设备及器材:
1、计算机配置:Celeron cpu 2.66GHz 1G内存 计算机一台
2、操作系统平台: Windows XP
3、软件开发平台:Visual C++ 6.0
4、其它应用软件:Microsoft Access / SQL Server 、Word、Visio等
实训的步骤和内容:
设计题目:输入4个整数,要求按由大到小的顺序输出
第1步、问题描述:
输入4个整数,要求按由大到小的顺序输出。
第2步、基本思路:
利用选择法进行排序。
第3步、编写程序:
#include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a<b)
{t=a;
a=b;
b=t;}
if(a<c)
{t=a;
a=c;
c=t;}
if(a<d)
{t=a;
a=d;
d=t;}
if(b<c)
{t=b;
b=c;
c=t;}
if(b<d)
{t=b;
b=d;
d=t;}
if(c<d)
{t=c;
c=d;
d=t;}
printf("%d,%d,%d,%d",a,b,c,d);
}
第4步、运行结果:_
输入:5,7,9,4
输出:9,7,5,4
实训结果分析及其心得体会:
通过C++实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没用,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是 一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。
自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。
当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!
感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的互相探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础。
❻ 初中毕业,今年18周岁,没有任何基础要自学C语言,要怎么学哦
虽说C很简单。但往往最难学习的语言是第一个接触到的语言。
自学C,我建议你买本书,不要下载视频来学,那些都说得很浅略的,而且不利于你学习(翻查、知识点串通之类)
买本什么书呢?建议你买国产的,虽说那些书漏洞百出,说得又显浅,不过非常利于入门,等你有点基础后再看深入。
不要听人说需要英语、数学...那些都是吓唬你的。C里面用到高数基本上没有。英语就那几个常用的单词。你完全可以自学。而且可以很厉害。给点信心自己。
遇到不会的可以来问我哦。大家一起来学习。
❼ C语言入门
怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书。