数组-《数据结构1000》-练习题

来源:互联网 发布:2017淘宝不好做 编辑:程序博客网 时间:2024/04/26 14:54
// 指针遍历一位数组    for(i = 0; i < 4; i++)    {         printf("%d \n", my_array_name[i]);         printf("%d\n", *(my_array_name + i)); // int 与 char 没有区别, 加的是数组的第几个元素    }    /*    // 指针遍历二维数组    for(j = 0; j < 10; j++)        for(m = 0; m < 10; m++)        {            ++i;            my_2d_array[j][m] = i;            // printf("%d\n" , my_2d_array[j][m]);            printf("%d\n", *(*(my_2d_array + j) + m));            //给你一个形象的例子,假设有个一维数组a,a代表数组a的首地址,也就是&a对吧,            //*a为第一个元素的值,*a+1为第二个元素的值,也就是*(a+1);            //现在是二维数组b,*(b+i)其实就是*b+i对吧,表示数组b的第i行地址,没有问题吧?            //*(b+i)+j表示第i行地址又便宜了j个单元,也就是数组b的第i行第j列元素的地址,这里没有问题吧?            //再加个*号*(*(b+i)+j)就是第i行第j列元素的值。            //记住一点一维数组要获取元素的值,必然有1*号,二维数组要获取元素的值,必然有2*号。        }    */    /*    // 找出110之间的偶数    int IsEven(int n);    int IsEven(int n)    {        return n % 2 == 0 ? 1 : 0;    }    for(i = 1; i < 10; ++i)    {        if(IsEven(i))        {            k = pow(i, 2);            printf("%d\n", k );         // 可以 输出偶数平方            // printf("%d\n", pow(i, 2) ); 不行 输出全0        }    }    *//*int Add(int Array[], int start, int finish);//-----------------------------------------------------// 将数组若干元素加起来//-----------------------------------------------------int Add(int Array[], int start, int finish){    int sum = 0;    for(int i = start; i <= finish; ++i)    {        sum += Array[i];    }    return sum;}    k = Add(my_array_name,1,3);    printf("%d\n", k);*//*#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数int ArrayAdd(int Array, int start, int finish, bool flag);//-------------------------------------------------------// 1.5 找到数组内若干奇数或偶数的和//-------------------------------------------------------int ArrayAdd(int Array, int start, int finish, bool flag){    int sum = 0;    if(flag == ODD)    {        for(int i = start; i <= finish; ++i)        {            if(i % 2 == 1)  //奇数                sum += i;        }    }    else if(flag == EVEN)    {        for(int i = start; i <= finish; ++i)            if(i % 2 == 0)  //偶数                sum += i;    }    return sum;}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    int i = 0,j = 0,m = 0,ans = 0;    ans = ArrayAdd(*my_array_name, 0, 10, ODD);    printf("%d\n", ans);    system("pause");    return 1;}*//*    //---------------------------------    // 平方数组的每个元素, 使用pow函数时,不能直接把printf("%d\n", pow(array[i], 2)),    // 必须将他赋值给变量,再将变量printf,如下    for(i = 0; i <10; ++i)    {        ans = pow(my_array_name[i], 2);        printf("%d\n", ans);        }*//*// 1.10删除数组某元素,有问题#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数#define OK   1#define WRONG 0 void DeleteItem(int a[], int size, int x);//---------------------------------------------------// 删除数组的某个元素//---------------------------------------------------void DeleteItem(int a[], int size, int x){    int i_delete = 0;    int flag = 0;    for(int i = 0; i < size; ++i)    {        if(a[i] == x)        {            i_delete = i;            flag = 1;            break;        }        if(flag = 1)        {            for(int m = i_delete; m < size - 1; ++m)            {                a[m] = a[m + 1];            }        }        else            printf("the value is not found");    }}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    int i = 0,j = 0,m = 0,ans = 0;    DeleteItem(my_array_name, 10, 8); //删掉数组中的5    for(j = 0; j < 9; ++j)        printf("%d\n", my_array_name[j]);    system("pause");    return 1;}*//*// 1.11删除特定位置的数据项#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数#define OK   1#define WRONG 0 void DeleteByLocation(int a[], int size, int delete_location);//---------------------------------------------------// 删除数组的某个元素//---------------------------------------------------void DeleteByLocation(int a[], int size, int delete_location){//  int size;//  size = sizeof(a)/sizeof(int);           //局部变量中传进来的只是指针,sizeof后一定是1.    for(int i = delete_location; i < size; ++i)    {        a[i - 1] = a[i];    }}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    int i = 0,j = 0,m = 0,ans = 0;    DeleteByLocation(my_array_name, sizeof(my_array_name) / sizeof(int), 5); //删掉数组中的第5个元素    for(j = 0; j < 9; ++j)        printf("%d\n", my_array_name[j]);    system("pause");    return 1;}*//*//---------------------------------------------------// 找数组中的最大//---------------------------------------------------int FindMax(int a[]){    int max = a[0];    for(int i = 0; i < 10; ++i)    {        if(a[i] > max)            max = a[i];    }    return max;}//---------------------------------------------------// 找数组中的最小//---------------------------------------------------int FindMin(int a[]){    int min = a[0];    for(int i = 0; i < 10; ++i)    {        if(a[i] < min)            min = a[i];    }    return min;}*//*// 1.14按字母顺序排序有问题,#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数#define OK   1#define WRONG 0 void AlphaSort(char *a[], int size);//------------------------------------------// 按字母顺序升序排序数组(字符串)//------------------------------------------void AlphaSort(char *a[], int size){    char *temp = 0;    for(int i = 0; i < size; ++i)        for(int m = 0; m < i; ++m)        {            if(strcmp(a[i], a[i + 1]) > 0)    //降序            {                strcpy(temp, a[i]);                strcpy(a[i], a[i + 1]);                strcpy(a[i + 1], temp);            }        }    for(int j = 0; j < size; ++j)        printf("%s\n", *a[j]);}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    char *names[]={"Zamal","Fakir","Amal","Kalam"};     //为何char names[]={"Zamal","Fakir","Amal","Kalam"};有错    int i = 0,j = 0,m = 0,ans = 0;    AlphaSort(names,4);    system("pause");    return 1;}*//*// 返回多个函数值#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数#define OK   1#define WRONG 0 int* GetAddAndMul(int a[], int size);//------------------------------------------// 返回数组的和&积//------------------------------------------int* GetAddAndMul(int a[], int size){    int addandmul[2] = {0,1};    int *p = 0;    p = &addandmul[0];    for(int i = 0; i < size; ++i)    {        addandmul[0] += a[i];        addandmul[1] *= a[i];    }    return p;}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    char *names[]={"Zamal","Fakir","Amal","Kalam"};     //为何char names[]={"Zamal","Fakir","Amal","Kalam"};有错    int i = 0,j = 0,m = 0,ans = 0;    int *c;    c = GetAddAndMul(my_array_name, sizeof(my_array_name) / sizeof(int));    printf("数组元素之和为 %d\n", c[0]);    printf("数组元素之积为 %d\n", c[1]);    system("pause");    return 1;}*/#include "stdio.h"#include <iostream>#include <math.h>#include <conio.h>#define ODD  0    // 奇数#define EVEN 1    // 偶数#define OK   1#define WRONG 0 char** ExtractCodesFromPhoneNumber(char *PhoneNum, char length, char separate);//------------------------------------------// 1.54把字符串(如电话号码)分隔开//------------------------------------------char** ExtractCodesFromPhoneNumber(char *PhoneNum, char length, char separate){    int i_seperate[] = {0};    int SeperateCnt = 0;    char* ExtractedCodes[] = {0};           // 分割后的数组    for(int i = 0; i < length; ++i)    {        if(PhoneNum[i] == '-')        {            ++SeperateCnt;            i_seperate[SeperateCnt] = i;    // i = 3,即第四个数是‘-’            for(int m = i_seperate[SeperateCnt - 1]; m < i_seperate[SeperateCnt]; ++i) // 012            {                sprintf(ExtractedCodes[SeperateCnt], "%d", PhoneNum[m]);     //sprintf写不进去,需查看sprintf使用方法            }        }    }//  char* ExtractedCodes[] = {"187", "9999", "9988"};    char** p = ExtractedCodes;    return p;}int main(void){    int my_array_name[10] = {1,2,3,4,5,6,7,8,9,10};    int my_2d_array[10][10] = {0};    char *names[]={"Zamal","Fakir","Amal","Kalam"};     // 为何char names[]={"Zamal","Fakir","Amal","Kalam"};有错    int i = 0,j = 0,m = 0,ans = 0,len = 0;    int *c;    char PhoneNumber[14] = "187-9999-9988";             // 因为最后还有\0    len = strlen(PhoneNumber);    char **p = ExtractCodesFromPhoneNumber(PhoneNumber, len + 1 ,'-');    printf("%s\n%s\n%s\n", *p, *(p + 1), *(p + 2));//  printf("%s\n%s\n%s\n", *p[0], *p[1], *p[2]);    system("pause");    return 1;}
0 0
原创粉丝点击