C语言课程设计程序的修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言课程设计程序的修改相关的知识,希望对你有一定的参考价值。
源程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include
<time.h>
#include <windows.h>
#include
<iostream.h>
...................
void
identify()
FILE *fp;
char a[15];
char
b[100];
printf("\n 考生身份验证
");
printf("\n 请输入学号及密码,按ENTER键继续
");
printf("\n---------------------------------------------------------");
printf("\n
学号 密码 (学号与密码间以空格(SPACE)相隔开)
");
printf("\n---------------------------------------------------------\n");
scanf("%s
%s",a,b);
while
(1)
if((fp=fopen("students.txt","r"))==NULL)
printf("\n信息读取失败");
exit(0);
else
int i;
char num[1000][15];
char
passcode[1000][100];
for(i=0;i<1000;i++)
fscanf(fp,"%s,%s",&num[i][15],&passcode[i][100]);
if(strcmp(char
num[i][15],char a[15])==0)&&(strcmp(passcode[i][100],b[100])==0))
//unknown
menu(); //这是第52行//
else
printf("\n密码或学号错误");
exit(0);
fclose(fp);
.....................
汇编时显示:
--------------------Configuration: 考试系统 - Win32
Debug--------------------
Compiling...
考试系统.c
D:\课设\考试系统.c(52) : error
C2143: syntax error : missing ')' before 'type'
D:\课设\考试系统.c(52) : error
C2198: 'strcmp' : too few actual parameters
D:\课设\考试系统.c(54) : error C2181:
illegal else without matching if
执行 cl.exe 时出错.
考试系统.obj - 1 error(s), 0 warning(s)
怎么改呀!
项目名称:
学生学分管理
系 别: 计算机工程系
专 业: 计算机网络技术
班 级: 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();
是否可以解决您的问题? 参考技术A //自定义控件, 然后在工具箱拖过来用 再把BackColor 设置为Transparent
public partial class TransparentListBox : ListBox
public TransparentListBox()
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
protected override void OnSelectedIndexChanged(EventArgs e)
this.Invalidate();
base.OnSelectedIndexChanged(e);
protected override void OnPaint(PaintEventArgs e)
if (this.Focused && this.SelectedItem != null)
Rectangle itemRect = this.GetItemRectangle(this.SelectedIndex);
e.Graphics.FillRectangle(Brushes.Green, itemRect);
for (int i = 0; i < Items.Count; i++)
e.Graphics.DrawString(this.GetItemText(Items[i]), this.Font, new SolidBrush(this.ForeColor), this.GetItemRectangle(i));
base.OnPaint(e);
追答
?
参考技术B if(strcmp(charnum[i][15],char a[15])==0)&&(strcmp(passcode[i][100],b[100])==0))
strcmp调用的时候只要把字符串名传进去。
if (strcmp(num[i], a) == 0 && strcmp(passcode[i], b) == 0)追问
fscanf(fp,"%s,%s",&num[i][15],&passcode[i][100]);
这一句呢?
students.txt中的文件录入格式是 学号,密码 为了省事儿全都是数字,这么提取对不对呀?就我这个程序而言,信息提取的对吗?
输入也是只要传地址, 应为字符串名字就是他的地址,所以应该像下面这样
fscanf(fp,"%s,%s",num[i], passcode[i]);
另外一个问题,输入的时候“%s,%s",格式控制这里这个分隔符要注意,如果你存储的时候是以','(逗号)隔开的,输入时就要加上逗号"%s,%s",如果存储时是空格隔开的,不要把逗号加上去,要用”%s%s"
num,passcode -> "%s,%s"
num passcode -> “%s%s"
c语言课程的总结
帮忙写下c语言课程的总结~谢谢谢谢急需字数越多越好
1.先学习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程序;初步记忆新学章节的知识点、养成良好的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语言的综合应用能力. 参考技术A 一学期结束了,对C语言也有了一些认识,不过自我感觉学得不太好,好在还是学到了知识:
了解了C的发展以及编程的基本步骤,学会了Printf输出语句,C语言的运算,知道了有哪几种数据类型,还有我觉得经常用的if语句,if一eles语句,for循环,while 语句,do-while语句等等,基本会用数组和指针,还有字符串的处理,对了还有才学的结构体。
还有许多知识点,不一一罗列了,总之C语言要学的东西太多了,听大二大三的都说C很简单,但我并不认为他像人们说的那样简单,C是最基础的,基础不代表简单,也可能是我没学好才有这样的感受。 参考技术B C语言课程设计总结报告
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
在设计中我们遇到了很多编程问题,最后在谢老师的辛勤指导下,我们慢慢的进入状态,我们做的是一个俄罗斯方块的设计,内容包括很多。运用的函数也是非常的复杂,我们一组有八个人,我们分工合作,首先我们一起完成了结构题,然后我们一人各负责一个函数程序的设计,经过几星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,是我们最大的问题,不过,我们做好后,经过老师的讲解和改错,我们也懂得设计和运用了。同时,也让我知道了,合作的力量,如果是孤军奋战的话,我们也不能在规定时间内完成,最终达到游纫而解。同时在这次课程设计中让我们认识到做程序设计这项工作中我门要具备以下素质:
很强的团队精神和协作能力和文档习惯。
良好的文档是正规研发流程中非常重要的环节,缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
此外编程是一项高精度的工作所以我们要有规范化,标准化的代码编写习惯
通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。
我们还要有模块化思维能力 模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,
学习和总结
善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,
生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆!
同时,在谢老师的身上我们学得到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
以上是关于C语言课程设计程序的修改的主要内容,如果未能解决你的问题,请参考以下文章