C語言博客作業--字符數組


一、PTA實驗作業

7-3 找最長的字符串

1. 本題PTA提交列表

2. 設計思路

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明

一是沒有吸收回車,而是flag1 沒有為下一次循環賦初值0,導致每一次輸出都是最后一個字符串

7-2 統計一行文本的單詞個數

1. 本題PTA提交列表

2. 設計思路

  • 1.定義1000長度的數組,flag記單詞個數,m,i用於循環
  • 2.gets(a)
  • 3.使用for循環,for(i=0;a[i]!='\0';i++){
    while(m==0){
    if(a[m]!=' ')
    flag++;
    m++;//
    }
  • 4.遇到空格且下一個字符不為空格時flag加一
  • 5.輸出

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明

一開始當開頭為空格時但只有一個單詞,會輸出2,因為我的代碼從一開始就加了1,后來改了重寫,添加一個m,當開頭不為空格時才能加1,輸出正確,沒有截圖

7-1 字符串轉換成十進制整數

1. 本題PTA提交列表

2. 設計思路

  • 1.定義i,j用於循環,flag用於統計,number用於計算最后輸出的十進制數,字符型數組a[],b[]
  • 2.gets(a)
  • 3.使用for循環統計十六進制字符數
  • 4.如果a[i]'-'&&flag10,那么flag2++;flag1++;
  • 5.開始統計字符數 if(a[i]>='a'&&a[i]<='f'){
    b[j]=a[i];flag1++;j++;
    }
    else if(a[i]>='A'&&a[i]<='F'){
    b[j]=a[i];flag1++;j++;
    }
    else if(a[i]>='0'&&a[i]<='9'){
    b[j]=a[i];flag1++;j++;
    }
    if(a[i]=='\0')break;
  • 6.此時數組b是十六進制數,使用for循環將其轉成十進制
  • 7.for(j=0;b[j]!='\0';j++)
    {
    if (b[j]>='0'&&b[j]<='9')
    number=number16+b[j]-'0';
    else if(b[j]>='A'&&b[j]<='F')
    number=number
    16+b[j]-'A'+10;
    else if(b[j]>='a'&&b[j]<='f')
    number=number*16+b[j]-'a'+10;
    }
  • 8.輸出 if(flag20)printf("%d",number);
    if(flag2
    1&&j!=0)printf("-%d",number);
    if(flag21&&j0)printf("0");

3.代碼截圖

4.本題調試過程碰到問題及PTA提交列表情況說明

一開始把不知道如何將十六進制字符轉成十進制整形數輸出,上網搜了才有如上截圖,然后在判斷負號打的環節只有一個flag,這樣無法控制輸出何時輸負號,調試后都改正了。

二、截圖本周題目集的PTA最后排名

三、同學代碼結對互評

1.互評同學名稱

林曉露

2.我的代碼、互評同學代碼截圖

曉露的代碼

我的代碼

3.我和同學代碼不同在哪里?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪里出問題

  • 顯而易見,曉露的代碼比我短很多,首先,我的代碼是非常僵硬的代碼,算出每一個sum值再一起輸出,這樣的代碼在這道題可以寫,但不實用。
  • 曉露的代碼用一個if((i+1)%8==0),代替了相對我代碼中的四個for循環,她的代碼量我少很多,變量也定義的很少,故而我非常喜歡她的代碼。

四、本周學習總結

1.你學會了什么?

1.1指針變量如何定義(設計代碼可以用markdown代碼符號渲染)?

類型名 *指針變量名

1.2 指針加法運算運用在哪種情況,2個指針變量能否相加?

指針的加法只能是指針加整型數據,兩個指針不能相加

1.3 指針不賦初值,直接使用,會出現什么情況,請用DEVC驗證,並截圖展示?

我還以為會是停止工作,不知道為什么是這樣。

1.4 課堂派上關於分離浮點數的整數部分和小數部分那題,請用DEVC驗證實現,並在此貼圖展示,同時說明哪句是指針變量做函數形參,函數實參應該怎么表示。指針變量做函數形參有什么用處?

1.5 請把課本的冒泡排序的函數改成指針變量做形參格式,並把代碼寫在底下,注意用markdown語法渲染。

void bubble ( int *p ,int n )
{
    int i,j,temp;
    for(i=1;i<n;i++)
       for(j=0;j<n-i;j++)
           if(*p>*(p+1))
            { temp=*p;*p=*(p+1);*(p+1)=t; }
}

1.6 如何定義一個指針變量指向數組,如何用指針變量表示數組元素?

指針變量指向數組
int a[100],*p;
p=a(p=&a[0]);
指針變量指向數組元素,比如求和
p=a;
sum=0;
for(i=0;i<100;++i)sum+=p[i];

1.7 如何定義字符指針指向字符串?指針指向字符串后,初始位置在哪里?

char *p="abc",指針指向字符串后,初始位置是字符的首地址

1.8 利用字符指針操作字符串,如設計函數實現字符串連接,請在此貼圖展示代碼。說明指針表示字符的方法好處是什么?

char a[5],b[5];
gets(a);
gets(b);
printf("%s%s",a,b);
return 0;

2.本周你不會內容有什么?

2.1 課堂派錯題羅列及如何訂正。

2.2 其他不會的?打算怎么解決

3.數組上機考試小結

3.1 那題錯了,請羅列?

3.2 錯題如何訂正,為什么錯了?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM