024 例項5-身體質量指數BMI
阿新 • • 發佈:2020-12-13
這個作業屬於哪個班級 | C語言--網路2011/2012 |
---|---|
這個作業的地址 | C部落格作業04--陣列 |
這個作業的目標 | 學習陣列相關內容 |
姓名 | 陳垚嘉 |
0.展示PTA總分(0----2)
展示2張關於“陣列題目集”分數截圖。
1.本章學習總結(3分)
1.1 學習內容總結
整理陣列
這章學習主要知識點,必須包含內容有:
- 陣列中如何查詢資料,有哪些做法
for (i = 0; i <= n; i++)
{
if (a[i] == number)
{
printf("%d", i);
}
}
- 陣列中如何插入資料,怎麼做,可以寫個虛擬碼或動態圖展示方法
輸入陣列
輸入插入數字
for(i=0;i<n;i++)
{
if(a[i]<數字)i++
else
a[i+1]=a[i+2]
a[i]=數字
}
- 陣列中如何刪除資料,這個有多種做法,請一一展示。
輸入陣列a[i]
輸入要刪的數字,該數字的下標為j
for(m=j;m<n——一共多少數字;m++)
{
a[m-1]=a[m]
}
n-1//若要刪多個數字則將在程式外套一個迴圈
- 陣列中目前學到排序方法,主要思路?
冒泡法從小到大
for(j=0;j<k;j++)//k為從新比較的次數,次數越多,答案准確率越高 for(i=0;i<n;i++) { if(a[i]>a[i+1] { a[i]=temp a[i]=a[i+1] a[i+1]=temp } }
選擇排序法從小到大
輸入陣列
比較陣列中的數將該陣列的最小數與a[0]交換
陣列從a[1]開始,比較陣列中的數將該陣列的最小數與a[1]交換
陣列從a[2]開始,比較陣列中的數將該陣列的最小數與a[2]交換,以此類推
- 陣列做列舉用法,有哪些案例?
- 雜湊陣列用法,目前學過哪些案例,舉例展示。
#include<stdio.h> int main() { char a[82]; int i; int static b[256]; fgets(a, 81, stdin); for (i = 0; a[i]!='\n'; i++) { if (a[i] != '\n') { b[a[i]] = 1; } } for (i = 1; i < 256; i++) { if (b[i] == 1) printf("%c", i); } return 0; }
- 字元陣列、字串特點及程式設計注意事項。
1.陣列數字是從0開始數的,因此要格外注意
2.字串要考慮結尾有沒有\0,因為這是他的結束標誌
scanf("%s",a)//當輸入回車和空格時,結束輸入,並自動在結尾加上'\0'
2.PTA實驗作業(7分)
2.1 題目名1(3分)
調查電視節目受歡迎程度
2.1.1 虛擬碼
我的
輸入陣列a[i]
for(i=0;i<n;i++)
for(j=1;j<=8;j++)
if(a[i]==j) c[j-1]++
for(i=1;i<=8;i++)
printf("%4d%4d",i,c[i-1])
2.1.2 程式碼截圖
2.1.3 找一份同學程式碼(儘量找思路和自己差距較大同學程式碼)比較,說明各自程式碼特點。
同學
#include<stdio.h>
int main()
{
int a[8] = { 1,2,3,4,5,6,7,8 };
int b[8] = { 0,0,0,0,0,0,0,0 };
int n;
int number;
int i;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &number);
switch (number)
{
case 1:b[0]++; break;
case 2:b[1]++; break;
case 3:b[2]++; break;
case 4:b[3]++; break;
case 5:b[4]++; break;
case 6:b[5]++; break;
case 7:b[6]++; break;
case 8:b[7]++; break;
}
}
for (i = 0; i < 8; i++)
{
printf("%4d%4d\n", a[i], b[i]);
}
return 0;
}
他用switch語法,我用陣列,他的程式碼多而簡單,我的程式碼少
2.2 題目名2(2分)
找鞍點
2.2.1 虛擬碼
輸入陣列
for(i=0; i<n; i++)//先挑出行的最大值
{
y=i;
for(p=0; p<n; p++)
{
if(a[i][k]<=a[i][p])
{
k=p;
}
}
for(j=0; j<n; j++)//再比較該行最大是不是列最小值
{
if(a[y][k]>a[j][k])
{
y=j;
break;不是則跳出
}
}
if(i==y)
{
flag=0;是的話用flag變數來表示
break;
}
}
2.2.2 程式碼截圖
2.2.3 請說明和超星視訊做法區別,各自優缺點。
我的和超星視訊的思路差不多,不同的是他用函式來表示
2.3 題目名3(2分)
切分表示式
2.3.1 虛擬碼
輸入字元
如果下標為0,字元為‘-’或‘+’
printf("%c",s[i]);
下標不為0時,如果字元s[i]為‘-’當s[i-1]不為數字printf("%c\n",s[i]),else printf("%c",s[i])
當字元為數字或‘.’時,如果s[i+1]不為數字或‘.’printf("%c\n",s[i]),else printf("%c",s[i])
當字元不為數字,‘.’,'+','-'時printf("%c\n",s[i])
2.3.2 程式碼截圖
2.3.3 請說明和超星視訊做法區別,各自優缺點。
我的思路和超星視訊的思路差不多,不同的是他發現了i!=0時,‘-’前如果是負數則會有‘(’,