指针作业

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
//1,随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和。第二大值(不排序),指针实现.
//    int a[20] = {20};
//    int * p = a;
//    printf("原数组:\n");
//    for (int i = 0; i < 20; i++) {
//        *(p + i) = arc4random() % 41 + 10;
//        printf("%d\t",*(p + i));
//    }
//    int max = *p;
//    int min = *p;
//    int sum = *p;
//    int twoOfNumber = *p;
//    printf("\n");
//    for (int i = 0; i < 20; i++) {
//        if (*(p + i) > max) {
//            max = *(p + i);
//        }
//        if (*(p + i) < min) {
//            min = *(p + i);
//        }
//        sum += *(p + i);
//        }
//    for (int i = 0; i < 20; i++) {
//        if (max == *(p + i)) {
//            continue;
//        } else if (twoOfNumber < *(p + i)) {
//            twoOfNumber = *(p + i);
//        }
//    }
//        printf("最大值是%d,最小值是%d,各元素之和是%d,平均值是%d,第二大值是%d",max,min,sum,sum / 20,twoOfNumber);
    
    //2、输入10个整数,将其中最小的数与第一个数对换,把最大的数和最后一个数对换,指针实现
//    int array[10] = {0};
//    int * p = array;
//   int maxNumber = 0;
//    int minNumber = 0;
//    printf("请输入十个数:");
//    for (int i = 0 ; i < 10; i++) {
//        scanf("%d",&*(p + i));
//    }
//    for (int i = 1; i < 10; i++) {
//        if (*(p + minNumber) > *(p + i)) {
//            minNumber = i;
//        }
//        if (*(p + maxNumber) < *(p + i)) {
//            maxNumber = i;
//        }
//    }
//    int tem = *p;
//    *p = *(p + minNumber);
//    *(p + minNumber) = tem;
//    
//    int temp = *(p + 9);
//    *(p + 9) = *(p + maxNumber);
//    *(p + maxNumber) = temp;
//
//    for (int i = 0 ; i < 10; i++) {
//     printf("%d\t",*(p + i));
//    }
    
// 3,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中, 插入之后依然有序。指针实现
    
//    int a[6] = {1,3,6,7,9};
//    int * p = a;
//    int i = 0, j = 0, x = 0;
//    printf("输入添加的数:");
//    scanf("%d", &x);
//    for(i=0; i<5; i++){
//        if(x < *(p + i))
//            break;
//    }
//    for(j=5;j>i;j--){
//        *(p + j) = *(p + j - 1);
//    }
//    *(p + j) = x;
//    printf("添加到第%d位\n",j + 1);
//    printf("新序列:");
//    for(int i=0; i<6; i++){
//        printf("%d\t",*(p + i));
//    }
//
    
    //4.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。指针实现
//    char str[] = "I want to playing conmpuer games";
//    char * p = str;
//    unsigned long a = strlen(str);
//    printf("长度为%lu;\n",a);
//    
//    int x = 0, y =0, m = 0, max = 0;
//    for (int i = 0; i <= a; i++) {
//        if (*(p + i) == ‘ ‘) {
//            printf("%d\t",i);
//            x = i - y;
//            y = i + 1;
//            if (max < x) {
//                max = x;
//                m = i;
//            }
//        }
//        if (*(p + i) == ‘\0‘) {
//            x = i - y;
//            y = i + 1;
//            if (max < x) {
//                max = x;
//                m = i;
//            }
//        }
//    }
//    printf("max = %d,m = %d\n", max, m);
//    printf("最长单词是:");
//    for (int i = m - max; i < m; i++) {
//        char n = 0;
//        n = *(p + i);
//        printf("%c",n);
//    }
    
    //5,耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号,指针实现
    
//    int man[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
//    int * p = man;
//    int count = 13;
//    int c = 0;
//    while (count != 1) {
//    for (int i = 0; i < 13; i++) {
//        if (*(p + i) != 0){
//            c++;
//        }
//        if (c == 3) {
//            *(p + i) = 0;
//            c = 0;
//            count--;
//            }
//        }
//    }
//    for (int i = 0; i < 13; i++) {
//        if (*(p + i) != 0) {
//            printf("叛徒是:%d号", *(p + i));
//                break;
//            }
//        }

//6,有一字符串,包含数字与字母,编程去除数字。1、要求在原字符串中操作2、使用指针处理。如原串:sdf32hfb32yr, 处理完原串变为sdfhfbyr
//    char a[] = "s1df32hfb3555yr";
//    char * p = a;
//    int count = 0;
//    unsigned long lenth = strlen(a);
//    printf("总长度是%lu\n",lenth);
//    for (int i = 0; i < lenth; i++) {
//        if (*(p + i) >= ‘0‘ && *(p + i) <= ‘9‘ ) {
//            for (int j = 0; j < lenth - i; j++) {
//                *(p + i + j) = *(p + i + j + 1);
//            }
//            i--;
//            count++;
//        }
//    }
//    printf("除去数字后是:");
//    for (int i = 0; i < lenth - count; i++) {
//        printf("%c",*(p + i));
//    }

return 0;
}

时间: 2024-12-20 07:38:43

指针作业的相关文章

网络1711指针作业统计

学号 姓名 作业地址 PTA实验作业5 PTA排名2 阅读代码2 总结1 代码规范 总分 是否推荐博客 1 **莹 http://www.cnblogs.com/wwwwxy128/p/8051929.html 4 2 2 1 0 9 是 2 **惠 http://www.cnblogs.com/Zeng99/p/8052727.html 4 2 2 1 0 9 是 3 **钦 http://www.cnblogs.com/lyq622/p/8051438.html 3.5 2 2 1 0 8.

c语言指针作业

#include<stdio.h>#include<conio.h>main(){int a[4]={1,3,3,4},*p; p=a;for(int i=0;i<4;i++){printf("%d\n",*p);*p++;}getch();}

iOS开发之c语言基础Lesson-08 指针 上课笔记 与 试题练习

1 ////////////////Lesson 08 指针 课堂笔记 与练习///////////// 2 3 //指针:本质是一个指针变量,只不过该变量用来存储地址. 4 //地址:内存单元的编号,也是一个数,只不过是以0x开头的十六进制数. 5 6 // int a = 10; 7 // int *p = &a; //定义一个指针变量,将a的地址给指针变量p:p指向a 8 // a = 20; //直接访问 9 // printf("%d ", *p); 10 // *p

作业十 指针(1)

知识点: (1)变量的地址就是变量的指针. (2)变量的值和变量的地址是不同的概念,变量的值是该变量在内存单元中的数据. (3)用来存放指针/地址的变量就称为"指针变量". (4)若把某变量的地址赋值给指针变量p,则称指针变量p指向该变量. (5)定义指针变量的一般形式为: 类型名 *指针变量名; 其中"*"为说明符,而不是运算符. 遇到的困难及感想: 这周学习的指针是一个全新的内容,作业中的代码整体框架上与之前的自定义函数相仿,这再次说明了知识点不是零散的,而是一

C博客作业--指针

一.PTA实验作业 题目1:6-3 统计大于等于平均分人数 1. 本题PTA提交列表 2. 设计思路(伪代码或流程图) int fun ( float *s, int n, float *aver ) 定义整型变量i,j:浮点型变量sum=0,ave 遍历数组 sum=sum+*(s+i) 求平均分 ave=sum/n*1.0 n=0: 遍历数组,若大于等于ave,n++ *aver=ave 返回n值 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明 一开始计算平均分ave的时候,

C语言第九次博客作业--指针

一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,两个数组a[4],b[4] for i=0 to 3 a[i]*p取各个位 *p/=10 end for i=0 to 3 b[i]*q取各个位 *q/=10 end 分别对*p和*q重新赋值 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 题目2: 输出月份英文名 1. 本题PTA提交列表 2. 设计思路 if形参n不再月份范围内 return NULL 定义指针

c语言博客作业-指针

一.PTA实验作业 题目1: 1. 本题PTA提交列表 2. 设计思路(用代码表示扣分) 定义整型变量i,count记录平均分,实型变量sum保存总分 for i=0 to n sum = sum+*(s+i) i++ 平均分=sum/n: for i=0 to n 如果 *(s+i)大于等于平均分 count++ return count 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 一开始想让指针变量自增进行运算,但是让它自增的方法有些不对,而且也有自增了回不来的问题,目

第一次作业 使用指针完成对数组的遍历

#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};//学号为6 故定义a[10] int *p;//定义指针 for(p=a;p<(a+10);p++)//定义一个for循环 减少步骤遍历数组a printf("%d\n",*p);//利用指针输出数组 } 总结: 1.要认真查看每一个字符,用到数组的定义,指针的定义 2.通过使用for循环进行数组的遍历,提高效率 3.变量的指针是变量的地址,

作业1—利用指针完成对数组的遍历

---恢复内容开始--- #include <stdio.h> int main() { int a[8]={1,2,3,4,5,6,7,8};//本人学号尾数4 故定义a[8] int *p;//定义指针 for(p=a;p<(a+8);p++)//定义一个for循环 减少步骤以及对数组a遍历 printf("%d\n",*p);//利用指针输出数组 } 总结:中间出现一个错误 在我定义指针*p后又重新定义整型p 便出现了重复定义的错误 以及在某些步骤中for循环可