导读
今天是学习C语言的一周纪念日了,我自认为学习得略有感悟,对语法和框架有了一些大致的了解,跟着鹏哥C语言学习,到C语言初阶,从语句学起再到分支循环,也做了一些练习和尝试,不求甚解,这只是第一遍过初阶到分支循环部分,希望下一次复习巩固更加完善思维学习
以下是一些学习笔记和范例代码
范例代码
#include<stdio.h>
/*语句*/
//表达式语句//函数调用语句//控制语句//复合语句//空语句
/*分支和循环语句*/
/*
//if 语句
int main()
{
if(3==5)//为假不执行,为真执行
printf("hehe\n");
return 0;
}
*/
/*
//if else 语句
int main()
{
int age = 10;
if(age<18)//为真执行,默认if语句只能跟一条语句,只有一条语句不用+大括号{}【代码块】
{
printf("未成年\n");
printf("未成年\n");
}
//多条语句需要+大括号
else//为假不执行
{
printf("成年\n");
}
//单条语句可+{}也可不+{}
return 0;
}
*/
/*
//多分支if elseif else语句
int main()
{
int age = 0;
scanf("%d",&age);
if(age<18)
printf("青少年\n");
else if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<40)
printf("中年\n");
else if(age>=40 && age<60)
printf("壮年\n");
else if(age>=60 && age<100)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
*/
/*
// if else相近匹配
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");//else与其最近的if关联
return 0;
}
*/
//高质量C++编程
/*
//判断一个数为奇数还是
int main()
{
int num = 0;
int a = 0;
scanf("%d",&num);
a = num%2;
if(a)
{
printf("奇数\n");
}
else
{
printf("偶数\n");
}
return 0;
}
*/
/*
//100以内的奇数
int main()
{
int num = 1;
int a = 0;
a = num%2;
while(num<=100)
{
if(a)
{
printf("%d\n",num);
}
num++;
}
return 0;
}
*/
/*switch语句、default*///switch语句是可以嵌套的
/*
int main()
{
int day = 0;
scanf("%d",&day);
switch (day)//决定了入口//switch(整形表达式)
{
case 1://case+整形常变量,也可以放字符,字符存储进入为Ascall码为整数
printf("周一\n");
break;//case进去过后,执行完任务,通过break来跳出switch语句
case 2:
printf("周二\n");
break;
case 3:
printf("周三\n");
break;
case 4:
printf("周四\n");
break;
case 5:
printf("周五\n");
break;
case 6:
printf("周六\n");
break;
case 7:
printf("周日\n");
break;
default:
printf("选择错误\n");
break;
}
return 0;
}
*/
/*循环语句while /do while/ for*/
/*
//while
//1~10
int main()
{
int i = 1;//初始化
while (i<=10)
{
printf("%d ",i);//判断
i ++;//调整
}
return 0;
}
当while中遇到break,终止循环
当while中遇到continue,跳过本次循环continue后面的代码,直接判断是否进行下一次循环
*/
/*
//while 循环特点
int main()
{
char password[20] = {0};
printf("请输入密码->");
scanf("%s" ,password);
//getchar();//读取\n
int ch = 0;
while((ch = getchar())!='\n')//直到读取到\n
{
;
}
printf("请确认密码->(Y/N)");
int ret = getchar();
if('Y' == ret)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}
*/
/*
//while 循环,输入缓冲
int main()
{
char ch = '\0';
while ((ch = getchar())!= EOF)
{
if (ch<'0'||ch>'9')
continue;
putchar(ch);
}
//只打印数字字符
return 0;
}
*/
/*FOR循环*///for(表达式1;表达式2;表达式3)//1为初始化部分,2为条件判断部分,3为调整部分*for循环体内不要随便改循环变量,建议for循环控制变量1的取值采用前闭后开区间写法
/*
//for循环中的if break条件语句跳出循环
int main()
{
int i = 0;
for (i = 1;i <= 10;i++)
{if(i == 5)
break;
printf("%d ",i);//1,2,3,4
}
return 0;
}
*/
/*
//for循环中的if continue条件语句跳出循环
int main()
{
int i = 0;
for (i = 1;i <= 10;i++)
{if(i == 5)
continue;
printf("%d ",i);//1,2,3,4,6,7,8,9,10
}
return 0;
}
*/
/*
//
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
for (i = 1;i < 10;i++)
{
printf("%d ",arr[i]);//打印2,3,,4,5,6,7,8,9,10
}
return 0;
}
*/
/*
//for 循环的判断部分省略这意味着判断恒成立
int main()
{
for(;;)
{
printf("hehe\n");
}
}
*/
/*
//for循环嵌套,x先内循环再外循环
int main()
{
int i = 0;
int j = 0;
for(i = 0;i < 10;i++)
{
for(j = 0;j < 10;j++)
{
printf("hehe\n");
}
}
return 0;
}//打印100个hehe
*/
/*
//省略for循环初始化部分的结果
int main()
{
int i = 0;
int j = 0;
for(;i < 3;i++)
{
for(;j < 3;j++)
{
printf("hehe\n");
}
}
return 0;
}//打印3个hehe
*/
/*
//C99写法,部分编译器不支持
int main()
{
for (int i = 0;i < 10;i++)
{
printf("hehe\n");
}
return 0;
}
*/
/*
//多变量控制for循环
int main()
{
int x,y;
for(x = 0,y = 0;x<2 && y<5; ++x,y++)
{
printf("hehe\n");
}
return 0;
}
//打印两个hehe
*/
/*do循环语句while(表达式)*///循环体只使用一次
/*
int main()
{
int i = 1;
do
{
printf("%d",i);//输出12345678910
i++;
}
while(i<=10);
}
*/
/*
//do.......while,break
int main()
{
int i = 1;
do
{
i++;
if(i==5)
break;
printf("%d",i);//输出234
}
while(i<=10);
}
*/
/*
//do.......while,continue
int main()
{
int i = 1;
do
{
i++;
if(i==5)
continue;
printf("%d",i);//输出234567891011
}
while(i<=10);
}
*/
/*
//do.......while,continue
int main()
{
int i = 1;
do
{
if(i==5)
continue;
printf("%d",i);//输出1234
i++;
}
while(i<=10);
}
*/
//总结:常用for>>while>>do while
//写代码--办法(编程思维)+写代码(按照语法去写)
/*计算n的阶层*/
/*
int main()
{
int i = 1;
int n = 0;
int rest = 1;
scanf("%d",&n);
for(i = 1;i <=n;i++)
{
rest = rest*i;
}
printf("%d\n",rest);
return 0;
}
*/
/*计算1!+2!+3!+4!+5!+6!+7!+8!+9!+10!*/
/*
int main()
{
int i = 1;
int n = 0;
int ret = 1;
int sum = 0;
for(n = 1;n <=10;n++)
{
ret = 1;
for(i = 1;i <=n;i++)
{
ret = ret*i;
}
sum = sum+ret;
}
printf("%d\n",sum);
return 0;
}
*/
/*
int main()
{
int n = 0;
int ret = 1;
int sum = 0;
for(n = 1;n <=3;n++)
{
ret = 1;
ret = ret*n;
sum = sum+ret;
}
printf("%d\n",sum);//6
return 0;
}//计算n!
*/
/*
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
//在一个有序数组中查找具体的某个数字n
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
for(i = 0;i <=sz;i++)
{
if(arr[i]==k)
{
printf("找到了,下标是:%d\n",i);
break;
}
}
if(i==sz)
{
printf("找不到");
}
return 0;
}
*/
//折半查找法,数据是有序的
/*
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
//在一个有序数组中查找具体的某个数字n
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
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
{
printf("找到了,下标是:%d\n",i);
break;
}
}
if(left>right)
{
printf("找不到");
}
return 0;
}
*/
/*字符向中间聚拢呈现*/
/*
#include <string.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "welcome to beijing!!!!!";
char arr2[] = "#######################";
int left = 0;
int right = strlen(arr2)-1;//int right = sizeof(arr1)/sizeof(arr[0])-2
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
Sleep(1000);
//清空屏幕
system("cls");//system为库函数,执行系统命令
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}
*/
/*登录输入三次密码自动锁定*/
/*
#include <string.h>
int main()
{
int i = 0;
char password[20] = {0};
for(i=0;i<3;i++)
{
printf("请输入密码\n");
scanf("%s",password);
//if(password == "abcdefg")//比较两个字符串是否相等,不能用==号,要调用一个库函数strcmp
if(strcmp(password,"abcdefg")==0)//如果返回值是0,表示两个字符串相等
{
printf("密码正确");
break;
}
else
{
printf("密码错误");
}
}
if(i == 3)
{
printf("三次密码均错误,账户锁定");
}
}
*/
/*随机数,猜大小*/
/*
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**********************\n");
printf("********1.PLAY********\n");
printf("********0.EXIT********\n");
printf("**********************\n");
}
//0~RAND_MAX(32767);
void game()
{
//RAND_MAX;
//rand();//1.生成随机数
int ret = rand()%100+1;//生成随机数的函数范围(0~100)
int guess = 0;
//printf("%d\n",ret);
//2.猜数字
while(1)
{
printf("请猜数字->");
scanf("%d",&guess);
if(guess<ret)
printf("猜小了");
else if (guess>ret)
printf("猜大了");
else
{
printf("猜对了");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));//传一个空指针NULL//使用time函数返回的时间戳,再调用srand来生成随机数(设置起点)
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d",&input);
switch(input)
{
case 1:
//printf("猜数字\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
}while(input);
return 0;
}
*/
/*goto语句*///常见用于终止程序在深度嵌套中,不能跨函数跳转
//关机程序
//1.电脑运行起来后,一分钟内关键2.如果输入不关机就不关机
/*
#include <stdlib.h>
#include <string.h>
int main()
{
char input[20] = { 0 } ;
system("shut -s -t 60");
again:
printf("请注意,你的电脑在60秒内关机,如果输入:不关机,就取消关机\n");
scanf("%s",input);
if(strcmp(input,"不关机") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
*/
/*
//循环替代goto语句
#include <stdlib.h>
#include <string.h>
int main()
{
char input[20] = { 0 } ;
system("shut -s -t 60");
while(1)
{
printf("请注意,你的电脑在60秒内关机,如果输入:不关机,就取消关机\n");
scanf("%s",input);
if(strcmp(input,"不关机") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}
*/
结语
在这段时间,我依次掌握了c语言的语句、写代码--办法(编程思维)+写代码(按照语法去写)。只是初步了解,学习日期2024.7.19-7.22