最近所学习与使用的库函数
strcmp用于比较两个字符串是否相同头文件为.<string.h>
rang()随机生成随机数(一般来说种子为一,种子可用函数srand随机生成种子)
system(用于执行操作系统命令)头文件为<stdlib.h>
printf(用于打印)(头文件为stdio.h)
scanf(用于输入)(头文件为stdio.h)(vs中不可以直接使用会报错)
sqrt()
用于计算一个数的平方根(头文件为math.h)pow()
用于计算一个数的指定次幂(头文件为math.h)
多组输入while
int main()
{
int i = 0;
int a = 0;
while (scanf("%d", &a) != EOF)
{
for (i = 0;i < a;i++)
{
printf("%c", '*');
// printf("*");
}
printf("\n");
}
return 0;
}
while的多组输入中在 Windows 系统上,在终端中运行程序时,可以通过按下 Ctrl + Z
然后按回车键来表示文件结束。
关系操作符:
定义:用于比较的表达式,主要有6个(> 大于 <小于 >= 大于等于 <=小于等于 ==判断是否相等 !=不相等运算符
字符串之间的比较用函数(strcmp---头文件为string.h)
写的一个关机程序
scanf的用法:
scanf("%d",&num)"%d"
是格式说明符,表示读取一个十进制整数,&num
是变量num
的地址,因为scanf
需要通过地址来修改变量的值。
scanf
函数中格式控制字符串中的占位符必须按照特定的格式规范来使用,不能随意加入其他字符,除非这些字符在输入时也需要严格按照格式输入并且不影响占位符的正确匹配。
正确的写法应该是scanf("%d", &a);
,如果想要输出 “我是一个整数” 这样的提示信息,可以在scanf
函数调用前使用printf
函数输出提示内容,例如:
printf("请输入一个整数:");
scanf("%d", &a);
写一个猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()//设置菜单
{
printf("1 play\n");
printf("0 exit\n");
}
void game()
{
int r = rand()%100+1;
int b = 0;
while (1)
{
printf("请输入数字:");
scanf("%d", &b);
if (b > r)
{
printf("数字大了");
}
else if (b < r)
{
printf("数字小了");
}
else
{
printf("恭喜你猜对了");
break;
}
}
}
int main()
{
int a = 0;
srand((unsigned int)time(NULL));//设置rand所需的种子,不设置的话默认种子为1
do//循环
{
menu();
printf("请选择:");
scanf("%d", &a);
switch (a)//选择语句
{
case 1:
game();
break;
case 0:
printf("游戏结束");
break;
default:
printf("选择错误游戏结束");
break;
}
} while (a);
return 0;
}
数组的创建与使用
一维数组的创建与使用
1 格式:type(数组中数据的类型) arr-name(数组名)[](数组中可容纳前面类型元素的个数)
eg:int arr1[10] = {1,2,3,9}(这里我只写了4个是不完全初始化,完全初始化是前面[]中写了多少后面就写多少元素,也可以不要[]中的10那么这个时候你创建的数组大小就是你后面初始化用的元素个数)
2 一维数组中所有元素都有下标从0开始eg:int arr1[10] = {1,2,3,4,5,6,7}
0 1 2 3 4 5 6
当你需要数组中元素时可以直接用eg:arr[1] = 2与前面对应
2维数组的创建与使用
-
- 语法形式为:
数据类型 数组名[行数][列数];
。例如:int arr[3][4];
声明了一个 3 行 4 列的整型二维数组。
- 语法形式为:
-
初始化二维数组
- 可以在声明时进行初始化。例如:
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
分别初始化了两行数据。 - 也可以直接 : int arr[2][3] = {1,2,3,4,5,6}这样的话就是1 2 3 4 5 6
- 也可以部分初始化,未初始化的元素会被自动初始化为 0。例如:
int arr[2][3] = {{1}, {4}};
第一行只有第一个元素被初始化为 1,第二行只有第一个元素被初始化为 4,其余元素为 0。 - 数组练习
- 2分查找
-
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,5,6,8,7,9,0 };
int right = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int find = 1;
int key = 7;
while (left<=right)
{
int mid = (right - left) / 2 + left;
if (arr[mid] < key)
{
left = mid + 1;
}
else if (arr[mid] > key)
{
right = mid - 1;
}
else
{
find = 1;
break;
}
}
if (find == 1)
printf("恭喜你找到正确答案");
else
printf("很遗憾你没有找到答案");return 0;
} -
渐变像是“hello bite!!!”
-
#include<windows.h>
#include<stdlib.h>
int main()
{
char arr1[] = "hello bit!!!!";
char arr2[] = "*************" ;
int right = 0;
int left = 0;
right = sizeof(arr1)/sizeof(arr1[1])-1, left = 0;//sizeof用与计算来确定各种基本数据类型以及
//自定义数据类型所占用的字节数。
while (left <= right)
{
arr2[right] = arr1[right];
arr2[left] = arr1[left];
printf("%s \n", arr2);
Sleep(1000);//输出时停顿1000毫秒
system("cls");//系统执行清除操作
right--, left++;
}
printf("hello bit!!!");//对应前面的清除操作用于最后打印结果
return 0;
}
- 可以在声明时进行初始化。例如: