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

姓名:張春林
日期: 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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章