二维数组

一.二维数组初始化【此处介绍4种方法】

1.分行给二维数组赋初值,如int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2.可以将所有数据写在一个花括号内 如int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3.对部分元素赋初值int a[3][4]={{1},{5},{9}};
对各行中的某一元素赋初值 int a[3][4]={{1},{0,5},{0,0,9}};
只对某几行元素赋初值

int a[3][4]={{1},{6,5}};for(int i=0;i<3;i++)for(int j=0;j<4;j++)j==3?printf("%d\n",a[i][j]):printf("%d ",a[i][j]);/*输出 1 0 0 06 5 0 00 0 0 0*/

4.如果对全部元素赋初值,则定义数组时,第一维的长度可以不指定,但第二维的长度不能省略

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

这两种写法等价

二.二维数组程序举例

1.二维数组行列互换

#include <stdio.h>
#include <stdlib.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<2; i++){for(j=0; j<3; j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];//先为数组b赋值}printf("\n");}printf("array b:\n");for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%5d",b[i][j]);printf("\n");//再在此处输出数组b}
}

2.查找矩阵中最大元素及其位置

#include <stdio.h>
#include <stdlib.h>void main()
{int i,j,row=0,colum=0,max;int a[3][4]= {1,2,3,4,9,8,7,6,-10,10,-5,2};max=a[0][0];for(i=0; i<3; i++)for(j=0; j<4; j++)if(a[i][j]>max){max=a[i][j];row=i+1;colum=j+1;}printf("%d %d %d\n",max,row,colum);
}

字符数组

一.字符数组初始化

1.逐个字符赋给数组中的各元素如char c[10]={'I','a','m','h','a','p','p','y'};
2.如果在定义字符数组时不进行初始化,则数组中的各元素的值是不可预测的。
3.如果花括号中提供的初值个数大于数组长度,则按照语法错误处理
4.如果初值个数小于数组长度,则只将这些字符赋给数组中前面的那些元素,其余元素自动定义为空字符’\0’

char c[10]={"China"};
内部存放为 C h i n a \0 \0 \0 \0 \0

5.如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,如char c[]={'I','a','m','h','a','p','p','y'};数组长度自动为8
6.可以使用字符串常量来使字符数组初始化,如
【三种写法等价】

char c[]={"I am happy"};
char c[]="I am happy";
char c[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};

二.字符串和字符串的结束标志

1.为了测定字符串的实际长度,C规定以’\0’作为字符串的结束标志
如果有一个字符串,前面9个字符都非空,而第10个字符是’\0’,则此字符串的有效字符为9个。
2.系统对字符串常量也自动加一个’\0’作为结束符
3.说明char c[5]={'C','h','i','n','a'}; 完全合法,
但我们通常char c[6]={'C','h','i','n','a','\0'}; 多开一个字符为了存放末尾的空字符

三.字符与字符串的输出

1.用“%s”格式符输出字符串时,printf中出现的是***字符数组名***
2.如果数组长度大于实际长度,一直输出到’\0’结束,输出的字符不包括’\0’
3.scanf输入一个字符串scanf("%s",c);,从键盘输入China ,系统自动在其后加上一个’\0’结束符
4.如果利用scanf 函数输入多个字符串,则在输入时以空格分隔

char c1[5],c2[5],c3[5];scanf("%s %s %s",c1,c2,c3);//因为是字符数组名,所以不需要加&printf("%s %s %s",c1,c2,c3);

5.puts函数在遇到空字符时,换行输出(将’\0’转换为’\n’输出)
6.与scanf 的"%s"输入不同,gets输入的字符串只以回车结束,而空格是有效字符
7.strcpy函数注意事项

8.拓展两个不知道的函数

(1)strlwr函数:一般形式:strlwr(字符串)
作用:将字符串中大写字母换成小写字母
(2)strupr函数:一般形式:strupr(字符串)
作用:将字符串中小写字母换成大写字母

四.字符数组应用举例

(1)统计单词个数

#include <stdio.h>
#include <stdlib.h>
void main()
{char str[82];int i,num=0,flag=0;gets(str);for(i=0;str[i]!='\0';i++){if(str[i]==' ') flag=0;else if (flag==0){flag=1;num++;}}printf("%d\n",num);
}

(2)找到3个字符串中最大的一个

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{char string[20];char str[3][20];int i;for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)//找到0,1大的那个strcpy(string,str[0]);else strcpy(string,str[1]);if(strcmp(str[2],string)>0)//2与最大的比较strcpy(string,str[2]);printf("%s\n",string);
}

五.数组作为函数的参数应用举例

计算矩阵的乘法:An*k*Bk*m=Cn*m

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inputA(int n,int k,int a[][k])
{int i,j;for(int i=0;i<n;i++)for(j=0;j<k;j++)scanf("%d",&a[i][j]);
}
void inputB(int k,int m,int a[][m])
{int i,j;for(int i=0;i<k;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);
}
void outputC(int n,int m,int a[][m])
{int i,j;for(i=0;i<n;i++){for(j=0;j<m;j++)printf("%d ",a[i][j]);printf("\n");}
}
void calculateC(int n,int m,int k,int a[][k],int b[][m],int c[][m])
{int i,j,l;for(i=0;i<n;i++)for(j=0;j<m;j++){c[i][j]=0;for(l=0;l<k;l++)c[i][j]+=a[i][l]*b[l][j];}
}
int main()
{int n,k,m,i,j,l;scanf("%d%d%d",&n,&m,&k);int a[n][k],b[k][m],c[n][m];inputA(n,k,a);inputB(k,m,b);calculateC(n,m,k,a,b,c);outputC(n,m,c);return 0;
}

二维数组,字符串,字符数组相关推荐

  1. 初学C语言-二维数组与字符数组

    二维数组与字符数组 二维数组 简单地说就是具有两个下标的数组称为二维数组. 二维数组的定义形式 存储类型 类型说明符 数组标识符[常量表达式1] [常量表达式2] 例如: static int a[2 ...

  2. 小心地放开玩字符串/字符数组(二)某类字符的个数

    /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:徐凯旋 * 完成日期:2012 年 12 ...

  3. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt

    C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...

  4. 字符 字符串 字符数组 字符串指针 指针数组

    一.字符指针.字符数组 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. char *ps=" ...

  5. C++ 复制字符串/字符数组

     题目 [项目1-小心地放开玩字符串/字符数组] (2)读程序,请分析其实现的功能 [cpp] view plaincopyprint? #include<iostream> usin ...

  6. HDU2642(二维的树状数组)

    二维的树状数组,我记得是模版!^ _ ^ 题意很清楚:就是这部分的原理:sum(x1,y1)+sum(x2-1,y2-1)-sum(x1,y2-1)-sum(x2-1,y1);其实可以和概率论中的一个 ...

  7. 字符串字符数组和基本类型的相互转换

    1.基本类型转为字符数组或字符串 ❶整形转为字符数组: char *itoa(int value, char *string, int radix); value 将要被转换的值.string 转换的 ...

  8. JAVA关于字符串字符数组处理的小题目

    JAVA关于字符串&&字符数组的小题目 第二题:分析以下需求,并用代码实现 1.键盘录入一个大字符串,再录入一个小字符串 2.统计小字符串在大字符串中出现的次数 3.代码运行打印格式: ...

  9. 间接通过new 来申请一个二维的堆内存数组

    我们知道无法直接通过new 来申请一个二维的堆内存数组,于是有人想出了这样一个办法:创建一个一维堆内存指针数组,即每个数组元素是一个指针,然后用new 给各个指针分配一个一维的堆内存数组,那么最后表示 ...

  10. c++ string 拼接_C++日志(二十五)字符数组、字符数组指针和string类

    C++中字符串的表示方式有很多种,根据自己目前掌握的有三种: 字符数组: 字符数组指针: 标准库string类: 上面几种方式各有优点和缺点,按照自己的观点,如果处理的字符串的任务比较简单,则使用前两 ...

最新文章

  1. java 静态代码块 多线程,Java多线程编程笔记10:单例模式
  2. css媒体查询移动优先和pc优先
  3. android自定义数字键盘和字母键盘,Android自定义键盘的实现(数字键盘和字母键盘)...
  4. 每周.NET前沿技术文章摘要(2017-05-24)
  5. Essential MSBuild: .NET 工具生成引擎概述
  6. [转]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
  7. 【JVM】G1垃圾回收器
  8. leetcode动态规划
  9. 关于未来交通,这些大咖在未来论坛上的讨论火花四溅
  10. Android超级好看的动态登陆界面(附有详细代码)
  11. 冒险岛java_079src 冒险岛079服务端源码,解压出来 直接导入到java改成即可 Develop 243万源代码下载- www.pudn.com...
  12. 啊哈C语言课后练习题
  13. 首席新媒体运营商学院创始人黎想:给新媒体运营的7点建议
  14. BPEL与XPDL的定位区别
  15. 爱上源码,重学Spring IoC深入
  16. mysql导出excel 科学计数法_mysql导出长数字到excel避免显示为科学记数法 解决方法...
  17. 有关VScode 配置MinGW32_9.2.0+OpenGL+GLFW+GLAD
  18. Unity2d 学习笔记(四)碰撞检测
  19. 船舶信息查询网址汇集
  20. java.util.sortedmap_Java SortedMap lastKey()用法及代码示例

热门文章

  1. java实现【国密SM4】加密解密-CBC模式
  2. 关于maven下载依赖失败问题
  3. seata 使用oracle_使用Seata彻底解决Spring Cloud中的分布式事务问题!
  4. 多分类决策树 r语言_R语言——决策树模型的相关可视化
  5. mysql505复位密码_MySQL数据库复位根用户的密码_MySQL
  6. 使用JMH做Java微基准测试:JMH(Java Micro Benchmark) 简介
  7. Java一键多值Map 之Guava Multimap 用法简介
  8. 解决Linux系统下磁盘IO紧张的一种方法
  9. Flask-SQLAlchemy - 不使用外键连表查询。记得常回来看我
  10. 访问艺术馆(codevs 1163)树形DP