1. 首页 > 科技快讯 >

c++代码大全 上古卷轴5召唤npc代码大全

用C语言编写一个有关顺序表的程序代码

#include

c++代码大全 上古卷轴5召唤npc代码大全c++代码大全 上古卷轴5召唤npc代码大全


#include

#define Size 50

//定义顺序表结构体类型

typedef struct Table{

inthead;//顺序表头指针,为整型

int length;//顺序表中元素个数

int size; //顺序表的长度

}Table;

//创建顺序表

Table CreateTable(){

Table T;

if(!(T.head=(int)malloc(Sizesizeof(int)))){

printf("内存分配错误!\n");

exit(0);

}T.size=Size;

T.length=0;

return T;

}//增加

void Insert(Table T,int set,int values)//set为插入的位置,values为值

{//首先判断插入位置是否正确

if(set<0||set>T.length){

printf("插入位置不正确!\n");

reutrn;

}//判断是否有足够的内存空间存储增加的数

if(T.length==T.size){

if(!(T.head=(int)realloc(T.head,(T.size+10)sizeof(int)))){

printf("内存分配错误!\n");

exit(0);

}T.size+=10;

}//插入数据

for(int i=s.length;i>set;i--)

T.head[i]=T.head[i-1];

T.head[set]=values;

T.length++;

}//删除

void Delete(Tabel T,int set)

{if(set<0||set>=T.length)

{printf("删除数的位置不争确,删除失败!\n");

return;

}//输出数据

for(int i=set;i

T.head[i]=T.head[i+1];

T.length--;

}//查找

int Search(Tabel T,int value)

{for(int i=0;i

if(T.head[i]==value)

return i;

return -1;

}

简单的C语言代码

补加#include 后没有问题了啊,难道你是指输出的结果不是你想要的,那么你可以将换行符放到字符串后面,如:

printf("\nHello World");=>printf("Hello World\n");

是不是就是你想要的效果?

另外,main函数没有参数的,不用加个void在里面。

因为i j的值在for的外面赋值了

i的次循环结束时j的值永远是6所以里面的语句不会再被执行了。故只循环了一次i,即i=1的时候,其他值都没有进去到j循环。

#include

void main(void)

{printf("Hello World \n");

}你的意思应该是要换行,那要写在后面啦。

没有错误的。

加油哦~

简单就是输出helloWord

代码如下:

#include

int main(){

printf("helloword");

return 0;

}

1、很懂代码都非常简单,输出1+1=2是其中之一。

2、例程:

#include

int main()

{printf(“1+1=2

”);

return 0;

}

这段程序没有错误的,我用VC++ 6.0运行出来了~~

Hello World 不换行~~~

教你写代码,简单易学的C语言教程

简单:

int main()

{return 0;

}

如何用C语言编程序:九九乘法表

C语言输出九九乘法表,主要运用for循环进行控制输出。

需要注意的是:在何时需要加空格,何时需要换行。

#include

void main()

{int i=1,j=1;

for(i=1;i<=9;i++) // 控制行,一共9行

for(j=1;j<=i;j++) // 控制各行的列数

{printf("%d%d=%d",j,i,ij); // 输出乘法表各项内容

if(i!=j) printf("\t"); // 相邻两项直接加空格

if(i==j) printf("

"); // 控制列数

}}

我为你列了两种乘法表:

下面是种:

#include

void main()

{int h,l;

for (h=1;h<=9;h++)

{for (l=1;l<=9;l++)

{if (h<=l)

printf("%d%d=%-3d",h,l,hl);

else printf("%7c",' ');

}printf ("\n");

}}

还有一种乘法表为:

#include

void main()

{int i,j;

for (i=1;i<=9;i++)

{for (j=1;j<=9;j++)

{if (i<=j)

printf("%d%d=%-3d",i,j,ij);

}printf("\n");

}}

#include "stdio.h"

void main()

{int i=1,j=1;

for(i = 1;i < 10; i++)

{for(j = 1;j <= 9; j++)

{if(i<=j)

printf(" %d%d=%d\t",i,j,ij);

}printf("\n");

}getch();

}

#include "stdio.h"

void main()

{int i=1,j=1;

for(i = 1;i < 10; i++)

{for(j = 1;j <= 9; j++)

{if(i>j)

printf(" \t");

else

printf(" %d%d=%d\t",i,j,ij);

}printf("\n");

}getch();

}

九九乘法表c语言

#include

#include

main()

int i;

int j;

for(i=1;i<=9;i++)

{for(j=1;j<=i:j++)

printf("%d%d=%d\t",i, j,ij);

printf("\n");

}return0 }

用c语言编程序九九乘法表这个方法还是有的可以根据乘法表的规则设置一套适合的程序

求大神整理c语言指令符号及用法大全。

编译指令

编译指令

说明

#include

包含另一个文件

#define

定义一个宏(macro)或是常量

#undef

取消一个宏常量的定义

#a和#enda

在程序中加入汇编语言的程序

#ifdef、#ifndef、#else、#endif

用于条件式的编译

注解://—单行注解;

基本数据类型 (int,float,double,char,void)

数据类型

类型说明

长度(位)

数据长度

bit

位1

0,1

char

字符

8—128~127

unsigned char

无符号字符

80~255

signed char

有符号字符

8—128~127

int

整型

16

—32768~32767

short int

短整型

16

—32768~32767

unsigned int

无符号整型

16

0~65535

signed int

有符号整型

16

—32768~32767

long int

长整型

32

—2147483648~2147483647

unsigned long int

无符号长整型

32

0~4294967295

signed long int

有符号长整形

32

—2147483648~2147483647

float

浮点数(实数)

32

0.175e-38~0.402e38

double

双精度浮点

32

0.175e-38~0.402e38

void

空没任何数据

用户自定义数据类型格式

typedef struct{

数据类型 变量序列1;

数据类型 变量序列1;

...

}自定义数据类型的名称;

保留字

_at_,alien,bdata,break,bit,case,char,code,compact,const,continue,data,

default,do,double,far,else,enum,extern,float,for,goto,if,funcused,idata,int,

inline,interrupt,large,long,pdata,_priority_,reentrant,return,it,sfr,sfr16,

short,sigend,sizeof,all,static,struct,switchc_task_,typedef,using,union,

unsigned,void,volatile,while,xdata

常量表示法

常数

规则

范例

十进制

一般十进制格式

1234567890

二进制

开头加上0b

0b00001110

八进制

开头加上O

O0123

十六进制

开头加上0x

0xFF45

无符号整数常量

结尾加上U

30000U

长整数常量

结尾加上L

299L

无符号长整数常量

结尾加上UL

327800UL

浮点数的常量

结尾加上F

4.234F

字符常量

以单引号括起来

‘a’

字符串常量

以双引号括起来

“hello”

-----------------------------------------------------运算符-----------------------------------------------------

算术运算

运算符

说明

范例

执行结果

+加

c=a+b;

c 等于10

—减

d=a—b;

d 等于6

e=ab;

e 等于16

/除

f=a/b;

f 等于4

%取余数

g=a%b;

g 等于0

++

加1

c++;相当于c=c+1;

c 等于11

——

减1

d——;相当于d=d—1;

d 等于5

=等于

a=8;

设置a等于8

+=

先相加在等于

e+=5;相当于e=e+5;

e 等于21

—=

先相减在等于

f—=5;相当于f=f—5;

f 等于—1

=

先相乘在等于

b=5;相当于b=b5;

b 等于0

/=

先相除在等于

a/=5;相当于a=a/5;

a 等于1

%=

先取余数在等于

a%=5;相当于a=a%5;

a 等于3

※假设a等于8,b等于2

比较运算

运算符

说明

范例

执行结果

==

等于

a==5

F!=

不等于

a!=5

T<

小于

a<5

F>

大于

a>5

T<=

小于等于

a<=5

F>=

大于等于

a>=5

T※比较运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8

逻辑运算

运算符

说明

范例

执行结果

&&

AND

(a>5)&&(a<10)

T||

OR

(a<5)||(a>10)

F!

NOT

!(a>10)

T※逻辑运算结果是个布尔值既TRUE(真值)或FALSE(假值)。假设a等于8

位逻辑运算

运算符

说明

范例

执行结果

&AND

a&0x01

a等于1

|OR

a|0x80

a等于0x85

~NOT

~a

a等于0xFA

^XOR

a^0xFF

a等于0xFA

<<

左移

a<<1

a等于0x0A

>>

右移

a>>1

a等于0x0A

※假设a等于5

----------------------------------------------------控制命令---------------------------------------------------

if语句

if(条件) 语句1;

else 语句2;

例:if(d==4) d=0; //如果d等于4就设置d等于0

else d++; //否则就将d加1

if(ticks==0) { //如果ticks等于0

ticks=1000; //ticks 设置成1000

counter[0]++; //counter[0]加1

}嵌套if语句

例:if(counter[0]==10) {

counter[1]++;

counter[0]=0;

if(counter[1]==10) {

counter[2]++;

counter[1]=0;

}}

switch语句

switch (变量) {

case 常量1:语句1; break;

case 常量2:语句2; break;

case 常量3:语句3; break;

......

default ; 语句n;

}for循环

for (初值,条件,变化值) 语句;

例:for(i=0;i<10;i++) x=x+i;

for(i=1;i<10,i++)

for(j=1;j<10,j++)

printf(“%d %d”,i,j);

无穷循环:

for( ; ; );

while循环

while (条件) 语句;

例:while (ch!=!’A’) ch=getche();

无穷循环:

while(1);

do/while循环

do {

语句;

...

} while(条件);

例:do {

ch=getche();

} while (ch!=”A”);

goto语句

loop1:

x++;

if(x<100) goto loop1;

----------------------------------------------------指针和函数------------------------------------------------

指针的定义

数据类型 指针变量的名字;

例: char p;

int x;

指针与数组

例: char filename[80];

char p;

p=filename; //指针p存放filename的开始地址

int x[5]={1,2,3,4,5};

int p,sum,i;

p=x; //指针p存放数组x的开始地址

for(i=0;i<5;i++)

sum=sum+p[i]; //p[i]相当于x[i]

指针的运算

1.针变量前面加上号就是取得指针所指向位置的内容。

例:int x[5]={1,2,3,4,5};

int p;

p=x; //指针p存放数组x的开始地址

p=10; //相当于设置x[0]等于10

2.变量前面加上&符号,可以取得一个变量的位置。

例:int x,y;

int p;

p=&x; //指针p存放x的地址,相当于p是指向x 的指针

p=1; //相当于设置x等于1

3.&符号也可以加在数组的前面

例:int x[5];

int p;

p=&x[2]; //指针p存放x[2]的地址,相当于p是指向x[2]的指针

p=50; //相当于设置x[2]等于50

函数

函数类型 函数名称(参数序列);

参数说明

{函数的主体

}例:void delay (void) { //不返回任何数据的函数

unsigned char i,j; //没有任何参数的函数

for(i=0,i<255,i++)

for(j=0,j<255,j++);

}main()

{...

delay(); //调用函数

}例:unsigned char sum(unsigned chat a,unsigned chat b)

{unsigned chat x;

check_GLCD_busyflag(); //函数中可以调用另一个函数

x=a+b;

return x; //return会返回x的数据

}中断服务函数

void 中断服务程序的名称(void) interrupt 中断号码using 寄存器组号码

{中断服务子程序主体

}中断号码

#define IE0_VECTOR 0 //0x03

#define TF0_VECTOR 1 //0x0B

#define IE1_VECTOR 2 //0x13

#define TF1_VECTOR 3 //0x1B

#define SIO_VECTOR 4 //0x23

对于S51有定时器2

#define TF2_VECTOR 5 //0x2B

例:static void xint0_isr(void) interrupt IE0_VECTOR(或0) using 1

{unsigned char i,j=0xFF;

for(i=0,i<16,i++)

{j++;

P1=j; //将数值输出到P1口

delay_4isr();

}}

-----------------------------------------------------汇编语言--------------------------------------------------

在C中加入汇编语言

例:void delay100us()

{#pragma a

mov r7,#1

more: mov r3,#48

djnz r3,$

djnz r7,more

#pragma enda

}----------------------------------------------------宏(macro)----------------------------------------------

宏的定义

%define (macro名称) (macro的指令)

例:%define (write_1) (

setb DI

serb SK

clr SK

)#define 宏的名称 宏的指令

例:#define uchar unsigned char

C语言中的符号总结

运算符的种类C语言的运算符可分为以下几类;

1. 算术运算符

用于各类数值运算,包括加减乘除求余自增自减共七种运算

{ ( + ) ,( - ),( ) ,( / ) ,( % ),( ++ ),(-- )}。

2. 关系运算符

用于比较运算,包括大于(>),小于(<),等于(==),大于等于(>=),

小于等于(<=),不等于(!=)共六种。

3.逻辑运算符

用于逻辑运算,包括与(&&)或(||)非(!)三种.

4.位作运算符

参与运算的量,按二进制位进行运算,包括:

位与(&),位或(|),位非(~),为异或(^),左移(<<),右移(>>)共六种。

5.赋值运算符

用于赋值运算,分为:

简单赋值(=)

复合算术赋值(+=,-=,=,/=,%=)

复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

6.条件运算符

这是一个三目运算符,用于条件求值(?:)。

7.逗号运算符

用于把若干表达式组合成一个表达式(,)。

8.指针运算符

用于取内容()和取地址(&)两种运算。

9.求字节数运算符

用于计算数据类型所占用的字节数(sizeof)。

10.特殊运算符

有括号(),下标[],成员(→, .)

1.C的数据类型

基本类型,构造类型,指针类型,空类型

2.基本类型的分类及特点

类型说明符 字节 数值范围

字符型char 1 C字符集

基本整型int 2 -32768~32767

短整型short int 2 -32768~32767

长整型 long int 4 -214783648~214783647

无符号型 unsigned 2 0~65535

无符号长整型 unsigned long 4 0~4294967295

单精度实型 float 4 3/4E-38~3/4E+38

双精度实型 double 8 1/7E-308~1/7E+308

3.常量后缀

L或l 长整型

U或u 无符号数

F或f 浮点数

4.常量类型

整数,长整数,无符号数,浮点数,字符,字符串,符号常数,转义字符。

5.数据类型转换

a自动转换

在不同类型数据的混合运算中,由系统自动实现转换, 由少字节类型向多字节类型转换。 不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型。

b强制转换

由强制转换运算符完成转换。

6.运算符优先级和结合性

一般而言,单目运算符优先级较高,赋值运算符优先级低。 算术运算符优先级较高,关系和逻辑运算符优先级较低。 多数运算符具有左结合性,单目运算符、三目运算符、 赋值

7.表达式

表达式是由运算符连接常量、变量、函数所组成的式子。 每个表达式都有一个值和类型。 表达式求值按运算符的优先级和结合性所规定的顺序进行。

表示输出类型的格式字符 格式字符意义

d 以十进制形式输出带符号整数(正数不输出符号)

o 以八进制形式输出无符号整数(不输出前缀O)

x 以十六进制形式输出无符号整数(不输出前缀OX)

u 以十进制形式输出无符号整数

f 以小数形式输出单、双精度实数

e 以指数形式输出单、双精度实数

g 以%f%e中较短的输出宽度输出单、双精度实数

c 输出单个字符

s 输出字符串

标志字符为-、+、#、空格四种,其意义下表所示:

标志格式字符 标 志 意 义

- 结果左对齐,右边填空格

+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号

# 对c,s,d,u类无影响;对o类, 在输出时加前

缀o 对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点

格式字符串

格式字符串的一般形式为: %[][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:

1.类型

表示输入数据的类型,其格式符和意义下表所示。

格式 字符意义

d 输入十进制整数

o 输入八进制整数

x 输入十六进制整数

u 输入无符号十进制整数

f或e 输入实型数(用小数形式或指数形式)

c 输入单个字符

s 输入字符串

转义字符

转义字符是一种特殊的字符常量。转义字符以反斜线”\”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。

常用的转义字符及其含义

转义字符 转义字符的意义

\n 回车换行

\t 横向跳到下一制表位置

\v 竖向跳格

\b 退格

\r 回车

\f 走纸换页

\\ 反斜线符”\”

\’ 单引号符

\a 鸣铃

\ddd 1~3位八进制数所代表的字符

\xhh 1~2位十六进制数所代表的字符

广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A” ,\102表示字母”B”,\134表示反斜线,\XOA表示换行等。转义字符的使用

在C语言中,对变量的存储类型说明有以下四种:

auto 自动变量

register 寄存器变量

extern 外部变量

static 静态变量

自动变量和寄存器变量属于动态存储方式, 外部变量和静态变量属于静态存储方式。在介绍了变量的存储类型之后, 可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型。 因此变量说明的完整形式应为: 存储类型说明符 数据类型说明符 变量名,变量名…; 例如:

static int a,b; 说明a,b为静态类型变量

auto char c1,c2; 说明c1,c2为自动字符变量

static int a[5]={1,2,3,4,5}; 说明a为静整型数组

extern int x,y; 说明x,y为外部整型变量

与指针有关的各种说明和意义见下表。

int p; p为指向整型量的指针变量

int p[n]; p为指针数组,由n个指向整型量的指针元素组成。

int (p)[n]; p为指向整型二维数组的指针变量,二维数组的列数为n

int p() p为返回指针值的函数,该指针指向整型量

int (p)() p为指向函数的指针,该函数返回整型量

int p p为一个指向另一指针的指针变量,该指针指向一个整型量。

指针变量的赋值

p可以有以下两种方式:

(1)指针变量初始化的方法 int a;

int p=&a;

(2)赋值语句的方法 int a;

int p;

p=&a;

(1)取地址运算符&

(2)取内容运算符

c语言编程代码

代码:

扩展资料:

例如:输入某年某月某日,判断这一天是这一年的第几天。

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

代码 代码如下:

main()

{int day,month,year,sum,leap;

printf("\nplease input year,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/先计算某月以前月份的总天数/

{case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

defaultrintf("data error");break;

}sum=sum+day; /再加上某天的天数/

if(year%400==0||(year%4==0&&year%100!=0))/判断是不是闰年/

leap=1;

else

leap=0;

if(leap==1&&month>2)/如果是闰年且月份大于2,总天数应该加一天/

sum++;

printf("It is the %dth day.",sum); }

#include "stdafx.h" //这是 VS 预编译头。其他系统删除。

#include

#include //使用 system("pause"); 时需要。

//MS 否决了 scanf 等函数,加上下句,任然可用。其他系统删除。

#pragma warning(disable:4996)

// VS 标准主函数声明,其他系统请根据系统更改。

int _tmain(int argc, _TCHAR argv[])

{char ch[32];

int i, k, t;

printf("请输入手机号:");

while (1)

{scanf("%s", ch);

i = 0; k = 0;

while (ch[i] != 0)

{if (ch[i] < '0' || ch[i] > '9')

{printf("手机号码不能含有非数字字符,请重新输入:");

k = 1;

break;

}i++;

}if (k)

continue;

if (i < 11)

{printf("手机号码小于 11 位,请重新输入:");

continue;

}k = 1;

t = (ch[0] - '0') 100 + (ch[1] - '0') 10 + (ch[2] - '0');

switch (t)

{case 134: case 135: case 136: case 137: case 138: case 139: case 147: case 150: case 151: case 152: case 157: case 158: case 159: case 182: case 187: case 188:

printf("你用的是移动手机");

break;

case 130: case 131: case 132: case 155: case 156: case 185: case 186:

printf("你用的是联通手机");

break;

case 133: case 153: case 180: case 189:

printf("你用的是电信手机");

break;

default:

printf("没有这样的号码,请重新输入:");

k = 0;

break;

}if (k)

break;

else

continue;

}printf("\n\n");

system("pause"); //防止窗口一闪而过

return 0;

}

我先说思路,你之后再看下面我写的代码,效果可能比较好。

-------------思路------------------------

若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni=1,则数列结束。

这个用个函数判断,比如定义个contrast(...),再在函数内用if(){}else{}做判断。

考虑到你要用void hailstones(int x[],int n0,int maxp,int minp)

那么就可以在void hailstones(int x[],int n0,int maxp,int minp)内部搞一个函数嵌套,

把contrast(...)内嵌到void hailstones(int x[],int n0,int maxp,int minp)中,

而x[]数组,则为了方便,你可以在contrast()的形参表中放一个int [],

即contrast(int x[],...).

又由于要键盘输入数据值n0,则可以用contrast(int a[],int n0)

于是函数建立完毕,为:contrast(int x[],int n0);【需要注意的是函数接受中要接收的是数组名】

----------------------代码如下:----------------------------------------

#include

#include

#include

int contrast(int a[],int n0);

void hailstones(int x[],int n0,int maxp,int minp);

#define Max 100

int main()

{int n0;

int a[Max],Maxp,Minp;

printf("请输入n0的值:");

scanf("%d",&n0);

printf("\n--------\n结果为:\n--------\n");

hailstones(a,n0,Maxp,Minp);

return 0;

}int contrast(int x[],int n0)//计算产生序列

{int i;//i是因为i专门做数组的下标

x[0]=n0;

for(i=0;x[i]!=1;i++)

{if(x[i]%2==0)

x[i+1]=x[i]/2;

if(x[i]%2==1)

x[i+1]=3x[i]+1;

}x[i]=1;

return (i+1);//之所以要加1(i+1),是因为n0也是一个数

}void hailstones(int x[],int n0,int maxp,int minp)

{int i; //i用来计算x[]的下标,也就是知道产生序列数量

int Maxcount=0,Mincount=0,j=0;/用作循环,和i进行比较,直到j=i为止,把所有产生序列输出/

maxp=&Maxcount,minp=&Mincount;

i=contrast(x,n0);//计算产生序列的数量

while(j!=i)

{if(n0>x[j])

Mincount++;

if(n0

Maxcount++;

j++;

}printf("产生序列为:\n");

j=0;

for(j=0;j<=i-1;j++) /之所以要减1(i-1),是因为虽然有i个数,但下标从0开始[0 ~ i-1]之和为i/

printf(" x[%d]=%d ",j,x[j]);

printf("\n");

printf("Max=%lu,Min=%lu\n",maxp,minp);

}值得注意的是,我这个代码有一个问题,就是在main()函数里定义指针时没有给指针赋值,于是编译器出现警告:

warning C4700: local variable 'Minp' used without hing been initialized

warning C4700: local variable 'Maxp' used without hing been initialized

但实际上这个问题并没有对代码本身产生任何影响,只不过作为编译器,在编译时机械的把一切没有使用的变量、一切没有赋值的指针都看成有风险的,所以会警告,【但运行以及结果照常】,所以大可不必担心这个代码有误,你完全可以忽略这个警告,因为它真的没有任何问题。

#include

注释详细,条理清晰!

用c语言编写的代码程序是一个源程序。源程序是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言

源程序是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。

在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。

C语言是一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),还要由称为“连接程序”(Link)的软件,把此.OBJ文件与c语言提供的各种库函数连接在一起,生成一个后缀. EXE的可执行文件。显然C语言不能立即执行。

// Microsoft Visual C++ 2010学习版

#include

double add_thickness(double thickness_ptr, int times_ptr)

{thickness_ptr = 2;

if (times_ptr == 1)

{return thickness_ptr;

}(times_ptr)--;

return add_thickness(thickness_ptr, times_ptr);

}int main()

{double thickness = 0.006; // 0.006cm

int times = 43;

printf("设定纸张厚度:%f cm

printf("算出地月距离:%f cm

printf("算出地月距离:%f km

// 地月距离

double distance = (double)386000 1000 100; // cm

// 作43次

for (int i = 1; i <= 43; i++)

{distance /= 2;

}printf("纸张厚度应为:%f cm

// 检验add_thickness()正确性

times = 43;

printf("按上述厚度,地月距离:%f km

return 0;

}---

若纸厚度0.006cm,按题作43次,纸高度远大于地月距离386000公里!

若纸厚度0.004388cm,按题作43次,纸高度等于地月距离386000公里。

程序执行结果:

#include

#include

1。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#include

int main()

{char a;

a=getchar();

if(a<='z'&&a>='a'||a<='Z'&&a>='A') putchar('1');

else if(a<='9'&&a>='0') putchar('2');

else putchar('3');

return 0;

}2.。。。。。。。。。。。。。。。。。。。。。。。。。。

#include

int main()

{int a,b,c,d,t;

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

if(a>b) {t=a;a=b;b=t;}

if(b>c) {t=b;b=c;c=t;}

if(c>d) {t=c;c=d;d=t;}

if(a>b) {t=a;a=b;b=t;}

if(b>c) {t=b;b=c;c=t;}

if(a>b) {t=a;a=b;b=t;}

printf("%d,%d,%d,%d",a,b,c,d);

return 0;

}3.。。。。。。。。。。。。。。。。。。。。。。。。。。。

#include

int main()

{int a,g,s,b,q;

scanf("%d",&a);

g=a%10;

s=a/10%10;

b=a/10;

q=a/1000;

if(q!=0) printf("%d,%d%d%d%d",4,g,s,b,q);

else if(b!=0) printf("%d,%d%d%d",3,g,s,b);

else if(s!=0) printf("%d,%d%d",2,g,s);

else printf("%d,%d",1,g);

}4.。。。。。。。。。。。。。。。。。。。。。。。。

#include

int main()

{int a,g,s,b;

scanf("%d",&a);

g=a%10;

s=a/10%10;

b=a/10;

if(a==ggg+sss+bbb) printf("YES");

else printf("no");

}

c语言小游戏代码

“贪吃蛇”C代码,在dev C++试验通过(用4个方向键控制)

#include

#include

#include

#include

#include

#define W 78 //游戏框的宽,x轴

#define H 26 //游戏框的高,y轴

int dir=3; //方向变量,初值3表示向“左”

int Flag=0; //吃了食物的标志(1是0否)

int score=0; //玩家得分

struct food{ int x; //食物的x坐标

int y; //食物的y坐标

}fod; //结构体fod有2个成员

struct snake{ int len; //蛇身长

int speed; //移动速度

int x[100]; //蛇身某节x坐标

int y[100]; //蛇身某节y坐标

}snk; //结构体snk有4个成员

void gtxy( int x,int y) //控制光标移动的函数

{ COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}void gtxy( int x,int y); //以下声明要用到的几个自编函数

void csh( ); //初始化界面

void keymove( ); //按键作移动蛇

void putFod( ); //投放食物

int Over( ); //游戏结束(1是0否)

void Color(int a); //设定显示颜色的函数

int main( ) //主函数

{ csh( );

while(1)

{ Sleep(snk.speed);

keymove( );

putFod( );

if(Over( ))

{ system(“cls”);

gtxy(W/2+1,H/2); printf(“游戏结束!T__T”);

gtxy(W/2+1,H/2+2); printf(“玩家总分:%d分”,score);

getch( );

break;

}}

return 0;

}void csh( ) //初始化界面

{ int i;

gtxy(0,0);

CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<=W;i=i+2) //横坐标要为偶数,因为这个要打印的字符占2个位置

{Color(2); //设定打印颜色为绿色

gtxy(i,0); printf("■"); //打印上边框

gtxy(i,H); printf("■"); //打印下边框

}for(i=1;i

{ gtxy(0,i); printf("■"); //打印左边框

gtxy(W,i); printf("■"); //打印右边框

}while(1)

{ srand((unsigned)time(NULL)); //初始化随机数发生器srand( )

fod.x=rand()%(W-4)+2; //随机函数rand( )产生一个从0到比”(W-4)”小1的数再加2

fod.y=rand()%(H-2)+1; //随机函数rand( )产生一个从0到比”(H-2)”小1的数再加1

if (fod.x%2==0) break; //fod.x是食物的横坐标,要是2的倍数(为偶数)

}Color(12); //设定打印颜色为淡红

gtxy(fod.x,fod.y); printf("●"); //到食物坐标处打印初试食物

snk.len=3; //蛇身长初值为3节

snk.speed=350; //刷新蛇的时间,即移动速度初值为350毫秒

snk.x[0]=W/2+1; //蛇头横坐标要为偶数(因为W/2=39)

snk.y[0]=H/2; //蛇头纵坐标

Color(9); //设定打印颜色为淡蓝

gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头

for(i=1;i

{ snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1];

gtxy(snk.x[i],snk.y[i]); printf("■"); //打印蛇身

}Color(7, 0); //恢复默认的白字黑底

return;

}void keymove( ) //按键作移动蛇

{ int key;

if( kbhit( ) ) //如有按键输入才执行下面作

{ key=getch( );

if (key==224) //值为224表示按下了方向键,下面要再次获取键值

{ key=getch( );

if(key==72&&dir!=2)dir=1; //72表示按下了向上方向键

if(key==80&&dir!=1)dir=2; //80为向下

if(key==75&&dir!=4)dir=3; //75为向左

if(key==77&&dir!=3)dir=4; //77为向右

}if (key==32)

{ while(1) if((key=getch( ))==32) break; } //32为空格键,这儿用来暂停

}if (Flag==0) //如没吃食物,才执行下面作擦掉蛇尾

{ gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(" "); }

int i;

for (i = snk.len - 1; i > 0; i--) //从蛇尾起每节存储前一节坐标值(蛇头除外)

{ snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; }

switch (dir) //判断蛇头该往哪个方向移动,并获取坐标值

{ case 1: snk.y[0]--; break; //dir=1要向上移动

case 2: snk.y[0]++; break; //dir=2要向下移动

case 3: snk.x[0]-=2; break; //dir=3要向左移动

case 4: snk.x[0]+=2; break; //dir=4要向右移动

}Color(9);

gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头

if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物则执行以下作

{ printf("\7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是响铃

else Flag = 0; //没吃到食物Flag的值为0

if(snk.speed<150) snk.speed= snk.speed+5; //码,不让速度无限加快

}void putFod( ) //投放食物

{ if (Flag == 1) //如吃到食物才执行以下作,生成另一个食物

{ while (1)

{ int i,n= 1;

srand((unsigned)time(NULL)); //初始化随机数发生器srand( )

fod.x = rand( ) % (W - 4) + 2; //产生在游戏框范围内的一个x坐标值

fod.y = rand( ) % (H - 2) + 1; //产生在游戏框范围内的一个y坐标值

for (i = 0; i < snk.len; i++) //随机生成的食物不能在蛇的身体上

{ if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} }

if (n && fod.x % 2 == 0) break; //n不为0且横坐标为偶数,则食物坐标取值成功

}Color(12); //设定字符为红色

gtxy(fod.x, fod.y); printf("●"); //光标到取得的坐标处打印食物

}return;

}int Over( ) //判断游戏是否结束的函数

{ int i;

Color(7);

gtxy(2,H+1); printf(“暂停键:space.”); //以下打印一些其它信息

gtxy(2,H+2); printf(“游戏得分:%d”,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇头触碰左右边界

if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇头触碰上下边界

for (i = 1; i < snk.len; i++)

{ if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; } //蛇头触碰自身

return 0; //没碰到边界及自身时就返回0

}void Color(int a) //设定颜色的函数

{ SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a ); }

贪吃蛇的源代码

#include

#include

#include

#include

typedef struct snake

{int a;

int b;

struct snake u;

struct snake n;

}snake,snake1;

typedef struct food

{int a;

int b;

}food;

void main()

{char c,c0 = 'd';

int i,j,k,n=1,t,at;

snake p,q;

snake dd,dd0,dd1,dd2;

food f;

srand(time(NULL));

p.u = NULL;

p.n = &q;

p.a = 5;p.b = 6;q.a = 5;q.b = 5;

q.u = &p;q.n = NULL;

dd=dd2= &q;

f.a=(rand()%15+1);

f.b=(rand()%15+1);

while(1)

{srand(time(NULL));

system("cls");

for(i = 0;i < 17;i ++)

{for(j = 0; j < 17;j++)

{if(i == 0 )

printf("▁");

else if(i == 16)

printf("▔");

else if(j == 0)

printf("▕");

else if(j == 16)

printf("▏");

else if(i == p.a && j == p.b)

printf("■");

else if(i == f.a && j == f.b)

printf("★");

else

{t = 0;

dd = dd2;

for(k = 0; k < n ;k++)

{if(i == dd->a && j == dd->b)

{printf("□");

t = 1;

break;

}dd = dd->u;

}if(t == 0)

printf(" ");

}}printf("\n");

}at = 0;

dd =dd2;

for(i=0;i

{if(p.a == dd->a && p.b == dd->b)

{printf("game over!!\n");

exit(0);

}dd = dd->u;

}if(p.a == f.a && p.b == f.b)

{dd = dd2;

at =1;

f.a = (rand()%15+1);

f.b = (rand()%15+1);

for(i=0;i

{if(f.a == dd->a && f.b == dd->b)

{f.a = dd2->a;

f.b = dd2->b;

break;

}}

n++;

}if(kbhit())

{c = getch();

dd = dd2;

if(c == 'w' && c0 != 's')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}if(p.a == 1)

p.a = 15;

else

p.a = (p.a-1)%15;

}else if(c == 's' && c0 != 'w')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}p.a = (p.a%15)+1;

}else if(c == 'a' && c0 != 'd')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}if(p.b == 1)

p.b = 15;

else

p.b = (p.b-1)%15;

}else if(c == 'd' && c0 != 'a')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}p.b = (p.b%15)+1;

}else

{goto qq;

}c0 = c;

}else

{qq: if(c0 == 'w')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}if(p.a == 1)

p.a = 15;

else

p.a=(p.a-1)%15;

}else if(c0 == 's')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}p.a=(p.a%15)+1;

}else if(c0 == 'a')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}if(p.b == 1)

p.b = 15;

else

p.b=(p.b-1)%15;

}else if(c0 == 'd')

{if(at == 1)

{dd0 =(snake1)malloc(sizeof(snake));

dd0->a = dd2->a;dd0->b = dd2->b;

dd0->n = NULL;dd0->u = dd2;

dd2=dd0;

}dd = dd2;

for(i = 0; i

{dd1 = dd->u;

dd->b = dd1->b;

dd->a = dd1->a;

dd = dd->u;

}p.b=(p.b%15)+1;

}}

fflush(stdin);

dd = &q;

_sleep(0);

}}

我是一个新手。

下面有一个游戏:

“坑人的无限”(一)

#include

#include

#include

#include

#include

using namespace std;

int a;

class Screen

{private:

int n;

public:

Screen()

{n=5;

}void move1()//注意只是循环输出各个数字,不能对循环输出再进行循环(如果对循环输出0123456789再进行循环,则move1就变成一个无限循环的函数,则下面的screen循环就进行不下去了)

{for(int i=0;i<10;++i)

{cout<

}}

void move2()

{char i;

for(i='a';i<='z';++i)

{cout<

}}

void screen()

{int t;

while(!kbhit())

{t=time(0)%(2n);//如果是放在循环外面的话,time(0)的值就一直不变,放在循环里面,一秒钟进行一次判断,一秒钟进行一次循环

if(t

move1();

else

move2();

}}

};

int main(){

cout<<"欢迎来到“无限 ”游戏"<

cout<<"下面会输出无限个笑脸"<

cout<<"按'enter'取消"<

Sleep(4000);

Screen s;

s.screen();

cout<

cout<<"接下来会更让你丧心病狂的!"<

cout<<"但是坚持过后必有彩蛋!!!!!!加油!!";

cout<

Sleep(10000);

for(int as=0;as<=50;as++){

for(int i=0;i<=100;i++){

for(int j=0;j<=10;j++){

cout<

}cout<

}for(int i=0;i<=100;i++){

for(int j=0;j<=10;j++){

cout<

}cout<

}}

cout<<"你居然坚持下来了!"<

for(int i=0;i<=10;i++){

cout<<"-----------------------------------------------"<

}cout<<"敬请期待!等待无限游戏(二)!";

return 0;

}

c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)

代码如下:

/用c语言链表编写一个学生信息系统程序,要求输出学生的学号,姓名,性别,

学号,姓名,成绩.(实现添加,删除,查询,排序,平均)/

#include

#include

#include

#include

using namespace std;

const int n=5;

/

nodeEntry : 节点数据类型

nodeADT : 节点结构

linkADT : 链表结构

/

typedef struct Student

{int num;

char name[30];

char sex;

float score1;//语文

float score2;//数学

float score3;//英语

//struct Student next;

}Student;

typedef struct nodeCDT {

Student entry;

struct nodeCDT next;

}nodeADT;

typedef struct linkCDT {

nodeADT head;

}linkADT;

/

InitLink : 初始化链表

CreateNode : 创建节点

AppendLink : 添加数据

/

void InitLink(linkADT link) {

link=(linkADT)malloc(sizeof(link));

(link)->head=0;

}nodeADT CreateNode(Student entry) {

nodeADT p=(nodeADT)malloc(sizeofp);

p->entry=entry,p->next=0;

return p;

}void AppendLink(linkADT link,Student entry) {

nodeADT newNode=CreateNode(entry),p;

if (!link) InitLink(link);

if (!(link)->head) (link)->head=newNode;

else {

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

p->next=newNode;

}}

/

SortLink : 排序链表

-------------------

通过移动每个节点的指针来完成排序

/

//按学号排序

void SortLinkID(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.num>=p->entry.num)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

//按语文成绩排序

void SortLinkChinese(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.score1>=p->entry.score1)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

//按数学成绩排序

void SortLinkMath(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.score2>=p->entry.score2)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

//按英语成绩排序

void SortLinkEnglish(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.score3>=p->entry.score3)

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

//按姓名的字典序进行排序

void SortLinkName(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (pHead->entry.name[0]>=p->entry.name[0])

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

//按姓名的长度进行排序

void SortLinkNameLength(linkADT link) {

nodeADT pHead,pRear,p,tp;

if (!link) return;

for (pHead=link->head,pRear=0;pHead;pHead=pHead->next) {

for (tp=pHead,p=pHead->next;p;tp=p,p=p->next)

if (strlen(pHead->entry.name)>=strlen(p->entry.name))

tp->next=p->next,p->next=pHead,pHead=p,p=tp;

if (!pRear) link->head=pHead;

else pRear->next=pHead;

pRear=pHead;

}}

// PrintLink : 打印链表

void PrintLink(linkADT link) {

nodeADT p=link->head;

cout<<"学号"<<" "<<"姓名"<<"\t"<<"性别"<<"\t"

<<"语文"<<"\t"<<"数学"<<"\t"<<"英语"<

for (;p;p!=NULL,p=p->next){

cout<

entry.num<<" "<

entry.name<<"\t"<

entry.sex<<"\t"

<

entry.score1<<"\t"<

entry.score2<<"\t"<

entry.score3<

}printf("

}/ 测试 /

int main() {

linkADT link=0;

Student stu[n]={{1002,"Gao Min",'M',80,80,80},{1008,"Wen LR",'M',79,80,70},

{1000,"Wan Huang",'F',72,94,87},{1006,"Zhang Xin",'F',90,90,90},

{1001,"Liu qing",'M',89,90,92}};

int i;

for (i=0;i

cout<<"请选择:"<

cout<<"1、按照学号升序排序"<

cout<<"2、按照姓名字符长度升序排序"<

cout<<"3、按照姓名字典序升序排序"<

cout<<"4、按照语文成绩升序排序"<

cout<<"5、按照数学成绩升序排序"<

cout<<"6、按照英语升序排序"<

//cout<<"7、未排序数据"<

cout<<"0、退出"<

//cout<<"未排序数据:"<

//PrintLink(link);

int n;

while(~scanf("%d",&n)){

if(n==0) break;

else if(n==1){

cout<<"按照学号升序排序:"<

SortLinkID(link);

PrintLink(link);

}else if(n==2){

cout<<"按照姓名字符长度升序排序:"<

SortLinkNameLength(link);

PrintLink(link);

}else if(n==3){

cout<<"按照姓名字典序升序排序:"<

SortLinkName(link);

PrintLink(link);

}else if(n==4){

cout<<"按照语文成绩升序排序:"<

SortLinkChinese(link);

PrintLink(link);

}else if(n==5){

cout<<"按照数学成绩升序排序:"<

SortLinkMath(link);

PrintLink(link);

}else if(n==6){

cout<<"按照英语升序排序:"<

SortLinkEnglish(link);

PrintLink(link);

}else cout<<"输入错误,请重新输入!"<

}return 0;

}拓展资料:

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。

使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和作。程序语言或面向对象语言,如C,C++和Ja依靠易变工具来生成链表。

1、更多交流可参考我空间主页有关文章。

2、#include

#include

#include

/定义结构体/

struct student

{int num;

float score;

struct student next;

};

/创建一个只有头结点的空链表/

struct student create_head()

{struct student head;

head=(struct student)malloc(sizeof (struct student) );

if(head==NULL) //小心别漏这个

{printf("申请头结点失败!\n");

return NULL;

}head->next=NULL;

return head;

}/将s指向的结点插入链表,使链表保持升序,并返回头结点/

struct student insert(struct student head,struct student s)

{struct student p=head;

while(p->next!=NULL&&s->score>p->next->score)//特别注意&&左右不能写反,若s,p->next=NULL,p->next->score运行出错

p=p->next;

if(p->next==NULL) //s->score的情况 //其实两种情况可以并在一块写

{p->next=s; //连接结点

s->next=NULL; //p->next就等于NULL

}else

{p->next=s; //连接结点

s->next=p->next;

}return head ;

}/查找符合条件的结点,并返回指向该结点的指针/

struct student search(struct student head)

{struct student p=head->next;

int num;

printf("请输入要查找学生的学号:\n");

scanf("%d",&num);

while(p!=NULL&&p->num!=num) //特别注意两条件不能写反,若写反p指向NULL时p->num找不到 运行出错

p=p->next;

if(p==NULL) //特别注意两个if不能调换,若调换p指向NULL时p->num运行出错

{printf("找不到符合条件的结点!!!");

return NULL; //查找不到返回空指针

}if(p->num==num)

{printf("找到符合条件的结点\n该结点为%d\t%f",p->num,p->score);

return p; //返回查找到的指针

}}

/输出链表各结点的值,也称对链表的遍历/

void print(struct student head)

{struct student p;

printf(" 链表如下: \n");

p=head->next;

while(p!=NULL)

{printf("%d\t%.1f\n",p->num,p->score);

p=p->next;

}}

/释放链表/

void free_list(struct student head)

{struct student p=head ;

printf("释放链表:\n");

while(p!=NULL)

{head=head->next;

free(p);

p=head;

}printf("释放链表成功!\n");

}/删除链表中值为num的结点,并返回链表的首指针/

struct student delete_note(struct student head,int num_x)

{struct student p1=head->next , p2=head ;

while(p1!=NULL&&p1->num!=num_x) //特别注意&&左右条件不能调换,若调换如果p1指向NULL时p1->num运行出错

{p2=p1;

p1=p1->next;

}if(p1==NULL) //特别注意两个if不能调换,若调换如果p1指向NULL时,p1->num运行出错

printf("找不到符合删除要求的结点!!!\n");

if(p1->num==num_x)

{p2->next=p1->next;

free(p1);

printf("结点删除成功!\n");

}return head;

}/完整的有头结点链表作程序/

void main()

{struct student p , head ;

char c;

int num ;

float score ;

printf("有头结点链表作程序:\n");

head=create_head();

while(1)

{printf("I:插入结点(自动升序) P:输出链表 S:查找结点 D:删除结点 E:释放链表并退出程序! ");

c=getch();

switch(c)

{case'I':

printf("请分别输入要插入学生的学号和分数:\n");

scanf("%d%f",&num,&score);

p=(struct student)malloc( sizeof(struct student) );

if(p==NULL)

{printf("申请该结点失败!!!\n");

exit (0) ;

}p->num=num; p->score=score; //给p赋值

insert(head,p);

printf("插入成功!\n");

break;

case'P':

print(head);

break;

case'S':

search(head);

break;

case'D':

printf("请输入要删除的学生的学号:\n");

scanf("%d",&num);

delete_note(head,num);

break;

case'E':

free_list(head);

exit (0);

}}

}

#include

using namespace std;

struct stu{

char name[20];

int num;

int age;

char sex;

int grade;

struct stu next;

};

struct stu mythis,mynew;

void newrecord(struct stu head)

{mythis=head->next;

while(mythis!=NULL)

mythis=mythis->next;

mynew=(struct stu )malloc(sizeof(struct stu));

cin>>mynew->name>>mynew->num>>mynew->age>>mynew->sex>>mynew->grade;

mynew->next=NULL;

if(mythis==NULL)

{mythis=(struct stu )malloc(sizeof(struct stu));

mythis=mynew;

}}

void listall(stu head)

{mythis=head->next;

while(mythis!=NULL)

{cout<name<num<age<sex<grade;

mythis=mythis->next;

}}

int main()

{char decide;

struct stu head;

head=(struct stu )malloc(sizeof(struct stu));

head->next=NULL;

while(1)

{cout<<"Please input decide:"<

cin>>decide;

if(decide=='n')

newrecord(head);

else

if(decide=='1')

listall(head);

else

return 0;

}}

拓展资料

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

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

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生异,由美国标准局为C语言制定了一套完整的美国标准语法,称为ANSI C,作为C语言初的标准。目前2011年12月8日,标准化组织(ISO)和电工委员会(IEC)发布的C11标准是C语言的第三个标准,也是C语言的标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

输入样例:

1 zhang 78

输出样例:

1 zhang 78

代码运行

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息