笔记(指针 循环)

时间:2022-12-08 17:00:04

关于指针: int× p = &a;

p:  存储的是  地址值

&a: 获取存储变量a的地址值

×p: 获取p存储的地址值,并以此地址值找到存储的变量a

int* : 存储p的大小 为   4byte /8byte(32位系统/64位系统)

指针即指向地址的值

关于 if else 

0为假   非0为真

if会与相隔最近的else  匹配

int main() {

int a = 0;
int b = 1;
if (a == 1)
if (b == 1)
printf("b == 1 \n");
else
printf("a == 0 \n");


return 0;
}

   

笔记(指针 循环)

int main() {

int i;
printf("1-100的奇数是:");

for (i = 1; i <= 100; i++)
{
if (i % 2 != 0)
printf(" %d ",i);

// i+=2

}
printf("\n");

return 0;
}

关于while循环的用法

int main() {

char ch = 0;
// EOF : ctrl + z -1
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
}


关于跳过getchar的问题

int main() {
int ret = 0;
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password); // 输入123456\n
printf("请确认(Y/N):>");
//缓冲区还剩一个\n,可以读取一下
//getchar(); --> 解决
//while (getchar() != '\n') --> 解决 scanf只识别空格之前的 例如 123456 abcd
//{
// ;
//}
ret = getchar();// --> \n
if (ret == 'Y') {
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}

笔记(指针 循环)


关于二分查找法(数组有序)

 //二分查找法
int main() {
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 11;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0; //左下标
int right = sz - 1; //右下标
while (left <= right)
{
int mid = (right + left) / 2; //平均值
if (arr[mid] > k) {
right = mid - 1;
}
else if(arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是 : %d", mid);
break;
}
}
if (left > right) {
printf("找不到 \n");
}
return 0;
}

笔记(指针 循环)

int main() {

char arr1[] = "welcome to bit!!!!!!";
char arr2[] = "####################";

int left = 0;
int right = strlen(arr1) - 1;

while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
system("cls"); //执行系统,命令的一个函数 cls 清屏
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
int main() {
int n = 1;
while (n <= 3) {

char ch[20] = {0};
scanf("%s", ch);
//if (ch == "123456") == 不能用来比较字符串相等
if (strcmp(ch , "123456") == 0)
{
printf("密码正确 \n");
break;
}
else {
printf("第%d次输入密码错误\n", n);
n++;
}
}
return 0;