一.小知识
1.printf返回值
在初学C语言时 我们常会用到库函数printf来向屏幕上打印我们想看到的结果。
那关于printf的返回值 你有了解吗?下面我用一段代码来窥看一下。
#include <stdio.h>
int main()
{
int a = 55;
int i=printf("%d", a);
printf("%d", i);
return 0;
}
我运行后发现屏幕上打印了552,由此可见i接受了printf的返回值2,并且打印出来了。我们再举个例子。
#include <stdio.h>
int main()
{
int a = 55;
int i=printf("%d\n", a);
printf("%d", i);
return 0;
}
这次的结果就变成了:
综上所述 我们可以知道printf的返回值为输入的字符串数量
2.单目sizeof求数组元素个数
sizeof作为一个操作符 他可以以字节形式给出了其操作数的存储大小。在计算数组时 我们可以利用他巧妙的计算出数组元素个数,如下:
int main()
{
char ch[] = { 1,2,3,4,5,6,7,8,9 };
int sz = sizeof(ch) / sizeof(ch[0]);
printf("%d", sz);
return 0;
}
结果在屏幕上就正确输入了个数9;
3.修改数组中的字符串、
int main()
{
char ch[] = "saber";
printf("%s", ch);
return 0;
}
如上图 若我们想将ch中的字符串修改成arche,是不可以直接ch=arche的,这里我们需要用到strcpy函数 进行拷贝:
#include <stdio.h>
#include <string.h>
int main()
{
char ch[7] = "saber";
char arr[] = "archer";
strcpy(ch, arr);
printf("%s", ch);
return 0;
}
在使用strcpy函数时 我们要注意strcpy(arr1,arr2)这里arr1的长度要大于等于arr2的长度,才能保证拷贝正常进行。
二.函数
1.sleep函数
sleep函数使线程将放弃此次运行的时间片,常用来达到某些视觉效果。
2.gets函数
在我们学习过scanf和getchar函数后,我们不免会感受到他们的不足。所以我们需要了解一个新的函数gets。
gets函数只有一个参数。参数类型为 char* 型。**char *gets(char *str);**gets()
函数的功能是从输入缓冲区中读取一个字符串存储到字符型指针中。
get函数不像scanf 不仅可以接受空格 而且在输入运行时的回车 也会清除 不会留在输入缓冲区,所以在使用gets函数后不需要使用getchar清理缓冲区。简单举个例子
int main()
{
char ch[5] = { 0 };
gets(ch);
printf("%s", ch);
return 0;
}
要注意在输入字符串时空格和\0都被算成有效个数,不得超过数组定义的元素个数。
三.题目示例
1.递归实现n的k次方
学习过递归之后,这个题目可以很好的锻炼我们递归思想。首先我们将k分为大于零 小于零 等于零 三种情况。
#include <stdio.h>
double Pow(int n, int k)
{
if (k == 0)
return 1.0;
else if (k > 0)
return n * Pow(n, k - 1);
else
return 1.0 / Pow(n, -k);
}
int main()
{
int n = 0;
int k = 0;
scanf("%d %d", &n, &k);
double ret = Pow(n, k);
printf("%lf", ret);
return 0;
}
以上就是我的学习随记。感谢阅读 共同进步。