初始C语言02-分支与循环(上)
【摘要】 前言:有人可能觉得笔者写的东西很简单,没有写的必要!但是我想说的是,存在即合理!夯实基础才是yyds!知识分享yyds!不喜勿喷,谢谢各位!如有错误,欢迎斧正! 1.C语言是结构化的程序设计语言c语言中有3中结构:顺序结构,选择结构,循环结构空语句: ; //只有一个分号 2.C语言中非0表示真,0表示假判断:C语言中,1表示真,0表示假错: 非0表示真 3.else和if的匹配就近原...
前言:有人可能觉得笔者写的东西很简单,没有写的必要!但是我想说的是,存在即合理!夯实基础才是yyds!知识分享yyds!
不喜勿喷,谢谢各位!
如有错误,欢迎斧正!
1.C语言是结构化的程序设计语言
c语言中有3中结构:顺序结构,选择结构,循环结构
空语句: ; //只有一个分号
2.C语言中非0表示真,0表示假
判断:C语言中,1表示真,0表示假
错: 非0表示真
3.else和if的匹配
就近原则:else与最近的if匹配
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
//什么也不打印
//因为if和最近的else匹配,因为不满足 a == 0所以不进入第一个if循环,所以不打印
//相当于 //增加了程序的可读性
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
程序题:打印1-100的奇数并计算个数
//方法1:故意营造奇数出来打印,效率更高
int main()
{
int count = 0;
int i = 1;
//while循环的写法
/*
while(i < 100)
{
printf("%d ",i);
i += 2;
count++;
}
*/
//for循环写法
for(i = 1; i < 100; i+=2)
{
printf("%d ",i);
i += 2;
count++;
}
printf("1-100的奇数个数为:%d\n",count);
}
//写法2:产生1-100的数,奇数:除2余数为1
int main()
{
int count = 0;
int i = 1;
while(i < 100)
{
if(i % 2 == 1)
{
printf("%d ",i);
}
i++;
}
return 0;
}
4.EOF-end of file 文件结束标志
EOF-> 代表的值为-1
getchar() : 读取失败的时候返回EOF
-
返回的字符,本质是字符也是ASCII码值,是整数
-
getchar 函数不仅仅是返回正常字符,还会返回EOF 是-1,所以放到整形变量中
遇到ctrl+z时结束循环输入
循环输入的方法
//写法1
while( (c = getchar()) !=EOF) //用括号括起来
while( scanf("%d",&a) != EOF)
//写法2
while( ~(c = getchar()) )
while( ~(scanf("%d",&a)) )
-1:
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码:11111111 11111111 11111111 11111111
内存中存放的是补码
EOF为-1
按位取反-1的补码 ->全0序列 即为0
程序题:密码确认题 (缓冲区)
输入缓冲区:内存空间
scanf ,getchar:从键盘上输入东西到输入缓冲区, 从输入缓冲区拿东西
//err程序
int main()
{
int ch = 0;
char password[20] = {0};
printf("请输入密码>:");
scanf("%S",password);//数组名是首元素地址,不用加取地址
printf("请确认密码(Y/N)>:");
ch = getchar();
if(ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
从键盘中输入字符到缓冲区,然后scanf,getchar拿东西,getchar一次只能读取一个字符,%s只能读到空白字符前的字符
空白字符:空格,换行)
因为最后一个是换行符(\n),所以我们要把缓冲区的字符清理干净,当getchar读取到\n使,说明缓冲区已经清理干净了
//正解
int main()
{
int ch = 0;
char password[20] = { 0 };
printf("请输入密码>:");
scanf("%s", password);//数组名是首元素地址,不用加取地址
printf("请确认密码(Y/N)>:");
//清理缓冲区字符
while (getchar() != '\n')
{
; //空语句,不处理
}
ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
若想要读取有空格的作为密码:使用gets()函数
使用gets()则不用考虑缓冲区的问题
int main()
{
int ch = 0;
char password[20] = { 0 };
printf("请输入密码>:");
gets(password);
printf("请确认密码(Y/N)>:");
ch = getchar();
if (ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)