C語言簡單算法之指針,以二維數組形式對5個字符串進行排序

一、學習內容總結

每個數組元素都在內存中佔用存儲單元,它們都有相應的地址。指針變量既可以指向變量,也可以指向數組元素。我們把某一元素的地址放到一個指針變量中,數組元素的指針就是數組元素的地址。對於一個內存單元來說,單元的地址即爲指針,其中存放的數據纔是該單元的內容。在C語言中,允許用一個變量來存放指針,這種變量稱爲指針變量。因此,一個指針變量的值就是某個內存單元的地址或稱爲某內存單元的指針。一個指針是一個地址,是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變量。但常把指針變量簡稱爲指針。爲了避免混淆,指針”是指地址,是常量,“指針變量”是指取值爲地址的變量。定義指針的目的是爲了通過指針去訪問內存單元。使用指針法能使目標程序質量高,佔得內存少,行駛的速度快。

二、在課堂或課後編程學習遇到的問題及解決過程

  問題一:對數組的概念模糊,不理解數組的作用,覺得使用指針使程序更加難懂

  解決方法:通過閱讀教材,知道了指針的作用是能夠提高程序的質量,佔用內存少,運行速度更快。

  問題二:各類表達關係不明確,對*,&的運用混亂。

  解決方法:反覆的閱讀教材,對*,&的概念進行理解,再通過網絡查找,着重的去記憶。

  問題三:指針類型的代碼獨立完成很吃力。

  解決方法:課後多加練習,找一些例題反覆的打,觀看鄒凱老師的教學視頻進行學習。

三、作業

1.PTA代碼

    #include <stdio.h>
    #include <string.h>
    int main()
    {
         char ch,a[80]; 
         int i,x=0;
         gets(a);
         ch=getchar();
         for(i=0; a[i]!='\0'; i++)
        {
              if(a[i]==ch)
              x++;
         }
        printf("%d",x);
        return 0;
     }

輸出截圖:

2.以二維數組形式對5個字符串進行排序

代碼

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int n=5,i,j;
    char **str;
    char s[100];
    str=(char**)malloc(sizeof(char*)*n);
    for(i=0;i<n;i++)
    {
        str[i]=(char*)malloc(sizeof(char)*100);
        printf("請輸入第%d個字符串\n",i+1);
        gets(str[i]);
    }
    puts("排序後的字符串爲:");
    for(i=0;i<n;i++)
    {
        for(j=i;j<n-1;j++)
        {
            if(strcmp(str[j+1],str[j])<0)
            {
                strcpy(s,str[j+1]);
                strcpy(str[j+1],str[j]);
                strcpy(str[j],s);
            }
        }
    }
    for(i=0;i<n;i++)
    {
        puts(str[i]);
    }
    for(i=0;i<n;i++)
    {
        free(str[i]);
        str[i]=NULL;
    }
    free(str);
    str=NULL;
    return 0;
}

輸出截圖

四、附加內容

 1.註冊中國大學Mooc,並參加浙江大學的”程序設計入門-C語言課程“的截圖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章