一维数组
定义:
int a[N];
初始化:
int a[3] = {1,2,3} ;
for(i = 0;i<3; i++){
scanf("%d",&a[i]);
}
储存结果:数组元素在内存中存放是连续的
实例:逆序存放 冒泡选择排序 二分查找
二维数组
int a[2][3];//三行四列
int a[2][3]={{1,2,3},{4,5}};
int a[2][3]={1,2,3,4,5};
标准的初始化
for(i=0;i<2;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
输出
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%d",a[i][j]);//%3代表每次打印长度为3
}
printf("\n");//一行结束换行
}
#include<stdio.h>
int main(){
int a[3][3];//定义这里不要写成a[i][j]了,笑死!
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);//要取地址
}
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%3d",a[i][j]);//%3代表每次打印长度为3
}
printf("\n");//一行结束换行
}
return 0;
}
连续存放
#include<stdio.h>
int main(){
int a[3][3];//这里不要写成a[i][j]了,笑死!
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);//要取地址
}
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf("%x ",&a[i][j]);//%3代表每次打印长度为3
}
printf("\n");//一行结束换行
}
return 0;
}
转置矩阵实现
#include<stdio.h>
int main(){
int a[2][3];//这里不要写成a[i][j]了,笑死!
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);//要取地址
}
}
for(int j=0;j<3;j++){//把i和j位置换一下
for(int i=0;i<2;i++){
printf("%3d",a[i][j]);//%3代表每次打印长度为3
}
printf("\n");//一行结束换行
}
return 0;
}
杨辉三角形 n>2
1
00
1 1
10 11
1 2 1
20 21 22
1 3 3 1
30 31 32 33
1 4 6 4 1
40 41 42 43 44
a[i][i=1] = a[i][0] = 1
非1起步元素 a[2][1]
终点元素 a[i][i-1]
i=2 j=1
a[i][j]= a[i-1][j] + a[i-1][i-1]
已知数组a[2][3]
找到数组中最大值和下标
#include<stdio.h>
int main (){
int a[2][3],r = 0,c = 0;
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
int max = a[0][0];
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
if(max<a[i][j]){
max = a[i][j];
r = i;
c = j;
}
}
}
printf("%d %d %d",a[r][c],r,c);
return 0;
}
1 7 4 1 01(7)max 11 21 31
00 01 02 03
4 8 3 6
10 11 12 13
1 6 1 2
20 21 22 23
0 7 8 9
30 31 32 33
i=0 j=0,1,2,3 maxj=1 (7)-----tmp[0][1] tmp[i][maxj]
j = 1
i=1 j=0,1,2,3 maxj=1 (8)-----tmp[0][1] tmp[i][maxj]
j = 1
i=2 j=0,1,2,3 maxj=1 (6)-----tmp[0][1] tmp[i][maxj]
j = 1
i=3 j=0,1,2,3 maxj=1 (9)-----tmp[0][3] tmp[i][maxj]
j = 3
i=0 j=1 i=0 2 3 tmp[i][maxj] ?max --->鞍点 --->flag =1;--->andian[i][j] r=i,c=j||no andian
i=1 j=1 i=0 2 3
i=2 j=1 i=0 2 3
i=3 j=3 i=0 1 2
if(flag == 0) --- NONE
else --- printf('%d %d %d',r,c,andian[i][j])
-
列最小,传入坐标
-
行最大,检验坐标是否满足该行max
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
/*输出行最大值 */
#include<stdio.h>
int main (){
int a[20][30],i = 0,j = 0,n;
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
int max = a[0][0];
for(i=0;i<n;i++){
max = a[i][0];
for(j=0;j<n;j++){
if(max<a[i][j]){
max = a[i][j];
}
}
printf("%d ",max);
}
return 0;
}
输出列最大值
#include<stdio.h>
int main (){
int a[20][30],i = 0,j = 0,n;
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
int max = a[0][0];
for(i=0;i<n;i++){
max = a[0][i];
for(j=0;j<n;j++){
if(max>a[j][i]){
max = a[j][i];
}
}
printf("%d ",max);
}
return 0;
}
字符数组
//初始化
char name[20];
char nameplus[10][10];
char name[10][20]; //存放10个同学的名字
//%s 包括 '\0' "abc"
//%c 'a' 'b' 'c' '\0'
for(int i=0;i<3;i++){
c[i]
}
//字符
//char ch = getchar(); getchar只可以输入一个字符
//putchar(ch);
//字符串
//gets函数:输入带空格的字符串
//scanf函数不可以输出 空格,第一个空格就结束了
/*输入三个同学的名字*/
char name[20];
gets(name);
puts(name);
#include<stdio.h>
int main(){
char name[10][20];
for(int i=0;i<3;i++){
gets(name[i]);
}
for(int i=0;i<3;i++){
puts(name[i]);
}
return 0;
}
/*输入一个同学的名字*/
#include<stdio.h>
int main(){
char name[20];
gets(name);
puts(name);
return 0;
}
//\0作为字符串结束
//#include"string.h"
//计算长度【不包括\0】
//strlen(a);
//strcpy(a,b);
//strcat(a,b); a + b
//strcmp(a,b); 比较a,b[assci码]
//cuit --- 4
#include<stdio.h>
int length(char name[20]){
int i = 0;
while(name != '\0'){
i ++;
}
return i;
}
int main(){
char name[20];
gets(name);
int count = 0;
count = length(name[20]);
printf("%d",count);
return 0;
}
#include<stdio.h>
//#include<string.h>
int main(){
char a[20], b[20];
gets(a);
// int len = strlen(a);
int i =0;
// char b[len] = {0};
while(a[i] != '\0'){
b[i] = a[i];
i++;
}
b[i] = '\0';//终于明白了。最后写上\0就好了
puts(b);
return 0;
}
标签:include,20,name,int,char,二维,数组,main
From: https://www.cnblogs.com/GJ504b/p/18539883