#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0201(void)
{
//变量定义
//数据类型 变量 = 值;
int a;
//数组定义
//数组类型 数组名[元素个数] = {值1,值2,值3。。。。。};
int array[10] = { 1,2,3,4,5,6,7,8,9,10 };
//数组下标
//数字名[下标]
//数组元素下表是从0开始的到数组原元素个数-1
printf("%d\n", array[1]);
for (int i = 0; i < 10; i++)
{
printf("%d\n", array[i]);
}
return 0;
}
int main0202()
{ //数组原素参与计算
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
arr[3] = arr[5];
arr[2] = arr[3] * 2;
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
int main ()
{ //数组在内存中存储方式与大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%p\n", &arr[0]);
printf("%p\n", &arr[1]);
printf("%p\n", &arr[2]);
printf("%p\n", &arr[3]);
printf("%p\n", &arr[4]);
printf("%p\n", &arr[5]);
//数组名 不允许被赋值,因为数组名是一个常量,指向数组首地址
printf("%p\n", &arr);//与&arr[0]结果相同
printf("%p\n", &arr[0]);
//数组在内存中占的大小 = 数组类型*元素个数
printf("数组在内存中占的大小=%d\n", sizeof(arr));//
printf("数组元素的大小=%d\n", sizeof(arr[0]));
printf("数组元素的个数=%d\n", sizeof(arr)/sizeof(arr[0]));
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
十只小猪称重
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main(void)//十只小猪称重
{
int arr[SIZE];
for (int i = 0; i < SIZE; i++)
{
scanf_s("%d", &arr[i]);
}
int MAX = arr[0];
for (int j = 1; j < SIZE; j++)
{
if (MAX < arr[j])
{
MAX = arr[j];
}
}
printf("最重的小猪为%d\n", MAX);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#define SIZE 10
int main(void)//数组逆置
{
int arr[SIZE] = { 1,2,3,4,5,6,7,8,9 ,10};
int a = 0;
int j = SIZE - 1;
for (int i = 0; i < SIZE/2; i++)
{
a = arr[i];
arr[i] = arr[j];
arr[j] = a;
j--;
}
for (int i = 0; i < SIZE; i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)//冒泡排序
{
int arr[10] = { 10,8,6,9,3,5,4,2,15,11 };//初始化数组
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n-1; i++)//外层执行次数为 元素个数-1
{//外层控制行
for (int j = 0; j < n-1-i; j++)//内层执行个数为 元素个数-1-执行次数
{//内层控制行
if (arr[j] > arr[j+1])
{
//比较元素,满足条件交换 通过< 或者 >控制升序或者降序
int a = arr[j];
arr[j] = arr[j+1];
arr[j+1] = a;
}
}
}
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0802(void)
{
// 定义 二维数组
//数据类型 数组名[行][列] = {{值1,值2},{值1,值2},{值1,值2},{值1,值2}........}
int arr[2][3] = { {1,2,3},{4,5,6} };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("二维数组大小= %d\n", sizeof(arr));
printf("二维数组首地址= %p\n", &arr);
printf("二维数组一行大小= %d\n", sizeof(arr[0]));
printf("二维数组第一行首地址= %p\n", &arr[0]);
printf("二维数组第二行首地址= %p\n", &arr[0]);
printf("二维数组元素大小= %d\n", sizeof(arr[0][0]));
printf("二维数组第一个元素元素地址= %p\n", arr[0][0]);
printf("二维数组行数大小= %d\n", sizeof(arr) / sizeof(arr[0]));
printf("二维数组列数大小= %d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
//arr[0] = 100; //error arr 以及 arr [0]不可被更改
return 0;
}
int main(void)
{
// 二维数组的初始化
//int arr[2][3] = { {1,2,3},{4,5,6} };
//int arr[2][3] = { 1,2,3,4,5,6 };
//int arr[][3] = { 1,2,3,4,5,6 };
int arr[][3] = { 1,2,3,4,5,6,7 }; //以上命名方式均合法
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
int main0801(void)
{
// 定义 一个数组 存储五名学生的三门成绩
//求出每名学生的总成绩 平均成绩
//求出每个学科的总成绩 平均成绩
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0802(void)
{
// 定义 二维数组
//数据类型 数组名[行][列] = {{值1,值2},{值1,值2},{值1,值2},{值1,值2}........}
int arr[2][3] = { {1,2,3},{4,5,6} };
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
printf("二维数组大小= %d\n", sizeof(arr));
printf("二维数组首地址= %p\n", &arr);
printf("二维数组一行大小= %d\n", sizeof(arr[0]));
printf("二维数组第一行首地址= %p\n", &arr[0]);
printf("二维数组第二行首地址= %p\n", &arr[0]);
printf("二维数组元素大小= %d\n", sizeof(arr[0][0]));
printf("二维数组第一个元素元素地址= %p\n", arr[0][0]);
printf("二维数组行数大小= %d\n", sizeof(arr) / sizeof(arr[0]));
printf("二维数组列数大小= %d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
//arr[0] = 100; //error arr 以及 arr [0]不可被更改
return 0;
}
int main0803(void)
{
// 二维数组的初始化
//int arr[2][3] = { {1,2,3},{4,5,6} };
//int arr[2][3] = { 1,2,3,4,5,6 };
//int arr[][3] = { 1,2,3,4,5,6 };
int arr[][3] = { 1,2,3,4,5,6,7 }; //以上命名方式均合法
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
int main0804(void)
{
// 定义 一个数组 存储五名学生的三门成绩
//求出每名学生的总成绩 平均成绩
//求出每个学科的总成绩 平均成绩
int arr[5][3];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
scanf_s("%d", &arr[i][j]);
}
}
//打印学生成绩
for (int i = 0; i < 5; i++)
{
int sum = 0;
for (int j = 0; j < 3; j++)
{
sum += arr[i][j];
printf("%d ", arr[i][j]);
}
printf("\n");
printf("第%d名学生总成绩=%d\n", i + 1, sum);
printf("第%d名学生平均成绩=%d\n", i + 1, sum/3);
}
for (int i = 0; i < 3; i++)
{
int sum = 0;
for (int j = 0; j < 5; j++)
{
sum += arr[j][i];
}
printf("第%d门课程总成绩=%d\n", i + 1, sum);
printf("第%d门课程平均成绩=%d\n", i + 1, sum / 5);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)
{
//多维数组
//三维数组 数据类型 数组名[层][行][列]
int arr[2][3][4] =
{
{
{1,2,3,4},
{2,3,4,5},
{3,4,5,6},
}
};
/*int arr[][3][4] =
{
{
{1,2,3,4},
{2,3,4,5},
{3,4,5,6},
}
};*///合法
for (size_t i = 0; i < 2; i++)
{
for (size_t j = 0; j < 3; j++)
{
for (size_t k = 0; k < 4; k++)
{
printf("%d\t", arr[i][j][k]);
}
printf("\n");
}
}
printf("三维数组大小%d\n", sizeof(arr));//2*3*4 层*行*列*sizeof(数据类型)
printf("三维数组一层大小%d\n", sizeof(arr[0]));
printf("三维数组一行大小%d\n", sizeof(arr[0][0]));
printf("三维数组元素大小%d\n", sizeof(arr[0][0]));
printf("层%d\n", sizeof(arr) / sizeof(arr[0]));
printf("行%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));
printf("列%d\n", sizeof(arr[0][0]) / sizeof(arr[0][0][0]));
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main(void)
{
//定义字符数组
//char arr[5];
//字符
// char ch = 'a';
//字符串 字符串结束标志为\0 数字0等同于\0,但是不等同于'0'
//char* ch1 = "hello"; 等价于 char arr[6] = "hello";
char arr[6] = "hello";
printf("%s", &arr);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main1002(void)
{
//定义字符数组
//char arr[5];
//字符
// char ch = 'a';
//字符串 字符串结束标志为\0 数字0等同于\0,但是不等同于'0'
//char* ch1 = "hello"; 等价于 char arr[6] = "hello";
char arr[6] = "hello";
printf("%s", &arr);
return 0;
}
int main1003(void)
{
char ch[10];//定义字符数组存储字符串
scanf("%9s", ch); //加%9s 就不会出错
printf("%s\n", ch);
return 0;
}
int main1003(void)
{
//拼接字符串
char ch1[] = "hello";
char ch2[] = "world";
char ch3[20];
int i = 0;
int j = 0;
while (ch1[i] != '\0')
{
ch3[i] = ch1[i];
i++;
}
while (ch2[j] != '\0')
{
ch3[i + j] = ch2[j];
j++;
}
ch3[i + j] = '\0';
printf("%s", ch3);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main1101(void)
{
char ch[100];
gets(ch);//通过键盘获取字符串 gets接收字符串可以带空格 不安全
//scanf("%[^\n]", ch);//通过正则表达约束(接收非\n的任何东西) scanf也可以实现获取带空格字符串 不安全
printf("%s\n", ch);
return 0;
}
int main1102(void)
{
char ch[100];
fgets(ch,100,stdin);//通过键盘获取字符串 fgets接收字符串可以带空格 可以带回车 安全
//fgets获取字符串少于元素个数会有 \n 当获取个数大于或等于元素个数 没有\n
printf("%s", ch);
return 0;
}
int main1103(void)
{
char ch[] = "hellow world";
puts("hellow \0world");//自带换行,遇到\0 停止。
puts(" ");//换行操作
return 0;
}
int main1104(void)
{
char ch[] = "hellow world";
fputs(ch, stdout);//输出一个字符串 与 printf("%s" ch); 等效
return 0;
}
int main1105(void)
{
char ch[100] = "hellow world";
printf("数组大小%d\n", sizeof(ch));
printf("字符串大小%d\n", strlen(ch));
return 0;
}
int main(void) //实现strlen同功能函数
{
char ch[100] = "hellow world";
int len = 0;
while (ch[len] != '\0')
{
len++;
}
printf("字符串长度%d\n", sizeof(ch));
printf("字符串大小%d\n", strlen(ch));
return 0;
}