C语言知识点整理2.docx

上传人:b****0 文档编号:17457532 上传时间:2023-07-25 格式:DOCX 页数:25 大小:47.42KB
下载 相关 举报
C语言知识点整理2.docx_第1页
第1页 / 共25页
C语言知识点整理2.docx_第2页
第2页 / 共25页
C语言知识点整理2.docx_第3页
第3页 / 共25页
C语言知识点整理2.docx_第4页
第4页 / 共25页
C语言知识点整理2.docx_第5页
第5页 / 共25页
C语言知识点整理2.docx_第6页
第6页 / 共25页
C语言知识点整理2.docx_第7页
第7页 / 共25页
C语言知识点整理2.docx_第8页
第8页 / 共25页
C语言知识点整理2.docx_第9页
第9页 / 共25页
C语言知识点整理2.docx_第10页
第10页 / 共25页
C语言知识点整理2.docx_第11页
第11页 / 共25页
C语言知识点整理2.docx_第12页
第12页 / 共25页
C语言知识点整理2.docx_第13页
第13页 / 共25页
C语言知识点整理2.docx_第14页
第14页 / 共25页
C语言知识点整理2.docx_第15页
第15页 / 共25页
C语言知识点整理2.docx_第16页
第16页 / 共25页
C语言知识点整理2.docx_第17页
第17页 / 共25页
C语言知识点整理2.docx_第18页
第18页 / 共25页
C语言知识点整理2.docx_第19页
第19页 / 共25页
C语言知识点整理2.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言知识点整理2.docx

《C语言知识点整理2.docx》由会员分享,可在线阅读,更多相关《C语言知识点整理2.docx(25页珍藏版)》请在冰点文库上搜索。

C语言知识点整理2.docx

C语言知识点整理2

一维数组的定义和引用

定义一般形式:

类型说明符数组名[常量表达式]

例:

inta[10];/*整型数组a,有10个元素*/

floatb[5];/*实型数组b,有5个元素*/

charc[20];/*字符型数组c,有20个元素*/

注意点:

C语言中规定数组的下标从0开始;

例如:

inta[5]表示数组a有5个元素

5个元素分别为:

a[0],a[1],a[2],a[3],a[4]

不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。

一维数组元素的引用

数组元素引用形式:

数组名[下标]

下标:

只能为整型常量或整型表达式

例如,a[5]、a[i+j]、a[i++]

输入10位学生的成绩(整数),并将其反序输出。

main()

{

intscore[10],i;

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

{

scanf("%d",&score[i]);

}

for(i=9;i>=0;i--)

printf("%d",score[i]);

getch();

}

输入10位学生的成绩(整数),并求出平均成绩输出。

main()

{

floats=0,score[10];

inti;

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

scanf("%f",&score[i]);

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

s=s+score[i];

s=s/10;

printf("Theaverageis:

%f",s);

getch();

}

数组初始化赋值

数组初始化赋值:

在数组定义时给数组元素赋予初值。

初始化赋值一般形式为:

类型说明符数组名[常量表达式]={值,值…值};

例:

inta[10]={0,1,2,3,4,5,6,7,8,9};

相当于a[0]=0;a[1]=1;...a[9]=9;

可以只给部分元素赋初值。

当{}中值的个数少于元素个数时,只给前面部分元素赋值。

例如:

inta[10]={0,1,2,3,4};

表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

当{}中值的个数多于元素个数时,系统出错

数组的初始赋值的几点注意:

只能给元素逐个赋值,不能给数组整体赋值。

例如给十个元素全部赋值1,只能写为:

inta[10]={1,1,1,1,1,1,1,1,1,1};

而不能写为:

inta[10]=1;

注意点

•C语言中规定数组的下标从0开始

例如:

inta[5]表示数组a有5个元素

5个元素分别为:

a[0],a[1],a[2],a[3],a[4]

main()

{inta[11];

inti,j,t;

printf("\ninput10numbers:

\n");

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

scanf("%d",&a[i]);

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

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

{if(a[i]>a[i+1])

{t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

printf("thesortednumber:

\n");

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

printf("%d",a[i]);

}

 

二维数组

二维数组定义的一般形式是:

类型说明符数组名[常量表达式1][常量表达式2];

例:

inta[3][4];

定义了一个3行4列的数组,数组名为a,该数组的元素共有3×4=12个,即:

a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3]

二维数组元素的引用

二维数组的元素的引用形式为:

数组名[下标][下标]

其中下标应为整型常量或整型表达式

例:

a[2][3]表示a数组第三行第四列的元素

分析下列两行程序的功能:

floatb[3][4];——定义一个三行四列的二维数组

b[1][2]=3;——第二行第三列的数是3

初始化说明

可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:

inta[3][3]={{1},{2},{3}};是对每一行的第一列元素赋值,未赋值的元素取0值。

将一个二维数组行和列互换,存到另一个数组中。

123

a=456

12

b=34

56

b[0][0]=a[0][0]

b[0][1]=a[1][0]

b[2][1]=a[1][2]

b[i][j]=a[j][i]

main()

{

inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

printf("\narraya:

\n\n");

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

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

{

printf("%5d",a[i][j]);

b[j][i]=a[i][j];

}

printf("\n");

}

printf("\narrayb:

\n\n");

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

{

for(j=0;j<=1;j++)

printf("%5d",b[i][j]);

printf("\n");

}

getch();

}

有一个3×4的矩阵,要求编程求出其中值最大的那个元素,以及其所在的行号和列号

1234

9876

-1010-52

main()

{inti,j,row=0,colum=0,max;

inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

max=a[0][0];

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

for(j=0;j<=3;j++)

if(a[i][j]>max)

{max=a[i][j];

row=i;

colum=j;

}printf("max=%d,row=%d,colum=%d",max,row,colum);

}

 

字符数组

用来存放字符数据的数组称为字符数组。

字符数组的定义

数组类型数组名[常量表达式]

例:

charc[10];/*定义有10个元素的数组*/

charch[5][10];/*定义5*10的二维字符数组*/

字符数组的初始化

字符数组也可在定义时作初始化赋值。

例:

char[11]={‘c’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};

赋值后各元素的值为:

cprogram,其中c[9]、c[10]未赋值,系统则自动赋予为空字符‘\0’值。

当对全体元素赋初值时也可以省去长度说明。

如下两语句等价:

chara[]={‘I’,‘’,‘a’,’m’,‘’,’h’,’a’,’p’,’p’,’y’};

chara[10]={‘I’,‘’,‘a’,’m’,‘’,’h’,’a’,’p’,’p’,’y’};

字符串和字符串结束标志

在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。

字符串结束标志为‘\0’;因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志

例:

charc[]={‘a’,’b’,’c’,’\0’};

charc[10]={‘a’,’b’,’c’};/*后面元素自动填充空字符‘\0’*/

以字符串对字符数组初始化

C语言允许用字符串的方式对数组作初始化赋值

例:

charc[]={‘C’,‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’,’\0’};

可写为:

charc[]={"Cprogram"};或去掉{}写为:

charc[]="Cprogram";

字符数组的输入输出

可用printf函数和scanf函数中使用“%s”格式控制符一次性输出/输入一个字符数组中的字符串

main()

{charc[]="BASIC\ndBASE";

printf("%s\n",c);

}

而在输出表列中给出数组名则可。

不能写为:

printf("%s",c[]);

main()

{charst[15];

printf("inputstring:

\n");

scanf("%s",st);/*注意此处没有取地址符‘&’*/

printf("%s\n",st);

}

本例中由于定义数组长度为15,因此输入的字符串长度必须小于15,以至少留出一个字节用于存放字符串结束标志`\0`

注意点

定义一个字符数组,如果不作初始化赋值,则必须说明数组长度

当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。

例如上例scanf(“%s”,st);

当输入:

thisisabook的字符串时,则只有this输入到数组st中。

字符串常用函数使用说明

关于字符串输入输出的函数,必须包含头文件stdio.h

关于字符串处理函数,必须包含头文件string.h

字符串常用函数

字符串输出函数puts

格式:

puts(str);

功能:

把字符数组中的字符串输出到显示器。

即在屏幕上显示。

它等价于:

printf("%s",str);

字符串输入函数gets

格式:

gets(str);

功能:

从键盘上输入一个字符串直到回车键结束。

将输入的字符串加上结束标志‘\0’,存放到数组或字符指针所指向的一片存储单元。

#include

main()

说明:

当输入的字符串中含有空格时,输出仍为全部字符串。

这是与scanf函数不同的。

{

charc[10];

printf("Pleaseinputastring:

");

gets(c);

puts(c);

}

字符串连接函数strcat

格式:

strcat(str1,str2)

功能:

把字符数组str2中的字符串连接到字符数组str1中字符串的后面,并删去字符串1后的串标志“\0”。

本函数返回值是符数组1的首地址。

字符串拷贝函数strcpy

格式:

strcpy(str1,str2);

功能:

把字符数组str2中的字符串拷贝到字符数组str1中。

串结束标志“\0”也一同拷贝。

str2也可以是一个字符串常量。

这时相当于把一个字符串赋予一个字符数组

main()

{charc1[10]="111111",c2[10]="222";

strcpy(c1,c2);

puts(c1);其内存储存是:

2

2

2

\0

1

1

\0

\0

\0

\0

}

程序运行结果:

222

注意:

本函数要求字符数组1应有足够的长度,否则不能全部装入所拷贝的字符串。

字符串比较函数strcmp

格式:

strcmp(str1,str2)

功能:

按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

str1==str2,返回值=0

str1>str2,返回值>0(一般为1)

str1

例:

strcmp(“ABC”,”ABB”);比较的是其字符串的ASCII码,+号是个字

strcmp(“36+55”,”abcd”);符,不是运算符作用

本函数也可用于比较两个字符串常量,或比较数组和字符串常量。

#include

main()

{charstr[20];

printf(“Pleaseinputthepassed:

”);

scanf(“%s“,str);

if(strcmp(str,“1234”)==0)

printf(“Passed\n”);

else

printf(“Denied\n”);

}

程序的功能:

输入密码

测字符串长度函数strlen

格式:

strlen(str);

功能:

测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值

字符大写转小写函数strlwr

格式:

strlwr(str)

功能:

将字符串str中的大写字母转换为小写字母。

字符小写转大写函数strupr

格式:

strupr(str)

功能:

将字符串str中的小写字母转换为大写字母。

编程实现从键盘输入10位学生的成绩,统计出最高分、最低分、和平均分。

main()

{floata[10],i,max=-1,min=101,sum=0;

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

{scanf("%f",&a[i]);

if(a[i]>max)max=a[i];

if(a[i]

sum=a[i]+sum;

}

printf("max=%f,min=%f,average=%f",max,min,sum/10);

getch();

}

 

用数组来处理Fibonacci数列,输出其前20项。

main()

{inti;

intf[20]={1,1};

for(i=2;i<20;i++)

f[i]=f[i-2]+f[i-1];

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

{if(i%5==0)printf("\n");/*规定换行,规整格式*/

printf("%12d",f[i]);

}

getch();

}

从键盘输入10个数存在一个数组中,再将其反序复制到另一个数组中。

(有多解)

main()

{inta[10],b[10],i;

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

{scanf("%d",&a[i]);

b[9-i]=a[i];

}

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

printf("%d\n",b[i]);

getch();

}

输入10个数,求平均值及高于平均值的数

main()

{

floatave,s=0,a[10],i;

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

{scanf("%f",&a[i]);

s=s+a[i];}

ave=s/10;

printf("%f\n",ave);

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

{if(a[i]>ave)

printf("%f",a[i]);

}

getch();

}

由键盘输入10个数,放在一个数组中,并将其排好序后放在第二个数组中。

main()

{inta[11],b[11],i,j,t;

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

scanf("%d",&a[i]);

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

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

{if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

}

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

{b[i]=a[i];

printf("%d",b[i]);

}

getch();

}

有两个4X3的矩阵,将其相加,并输出。

提示:

即将两个4行3列的二维数组对应元素相加到第三个二维数,输出。

main()

{inta[4][3],b[4][3],c[4][3],i,j;

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

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

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

for(j=0;j<3;j++)

scanf("%d",&b[i][j]);

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

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

{c[i][j]=a[i][j]+b[i][j];

printf("%2d",c[i][j]);

}

printf("\n");

}

getch();

}

编写一个程序,求一个字符在一个字符串中的位置.

#include

main()

{

chars[20],ch;

inti;

printf("Inputstring:

\n");

gets(s);/*scanf具有缓冲区会把换行符缓存而影响下面的运行*/

printf("Inputthechar:

\n");

ch=getchar();

for(i=0;s[i]!

=ch;i++);

printf("%d",i+1);

getch();

}

 

编写一个程序,将两个字符串连接起来.

main()

{chars1[40],s2[20];

inti,j;

printf("Inputs1:

\n");

gets(s1);

printf("Inputs2:

\n");

gets(s2);

for(i=0;s1[i]!

='\0';i++);

for(j=0;s2[j]!

='\0';j++)

s1[i+j]=s2[j];

printf("Thestringis:

%s",s1);

getch();

}

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

算法:

变量word来作为判别是否单词开始的标志,若word=0表示末出现单词,若出现单词,则word置成1。

#include"stdio.h"

main()

{charc,string[80];

inti,num=0,word=0;

gets(string);

for(i=0;(c=string[i])!

='\0';i++)

if(c=='')word=0;

elseif(word==0)

{word=1;

num++;}

printf("Thereare%dwordintheline.\n",num);

getch();

}

编写一个程序,求一个字符在一个字符串中的位置.

#include

main()

{chars[20],ch;

inti;

printf("Inputstring:

\n");

gets(s);

printf("Inputthechar:

\n");

ch=getchar();

for(i=0;s[i]!

=ch;i++);

printf("%d",i+1);

getch();

}

有一已经从小到大排好序的数组,今输入一数,要求按原来排序的规律将它插入数组中。

main()

{inta[10]={1,3,5,7,9,11,13,15,17};

inti,j,k,num;

printf("Arraya:

\n");

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

printf("%d",a[i]);

printf("\nInputanumber:

\n");

scanf("%d",&num);

if(num>a[8])

a[9]=num;

else

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

{if(a[j]>num)

{for(k=9;k>=j;k--)

a[k]=a[k-1];

a[j]=num;

break;

}

}

}

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

printf("%d",a[j]);

getch();

}

 

有一已经从小到大排好序的数组,今输入一个数,若该数在数组里面有,即将该数从数组中删除。

main()

{inta[10]={1,2,3,4,5,6,7,8,},i,j,b;

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

printf("%d",a[i]);

scanf("%d",&b);

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

if(b==a[i])

break;

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

a[j]=a[j+1];

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

printf("%d",a[i]);

getch();

}

编写一个将一字符串逆转的程序。

#include

#include

main()

{chars1[20],s2[20];

inti,j;

printf("Inputstring:

\n");

gets(s1);

i=strlen(s1);

for(j=0;s1[j]!

='\0';j++)

s2[i-1-j]=s1[j];

s2[i]='\0';

printf("Thereversestring:

\n%s",s2);

getch();

}

一个学习小组有5个人,每个人有三门课的考试成绩。

求全组各分科的平均成绩和各位同学的平均成绩,并保存起来。

各人成绩如下:

语数英

张807592

王616571

李596370

赵858790

周767785

并可分别按科目、或平均分进行排序。

#include

main()

{inti,j,k,s,a[5][4]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};

intv[3],xz,m;

intt[4];

for(j=0;j<3;j++)

{s=0;

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

s=s+a[i][j];

v[j]=s/5;

}

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

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

a[i][3]=a[i][3]+a[i][j];

a[i][3]=a[i][3]/3;

}

s:

printf("1:

各科平均分2:

各位同学平均分\n3:

按平均分排序4:

显示\n");

printf("请选择:

");

scanf("%d",&xz);

switch(xz)

{case1:

printf("语文数学英语\n%4d%4d%4d",v[0],v[1],v[2]);break;

case2:

printf("学号成绩\n");

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

printf("%4d%4d\n",i+1,a[i][3]);

break;

case3:

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

for(j=0;j<=3-i;j++)

{if(a[j][3]>a[j+1][3])

{for(k=0;k<4;k++)

{t[k]=a[j][k];

a[j][k]=a[j+1][k];

a[j+1][k]=t[k];

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2