1. 程式人生 > >嵌入式課程設計——學習日誌

嵌入式課程設計——學習日誌

姓名:張春林
日期: 2018-9-10

第一天:

一.今日任務:

熟悉linux系統的基本操作和相關的終端命令如:ls,cd,vim 檔案,gcc 檔案 -o one,./one,rm -rf 刪除的檔案,Esc,shift zz,並熟悉C語言的指標和結構體。

二.今日任務完成情況:

今日任務已按計劃完成,上課程式碼全部正常執行,課後作業已完成。今日程式碼量:200。

三.今日開發中出現的問題彙總:

變數未宣告就呼叫,因為之前一直寫python程式碼,所以導致不宣告就使用。對指標的訪問與操作有些生疏,但多敲些程式碼後已理解。

四.今日未解決問題 :

有些問題沒有思路,需要多練。

五.今日開發收穫:

熟悉linux系統的基本操作終端命令如:
相關指令 作用
ls 列出當前資料夾下的檔名
cd /資料夾 進入指定檔案
vim 檔名.c 進入此檔案開始編寫程式碼
Esc 退出寫入狀態
shift zz 回到終端
gcc 檔案 名.c -o one 編譯檔案.c
./one 執行之前編譯好的程式
rm -rf 刪除的檔案 刪除檔案
C語言相關資料型別在32位作業系統佔用的位元組數:
型別 儲存大小
int 4個位元組
short 2個位元組
double 8個位元組
long 4個位元組
char 1個位元組
float 4個位元組

int* 4個位元組
short* 4個位元組
double* 4個位元組
long* 4個位元組
char* 4個位元組
float* 4個位元組
指標相關操作:


1.指標變數的宣告:型別說明符 *指標變數名;
2.指標變數的初始化:指標變數名 = &變數名;
3.動態儲存分配(野指標)需要釋放記憶體。
注意:p++ 相當於 *p 而 ++p 相當於 *(++p) 指向當前變數的下一個相鄰的未知變數。
結構體相關操作
1.結構體總長度一定是最長成員的長度的整數倍
2.每個成員的偏移量一定是該成員長度的整數倍
3.指標操作結構體:p->結構體成員變數;

六.自我評價:

有良好的程式設計基礎,但經常會打錯變數名;上課按照老師的講解能很好理解但還是不夠快速的掌握老師上課提出的問題。需要課後多加練習。

七.課後作業:

//3.題目: 輸入一個字串,計算字串中子串出現的次數

 #include<stdio.h>
int main()
{
     char child[10], parent[20], *p1, *p2;
     int sum = 0;
     printf("請輸入父字串\n");
     scanf("%s",parent);
     printf("請輸入子字串\n");
     scanf("%s",child);
     p1 = parent;
     p2 = child;
     while(*p1 != '\0')
     {
         if(*p1 == *p2)
         {
             while(*p2 != '\0' && *p1 == *p2)
             {
                 p1++;
                 p2++;
             }
         }
         else
             p1++;
         if(*p2 == '\0')
             sum++;
         p2 = child;
    }
    printf("子字串出現的次數:%d\n",sum);
}

/4. 題目: 編寫一個C函式,將”I am from shanghai ”倒置為”shanghai from am I”,即將句子中的單詞位置倒置,而不改變單詞內部結構./

#include <string.h>
void change(char *str)
{
    char temp;
    char *p = str;
    char *start = str;
    char *end = str;

    while (*p != '\0')
    {
        p++;
        end++;
    }
    end = p - 1;
    p = str;
    while (*p != '\0')
    {
        while (start < end)
        {
            temp = *start;
            *start = *end;
            *end = temp;
            start++;
            end--;
        }
        p++;
    }
}

void change1(char *str)
{
    char *p = str;
    char *start = p;
    char *end = p;
    char temp;

    while (*p != '\0')
    {
        if (*p == ' ' || *p == '\0')
        {
            end = p - 1;
            while (start < end)
            {
                temp = *start;
                *start = *end;
                *end = temp;
                start++;
                end--;
            }
            start = end = p + 1;
        }
        p++;
    }
    end = p - 1;
    while (start < end)
    {
        temp = *start;
        *start = *end;
        *end = temp;
        start++;
        end--;
    }
}
int main()
{
    char str[100];
    printf("please input string:\n");
    gets(str);
    change(str);
    change1(str);
    printf("the result is :%s\n", str);
}