zoukankan      html  css  js  c++  java
  • 张照行 的第十一次作业

    1.一开始还迷惑我们,假装很简单的样子。。。

    #include<stdio.h>
    void sum(int *p)
    {
        int i,sum=0;
        for(i=0;i<5;i++)
            sum=sum+*p++;
        printf("%d",sum);    
    } 
    int main()
    {
        int a[5]={1,9,2,8,10};
        int *p=a;
        sum(p);
        return 0;
    }

    2.一开始不知道改了题目还做了一下字符串的那个,好麻烦啊,比较字符串大小如果是一个个比的话就是二维数组还要对应着比,字符串之间要怎么比较的确是要考虑好多东西,还有字符串要互换位置也是又要想半天,后来看见换成字符了,但还是被空格和回车坑了,各种错误,各种想,各种改。。。相比上题难度翻了好几倍啊!

    #include<stdio.h>
    int main()
    {
        char a[5],temp;
        char *p=a;
        int i,j; 
        for(i=0;i<5;i++)
            scanf("%c",&a[i]);
        for(j=0;j<5;j++)
        {
            for(i=4;i>0;i--)
            {
                if(a[i]<a[i-1])
                {
                    temp=p[i];
                    p[i]=p[i-1];
                    p[i-1]=temp;
                }
            }
        }    
        for(i=0;i<5;i++)
            printf("%c
    ",*p++);
        return 0;                        
    } 

    再上一个输入字符串排序版本的

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
        char *p[5];
        char str[100],*temp;
        int i,j;
        for(i=0;i<5;i++)
        {
            scanf("%s",str);
            p[i]=(char *)malloc(sizeof(char)*strlen(str));
            strcpy(p[i],str);
        } 
        for(j=0;j<5;j++)
        {
            for(i=1;i<5;i++)
            {
                if(strcmp(p[i],p[i-1])<0)
                {
                    temp=p[i];
                    p[i]=p[i-1];
                    p[i-1]=temp;
                }
            }
        }
        for(j=0;j<5;j++)
            printf("%s
    ",p[j]);
        return 0;
    }

    3.老师上课讲过的特别相似的,倒也还好。。。。

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
        int *p=new int[10];
        int i;
        for(i=0;i<10;i++)
            scanf("%d",&p[i]);
        for(i=0;i<10;i++)
            printf("%d    ",p[i]);
        free(p);            
        return 0;
    }

    4.又是这种古怪的题,一开始再次不能理解题目,没弄清初始化是个什么东西啊,然后指针还没有完全清楚,就一直试着编,瞎搞一通后脑袋里成功全是浆糊,还得继续试,慢慢也更熟悉了一些,就是有几个关键的地方老错,怎么换都不对,就卡在那里了,后来通过请教助教,查询,问人,最后又听了课之后,应该算是用指针初始化并打印出来二维数组了,,,难度max啊!

    也是附上两个版本,一个是自定的初始化,一个是用户输入的初始化

    #include<stdio.h>
    int main()
    {
        int a[10][10],i,j,n=0;
        int *p[10];
        for(i=0;i<10;i++)
            p[i]=a[i];
        for(i=0;i<10;i++)
        {
            for(j=0;j<10;j++)
            {
                p[i][j]=n++;
                printf("%d    ",p[i][j]);    
            }
            printf("
    ");
        }        
        return 0;
    }
    #include<stdio.h>
    int main()
    {
        int a[3][3],i,j,n=0;
        int *p[3];
        for(i=0;i<3;i++)
            p[i]=a[i];
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                scanf("%d",&p[i][j]);    
            }
        }
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                
                printf("%d    ",p[i][j]);    
            }
            printf("
    ");
        }        
        return 0;
    }

    本来我是感觉用户自己输入的会更难一些,因为我感觉我自己在尝试scanf时用指针遇到了更多的疑惑和问题,结果最后做下来的结果却是很相似的。。。就只是用了p[i][j],因为指针有这里有一些相似的代码是等价的,而有一些却不相同,这个我觉得大家都还不是特别的清楚,希望能看到更多版本,也希望助教后面可以给我们展示不同的版本。最后,我还有一个问题,我的第一个for循环里面是p[i]=a[i],它与p[i]=a[i][0]有什么区别,不应该都是指向数组首地址吗,为什么我用后者就会报错啊。

    感想:指针感觉一下子就听不懂了,格式还是知道的太少了,不知道应该怎么用,听下来还好,但一做,就有很多小细节容易犯错,如果错的太多容易改了一处还错,就又把改了的给改回错的了,我们知道的还有些片面,感觉差别就在之前是没看到错误然后一直在找,现在是都不知道哪里错了,怎么改才是对的,看到错误都不知道是错的,这就难过了。希望之后多做能够让思路越来越清晰吧。

  • 相关阅读:
    jquery的图片异步加载
    thinkphp3.1的验证码
    android的edittext设置输入限制,只能输入数字
    android,安卓get请求的提交以及我遇到的异常
    android安卓开发基础小笔记,添加按钮事件,打开新窗体,窗体传值,回传
    php正则表达式函数
    php对浮点数小数取整,php除法取整数
    php数组全排列,元素所有组合
    javascript数组全排列,数组元素所有组合
    spring 配置中相关属性的含义:
  • 原文地址:https://www.cnblogs.com/160809332zzh/p/6148315.html
Copyright © 2011-2022 走看看