什么是c语言程序设计

什么是c语言程序设计,第1张

什么是C语言?C语言的简介。

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。

鄙人是吃软件饭。听到这样的问题,想起自己的过去。

分享一下自己对楼主这个问题的看法。

如果LZ是想通过如计算机二级考试这样为目的。

C是一个不错的选择,因为界面简单,采用TC,考试范围只局限于程序设计一方面。而且不需要什么知识,所谓需要一些数学知识,只是因为初学者不适合用实际问题来做练习题目,而多采用数学上面的问题和一些程序设计上的经典问题给学习进行练习,而且这些数学知识基本上以告诉你公式或告诉解决问题的具体方法为形式的,而且很简单,根本不需要知道为什么,只要套用就行了。在我们这儿小学生学C的都有(在参加全省小学生程序设计比赛的选手,很多编程能力能够达到大学生水平)。所以根本不必想像他有多难。

但是因为它的“古老”性和“低级”性。所以习惯于windows *** 作的非常不适应,tc的 *** 作界面(那个是DOS界面下的程序),完全通过键盘完成所有 *** 作。有时候还需要了解一些DOS命令;另外C里面的“指针”的概率对计算机基础理论知识不是很熟悉的人,接受“指针”的概念可能需要费些过程。

所以一般情况下,对只想通过考试的人,我的建议是学VB。这个很容易理解,而且实际实用性比C稍微强一点。

所以,如果LZ,知道这一些的数学知识和计算机基础理论知识,对学C的还是有些帮助(个人感觉计算机理论知识更为重要,帮助你理解C的原理,数学没那么多的重要性,它就是用来做练习的,如比找素数,求约数等)

如果,LZ以后想深入的学习计算机,请继续看。否则直接OVER

无论是什么专业方向(程序设计,网络技术,网站制作,多媒体制作,嵌入式开发),C都是你的首选,因为学习它有几个作用:帮助你了解计算机的一些原理知识;帮助你掌握开发语言的基础,方便你以后学习任何开发语言;学习怎么用程序设计的思想解决问题(计算机的思维跟人类还是有很大差别的哦,特别得知道面向过程这种程序设计思想)。

想学好C,学习的时候注意不错计算机基础理论知识:

1)学习“指针”的时候。这个可以帮助理解程序如何使用内存的。

2)学习三大结构的时候注意里面的一些经典问题和经典算法。看看这些经典算法是如何通过程序的角度解决问题的。

3)学习分析问题解决问题的方法。特别是如何将一个大问题分解为小问题解决,将相同的解决步骤提炼为一个过程。这些都是面向过程程序设计思想。

4)因为C的低级性,所以这时候是学习二进制的最好机会。在开始阶段会遇到二进制的问题的。这个也比较重要。虽然很基础,但毕竟其他一些理论课会用到,也有一定的实用性(特别是学习嵌入式里的单片机)。

最后,祝你走好第一步。

具体输入如下:

#include "stdioh"

main()

{  int a,b;

printf("请输入两个整数(a,b):");

scanf("%d,%d",&a,&b);                        

printf("和:%d\n",a+b);          

printf("差:%d\n",a-b);

printf("积:%d\n",ab);

printf("商:%f\n",(float)a/b);}

C语言简介:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

语言程序开发的步骤

1

定义程序目标。在开始写程序之前,应对希望程序要做什么有一个清晰的想法。考虑程序需要的信息,程序需要进行的计算和 *** 作

2

设计程序。在对程序需要完成的事情有一个概念性的认识后,就应该决定程序要如何完成它,用户界面应该是怎么样的,程序应该如何组织

3

编写代码。在程序有了清晰的设计后,就可以通过编写代码来实现它了。也就是说,将设计构思转变为C语言。一般来说

4

编译源代码。编译细节取决于编程环境,编译器还检查程序是否为有效的C语言程序。

具体的设计方法,可以参考如下代码:

#include <stdioh>

#include <stringh>

#include <iostreamh>

#include <stdlibh>

#include <windowsh>

typedef struct studentinfo //结构体定义

{

int num;//学号

char name[64];//姓名

int sex;//性别,1为男性,0为女性

float math;//数学

float english;//英语

float politic;//政治

float chinese;//语文

float total;//总成绩

struct studentinfo next;

}STUDENT;

#define FILENAME "D:\\1txt"

//定义默认的数据库文件

#define DELAYTIME 1500

//显示信息,延时

void create_menu();

STUDENT new_student();

STUDENT create_linkbyfile(char );

STUDENT del_info(STUDENT );

int save_info(char ,STUDENT ,int);

int find_infile_printf(char );

int pri_whole_link(STUDENT );

STUDENT printf_sort(STUDENT );

void free_link(STUDENT );

void main() //主函数

{

create_menu();

}

void create_menu()

//功能:输出功能菜单,提供人-机接口

{

int menu_Num;

STUDENT head=NULL;

char ch;

char file_name[256];

while(1)

{

system("cls");

cout<<"\t\t学生成绩管理系统\n";

cout<<"##########################################\n";

cout<<"#\t\t 1新增学生信息\t\t #\n";

cout<<"#\t\t 2加载数据库\t\t #\n";

cout<<"#\t\t 3删除学生信息\t\t #\n";

cout<<"#\t\t 4保存学生信息\t\t #\n";

cout<<"#\t\t 5数据库查询\t\t #\n";

cout<<"#\t\t 6原序输出\t\t #\n";

cout<<"#\t\t 7排序输出\t\t #\n";

cout<<"#\t\t 8退出\t\t\t #\n";

cout<<"##########################################\n";

cout<<"请输入 *** 作编号:";

cin>>menu_Num;

switch (menu_Num)

{

case 1:

free_link(head);//释放链表空间

head=new_student();//新增学生信息

break;

case 2:

free_link(head);//释放链表空间

cout<<"请输入要加载的数据库文件的路径"<<endl;

cin>>file_name;

head=create_linkbyfile(file_name);//读取数据文件

if(head!=NULL)

{

cout<<"数据库"<<file_name<<"已加载"<<endl;

Sleep(DELAYTIME);

}

break;

case 3:

del_info(head);//删除学生信息

break;

case 4://保存学生信息

if (head==NULL)

{

cout<<"请先生成学生信息"<<endl;

Sleep(DELAYTIME);

}

else

{

cout<<"想将学生信息保存到哪个数据库文件?";

cin>>file_name;

cout<<"请选择保存方式:0追加到文件末尾 1覆盖文件\n";

cin>>menu_Num;

if(save_info(file_name,head,menu_Num)==0)//0表示追加,1表示覆盖

{

cout<<"信息保存失败\n";

}

else

{

cout<<"数据已保存到"<<file_name<<endl;

Sleep(DELAYTIME);

}

}

break;

case 5:

find_infile_printf(FILENAME);//数据库查询

break;

case 6://原序输出信息

pri_whole_link(head);

cout<<"返回主菜单? Y/N\t";

do

{

cin>>ch;

}while(ch!='Y'&&ch!='y');

break;

case 7://排序输出信息

do

{

if((head=printf_sort(head))==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

break;

}

else

{

cout<<"选择其他方式排序? Y/N\t";

cin>>ch;

}

}while(ch=='Y'||ch=='y');

break;

case 8:

free_link(head);//释放链表空间

exit(0);

break;

default:

cout<<"输入有误!请重新输入!"<<endl;

break;

}

}

}

STUDENT new_student()

//功能:创建学生信息(通过链表)

//返回值:头结点指针

{

STUDENT pnew,p,head;

float pfloat;

char ch;

head=NULL;

do

{

system("cls");

pnew=(STUDENT )malloc(sizeof(STUDENT)1);

cout<<"请输入学生的学号(0表示取消): ";

cin>>pnew->num;

if(0>=pnew->num)

{

break;

}

cout<<"请输入学生的姓名:";

cin>>pnew->name;

while(1)

{

cout<<"请输入学生的性别:0/1\t";

cin>>pnew->sex;

if(pnew->sex&&pnew->sex-1)

{

cout<<"性别输入错误,0表示女性,1表示男性,请重新输入"<<endl;

}

else

{

break;

}

}

cout<<"请依次输入学生的数学、英语、政治、语文成绩:"<<endl;

for(pnew->total=0,pfloat=&pnew->math;pfloat<&pnew->math+4;)

{

cin>>pfloat;

if(pfloat<0||pfloat>150)

{

cout<<"成绩输入错误,只能为0~150"<<endl;

}

else

{

pnew->total+=pfloat;

pfloat++;

}

}

if(head==NULL)

{

head=pnew;

}

else

{

p->next=pnew;

}

p=pnew;

pnew->next=NULL;

cout<<"##########################该学生信息已生成#########################\n";

cout<<"建立另一个学生的信息? Y/N\t";

cin>>ch;

}while(ch=='Y'||ch=='y');

return head;

}

STUDENT create_linkbyfile(char filename)

//功能:读取文件,创建链表

//参数:如果filename不为空,则打开该文件,如果filename为空,要求输入文件位置

//创建的链表的所有结点的next全部修改,指向物理地址上的下一个结点

{

system("cls");

FILE fp;

STUDENT head,ptemp,pnew;

head=NULL;//初始化head为空

if(filename==NULL)//若filename为空,要求输入文件绝对地址

{

char file_name[256];

cout<<"请输入数据库文件的路径:"<<endl;

cin>>file_name;

if(NULL==(fp=fopen(file_name,"rb")))

{

cout<<"数据库连接失败\n";

return 0;

}

}

else

{

if(NULL==(fp=fopen(filename,"rb")))

{

cout<<"数据库连接失败\n";

return 0;

}

}

for(ptemp=NULL;;)

{

pnew=(STUDENT )malloc(sizeof(STUDENT)1);

if(fread(pnew,sizeof(STUDENT),1,fp)!=NULL)

{

if(ptemp!=NULL)

{

ptemp->next=pnew;

}

else

{

head=pnew;

}

ptemp=pnew;

}

else

{

if(ptemp!=NULL)

{

ptemp->next=NULL;

}

else

{

head=NULL;

}

free(pnew);

break;

}

}

fclose(fp);

return head;

}

STUDENT del_info(STUDENT head)

//根据学号,删除链表的结点

{

system("cls");

STUDENT p1,p2;

int num;

if (head==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

return 0;

}

cout<<"请输入要删除学生的学号:";

cin>>num;

for(p1=head;p1!=NULL;)

{

if(p1->num==num)/到

{

if(p1==head)//要删除的结点是头结点

{

head=p1->next;

}

else

{

p2->next=p1->next;

}

cout<<"成功删除!!";

}

p2=p1;

p1=p1->next;

}

return head;

}

int save_info(char filename,STUDENT head,int flag)

//功能:将链表按Binary写入文件末尾

//参数:

//1filename文件名,绝对地址

//2head指向链表的头结点

//3flag 0追加或1覆盖数据

//返回值:失败则返回0

{

system("cls");

FILE fp;

STUDENT p;

char openmethod[8];

if(flag==0)

{

strcpy(openmethod,"ab+");//追加

}

else

{

strcpy(openmethod,"w");//覆盖

}

if(NULL==(fp=fopen(filename,openmethod)))//

{

cout<<"数据库连接失败"<<endl;

Sleep(DELAYTIME);

return 0;

}

else

{

for(p=head;p;p=p->next)

{

if((fwrite(p,sizeof(STUDENT),1,fp))==NULL)

{

cout<<"数据库创建失败"<<endl;

return 0;

}

}

}

fclose(fp);

return 1;

}

int find_infile_printf(char filename)

//功能:根据学号和姓名来查询某个学生

//参数:filename数据库文件

//返回值:失败返回0

//直接搜索文件,缺点是速度慢

//也可先根据文件创建链表,再搜索链表,缺点是如果文件较大,占用内存多

{

system("cls");

FILE fp;

STUDENT stu;

int num;

char stu_name[64];

char ch;

if(filename==NULL)

{

return 0;

}

do

{

memset(stu_name,0,sizeof(stu_name));

cout<<"查询学号或查询姓名? 1查询学号 0查询姓名";

//flag=1根据学号来查询,flag=0根据姓名来查询

cin>>num;

if(num==1)

{

cout<<"输入要查询的学号:";

cin>>num;

cout<<"正在为您查询学号为"<<num<<"的学生……"<<endl;

}

else if(num==0)

{

cout<<"输入要查询的姓名:";

cin>>stu_name;

cout<<"正在为您查询姓名为"<<stu_name<<"的学生……"<<endl;

}

else

{

cout<<"输入有误"<<endl;

return 0;

}

if(NULL==(fp=fopen(filename,"rw")))

{

cout<<"数据库连接失败\n";

return 0;

}

else

{

while(fread(&stu,sizeof(STUDENT),1,fp)!=NULL)

{

if(strcmp(stuname,stu_name)==0||stunum==num)

{

cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";

//输出该学生的所有信息

cout<<stunum<<"\t"<<stuname<<"\t"<<stusex<<"\t"<<stumath<<"\t"<<stuenglish<<"\t"<<stupolitic<<"\t"<<stuchinese<<"\t"<<stutotal<<endl;

//不加break;可支持多个相同数据的索引

}

}

}

cout<<"##########################查询完毕#########################\n";

cout<<"查询另一个学生的信息? Y/N\t";

cin>>ch;

}while(ch=='Y'||ch=='y');

fclose(fp);

return 1;

}

int pri_whole_link(STUDENT head)

//功能:显示整条链表的学生信息

//参数:head 头结点指针,如果head为空,返回空

{

system("cls");

STUDENT p;

if (head==NULL)

{

cout<<"数据库未加载"<<endl;

Sleep(DELAYTIME);

return 0;

}

cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";

for(p=head;p;p=p->next)

{

cout<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->math<<"\t"<<p->english<<"\t"<<p->politic<<"\t"<<p->chinese<<"\t"<<p->total<<endl;

}

return 1;

}

STUDENT printf_sort(STUDENT head)

//功能:根据学号|某科目成绩|总成绩对链表进行排序,然后输出

//参数:head链表头指针,如果head为空,返回空

//返回值:返回新的链表的头结点指针

{

system("cls");

STUDENT p1,p2,ptemp,pfinished=NULL;

int num;

int flag;

if (head==NULL)

{

return 0;

}

cout<<"选择排序依据 0数学成绩1英语成绩2政治成绩3语文成绩4总成绩\n";

cin>>num;

// cout<<"升序/降序输出? 0升序1降序";

// cin>>flag;

for(p1=head;p1->next!=pfinished;)//对链表进行从大到小排序(这里用冒泡法)

//p1使之总是指向头结点,pfinished使之总是指向已排序好的最前面的结点

//ptemp作为中介,保存p2的上一个结点

{

for(p2=p1;p2->next!=pfinished;)

{

if((&(p2->math)+num)<(&(p2->next->math)+num))//p2的值小于p2->next的值,交换 ptemp p2 p2->next

{

if(p2==p1)//头结点要交换

{

p1=p2->next;

p2->next=p1->next;

p1->next=p2;

ptemp=p1;

}

else

{

ptemp->next=p2->next;

ptemp=p2->next;

p2->next=ptemp->next;

ptemp->next=p2;

}

}

else//不需要交换,则p2、ptemp前进1位

{

ptemp=p2;

p2=p2->next;

}

}

pfinished=p2;

}

// if(flag==1)

// {

pri_whole_link(p1);

// }

// else

// {

// }

cout<<"##########################信息显示完毕#########################\n";

return p1;

}

void free_link(STUDENT head)

//释放链表空间,如果head,什么都不做

{

STUDENT p1,p2;

for(p1=head;p1;p1=p2)

{

p2=p1->next;//先保存,否则

free(p1);//free后 p1->next数据丢失

}

}

以上就是关于什么是c语言程序设计全部的内容,包括:什么是c语言程序设计、c语言程序设计需要哪些专业知识、c语言程序设计. 由键盘输入两个整数,分别计算这两个数的和、差、积、商,并输出结果。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9805666.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存