ios学习记录 day6

复习了一下昨天的知识

遍历就是从头到尾查一遍

作业:

1.输入两个数 倒过来输出 不用第三个变量

    int a = 0,b = 0;
    scanf("%d,%d",&a,&b);
    printf("原来输入的是%d,%d ",a,b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("倒过来输出%d,%d ",a,b);
2.20个10-50的随机数,输出最大值,最小值,和,平均数.

(1)int a[20] = {0};
    int sum = 0;
    int maxIndex = 0,minIndex = 0;
    for (int i = 0;i < 20;i++){
        a[i] = arc4random() % (50 - 10 + 1) + 10;
        printf("a[%d] = %d ",i,a[i]);
        if (a[maxIndex] < a[i]) {
            maxIndex = i;
        }
        if (a[minIndex] > a[i]) {
            minIndex = i;
        }
        sum += a[i];
    }
    printf(" max = %d min = %d sum = %d avg = %.2f ",a[maxIndex],a[minIndex],sum,sum / 20.0);
(2)int array[20] = {0};
    int sum = 0;
    for (int i = 0; i < 20; i++) {
        array[i] = arc4random() % (50 - 10 + 1) + 10;
        sum += array[i];
    }
    for (int i = 0; i < 20 - 1; i++) {
        for (int j = 0; j < 20 - i - 1; 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 < 20; i++) {
        printf("array[%d] = %d ",i,array[i]);
    }
    printf("最大值%d 最小值%d 和%d 平均值%.2f",array[19],array[0],sum,sum / 20.0);

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

(1)char a[100] = "i love iphone";
    char b[100] = "",c[100] = "";
    int maxl = 0,l = 0,i = 0,j = 0;
    long weizhi = 0;
    for (i = 0; i < 100; i++) {//循环次数是定义的数组a的长度
        if (a[i] != ' ' && a[i] != '') {
            l++;//单词长度+1
            b[j] = a[i];
            j++;
        }else{
            j = 0;//数组b的角标清空
            if (l > maxl) {
                maxl = l;
                strcpy(c, b);
                weizhi = i - strlen(c) + 1;
            }
            l = 0;//单词长度清空
        }
    }
    printf("最长单词是%s,单词起始位置%ld ",c,weizhi);

(2)char s[] = "are you kidding me ";
    int length = 0,maxlength = 0,index = 0;
    int i = 0;
    
    while (s[i] != '') {
        if (s[i] != ' ') {
            length++;
        }else{
            if (maxlength < length) {
                maxlength = length;
                index = i - maxlength;
            }
            length = 0;
        }
        i++;
    }
    for (int i = index; i < index + maxlength; i++) {
        printf("%c",s[i]);
    }
    printf(" ");
    printf("maxlength = %d ",maxlength);//缺陷 如果最后一个单词最长不能输出

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

    int person[13] = {0};//参加游戏的人
    int p = 0,count = 0,i = 0;//p坐下的人,count就是1 2 3 1 2 3,
    while (true) {             //死循环
        if (person[i] == 0) {
            count++;
        }//没退出的人 数数
        if (count == 3) {
            printf("%d ",i + 1);//输出坐下的顺序
            person[i] = 1;
            p++;//退出的人加1
            count = 0;
        }//数到3坐下
        if (p == 12) {
            break;
        }//坐下12个人结束
        i++;//下脚标 0 - 12 
        if (i == 13) { //到13表示一圈执行完了
            i = 0;
        }//一共13人 数完一圈从头再数
    }
    
    for (int i = 0; i < 13; i++) {
        if (person[i] == 0) {
            printf("pantu:%d ",i + 1);
            break;
        }
    }

原文地址:https://www.cnblogs.com/lxllanou/p/3585087.html