加算演算用に関数をカスタマイズする方法、コードは次のとおりです。
int add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int sum = 0;
sum = add(a, b);
printf("sum = %d\n", sum);
return 0;
}
strcpyの使用、コードは次のとおりです。
int main()
{
char arr1[] = "bit";
char arr2[10] = "##########";
strcpy(arr2, arr1);
//string copy - 字符拷贝
//strlen - string length - 字符串长度有关
printf("%s\n", arr2);
return 0;
}
memsetの使用、コードは次のとおりです。
int main()
{
char arr[] = "hello world";
memset(arr, '*', 5);
printf("%s\n", arr);
//***** world
return 0;
}
2つの数値のサイズを比較する関数をカスタマイズします。コードは、次のとおりです。
int get_max(int x, int y)
{
if (x < y)
return y;
else
{
return x;
}
}
int main()
{
int a = 10;
int b = 20;
int max = get_max(a, b);
printf("max = %d\n", max);
max = get_max(100,500);
printf("max = %d\n", max);
return 0;
}
関数を使用して2つの整数を交換します。コードは、次のとおりです。
//这样是不能转换的
//void swap1(int x, int y)
//{
// int tmp = 0;
// x = tmp;
// x = y;
// y = tmp;
//}
使用函数交换两个整数
void swap2(int* qa, int* qb)
{
int tmp = 0;
tmp = *qa;
*qa = *qb;
*qb = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("a = %d,b = %d\n", a, b);
//swap1(a, b);//传值调用
//调用swap2函数
swap2(&a, &b);//传址调用
printf("a = %d,b = %d\n", a, b);
return 0;
}
ここでは、アドレスによる呼び出しと値による呼び出しの違いを理解するために、アプリケーションの範囲
この関数を使用して、100から200までの素数を出力します。コードは次のとおりです。
//是素数返回1,不是返回0
int prime(int a)
{
//2—>a-1
int b = 0;
for ( b = 2; b <= sqrt(a); b++)
{
if (a%b == 0)
return 0;
}
return 1;
}
int main()
{
//打印100到200之间的素数
int i = 0;
for ( i = 100; i <= 200; i++)
{
//判断i是否为素数
if (prime(i) == 1)
printf("%d\n", i);
}
return 0;
}
1000から2000までのうるう年を出力する関数を記述します。コードは次のとおりです。
int is_leap_year(int a)
{
if ((a % 4 == 0 && a % 100 != 0)||(a%400 == 0))
{
return 1;
}
return 0;
}
int main()
{
//写一个函数打印1000到2000年的闰年
int year = 0;
for ( year = 1000; year <= 2000 ; year++)
{
if (is_leap_year(year) == 1)
printf("%d\n", year);
}
return 0;
}
実際、これは前の殉教ループを使用するのとほとんど同じですが、もう1回呼び出します。
この関数はバイナリ検索を実装します。コードは次のとおりです。
// 本质上arr是一个指针
int binary_search(int arr[], int k,int sz)
{
//算法的实现
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;//中间元素的下标
if (arr[mid]<k)
{
left = mid + 1;
}
else if (arr[mid]>k)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
//二分查找
//在一个有序数组中查找具体的某个数
//如果找到了返回这个数的下标,找不到返回-1
//
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//求数组的元素个数
int ret = binary_search(arr, k,sz);
if (ret == -1)
{
printf("找不到指定的数字\n");
}
else
{
printf("找到了,下标是:%d\n", ret);
}
return 0;
}
関数を記述します。この関数が呼び出されるたびに、numの値は+1になります。
void add(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
add(&num);
printf("num = %d\n", num);//1
add(&num);
printf("num = %d\n", num);//2
add(&num);
printf("num = %d\n", num);//3
return 0;
}
機能への連鎖アクセス
int main()
{
printf("%d", printf("%d", printf("%d", 43)));//4321
return 0;
}
関数宣言、呼び出し、定義
//函数的声明
int add(int x, int y);
int main()
{
int a = 10;
int b = 20;
int sum = 0;
//函数的调用
sum = add(a, b);
printf("%d\n", sum);
return 0;
}
//函数的定义
int add(int x, int y)
{
int z = x + y;
return z;
}
上記は今日の学習内容です。私は毎日コードとブログに固執したいと思っています。
2021.1.22