c语言课程设计字符串,C语言课程设计

经过几个星期的努力,通过对c语言的学习,终于将课程设计完成。这中间也少不了前辈和百度的指导

写课程设计初,我当然也是一筹莫展,没有一丢丢思路。但是嘞,我经过看前辈写的代码和百度,知道了大概的思路于是开始了我的课程设计

首先我先是由简入蘩,先把牌面写出来了(23333,难得实在麻烦,还有个爱心呦),首先要把每一项功能构思好,到后来再补充。基本的主线思路要有。

这个应该是最简单的过程了不多说 开始下一项

2702940ab714

目录出来了,下面把选择写出来

2702940ab714

2702940ab714

简单的选择功能,当你输入的数不在菜单内是将会提示出错,用do while 进行,然后主体就是switch-case 将选择程序写了出来,这样就有了一个顺序,于是我开始一个一个功能向下进行。

接下来我将最重要的结构体打了出来,由于我写的是学生信息管理系统,因此也就没有什么求平均分了,但是排序还是要考察的,结构体中应注意这些字符串当信息进行传递时用的是=还是strcpy,向其中传入信息又应该怎么传,这个就不用多说了

2702940ab714

接下来就是建立动态链表,我基本是根据书的内容,进行改动,搬过来的(首先还是要理解的),书上的方法也是构建动态链表的基本套路。先建立一个空间来存储信息,让开辟的空间等于你需要的空间,然后将表头带着其后的数据输入。在结束时应输入0.当然这里面也有许多可以节省的方法比如在输入信息时,完全可以再构建一个函数,因为在还未出现的各种功能中,大多数需要输入信息,我这个也是我的初代版本,有很多地方可以简化。通过malloc创建一个空间,比较基础的构建链表的方式。

2702940ab714

2702940ab714

通过这个函数已经足够将信息输入了。

下面的操作修改学生信息 首先按照学号查找信息,链表是一串信息,我通过查找表头即可获得接下来的一系列信息。

2702940ab714

删除 先通过表头查询相应的数据,通过free函数释放空间

2702940ab714

刚开始在写查找程序的时候,无意中把内容会删掉。后来虽然是试出来的哪里错了

但是也发现了不足。通过调出表头,将后面的内容调出

2702940ab714

简书写完总感觉少了什么,才发现排序这个过程居然忘打上去了,。

我用的排序方法思路比较清楚,先将第一个当做最小的,然后通过for循环的嵌套进行比较和更换注意字符串的copy不是=。可以说这个方法是简单粗暴。

2702940ab714

增添,我这个与1过程相似,基本是相同的思路。

2702940ab714

存于文件,fwrite为二进制存取 在记事本中会出现乱码的情况,可通过使用fprinft。

里面有一个过程是比较常见的了 for循环 从表头开始将后面的内容存入文件

2702940ab714

这个功能是后来补加的找学长验课程设计的时候,学长给出的一些建议,将内容存于文件的目的就是为了读取,因此后来将这个功能也是补了出来

void duqu(struct student *head)

{

struct student *pt,*p1;

FILE *fp;

head=NULL;

p1=pt=(struct student*)malloc(sizeof(struct student));

if((fp=fopen("C:\\informatin.txt","rb"))==NULL)

{

printf("打开文件失败\n");

return;

}

while(!feof(fp))

{

if(fread(pt,sizeof(struct student),1,fp)!=1)

{

free(pt);

break;

}

else

{

printf("\t学号为:%d\n",p1->num );

printf("\t姓名为:%s\n",p1->name );

printf("专业:%s\n",p1->specialty);

printf("生日: %d\n",p1->birthday);

printf("住址: %s\n",p1->address);

printf("成绩: %d\n",p1->score);

}

if(head==NULL)

{

head=pt;

}

else{

p1->next=pt;

}

p1=pt;

pt=(struct student*)malloc(sizeof(struct student));

}

pt=NULL;

free(pt);

fclose(fp);

}

课程设计中的一些问题

一.出现error:conflicting types for XXX

原因一:

原来是因为没有先做函数声明,而函数位于main()之后。

在main函数前声明了函数原型后,一切ok.

原因二:

头文件的被循环引用,在引用时考虑清楚包含顺序

原因三:

头文件声明和定义参数稍有不同

最终我将结构体至之前的目录 等等全部移到最后 使问题解决

二. 'p1' undeclared (first use in this function)|

“p1”未声明(在这个函数中首次使用)

p1在使用时发现看似相同实际不一样

我通过将首个p1为标准 后面通过复制粘贴替换 使问题解决

关于课程设计中的赋值

三       今天在写课程设计的修改这一环节中出现了error: assignment to expression with array type,出现了这样一种复制错误,原因是因为,在给字符串赋值时使用“=”进行赋值。

于是我总结了字符串赋值的方法

1. 字符串数组不能用"="直接赋值, 即s="Good News!"是不合法的。所以应分

清字符串数组和字符串指针的不同赋值方法。

2. 对于长字符串, Turbo C2.0同意使用下述方法:

比如:

main()

{

char s[100];

strcpy(s, "The writer would like to thank you for"

"your interest in his book. He hopes you"

"can get some helps from the book.");

3.指针数组赋值

比如:

main()

{

char *f[2];

int *a[2];

f[0]="thank you"; /*给字符型数组指针变量赋值*/

f[1]="Good Morning";

*a[0]=1, *a[1]=-11; /*给整型数数组指针变量赋值*/

4.不管是静态,局部还是全局数组仅仅有在定义时才干初始话,否则必须通过其他方法,比方循环操作实现。

不论什么

int a[3];

static int b[3];

a[3] = {1, 2, 3};

b[3] = {1, 2, 3};

没有在定义时初始化都是错误的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值