C语言入门课程学习记录5
- 第23课 - C 语言中的常量
- 第24课 - 初探程序中的数组
- 第25课 - 数组特性深入剖析
- 第26课 - 多维数组的概念与示例
本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录
第23课 - C 语言中的常量
#include <stdio.h>
#define FirstValue 1u
#define SecondValue 2.2f
enum
{
ThirdValue = 333,
FourthValue = 444,
// TestValue = 5.5 /* ERROR */ //|error: enumerator value for 'TestValue' is not an integer constant|
};
int main()
{
unsigned ui = FirstValue;
int si = FourthValue;
printf("FirstValue = %u\n", FirstValue);//%u是一种输入输出格式说明符,用于按无符号整数的格式输入或输出数据。
printf("SecondValue = %f\n", SecondValue);
printf("ThirdValue = %d\n", ThirdValue);
printf("FourthValue = %d\n", FourthValue);
printf("ui = %u\n", ui);
printf("si = %d\n", si);
/* ERROR:
0.001f = 1.0;
FirstValue = 28;
ThirdValue = 555;
*/
return 0;
}
/*
output:
FirstValue = 1
SecondValue = 2.200000
ThirdValue = 333
FourthValue = 444
ui = 1
si = 444
*/
#include <stdio.h>
int main()
{
const int ci = 222;
const double cd = 1.11;
int it = ci;
double dd = cd;
/* ERROR:
ci = 333;
cd = 2.22;
*/
printf("it = %d\n", it);
printf("dd = %f\n", dd);
return 0;
}
第24课 - 初探程序中的数组
计算前n个正整数之和
#include <stdio.h>
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int flag = 0;
int sum = 0;
do
{
printf("Input: ");
scanf("%d", &n);
flag = ((0 <= n) && (n <= 100));
if( flag )
{
sum = 0;
for(i=0; i<=n; i++)
{
sum += i;
}
printf("Sum = %d\n", sum);
}
} while( flag );
return 0;
}
利用数组存储数据,并根据下标返回数值
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int flag = 0;
int sum[101];
for(n=0; n<=100; n++)
{
sum[n] = 0;
for(i=0; i<=n; i++)
{
sum[n] += i;
}
}
do
{
printf("Input: ");
scanf("%d", &n);
flag = ((0 <= n) && (n <= 100));
if( flag )
{
printf("Sum = %d\n", sum[n]);
}
} while( flag );
return 0;
}
优化,减少循环次数
#include <stdio.h>
int main()
{
int n = 0;
int flag = 0;
int sum[101];
sum[0] = 0;
for(n=1; n<=100; n++)
{
sum[n] = sum[n-1] + n; // sum[1] = sum[0] + 1;
// sum[2] = sum[1] + 2;
// ......
}
do
{
printf("Input: ");
scanf("%d", &n);
flag = ((0 <= n) && (n <= 100));
if( flag )
{
printf("Sum = %d\n", sum[n]);
}
} while( flag );
return 0;
}
第25课 - 数组特性深入剖析
#include <stdio.h>
#define size 8
int a[size];
int main()
{
int arr[] = { 5, 4, 3, 2, 1 };
int i = 0;
int len = sizeof(arr)/sizeof(arr[0]);
printf("sizeof(arr) = %d\n", sizeof(arr));
printf("len(arr) = %d\n", len);
// arr[1.5] = 15;
// arr = a;
for(i=0; i<len; i++)
{
printf("arr[%d] = %d\n", i, arr[i]);
}
return 0;
}
/*
output:
sizeof(arr) = 20
len(arr) = 5
arr[0] = 5
arr[1] = 4
arr[2] = 3
arr[3] = 2
arr[4] = 1
*/
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
int len = sizeof(arr)/sizeof(arr[0]);
int x = 0;
for(i=0; i<len; i++)
{
printf("Input NO.%d: ", i + 1);
scanf("%d", &arr[i]);
}
while( 1 )
{
printf("Target Number: ");
scanf("%d", &x);
for(i=0; i<len; i++)
{
if( x == arr[i] )
{
break;
}
}
if( i < len )
{
printf("Index: %d\n", i + 1);
}
else
{
printf("No Target Number!\n");
}
}
return 0;
}
#include <stdio.h>
int main()
{
int arr[] = { 9, 1, 2, 1, 1, 4, 5, 5, 5, 9, 9, 9 };
int i = 0;
int j = 0;
int len = sizeof(arr)/sizeof(arr[0]);
int n = 0;
for(i=0; i<10; i++)
{
n = 0;
for(j=0; j<len; j++)
{
if( i == arr[j] )
{
n++;
}
}
printf("%d: %d\n", i, n);
}
return 0;
}
#include <stdio.h>
int main()
{
int arr[] = { 9, 1, 2, 1, 1, 4, 5, 5, 5, 9, 9, 9 };
int i = 0;
int j = 0;
int len = sizeof(arr)/sizeof(arr[0]);
int cnt[10] = {0};
int num = 0;
for(j=0; j<len; j++)
{
num = arr[j];
cnt[num] += 1;
}
for(i=0; i<10; i++)
{
printf("%d. %d\n", i, cnt[i]);
}
return 0;
}
第26课 - 多维数组的概念与示例
#include <stdio.h>
int main()
{
int a[][3] = { {1, 2, 3}, {4, 5} };
int s1 = sizeof(a) / sizeof(a[0]); // 2
int i = 0;
int j = 0;
printf("s1 = %d\n", s1);
printf("sizeof(a) = %d\n", sizeof(a));
printf("sizeof(a[0]) = %d\n", sizeof(a[0])); // int[3]
for(i=0; i<s1; i++)
{
for(j=0; j<3; j++)
{
printf("a[%d][%d] = %d\n", i, j, a[i][j]); // 数组的数组可以看作矩阵
// 因此,可以使用 2 个下标访问矩阵中的值
}
}
return 0;
}
/*
output:
s1 = 2
sizeof(a) = 24
sizeof(a[0]) = 12
a[0][0] = 1
a[0][1] = 2
a[0][2] = 3
a[1][0] = 4
a[1][1] = 5
a[1][2] = 0
*/
#include <stdio.h>
int main()
{
int a[3][3];
int i = 0;
int j = 0;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("Input a[%d][%d]: ", i, j);
scanf("%d", &a[i][j]);
}
}
printf("Matrix:\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
if( i < j )
{
int t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
}
printf("Matrix-T:\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}