*
從0到1,迴歸基礎,夯實基礎
點滴積累,成就未來
*
#include "stdio.h"
#include "stdlib.h"
#define _CRT_SECURE_NO_WARNINGS
//for逆序
int main1()
{
int i, a[10];
for (int i = 0; i < 10; i++)
a[i] = i;
for (i = 9; i >=0; i--)//i--從i=9開始
printf("%d ", a[i]);
}
//Fibonacci,第三個數是前兩個數的和
int main2()
{
int i;
int a[20] = { 1, 1 };//初始化
for (i = 2; i < 20; i++)//i從2開始
a[i] = a[i - 1] + a[i - 2];
for (i = 0; i < 20; i++)
{
if (i % 5 == 0)//每輸出5個換行
printf("\n");
printf("%12d", a[i]);
}
}
//冒泡法排序
//思想:每次講相鄰兩個數進行比較,把較小的數放在前頭;
int main3()
{
int i, j, t;
int a[10];
printf("please input 10 numbers:\n");
for (int i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
printf("\n");
for (i = 0; i < 10-1; i++)//如果有n個數,進行n-1次循環
for (j = 0; j < 10 - 1 - i; j++)//每趟進行n-1-i次比較
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
printf("the sorted numbers:\n");
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
}
int main4()
{
//數組元素互換
int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
int b[3][2], i, j;
printf("array a :\n");
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
{
printf("%5d", a[i][j]);
b[j][i] = a[i][j];//互換
}
printf("\n");
printf("array b :\n");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
printf("%5d ", b[i][j]);
printf("\n");
}
}
//求數組最大值,並標記行號列號
int main5()
{
int i, j, row = 0, col = 0, max;
int a[3][4] = { { 1, 2, 3, 4 }, { 8, 6, 5, 4 }, { 11, -3, 43, 2 } };
max = a[0][0];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
if (max < a[i][j])
{
max = a[i][j];
row = i+1;
col = j+1;
}
printf("max = %d ,row = %d , col=%d\n", max, row, col);
}
//字符串函數聯繫
int main6()
{
char str1[20];
char str2[] = "china";
char str3[] = "abcdef";
char str4[] = "ERDDdef";
printf("%s\n", strcpy(str1, str2));
//printf("%s\n", strcat(str1, str3));
//printf("%s\n", str1);
printf("%s\n", strncpy(str1, str3, 1));
printf("%d\n", strcmp(str1, str3));//比較 = 返回0; > 返回1; < 返回-1;
printf("%d\n", strlen(strncpy(str1, str3, 1)));
printf("%s\n", strlwr(str4));//字符串轉小寫
printf("%s\n", strupr(str4));//字符串轉大寫
}
//函數調用
int main7()
{
int a, b, c;
printf("input 2 number:\n");
scanf_s("%d%d", &a, &b);
c = n_Max(a, b);
printf("%d\n", c);
}
int n_Max(int x, int y)
{
//int z;
//z = x > y ? x : y;
//return z;
return(x > y ? x : y);
}
int four_Max(int a, int b, int c, int d)
{
//int m;
//m = n_Max(a, b);//遞推求大值
//m = n_Max(m, c);
//m = n_Max(m, d);
return n_Max(n_Max(n_Max(a, b), c), d);
}
int main8()
{
int a, b, c, d, max;
scanf_s("%d%d%d%d", &a, &b, &c, &d);
max = four_Max(a, b, c, d);
printf("max number is %d\n", max);
}
//n!遞歸
int fac(int n)
{
int f;
if (n < 0)
printf("date error!");
else if (n == 0 || n == 1)
f = 1;
else
f = n*fac(n - 1);
return f;
}
int main9()
{
int n, y;
printf("input n :\n");
scanf_s("%d", &n);
y = fac(n);
printf("%d!=%d\n", n, y);
}
//hanoi 遞歸
void move(char x, char y)
{
printf("%c-->%c\n", x, y);
}
void hanoi(int n, char one, char two, char three)
{
if (n == 1)
move(one, three);
else
{
hanoi(n - 1, one, three, two);
move(one, three);
hanoi(n - 1, two, one, three);
}
}
int main10()
{
int m;
printf("input the number of diskes:\n");
scanf_s("%d", &m);
if (m > 0)
hanoi(m, 'A', 'B', 'C');
}
//數組元素做實參
int main11()
{
int i,num;
int str[10];
int max = 0;
printf("input 10 number :\n");
for (int i=0; i < 10; i++)
scanf_s("%d", &str[i]);
max = str[0];
for (int i=1; i < 10; i++)
{
/*if (n_Max(max, str[i])>max)
max = str[i];*/
if (max < str[i])
max = str[i];
num = i;
}
printf("the largest number is %d,and is the %dth number.\n", max, num);
}
float average(float array[],int n)//數組做形參,傳遞數組的值
{
int i;
float ave, sum = 0;
for (i = 0; i < n; i++)
sum += array[i];
ave = sum / n;
return ave;
}
int main12()
{
int i, n;
float aver,score[10];
printf("input n number :\n");
scanf_s("%d", &n);
printf("input %d score :\n",n);
for (i = 0;i< n; i++)
scanf_s("%f", &score[i]);
aver = average(score,n);//數組名做實參,退化爲指針,向形參傳遞數組的首個元素的地址
printf("average is :%5.2f\n", aver);
}
//二維數組。二維數組不管是做形參還是做實參,列都不可以省略;
//數組在內存中行存放,所以必須指定每行的長度;
//選擇法排序
void sort(int array[], int n)
{
int i,j,k,t;
for (i = 0; i < n-1; i++)//n-1次循環
{
k = i;
for (j = i + 1; j < n;j++)//j從第i+1個起比較
{
if (array[j] < array[k])
k = j;
t = array[k];
array[k] = array[i];
array[i] = t;
}
}
}
int main13()
{
int i;
int a[10];
printf("input 10 number :\n");
for (i = 0; i < 10; i++)
scanf_s("%d", &a[i]);
sort(a, 10);
printf("the sorted number :\n");
for (i = 0; i < 10; i++)
{
if (i % 5 == 0)
printf("\n");
printf("%5d ", a[i]);
}
}
float Max = 0, Min = 0;//全局變量//類型一定要一致
float average1(float array[],int n)
{
int i;
float aver, sum = array[0];
Max = array[0];
Min = array[0];
for (i = 1; i < n; i++)//從1開始.
{
if (Max < array[i])
Max = array[i];
else if (Min > array[i])//
Min = array[i];
sum += array[i];
}
aver = sum / n;
return aver;
}
int main()
{
float aver,score[10];
int i;
printf("input 10 number :\n");
for (i = 0; i < 10; i++)
scanf_s("%f", &score[i]);
aver = average1(score, 10);
//全局變量
printf("max=%5.2f,min=%5.2f,average=%5.2f\n", Max, Min, aver);
system("pause");
return 0;
}