一、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=number16+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(flag21&&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;
