#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//數組作爲函數的參數,傳遞的是地址(指針),佔4個字節
//函數的參數對於數組沒有副本機制,數組的拷貝非常浪費內存空間以及CPU
void show(int num[10])
{
for (int i = 0; i < 10; i++)
{
printf("%d\n", num[i]);
}
}
void show1(int *p)
{
for (int i = 0; i < 10; i++)
printf("%d\n", p[i]);
}
void show2(int num[3][4])
{
for (int i = 0; i < 12; i++)
{
printf("%d\n", num[i / 4][i % 4]);
}
}
void show3(int(*p)[4])
{
for (int i = 0; i < 12; i++)
{
printf("%d\n", p[i / 4][i % 4]);
}
}
void main1()
{
int num[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int number[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
//show1(num);
//show2(number);
show3(number);
system("pause");
}
//數組的值逆序排列
void change(int number[], int n)
{
int turn;
for (int i = 0; i < n / 2; i++)
{
turn = number[i];
number[i] = number[n - 1 - i];
number[n - 1 - i] = turn;
}
for (int i = 0; i < n; i++)
printf("%d\n", number[i]);
}
void main2()
{
int num[11] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
change(num, 11);
change(num, 11);
system("pause");
}
//用指針的方法將數組的值從大到小輸出
//冒泡排序
void order(int *p, int n)
{
int max, turn;
for (int i = 0; i < n - 1; i++)
{
max = i;
for (int j = i + 1; j < n; j++)
{
if (p[j]>p[max])
{
max = j;
}
}
if (max != i)
{
turn = p[i];
p[i] = p[max];
p[max] = turn;
}
printf("%d\n", p[i]);
}
printf("%d\n", p[n - 1]);
}
void order1(int *p, int n)
{
int turn;
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (*(p + j)>*(p + i))
{
turn = *(p + i);
*(p + i) = *(p + j);
*(p + j) = turn;
}
}
printf("%d\n", *(p + i));
}
printf("%d\n", *(p + n - 1));
}
void main3()
{
time_t ts;
srand((unsigned int)time(&ts));
int num[10];
for (int i = 0; i < 10; i++)
{
num[i] = rand() % 100;
printf("%d\n", num[i]);
}
printf("------------------------------\n");
order1(num, 10);
system("pause");
}
//有一個班,3個學生,各學4門課,計算總平均成績以及第n個學生的成績
void avr(int(*p)[4], int n) //指向一維數組的指針
{
int res = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 4; j++)
{
res += p[i][j];
}
}
printf("average score is %d\n", res /= 12);
}
void showstuscore(int num, int(*p)[4])
{
for (int i = 0; i < 4; i++)
{
printf("%d\n", *(*(p + num - 1) + i));
}
}
//只要有一門成績不及格,則輸出其所有科目的成績
void 抓不及格(int num, int(*p)[4])
{
for (int i = 0; i < num; i++)
{
for (int j = 0; j < 4; j++)
{
if (*(*(p + i) + j) < 60)
{
printf("第%d位同學的所有成績\n", i + 1);
showstuscore(i + 1, p);
break;
}
}
}
}
void main()
{
int score[3][4] = { { 45, 68, 97, 68 }, { 49, 67, 65, 99 }, { 100, 59, 98, 86 } };
//avr(score, 3);
//int num;
//puts("查看第幾位學生的所有成績?\n");
//scanf_s("%d", &num);
//showstuscore(num, score);
抓不及格(3, score);
system("pause");
}
數組作爲函數參數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.