c语言(?二维数组、字符串数组、多维数组)课堂笔记加作业

//

//  main.m

//  1-19课程笔记

//  二维数组、字符串数组、多维数组

//  讲师:小辉

//  笔者:王学文

//  Created by lanouhn on 15/1/19.

//  Copyright (c) 2015年 lanouhn. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

/*

//一维数组

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

//二维数组,比起一维数组,多了一个维度(多了一个元素下标)

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

//二维数组的定义

//格式:

//数据类型  数组名[行数][列数] = {值1,值2,…};

// 二维数组的元素个数 = 行数 * 列数;

//定义的其他形式

//1.赋值的时候可以省略,默认值为0

int array1[2][3] = {1, 2, 3};

//2.行数可以省略,由赋值的元素个数 与 列数 决定;

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

//列数是不能省略的

//int array3[2][] = {1, 2, 3, 4, 5}; //error

//int array4[][] = {1, 2, 3, 4}; //error

//二位数组的使用

//元素的获取格式

//数组名[行数][列数]

//注:行数和列数从0开始

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

//获取元素

//    array[0][0];

//    array[0][1];

//    array[1][0];

//    array[1][1];

//    array[2][0];

//    array[2][1];

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

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

printf("array[%d][%d] = %d\n", i, j, array[i][j]);

}

}

//给数组的某个元素赋值

//定义一个5行6列的数组,并随机给每个数组赋值,取值范围[55,88],并求出最大值和最小值所在的位置

//清理缓存command + shift + k;

int a[5][6] = {0};

int max = 0, min = 89;

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

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

a[i][j] = arc4random() % 34 + 55;

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

if (max < a[i][j]) {

max = a[i][j];

}

if (min > a[i][j]) {

min = a[i][j];

}

}

}

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

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

if (max == a[i][j]) {

printf("\n最大值a[%d][%d] = %d\n", i, j, a[i][j]);

}

if (min == a[i][j]) {

printf("最小值a[%d][%d] = %d\n", i, j, a[i][j]);

}

}

}

int a[3][4] = {0};

int b[4][3] = {0};

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

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

a[i][j] = arc4random() % 11 + 50;

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

} printf("\n");

}

printf("交换后:\n");

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

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

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

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

}printf("\n");

}

//字符数组;数组内容存放的元素是字符(char)

//字符串数组:数组内存放的元素是字符串

//字符数组,又叫字符串

//字符串数组:数组内存放的元素是字符数组,数组套数组,所以字符串数组是一个二维的数组

//字符数组

char string1[6] = {‘a‘, ‘p‘, ‘p‘, ‘l‘, ‘e‘, ‘\0‘};

//字符串

char string2[6] = "apple";

//字符串数组

char string3[3][7] = {"apple", "xiaomi", "nokia"};

//输出字符串数组

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

//1.字符输出

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

for (int j = 0; j < 7 && string3[i][j] != ‘\0‘; j++) {

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

}printf("\n");

}

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

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

printf("%s\n",string3[i]);

}

//创建一个数组,用于存放周围同学的姓名,并求出谁的名字最长。

char a[4][20] = {"weizijian", "wanhao", "yaochengzheng", "wangxuewen"};

unsigned long max = 0;

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

if (max < strlen(a[i])) {

max = strlen(a[i]);

}

}

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

if (max == strlen(a[i])) {

printf("姓名最长的时:%s\n", a[i]);

}

}

//输入字符串

char c = 0;

scanf("%c", &c);

//输入字符串

char m[10] = {0};

scanf("%s", m); //不需要加&,

//输入字符串数组

char k[3][10] = {0};

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

scanf("%s", k[i]);

}

scanf("%s %s %s", k[0], k[1], k[2]);

//对周围的学生姓名,进行排序

char name[][20] = {"wanhao", "weizijian", "wangxuewen", "yaochengzheng"};

for (int i = 0; i < 4 - 1; i++) {

for (int j = 0; j < 4- 1 - i; j++) {

if (strcmp(name[i], name[i+1]) > 0) {

char a[20] = {0};

strcpy(a, name[i]);

strcpy(name[i], name[i + 1]);

strcpy(name[i + 1], a);

}

}

}

//输出结果

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

printf("%s\n", name[i]);

}

//冒泡排序

int array[5] = {12, 33, 22,1, 20};

for (int i = 0;i < 5 - 1; i++) {

for (int j = 0; j < 5 - 1 - i; j++) {

if (array[j] > array[j + 1]) {

int temp = array[j];

array[j] = array[j + 1];

array[j + 1] = temp;

}

}

}

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

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

}

*/

//1、(**)有一个 3 行 4 列的二维数组,要求编程找出最大的元素,并输出所 在的行和列。

//    int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 5, 4, 8, 3};

//    int max = 0;

//    for (int i = 0; i < 3; i++) {

//        for (int j = 0; j < 4; j++) {

//            if (max < a[i][j]) {

//                max = a[i][j];

//            }

//        }

//    }

//    for (int i = 0; i < 3; i++) {

//        for (int j = 0; j < 4; j++) {

//            if (max == a[i][j]) {

//                printf("最大值在%d行%d列\n", i + 1, j+ 1);

//            }

//        }

//    }

  //2、(**)输入 6 个字符串,并对它们按从小到大的顺序排序后输出。

//    char a[6][20] = {0};

//    printf("请输入6个字符串:");

//    for (int i = 0; i < 6; i++) {

//        scanf("%s", a[i]);

//    }

//    for (int i = 0; i < 6 - 1; i++) {

//        for (int j = 0; j < 6 - 1 - i; j++) {

//            if (strcmp(a[j], a[j + 1])) {

//                char b[20] = {0};

//                strcpy(b, a[j]);

//                strcpy(a[j], a[j + 1]);

//                strcpy(a[j + 1], b);

//            }

//        }

//    }

//    for (int i = 0; i < 6; i++) {

//        printf("%s\n", a[i]);

//    }

//3、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组 中(相当于一个魔方从上面看)。

//    int a[4][5][6] = {0};

//    float b[4][5] = {0};

//

//    for (int i = 0; i < 4; i++) {

//        for (int j = 0; j < 5; j++) {

//            for (int k = 0; k < 6; k++) {

//                a[i][j][k] = arc4random() % 20;

//                printf("a[%d][%d][%d] = %3d ", i, j, k, a[i][j][k]);

//                }printf("\n");

//        }

//    }

//    for (int j = 0; j < 5; j++) {

//        for (int k = 0; k < 6; k++) {

//            float sum = 0.0;

//            for (int i = 0; i < 4; i++) {

//                sum = sum + a[i][j][k];

//                b[j][k] = sum;

//            }

//         printf("b[%d][%d] = %5.2f ", j, k, b[j][k] / 4);

//        }printf("\n");

//    }

  return 0;

}

时间: 2024-10-13 18:18:54

c语言(?二维数组、字符串数组、多维数组)课堂笔记加作业的相关文章

JSon_零基础_007_将JSon格式的&quot;数组&quot;字符串转换为Java对象&quot;数组&quot;

将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key)方法取得key对应的value部分(字符串). 通过getJSONObject(key)可以取得一个JSONObject对象. 通过getJSONArray(key)可以得到一个JSONArray对象. 导入需要的jar包: package com.west.

C语言--二维数组,字符串数组,多维数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // int a[2][3]={ // {1,2,3}, // {4,5,6} // }; // int a[2][3]={1,2,3,4,5,6}; // //打印单个元素 // printf("%d",a[1][1]); // //元素没赋全,默认为0 // int b[2][3]={{1,2,3},{4}}; // /

C语言二维数组字符串的赋值

今天用到了二维数组作为参数传递的程序,通过网上搜索,针对自己遇到的问题做个整理. 1.在被调用函数的形参数组定义可以省略第一维的大小,第二维不可省略,如下: void fun(int a[5][20]); //合法 void fun(int a[][20]); //合法 void fun(int a[5][]); //不合法 void fun(int a[][]); //不合法 将二维数组作为形参时,第一维大小可以省略,第二维不可省略,这是有编译器原理限制的,在内存中按数组排列规则存放(按行存放

C语言二维数组作业

一.PTA实验作业 题目1:7-3 出生年 1. 本题PTA提交列表 2. 设计思路 1.声明一个函数different()用来计算一个年份的不同数字个数 2.定义y(y是来计算符合要求的年份的量),n(n为题目要求的不同数字个数),x(x用来存放起始年份),flag(flag是用来表示每个y值中的不同数字个数的量) 3.输入起始年份y和题目要求的n 4.x=y(存放起始年份) 5.do {flag计算y中不同数字个数:如果flag=n,符合题意,输出相应结果,并结束循环:如果不符合,y自增一}

二维数组 字符串数组

字符串数组元素访问:? 1.访问某个字符串:数组名[第?一维下标]? 2.访问某个字符 :数组名[第?一维下标][第?二维下标] 3.多维数组占?用内存 = 元素个数 乘以 单个元素所占空间 创建?一个字符串数组(内容是你周围?一圈?人的姓名),对字符串 (英?文)从?小到?大排序. char name[3][20] = {"chexianpeng" , "liuhuaixuan" , "liyunxiao"}; for (int j = 0;

8.31 二维数组 字符串和指针

指针+1移动了相当于所指向类型的大小的字节 int *s1[100] 移动了4个字节 int (*s2)[100] 移动了400个字节 char *s3 移动了1 个字节 int *s4 移动了4个字节 ***p2如何理解? int *p0 = &i *p0  = i int **p1 = &p0 **p1 = i int ***p2 = &p1 ***p2 = i *p2 = p1的值 **p2 = p0的值 ***p2 = i的值 所以***p2就是p0的值        而p

C语言二维数组作为函数的参数

前言:今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数.在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示.我写程序的错误如下程序所示: #include <cstdio> void print(int *a[3]) { printf("%d\n",a[0][0]); } int main() { int a[2][3] = {1,2,3,4,5,6}; print(a); return 0; } 编译程序时候,在第10行提示错误信息:|

C语言 二维数组与指针笔记

今天分析了C语言二维数组和指针的基本理解,感觉有点懵...代码记录一下,如果有大神临幸发现哪里有误,欢迎指正~~~ #include <stdio.h> #include <stdlib.h> #include <string.h> //void func(int p[][]) //这样写等同于void func(int **p) p++移动了四个字节,(*p)++移动了四个字节,不符合二维数组规律 //{ //} //列优先输出的函数(即竖着输出) void func

c语言二维数组传递

c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维的长度 * *********************************/ void fun(int a[][3], int n, int m) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < m; j++) printf(&quo