大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includeiostream
创新互联主要从事成都做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务衡山,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int _data) {
data = _data;
next = NULL;
}
};
class LinkList {
private:
Node* head;
public:
LinkList() {
head = NULL;
}
void insert(Node *node, int index) {
if (head == NULL) {
head = node;
return;
}
if (index == 0) {
node-next = head;
head = node;
return;
}
Node *current_node = head;
int count = 0;
while (current_node-next != NULL count index - 1) {
current_node = current_node-next;
count++;
}
if (count == index - 1) {
node-next = current_node-next;
current_node-next = node;
}
}
void output() {
if (head == NULL) {
return;
}
Node *current_node = head;
while (current_node != NULL) {
cout current_node-data " ";
current_node = current_node-next;
}
cout endl;
}
void delete_node(int index) {
if (head == NULL) {
return;
}
Node *current_node = head;
int count = 0;
if (index == 0) {
head = head-next;
delete current_node;
return;
}
while (current_node-next != NULL count index -1) {
current_node = current_node-next;
count++;
}
if (count == index - 1 current_node-next != NULL) {
Node *delete_node = current_node-next;
current_node-next = delete_node-next;
delete delete_node;
}
}
void reverse(){
if(head == NULL){
return;
}
Node *next_node,*current_node;
current_node = head-next;
head-next = NULL;
while(current_node != NULL){
next_node = current_node-next;
current_node-next = head;
head = current_node;
current_node = next_node;
}
}
};
int main() {
LinkList linklist;
for (int i = 1; i = 10; i++) {
Node *node = new Node(i);
linklist.insert(node, i - 1);
}
linklist.output();
linklist.delete_node(3);
linklist.output();
linklist.reverse();
linklist.output();
return 0;
}
int main()
{
Sqlist sqlist;//定义一个链表
int n;//存储要插入到链表中的元素
printf("Input a number:");
scanf("%d",n);
Insert(sqlist,0,n);//调用插入函数Insert(),由于是第一次插入,位置参数x可以设为0
//根据需要,可以添加对应的代码,实现相应功能。
return 0;
}
如果是初学者,没必要从数据结构开始,可以先看一些C的基础知识,先从只有main()函数的简单函数入手,有一定的积累后,这些函数调用、复杂的实现自然而然就会了。贵在坚持……
#include
cstdlib
#include
iostream
using
namespace
std;
//使用std即标准命名空间
int
main(int
argc,
char
*argv[])
//argc是命令参数的个数,argv是参数的内容
{
system("PAUSE");
return
EXIT_SUCCESS;
//返回给操作系统,告知程序已正常结束
}
此外main还有其他名字
比如:
wmain
_tmain
C语言代码如下:
#includestdio.h
int main()
{
int a,b;
printf("please enter two number:"); -----两个数字用空格隔开,以回车键结束输入。
scanf("%d %d",a,b);if(ab)
printf("The max is %d",a);
else if(ba)
printf("The max is %d",b);
else
printf("The two Numbers are the same");
return 0;
}
运行结果图:
扩展资料:
c语言特点:
基本特性:
1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。
2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。 [
4、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。
C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。
Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。
一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
特有特点:
1.C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
2.C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
3.不同的变量类型可以用结构体(struct)组合在一起。
4.只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
5.部份的变量类型可以转换,例如整型和字符型变量。
6.通过指针(pointer),C语言可以容易的对存储器进行低级控制。
7.预编译处理(preprocessor)让C语言的编译更具有弹性。
优缺点:
优点
1.简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。
把高级语言的基本结构和语句与低级语言的实用性结合起来。
C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。
C语言把括号、赋值、强制类型转换等都作为运算符处理。
从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。
它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当.
C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。
C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。
从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
参考资料来源:C语言-百度百科
#include "stdio.h"#include "conio.h"#include "stdlib.h"#include "string.h"#define MAXSTUDENT (1024)#define CheckData()\{\if(!studentNum)\{\printf("没有学生数据,按任意键返回……\n");\getch();\return;\}\}\int studentNum = 0;typedef struct Student{int id;int cScore;int mathScore;}Student;void ClearStudent(Student* student){memset((void*)student,0,sizeof(*student));}void ShowMainMenu(){system("cls");printf("1.增加记录\n2.计算每个学生的总成绩\n3.计算每门课程的平均成绩\n4.按座号查询学生的成绩\n5.按总分排名\n6.输出前n名的学生的成绩\n7.修改成绩\n0.退出\n");}void ShowCountScore(const Student* student){system("cls");CheckData();for(int i = 0;i studentNum;i++)printf("学生%04d的总成绩:%d\n",(student+i)-id,(student+i)-cScore+(student+i)-mathScore);printf("\n按任意键继续……");getch();}void ShowClassAvg(const Student* student){system("cls");CheckData();double sumc = 0;double summath = 0;for(int i = 0;i studentNum;i++){sumc += (student+i)-cScore;summath += (student+i)-mathScore;}printf("C语言平均成绩为:%lf\n",sumc/studentNum);printf("数学平均成绩为:%lf\n",summath/studentNum);printf("\n按任意键继续……");getch();}void AddStudent(Student* student){system("cls");if(studentNum == MAXSTUDENT){printf("人数已满,按任意键返回……\n");getch();}printf("分别录入座号、C语言成绩、数学成绩:\n");int id = 0;int cScore = 0;int mathScore = 0;scanf("%d%d%d",id,cScore,mathScore);for(int i = 0 ;i studentNum;i++)if((student+i)-id == id){printf("座号重复,按任意键返回……\n");getch();return;}(student+studentNum)-id = id;(student+studentNum)-cScore = cScore;(student+studentNum)-mathScore = mathScore;studentNum++;}void SelectFromID(const Student* student){system("cls");CheckData();printf("输入查询ID:\n");int id = 0;scanf("%d",id);printf("查询结果:\n");for(int i = 0;istudentNum;i++)if(id == (student+i)-id){printf("C语言成绩为:%d\n数学成绩为:%d\n",(student+i)-cScore,(student+i)-mathScore);break;}printf("\n按任意键继续……");getch();}void SortForCount(Student* student){system("cls");CheckData();for(int i = 0;i studentNum;i++){for(int j = studentNum -1;j i;j--)if(((student+j)-cScore+(student+j)-mathScore) ((student+j-1)-cScore+(student+j-1)-mathScore)){Student stu;stu = *(student+j);*(student+j) = *(student+j-1);*(student+j-1) = stu;}}}void SortForN(Student* student,int n){SortForCount(student);if(!studentNum)return;n = nstudentNum?studentNum:n;for(int i = 0;i n;i++)printf("第%d名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)-id,(student+i)-cScore,(student+i)-mathScore,(student+i)-cScore+(student+i)-mathScore);printf("\n按任意键继续……");getch();}void UpdateScore(Student* student){system("cls");CheckData();printf("输入修改ID:\n");int id = 0;scanf("%d",id);int i = 0;for(;istudentNum;i++)if(id == (student+i)-id)break;if(i == studentNum)printf("\n查无此人,按任意键继续……");else{printf("输入欲修改的C语言成绩、数学成绩:\n");int cScore = 0;int mathScore = 0;scanf("%d%d",cScore,mathScore);(student+i)-cScore=cScore;(student+i)-mathScore = mathScore;printf("\n按任意键继续……");}getch();}void RunStudent(Student* student){while(1){ShowMainMenu();char chGet = getch();switch(chGet){case '1':AddStudent(student);break;case '2':ShowCountScore(student);break;case '3':ShowClassAvg(student);break;case '4':SelectFromID(student);break;case '5':SortForCount(student);for(int i =0;istudentNum;i++)printf("第%d名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)-id,(student+i)-cScore,(student+i)-mathScore,(student+i)-cScore+(student+i)-mathScore);printf("\n按任意键继续……");getch();break;case '6':{int n = 0;printf("输入N:\n");scanf("%d",n);SortForN(student,n);}break;case '7':UpdateScore(student);break;case '0':return;default:break;}}}int main(){Student* allStudent = (Student*)malloc(MAXSTUDENT*sizeof(Student));memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));RunStudent(allStudent);return 0;}