• 23. 实现 func()函数,在func()中,通过操作arr,实现修改str1到str2字符串,并打印所有字符串,考察对指针与数组与字符串的基本掌握


    //已知下面几个数组
        char str1[] = "arr1";
        char str2[] = "aarr2";
        char str3[] = "aaarr3";
        char str4[] = "aaaarr4";
        char str5[] = "aaaaarr5";
        char str6[] = "aaaaaarr6";
    
    
    
        char* a[][3] = {str1,str2,str3,
                        str4,str5,str6};
        char* b[][3] = {"aaaa1","bbbb","cccccc","ddddd","eee","fffff"};
    
        char* c[][3] = {"cc","cc","cc"};
    //现要求
    //1.自己定义一个名为arr的数组,用来存储 a,b,c三个数组的地址当其元素成员。
    //2.实现一个func()函数,此函数通过操作arr,来修改str1-str6的可修改字符串,均修改为"tt..t",并打印所有字符串(共15个小字符串)。

     答案:

     1 #include <stdio.h>
     2 //2.
     3 void func(char*(**p)[3],int arrLen,int aLen,int bLen,int cLen)
     4 {
     5     int i;//控制数组arr
     6     int jRow,jCol;//控制数组a,b,c
     7     int k;//控制str1-str6
     8 //通过p修改str1-str2 为t..tt
     9     i = 0;
    10     for(jRow = 0;jRow < aLen;jRow++)
    11     {
    12         for(jCol = 0;jCol < 3;jCol++)
    13         {
    14             for(k = 0;*(*(*(*(p+i)+jRow)+jCol)+k);k++)
    15             {
    16                 *(*(*(*(p+i)+jRow)+jCol)+k) = 't';
    17             }
    18         }
    19     }
    20 //打印所有字符串
    21     int len[3] = {aLen,bLen,cLen};
    22 
    23     for(i = 0;i < arrLen;i++)
    24     {
    25         for(jRow = 0;jRow<len[i];jRow++)
    26         {
    27             for(jCol = 0;jCol <3;jCol++)//*(*(p+i)+jRow)+jCol
    28             {
    29                  printf("%s ", *(*(*(p+i)+jRow)+jCol));
    30             }
    31         }
    32         putchar(10);
    33     }
    34 }
    35 
    36 
    37 int main(void)
    38 {
    39 
    40     char str1[] = "arr1";
    41     char str2[] = "aarr2";
    42     char str3[] = "aaarr3";
    43     char str4[] = "aaaarr4";
    44     char str5[] = "aaaaarr5";
    45     char str6[] = "aaaaaarr6";
    46 
    47 
    48 
    49     char* a[][3] = {str1,str2,str3,
    50                     str4,str5,str6};
    51     char* b[][3] = {"b1","bb2","bbb3","bbbb4","bbbbb5","bbbbbb6","bbbbbbb7","bbbbbbbb8","bbbbbbbbb9"};
    52 
    53     char* c[][3] = {"c","cc","ccc"};
    54 
    55     //1.自己定义一个数组arr,以及指向arr数组的指针。
    56 
    57     //推导过程:char* a[][3] -> char* (*p)[3] = a; ->char* (*arr[])[3]
    58     char* (*arr[])[3] = {a,b,c};
    59 
    60     //定义一个指向arr数组的指针的推导方式1:char* a[][3]
    61     //->char*(*p)[3] = a;
    62     //->char*(**p)[3] = &a;
    63     //->char*(**p)[3] = arr;
    64     //定义一个指向arr数组的指针的推导方式2:
    65     //char* (*arr[])[3] ->
    66     //直接将arr[]替换为*p ->char* (*(*p))[3];
    67     //char* (*(*p))[3] = arr;//用来定义func()的形参。
    68 
    69 
    70 
    71     func(arr, sizeof(arr)/sizeof(*arr), sizeof(a)/sizeof(*a), sizeof(b)/sizeof(*b), sizeof(c)/sizeof(*c));
    72 
    73     return 0;
    74 }
  • 相关阅读:
    [Vim].vimrc
    [笔试面试][code_by_hand]压缩字符串
    [笔试面试][code_by_hand]输出第二个字符串在第一个字符串中的连接次序
    [笔试面试]串s1="ABCDACDAE" s2="DAE" 找出s1中,包含s2的最小子串,要求该子串含有s2中的所有字符,串内字符无顺序关系
    [笔试面试][code_by_hand]从二元树中找出和为某一值的所有路径
    DEV 皮肤的使用
    Dev GridControl使用小结
    [转载]DEV控件:gridControl常用属性设置
    C#网页 自动登录 提交POST信息 方法
    比较字符串NSString
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9470765.html
Copyright © 2020-2023  润新知