文章目录

  • 第6章 利用数组批量处理数据
    • 6.1怎样定义和引用一维数组
    • 6.2怎样定义和引用二维数组
    • 6.3字符数组

第6章 利用数组批量处理数据

6.1怎样定义和引用一维数组

一维数组的定义
定义方式: 数据类型 数组名[常量表达式];
一维数组元素的引用
数组必须先定义,后使用
只能逐个引用数组元素,不能一次引用整个数组。
数组元素表示形式: 数组名[下标]
其中:下标可以是常量或整型表达式
例6.1

#include <stdio.h>
void main()
{ int i,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i- -)printf(“%d”,a[i]);
}
运行结果:9 8 7 6 5 4 3 2 1 0

一维数组的初始化
int a[5]={1,2,3,4,5};
等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
例6.2 用数组来处理求Fibonacci数列问题

#include <stdio.h>
int main()
{  int i;int f[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]);}return 0;
}
运行结果: 1           1             2             3            5 8          13            21            34           55 89          144           233           377          610
987          1597          2584          4181         6765

例6.3:用冒泡排序法将10个整数按照从小到大的顺序排序

#include <stdio.h>
void main()
{ int a[10],i,j,t;printf("Input 10 numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i]; a[i]=a[i+1]; a[i+1]=t;}printf("The sorted numbers:\n");for(i=0;i<10;i++)printf("%d ",a[i]);
}

例:用选择排序法将10个整数按照从小到大的顺序排序

#include <stdio.h>
int main( )
{   int  a[11], i, j, k, x;printf ("Input 10 numbers: \n");for (i = 1; i < 11; i++)scanf ("%d", &a[i]);printf ("\n");for (i = 1; i < 10; i++){ k = i;for (j = i+1; j <= 10; j++)if (a[j] < a[k])  k = j;if (i != k){  x = a[i]; a[i] = a[k]; a[k] = x; }}printf("The sorted numbers:\n");for (i = 1; i < 11; i++)printf ("%d ", a[i]);return 0;
}

6.2怎样定义和引用二维数组

二维数组的引用
形式: 数组名[下标][下标]
下标是整型或字符型的常量,变量或表达式。(定义时不能使用变量)

如: a[1][2] a[i][j]
数组元素可出现在表达式中,如: a[1][2]=a[2][2]/2
使用数组元素时,应注意不要超出其定义的范围;
如: int a[2][3]; a[2][3]=5;

例6.4 将二维数组行列元素互换,存到另一个数组中

#include <stdio.h>
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("array a:\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("array b:\n");for(i=0;i<=2;i++){ for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}
}    

例6.5 求二维数组中最大元素值及其行列号

#include <stdio.h>
void main()
{ int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int i,j,row=0,colum=0,max;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\n",max,row,colum);
}

6.3字符数组

字符数组:存放字符数据的数组。
一维字符数组:存放一个字符串(每个数组元素存放一个字符)
二维字符数组:存放多个字符串(行数是字符串的个数)
字符数组的定义
形式:
char 数组名[常量表达式]
char 数组名[常量表达式][常量表达式]
例6.6 输出一个字符串

#include <stdio.h>
void main()
{ char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'};int i;for(i=0;i<10;i++)printf("%c",c[i]);printf("\n");
}

例6.7 输出一个钻石图形

#include <stdio.h>
void main()
{ char diamond[ ][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};int i,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%c",diamond[i][j]);printf("\n");}
}
运行结果:**    *
*       **    **

字符串:用双引号括起的若干字符,如: “china”
可将其存放在一维或两维字符型数组中。
无字符串变量,用字符数组处理字符串
字符串结束标志:‘\0’,(既无动作,又不显示)
字符串的长度:第一个‘\ 0’以前字符的个数
在字符型数组或字符串中遇‘\ 0’,即认为该字符串结束。
系统对字符串常量自动加一个‘\0’作为结束符。
printf(“china”);
china/0
字符串输出函数 puts
格式: puts(字符数组)
功能:向显示器输出一个字符串(输出完,换行)
说明:字符数组必须以‘\0’结束。可以包含转义字符。
输出时‘\0’转换成‘\n’,即输出字符后换行。
字符串输入函数gets
格式:gets (字符数组)
功能:从键盘输入一个以回车结束的字符串放入字符
数组中,并自动加‘\0’。
说明:输入串长度应小于字符数组维数
字符串连接函数strcat
格式:strcat (字符数组1,字符数组2)
功能:把字符数组2连到字符数组1后面
返值:返回字符数组1的首地址
说明:字符数组1必须足够大
连接前,两串均以‘\0’结束;连接后,串1的‘\0’取
字符串拷贝函数strcpy
格式:strcpy(字符数组1,字符串2)
功能:将字符串2,拷贝到字符数组1中去
返值:返回字符数组1的首地址
说明:字符数组1必须足够大,>字符串2
字符数组1必须是数组名形式(str1),
字符串 2可以是字符数组名或字符串常量。
拷贝时‘\0’一同拷贝
不能使用赋值语句为一个字符数组赋值
例7 strcpy与strcat应用举例

#include <stdio.h>
void main()
{  char destination[25];char blank[] = " ", c[]= "C++",turbo[] = "Turbo";strcpy(destination, turbo);strcat(destination, blank);strcat(destination, c);
printf("%s\n", destination);
}
Turbo  C++

字符串比较函数strcmp
格式:strcmp(字符串1,字符串2)
功能:比较两个字符串
比较规则:对两串从左向右逐个字符比较(ASCII码),
直到遇到不同字符或‘\0’为止。
返回值:返回int型整数。其值是ASCII码的差值
a. 若字符串1< 字符串2, 返回负整数
b. 若字符串1> 字符串2, 返回正整数
c. 若字符串1== 字符串2, 返回零
说明:字符串比较不能用“= =”,必须用strcmp,
虽然编译无错,但结果不对
例:字符比较

#include <stdio.h>
void main(  )
{ int  i,j,k;
char  a1[  ]=“wuhan”,  a2[  ]=“beijing” ;
i=strcmp(a1,a2);
j=strcmp(“china”, “korea”);
k=strcmp(a2, “beijing” );
printf(“i=%d\ nj=%d\ nk=%d\ n”,i,j,k);
}
运行结果:
i=21     i=w-b=119-98=21
j=-8     j=c-k=99-107=-8
k=0     k=b-b=98-98=0

例6.8 输入一行字符,统计其中的单词个数,单词间空格分开。

#include <stdio.h>
void main()
{char string[81];int i,num=0,word=0;char c;gets(string);for(i=0;(c=string[i])!='\0';i++)if(c==' ')  word=0;else if(word==0){word=1;  num++;}printf("There are %d wordsin the line\n",num);
}

例6.9 有3个字符串,要求找出其中最大者。

#include <stdio.h>
#include <string.h>
void main()
{ char string[20],str[3][20];int i;for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);else  strcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf("\nThe largest string is:\n%s\n",string);
}

C语言上学期整理(第6章)相关推荐

  1. C语言上学期整理(第3章)

    文章目录 第3章 顺序程序设计 3.1顺序程序设计举例 3.2数据的表现形式及其运算 3.3 运算符和表达式 3.4 C语句 3.5 数据的输入输出 第3章 顺序程序设计 3.1顺序程序设计举例 [例 ...

  2. 大一上学期C语言不熟知识点学习总结

    大一上学期C语言不熟知识点学习总结通过前几章对顺序结构程序设计程序.if选择结构.switch语句.循环结构.数组.函数的学习,这一次我将主要针对几种不熟悉的知识点及题型进行分析. 一. 增1和减1运 ...

  3. C语言高一,高一数学上学期的所有知识点

    偶尔会抱怨为什么自己没天赋,又或者因为别人能轻易做到自己做不到的事而不平衡.从某种角度上来讲,这完全没办法.现在的我倒觉得这样也好,世上或许有人能一步登天,但那人不是我.自己一点一点抓住的东西,比什么 ...

  4. 大一上学期C语言学习总结

    大一上学期C语言学习总结 一.知识点总结 第二章:C语言处理的数据有常量和变量两种形式,C语言的基本数据类型有整型.实型.字符型和枚举类型等,变量必须先定义,后使用,=是赋值运算符,将=右边的表达式的 ...

  5. 大学 C语言程序设计第一讲,c语言程序设计1第一讲(第一章上).ppt

    c语言程序设计1第一讲(第一章上).ppt 知识可以改变命运! 高级语言程序设计 主讲教师:贾彩燕 计算机与信息技术学院 计算机科学与技术系 cyjia@bjtu.edu.cn 计算机与人沟通 计算机 ...

  6. 科拉茨猜想c语言编写,辽宁省沈阳市第一七O中学2019-2020学年高二数学上学期阶段性测试试题(2)文...

    辽宁省沈阳市第一七O中学2019-2020学年高二数学上学期阶段性测试试题(2)文 1.命题范围:人教B版选修1-2 . 选修4-4 必修1集合与函数 2.考试时间120分钟150分 3.第一卷为客观 ...

  7. 高一c语言期末试题,江苏省海安高中2020-2021学年高一上学期期中考试信息技术试题 Word版含答案...

    江苏省海安高中2020-2021学年高一上学期期中考试信息技术试题 Word版含答案 江苏省海安高级中学2020-2021学年度第一学期期中考试 高一信息技术 一.单项选择题(本大题共20小题,每小题 ...

  8. c语言上期中考试试卷答案,2007~2008学年度上学期C语言程序设计期中试卷及答案...

    2007-2008学年度上学期C 语言程序设计期中试卷 一.填空题(本大题30空,每空1分共30分) 1.C 语言中的基本数据类型包括 . . 三种. 2.C 语言中的逻辑运算符有 . . 三种. 3 ...

  9. 大一上学期C语言大作业—森林冰火人

    C语言大作业-森林冰火人 大作业简介 第三方库 界面图片切换 冰火娃动作图片切换 冰娃火娃的跑动 地面,墙壁,冰水,火水与毒液等的判断 代码实现 头文件 变量简介 结构体及数据初始化 冰火娃图片切换 ...

最新文章

  1. 免费数学神器有了手机版,再复杂的公式,拍照就能转成LaTeX
  2. 提升软文营销曝光量可从这几方面着手操作
  3. 江西师范大学c语言程序考研,2018年江西师范大学程序设计(C语言)考研大纲
  4. zabbix 2.2自动安装脚本
  5. boost::hana::int_c用法的测试程序
  6. 子页面赋值给父页面:window.opener.document.getElementById
  7. maven构建java web项目(idea开发)
  8. 开发机直连 Docker 中的 Redis 容器小教程
  9. 使用selenium和phantomJS浏览器登陆豆瓣的小演示
  10. Windows RDP协议重大漏洞后发现黑客开始大规模扫瞄
  11. pfSense多拨网速叠加教程
  12. 枪毙ctfmon.exe 恢复你的默认输入法
  13. Win10的Flash不能运行,报错——“暴力”解法
  14. 原创|批处理|批处理安卓log抓取工具
  15. 关于ZEMAX13的中文设置
  16. Blend 混合模式
  17. 补充方法的声明及使用:
  18. android表格可以编辑,手机wps中如何编辑表格
  19. foter 图像处理APP_谷歌发布3款图像视频编辑App,独特AI算法让你爱上摄影(附下载)...
  20. 中国互联网络信息中心域名争议解决办法

热门文章

  1. iOS的键盘种类(不同的键盘布局)
  2. 用计算机打出刚好遇见你,【计算机·故事】刚好遇见你 余生都是你
  3. VerilogA学习 - VCO demo 合集
  4. 游戏原画之组合画法-张聪-专题视频课程
  5. ubuntu中搜狗输入法怎么翻页
  6. catia画螺杆_CATIA中带螺纹的螺栓画法 | 坐倚北风
  7. WLAN配置三层旁挂直接转发
  8. mac下网络监测工具
  9. C# 创建XML文件
  10. 服务器2012r2系统要求,Winserver2012R2配置有什么要求