1.数组的排序方法之一:冒泡排序
对于一个乱序的数组,可以使用冒泡排序的方法对其进行排序,具体的方法是:从头开始比较两个相邻的元素,每次比较都要将较大的数字放在两个元素的右边,完成交换。之后依次进行第二个数和第三个数,以此类推,到最后就会将一个最大的数字放在最后,如此继续,就能将第二大的数字放在倒数第二个位置上,完成嵌套循环之后,就完成了冒泡排序的过程。
当遇到相等的元素不需要交换的时候,冒泡排序就是很好的排序算法。
2.C基础部分:命名规则
(1)变量名的开头必须是字母或下划线,不能是数字。
(2)变量名中的字母是区分大小写。
(3)变量名绝对不可以是C语言关键字。
(4)变量名中不能有空格。
3.C基础部分:if-else if-else
(1)if基本的表达形式是:if (表达式) 语句1 else 语句2
(2)表达式中的关系运算符和逻辑运算符:关系运算符的作用就是判明这两个表达式的大小关系。
关系运算符的运算结果只有 0 或 1。当条件成立时结果为 1,条件不成立结果为 0,在if中1则表示成立,成立即可进行if下的语句,不成立的时候只能去进行else中的语句。else if是存在多种情况时候使用的语句,可以使用else if进行多次判断并且执行满足判断条件的语句。
逻辑运算符指的是通过逻辑运算得出真或假的值,通过逻辑运算,可以减少嵌套if或是else if的使用。
4:C基础部分:for循环
for循环的基础形式是:
for (循环变量赋初值; 循环条件; 循环变量增值)
{
语句;
}
通过for循环可以清楚的看到,循环条件,循环变量的变化情况,通过初值也可以进行一些数组的操作,对于反复多次的计算可以很方便的去得到结果。
5.作业题:
(1)将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。(长度是8)
#include<stdio.h>
#include<stdlib.h>
int *initArray();
void changeSeat(int *a);
void travelArray(int *a);
int main() {
int *ArrayList = initArray();
travelArray(ArrayList);
changeSeat(ArrayList);
travelArray(ArrayList);
system("pause");
return 0;
}
int *initArray() {
printf("please input a Array:\n");
int *a = (int *)malloc(8 * sizeof(int));
for (int i = 0; i < 8; i++) {
scanf("%d", &a[i]);
}
return a;
}
void changeSeat(int *a) {
int temp;
for (int i = 0; i < 7; i++) {
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
void travelArray(int *a) {
printf("Array: ");
for (int i = 0; i <8; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
(2)查找序列中是否存在35这一数据
#include<stdio.h>
#include<stdlib.h>
int *initArray();
void findNum(int *a, int num);
int main() {
int *ArrayList = initArray();
printf("Please input a num that you want to find:\n");
int TestNum;
scanf("%d", &TestNum);
findNum(ArrayList, TestNum);
system("pause");
return 0;
}
int *initArray() {
printf("please input a 8-size Array:\n");
int *a = (int *)malloc(8 * sizeof(int));
for (int i = 0; i < 8; i++) {
scanf("%d", &a[i]);
}
return a;
}
void findNum(int *a, int num) {
int left = 0;
int right = 7;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (a[mid] < num) {
left = mid + 1;
}
else if (a[mid] > num) {
right = mid - 1;
}
else {
break;
}
}
if (left <= right) {
printf("The num is:%d in:%d", a[mid], mid+1);
}
else {
printf("Can't find the num!!!");
}
}
(3)统计具有10个元素的自然数数组 nun 中的奇数个数
#include<stdio.h>
#include<stdlib.h>
int *initArray();
int theNumOfOdd(int *a);
int main() {
int *ArrayList = initArray();
printf("The Num Of Odd is:%d\n", theNumOfOdd(ArrayList));
system("pause");
return 0;
}
int *initArray() {
printf("please input a 10-size Array:\n");
int *a = (int *)malloc(10 * sizeof(int));
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
return a;
}
int theNumOfOdd(int *a) {
int TempNum = 0;
for (int i = 0; i < 10; i++) {
if (a[i] % 2 != 0) {
TempNum++;
}
else {
continue;
}
}
return TempNum;
}
(4)将一个无序数组{54,37,62,13,89,73,65,42}排序
#include<stdio.h>
#include<stdlib.h>
int *initArray();
void travelArray(int *a);
void sortArray(int *a);
int main() {
int *ArrayList = initArray();
travelArray(ArrayList);
sortArray(ArrayList);
travelArray(ArrayList);
system("pause");
return 0;
}
int *initArray() {
printf("please input a 8-size Array:\n");
int *a = (int *)malloc(8 * sizeof(int));
for (int i = 0; i < 8; i++) {
scanf("%d", &a[i]);
}
return a;
}
void sortArray(int *a) {
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7-i; j++) {
int temp = 0;
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
void travelArray(int *a) {
printf("Array: ");
for (int i = 0; i <8; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
(5)斐波那契数列
#include<stdio.h>
#include<stdlib.h>
int Fibonacci(int n);
int main() {
printf("Input the length of Fibonacci:\n");
int n = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
printf("Fibonacci(%d)=%d\n", i, Fibonacci(i));
}
system("pause");
return 0;
}
int Fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
}
else {
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
(6)哥德巴赫猜想
#include<stdio.h>
#include<stdlib.h>
void Goldbach(int n);
int main() {
int t;
printf("请输入数字,输入0停止:\n");
scanf("%d", &t);
while (t!=0){
Goldbach(t);
scanf("%d", &t);
}
system("pause");
return 0;
}
void Goldbach(int n) {
int *a = (int *)malloc(n * sizeof(int));
int temp = 0;
if (n % 2 != 0||n<=2) {
printf("请输入一个偶数且大于2!\n");
}
else {
for (int i = 2; i <= n; i++) {
for (int j = 2; j <= i; j++) {
if (i%j == 0 && i != j) {
break;
}
if (i == j&&i%j == 0) {
a[temp] = i;
temp++;
}
}
}
}
for (int i = 0; i < temp; i++) {
int temp1;
temp1 = n - a[i];
for (int j = 0; j < temp; j++) {
if (temp1 == a[j]&&temp1<=a[i]) {
printf("%d=%d+%d\n", n, temp1, a[i]);
}
}
}
}