c语言设计培训课程
❶ c语言课程设计学分管理程序
程序设计基础实训
项目名称:
学生学分管理
系 别: 计算机工程系
专 业: 计算机网络技术
班 级: 0922211
学生姓名:
指导教师: 韦立蓉
北 京 信 息 职 业 技 术 学 院
2010年 1 月 日
一、项目背景介绍
(概要介绍此项目设计的意义和要求)
本程序为学生学分管理系统。本程序根据现实中的问题通过c语言形式编程。本程序要求能够登记学分,显示学分查询学分,修改学分,删除学分,统计学分。
二、程序功能描述:
(描述基本程序中每个函数的功能,给处各函数流程图)
1、
登记单流程图
2、
显示学分流程图
3、
查询学分流程图
4、
修改信息流程图
5、
删除信息流程图
6、
统计信息流程图
三、设计方案介绍
(基本思想函数调用的思路介绍)
1、主流程图
2、界面设计
(界面设计,函数的定义,功能设计、,罗列出所有需要解决的问题
函数调用问题,循环问题,查找问题,修改问题,查询问题,删除问题,比较问题。
3、变量定义
序号 变量名 变量性质(局部/全局) 功能 作用范围
1 typedef 全局 定义结构体类型 整体
2 Int 全局 定义五门课类型 整体
... Char 全局 定义学号班级姓名类型 整体
5、函数调用的类型
四、测试与分析
(简要介绍测试的作用及意义)
测试可以知道所编写的程序是否可行,通过实际的测试可以找出程序是否符合现实。通过测试和反复修改可以使程序更加人性化。
(一)测试列表
(以表格的形式给出,不少于10个)
测试数据或执行操作 执行结果 是否正确 测试人签名
调用主菜单 显示了主菜单 正确
选择主菜单里的1 请输入学生学生信息…. 正确
输出 有重复有乱码 否
查询 无 否
修改 按学号修改……. 是
按学号查询 显示了该信息 是
按班级查询 只显示里一名同学的信息 否
按学好删除 删除成功 是
须补考基础课的 所有学生信息都显示 否
可升学学生 显示了该显示的信息 是
(二)测试结果分析
(根据以下表格,如实填写并签名)
bug个数 错误类型 错误原因分析 是否修改 设计者签名
1 与count声名中的类型不匹配 少了void count() 是
2 错误 jia.c 19: 表达式语法错在 main 函数中 Scanf中少了&s 是
4 错误 jia.c 31: do语句中必须有while关键字在 main 函数中 没写while 是
5 错误 jia.c 30: 未定义的符号's'在 main 函数中 上面没int I; 是
6 错误 1.c 335: 表达式语法错在 count 函数中 Switch() 括号里没有变量 是
7
五、实训总结
(总结实训过程中的所使用的知识和已实现的功能,总结自己掌握理论知识和动手能力的程度,提出自己的不足之处及改进措施)
通过这一周的实训。我们充分运用了所学的东西编出了解决实际问题的程序。我们运用了函数的调用,循环,定义,比较,查找,删除等知识。通过实际动手,我更加深入的了解了课本上的知识。同时提高了我的动手能力。
实训中我找到了我许多的不足,以前我遇到不董的就会直接去问别人,不独自思考。试训中我学会了独自思考和团队合作。虽然我在编程当中遇到许多问题,但经过独自思考和学习解决了问题。最后编出了管理程序。
C语言学生学分管理程序代码
typedef struct student
{ char num[11],name[7],class[10];
int jichu,renwen,xuanxiu,zhuanye,shiyan;
}STU;
STU st[37];
static int n;
void menu();
void input();
void print();
void query();
void modi();
void del();
void count();
main()
{ int s;
do{
menu();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:input();break;
case 2:print();break;
case 3:query();break;
case 4:modi();break;
case 5:del();break;
case 6:count();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu()
{ clrscr();
printf("\t\t\t****************************\n");
printf("\t\t\t********欢迎您的使用********\n");
printf("\t\t\t******学生学分管理程序******\n");
printf("\t\t\t*** 1-登记学生学分 ***\n");
printf("\t\t\t*** 2-显示学生学分 ***\n");
printf("\t\t\t*** 3-查询学生学分 ***\n");
printf("\t\t\t*** 4-修改学生学分 ***\n");
printf("\t\t\t*** 5-删除学生学分 ***\n");
printf("\t\t\t*** 6-统计学生学分 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t****************************\n");
}
void input()
{ do
{ printf("请输入学生信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[n].num,st[n].name,st[n].class,&st[n].jichu,&st[n].zhuanye,&st[n].xuanxiu,&st[n].renwen,&st[n].shiyan);
n++;
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
}
void print()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void menu1()
{ clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********查询模块**********\n");
printf("\t\t\t*** 1-按学号查询 ***\n");
printf("\t\t\t*** 2-按姓名查询 ***\n");
printf("\t\t\t*** 3-按班级查询 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void query1()
{ char sn[11];
int i;
printf("请输入要查询的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
}
else printf("\n对不起!没有该学号,任意键继续");
getch();
}
void query2()
{ char sn[7];
int i;
printf("请输入要查询的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
}else printf("\n对不起!没有该姓名,任意键继续");
getch();
}
void query3()
{ char sn[10];
int i;
printf("请输入要查询的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\按任意键继续");
break;
}
else printf("\n对不起!没有该班,任意键继续");
getch();
}
void query()
{ int s;
do{
menu1();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:query1();break;
case 2:query2();break;
case 3:query3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu2()
{ clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********修改模块**********\n");
printf("\t\t\t*** 1-按学号修改 ***\n");
printf("\t\t\t*** 2-按姓名修改 ***\n");
printf("\t\t\t*** 3-按班级修改 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void modi1()
{ char sn[11];
int i;
printf("请输入要修改学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
break;
}
getch();
}
void modi2()
{ char sn[7];
int i;
printf("请输入要修改学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
}while(getche()!='n');
break;
}
getch();
}
void modi3()
{ char sn[10];
int i;
printf("请输入要修改学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");
scanf("%s%s%s%d%d%d%d%d",st[i].num,st[i].name,st[i].class,&st[i].jichu,&st[i].zhuanye,&st[i].xuanxiu,&st[i].renwen,&st[i].shiyan);
printf("是否继续输入?(n-退出,任意键继续):");
} while(getche()!='n');
break;
}
getch();
}
void modi()
{ int s;
do{
menu2();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:modi1();break;
case 2:modi2();break;
case 3:modi3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu3()
{ clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********删除模块**********\n");
printf("\t\t\t*** 1-按学号删除 ***\n");
printf("\t\t\t*** 2-按姓名删除 ***\n");
printf("\t\t\t*** 3-按班级删除 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void del1()
{ char sn[11];
int i,j;
printf("请输入要删除学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].num)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del2()
{ char sn[7];
int i,j;
printf("请输入要删除学分学生的姓名:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].name)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del3()
{ char sn[10];
int i,j;
printf("请输入要删除学分学生的班级:");
scanf("%s",sn);
for(i=0;i<n;i++)
if(strcmp(sn,st[i].class)==0)
{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
printf("\n是否删除(任意键确认,n\取消)");
if(getche()!='n');
{if(i!=n-1);
for(j=i;j<n-1;j++)
st[j]=st[j+1];
n--;
printf("\n该记录已删除");
getch();
break ;
}
}
else printf("\n对不起!没有该学号,任意键继续");
}
void del()
{ int s;
do{
menu3();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:del1();break;
case 2:del2();break;
case 3:del3();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
void menu4()
{ clrscr();
printf("\t\t\t*****************************\n");
printf("\t\t\t***********统计模块**********\n");
printf("\t\t\t*** 1- 可升学的学生 ***\n");
printf("\t\t\t*** 2-需补考基础课的 ***\n");
printf("\t\t\t*** 3-需补考专业课的 ***\n");
printf("\t\t\t*** 4-需补考选修课的 ***\n");
printf("\t\t\t*** 5-需补考人文课的 ***\n");
printf("\t\t\t*** 6-需补考实验课的 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void count1()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void count2()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu<60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}void count3()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye<60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void count4()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu<60&st[i].renwen>=60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void count5()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen<60&st[i].shiyan>=60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void count6()
{ int i;
printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");
for(i=0;i<n;i++)
if(st[i].jichu>=60&st[i].zhuanye>=60&st[i].xuanxiu>=60&st[i].renwen>=60&st[i].shiyan<60)
printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i].num,st[i].name,st[i].class,st[i].jichu,st[i].zhuanye,st[i].xuanxiu,st[i].renwen,st[i].shiyan);
getch();
}
void count()
{ int s;
do{
menu4();
printf("\n\t\t\t\t 请选择:");
scanf("%d",&s);
switch(s)
{ case 0:break;
case 1:count1();break;
case 2:count2();break;
case 3:count3();break;
case 4:count4();break;
case 5:count5();break;
case 6:count6();break;
default:printf("选择无效!");
}
}while(s!=0);
getch();
}
❷ c语言课程设计的学习方法与技巧
1.大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!
2.计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。
3.记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。
4.C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。
5.C语言与C++语言是两回事。就像大熊猫和小熊猫一样,只是名字很像。
6.请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。
7.对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事。C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)
8.学习编程的秘诀是:编程,编程,再编程;
9.认真学习每一门专业课,那是你今后的饭碗。
10.在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,做得多了,毕业后就错得少了
11.从现在开始,在写程序时就要养成良好的习惯。
12.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路。
13.你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。
14. V C、C #、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法!
15.记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!
16.我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。
17.抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。
18.多去图书馆,每个学校的图书馆都有很多好书等你去看!
19.编程不是技术活,而是体力活。
20.如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!
21.你要有足够的韧性和毅力!有个高手出一一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
22.找到只属于你自己的学习方法。不要盲目的追随别人的方法,适合自己的才是最好的!
❸ c语言程序课程哪里可以学习
买书自学是不错的方法,大部分书后都自带光盘的。一开始书中的步骤可能有点繁琐,先不要着急简化,打好基础后可以再回过去看看哪些可以优化的,这样理解会更加深刻些
❹ c语言程序设计视频教程
看视频教程比较耗时,还是看书更实在。
1、程语语言其实是一个很初级的工具,但是又必须熟练的掌握它,学懂一门编程语言就好像学会了写字,但是会写字的人不见得会写文章,而会写文章又不见的写得好。可是如果不会写字,那就一定写不出文章来。
2、在学习C语言之前,应该学好计算机基础。里面的很多概念对于C程序员都是非常重要的。如果在着手学习C之前,或者已经开始学习C,但是碰到了很多问题,应该再把计算机基础的书拿来好好看看。如果有足够的耐心,十足的毅力,应该再学习C语言之前学学汇编,这会对许多比较细腻的概念有清醒的认识。那么可以在看完一遍C语言的教材后再看,但是一定要看一遍,一定会受益匪浅。不管看什么书,先认真地看懂,不要贪速度,应该力求深入的理解。如果能够比较熟练的解决一本教材上的所有习题,那么就应该转入对算法的学习,尽管此时的C语言还称不上精通,有许多细节问题还不了解,许多问题还没有碰到,但是这些问题会在后面的工作和学习中得到解决的。
3、不需要多少资料,掌握一本《The C Programming Language》就足够了。继续学习就更加容易。建议不要找捷径,通过考试除外,真正的水平提高是建立在编程实践积累基础上的,必须一个一个程序的完成才能提高。
❺ 大学学了c语言的程序设计出来后想再学多点,有没有哪里的培训机构不错,谢谢大家了
个人觉得重庆达内不错,老师大多来自高端企业的一些技术人员,教学也挺有质量的,只要你肯好好学,找到好工作也不是问题
❻ C语言课程设计前言
C语言作为一门最通用的语言,在过去很流行,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外地要学习它。记得大学里,很多学校都把谭浩强教授的《C程序设计》作为入门教材,这是绝佳的选择。然而,要更进一步,更全面而深入地学习呢?显然有点力不从心。本书正是为了弥补这个缺憾而写的,希望能对想比较全面而深入学习C语言程序设计的人有所帮助。
从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。
C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础
从入门到精通:本书分上下两篇,上篇针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程。下篇则介绍了C语言的高级程序设计技巧,包括常用算法、底层控制鼠标、绘图、加密、压缩等应用。
适用多种操作系统:本书实例都通过GCC编译器调试,读者不仅可在Windows环境下使用本书学习C语言,也可在Linux环境下使用本书学习C语言。循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。例如,先介绍数据的存储,再介绍数据的输入/输出;先介绍简单的程序设计概念,再介绍指针等C语言的难点。重点突出:指针是C语言的重点和难点,本书用了大量的篇幅,从不同方面对其进行讲解,并列举了大量的实例,帮助读者理解并掌握指针。
然后在加点这本书分几章,各是什么内容,主要针对的是C语言什么功能,最后写些祝福大家学习进步之类的话就可以了
❼ 推荐一本比较好的C语言学习教程
公认的清华大学出版社出版的谭浩强主编的《C语言程序设计》不错;
我建议你看完版这本以权后,把三级考试上级100题做一下,没提高回来找我!!
C语言软件:初学者都用tc2.0;我现在用的是Dev--C++,用着不错,可以用断点判断程序运行过程,挺不错,要不你试试!呵呵
❽ 学习C语言程序设计的网站有哪些
校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格
4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。
5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。
6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。
7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。
出现问题原因清楚了,那么如何学习呢?请你看
在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。
第一步、验证性练习
在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:
1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。
2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。
3、修改C语言语法错误时要注意以下两点:
(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。
(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。
例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的
printf("Hello World!\n");
中的Hello World!改成你的姓名,运行一下程序,看有什么变化?
再如求1+2+3...+100的和的程序
#include <stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?
第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?
找出程序结果变化的原因,就加深了对C语句的理解。
第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。
在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。
第四步、增强程序的调试能力
在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。
注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!
注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。
例如,将Hello World程序中语句
printf("Hello World!\n");
中的;改成中文的分号;
运行一下程序,看有什么结果?
调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。
即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。
第五步、研究典型的C语言程序,提高程序设计能力
C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。
计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?
解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.
❾ 怎样才能学好C语言这门课程(程序设计基础)
没思路是你没有画程序流程图,偷懒,或者没学好怎么画程序流程图
程序流程图一旦掌握了,写很多程序自然就了然于胸,不过要坚持画,天天画!
还有写程序就好像下棋里面的下陷阱,要估计好所有可能会发生的情况,还有一些用户错误的输入,如0除以任何数的情况等等,说白了就好像设陷阱游戏。
还有学好编程还要牢牢把握数据结构这门课,一旦把握了,对些代码非常有帮助。
最后一点写程序要学会多角度思维,变相思维,多讨论,多问,自自然然就可以了。