c语言数组问题,c语言数组问题解析

#import

#define COUNT10

intmain(intargc,constchar* argv[])

{

//1、随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和。第二大值。

//    int max = 0, min = 0, sum = 0, secondMax = 0;

//    float ave = 0.0;

//    int a[20] = {0};

//    //给数组元素赋值

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

//        a[i] = arc4random() % (50 - 10 + 1) + 10;

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

//    }

//    printf("\n");

//    //求数组元素的最大值以及第二大值

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

//        if (a[i] > max) {

//            secondMax = max;

//            max = a[i];

//        } else if (a[i] != max && a[i] > secondMax) {

//            secondMax = a[i];

//        }

//    }

//    min = a[0];

//    //求数组元素的最小值

//    for (int i = 1; i < 20; i++) {

//        if (a[i] < min) {

//            min = a[i];

//        }

//    }

//    //求数组元素的和

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

//        sum += a[i];

//    }

//    ave = sum / 20.0;

//    printf("max = %d, min = %d, secondMax = %d, sum = %d, ave = %.2f\n", max, min, secondMax, sum, ave);

//2.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。

//    char str[255] = {0};

//    printf("请输入一个字符串:\n");

//    scanf("%[^\n]", str);

    gets(str);

//    int maxLength = 0, maxIndex = 0;

//    int length = 0;

//    int i = 0;

//    while (str[i] != '\0') {

//        if (str[i] != ' ') {

//            length++;

//        } else {

//            if (maxLength < length) {

//                maxLength = length;

//                maxIndex = i - maxLength;

//            }

//            length = 0;

//        }

//        i++;

//    }

//    if (maxLength < length) {

//        maxLength = length;

//        maxIndex = i - maxLength;

//    }

//    for (int j = maxIndex; j < maxIndex + maxLength; j++) {

//        printf("%c", str[j]);

//    }

//3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。

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

//    int number = 13; //记录圈内剩余的人数

//    int count = 0; //通过计算器来模拟报数

//    int i = 0; //循环变量

//    while (number > 1) {

//        if (a[i] != 0) {

//            count++;

//        }

//        if (count == 3) {

//            a[i] = 0;  //让该元素置0,模拟踢出圈子

//            count = 0; //然后计数器重新归0

//            number--;  //踢出圈子之后人数-1

//        }

//        i++;

//        if (i == 13) {

//            i = 0; //当到最后一个人的时候,再转到第一个人继续报数

//        }

//    }

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

//        if (a[j] > 0) {

//            printf("叛徒就是第%d个人.", a[j]);

//        }

//    }

//4.将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。

inta[10] = {0};

intb[10] = {0};

intc[20] = {0};

//给数组a赋值

for(inti =0; i <10; i++) {

a[i] =arc4random() % (40-20+1) +20;

}

//给数组b赋值

for(inti =0; i <10; i++) {

b[i] =arc4random() % (40-20+1) +20;

}

//将数组a排序

for(inti =0; i <10-1; i++) {

for(intj =0; j <10-1- i; j++) {

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

inttemp = a[j];

a[j] = a[j +1];

a[j +1] = temp;

}

}

}

//将数组b排序

for(inti =0; i <10-1; i++) {

for(intj =0; j <10-1- i; j++) {

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

inttemp = b[j];

b[j] = b[j +1];

b[j +1] = temp;

}

}

}

//输出数组a

for(inti =0; i <10; i++) {

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

}

printf("\n");

//输出数组b

for(intj =0; j <10; j++) {

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

}

printf("\n");

//将数组a和数组b合并到数组c中

inti =0, j =0, k =0;

while(i <10&& j <10) {

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

c[k++] = b[j++];

}else{

c[k++] = a[i++];

}

}

while(i <10) {

c[k++] = a[i++];

}

while(j <10) {

c[k++] = b[j++];

}

//输出排序好的数组c

for(intm =0; m <20; m++) {

printf("%d ", c[m]);

}

//5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

//    int element = 2, demo = 1;

//    int n = 0;

//    float sum = 2.0;

//    printf("请输入求前几项的和:\n");

//    scanf("%d", &n);

//    int temp = 0;

//    for (int i = 1; i < n; i++) {

//        temp = element;

//        element = element + demo;

//        demo = temp;

//        sum += element * 1.0 / demo;

//    }

//    printf("sum = %.2f\n", sum);

//6.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

//    int number = 0;

//    printf("请输入一个不多于5位的正整数:\n");

//    scanf("%d", &number);

//    int count = 0;

//    int copyNumber = number;

//    while (copyNumber) {

//        count++;

//        copyNumber /= 10;

//    }

//    printf("%d\n", count);

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

//        printf("%d", number % 10);

//        number /= 10;

//    }

//7.,一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

//    int number = 0;

//    printf("请输入一个数:\n");

//    scanf("%d", &number);

//    int count = 0;

//    //先求出数字的位数

//    int copyNumber = number;

//    while (copyNumber) {

//        count++;

//        copyNumber /= 10;

//    }

//    int temp = 1;

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

//        temp *= 10;

//    }

//    BOOL isTrue = YES;

//    copyNumber = number;

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

//        int higher = number / temp;

//        int lower = number % 10;

//        if (higher != lower) {

//            isTrue = NO;

//            break;

//        }

//        number %= temp;

//        number /= 10;

//        temp /= 100;

//    }

//    if (isTrue) {

//        printf("%d是回文数", copyNumber);

//    } else {

//        printf("%d不是回文数", copyNumber);

//    }

//8.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

//    char letter = 0;

//    printf("请输入第一个字母:\n");

//    scanf("%c", &letter);

//    switch (letter) {

//        case 'M':

//            printf("Monday");

//            break;

//        case 'T':

//        {

//            rewind(stdin); //清除缓冲区

//            //getchar();或者取出一个字符丢弃,丢弃的是\n

//            printf("请再输入第二个字符:\n");

//            scanf("%c", &letter);

//            switch (letter) {

//                case 'h':

//                    printf("Thursday");

//                    break;

//                case 'u':

//                    printf("Tuesday");

//                    break;

//                default:

//                    break;

//            }

//        }

//        case 'W':

//            printf("Wednesday.");

//            break;

//        case 'F':

//            printf("Friday");

//            break;

//        case 'S':

//        {

//            rewind(stdin); //清除缓冲区

//            //getchar();或者取出一个字符丢弃,丢弃的是\n

//            printf("请再输入第二个字符:\n");

//            scanf("%c", &letter);

//            switch (letter) {

//                case 'a':

//                    printf("Saturday");

//                    break;

//                case 'u':

//                    printf("Sunday");

//                    break;

//                default:

//                    break;

//            }

//        }

//        default:

//            break;

//    }

//9.有1000000个数,每个数取值范围是0-999999

//找出其中重复的数,重复次数。

//第一种方式

//    int a[COUNT] = {0};

//    int number = 0;

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

//        number = arc4random() % COUNT;

//        printf("%d ", number);

//        a[number]++;

//    }

//    printf("\n");

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

//        if (a[i] > 1) {

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

//        }

//    }

//第二种形式

//    int a[COUNT] = {0};

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

//        a[i] = arc4random() % COUNT;

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

//    }

//    printf("\n");

//    int temp = 0; //临时变量,用来存储取出来的数

//    int count = 1; //记录重复的个数

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

//        temp = a[i];

//        for (int j = i + 1; j < COUNT; j++) {

//            if (a[j] == -1) {

//                continue;

//            }

//            if (a[j] == temp) {

//                count++;

//                a[j] = -1; //将已经计算过的数置为-1.

//            }

//        }

//        if (count > 1) {

//            printf("%d : %d\n", temp, count);

//            count = 1;

//        }

//    }

return0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值