C语言Day04笔记

1、代码分析

(1)getchar(); 操作步骤:1.取走stdin缓冲区的字符;若没有,等待从键盘输入(如abc\n);2.取走第一个 字符的对应的ASCII码,将其他字符对应的ASCII码存进stdin缓冲区中;

(2)ch=getchar();1.取走stdin缓冲区的字符;若没有,等待从键盘输入;2.将第一个字符对应的ASCII码存进 变量ch中,其他的存进stdin缓冲区中;

(3)putchar(params) 向控制台输入一个字符,putchar('a'),putchar(97)[0-127]

#include <stdio.h>
int main() {
int ch = 0;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
return 0;

注意:

1、EOF对应键盘的输入为:ctrl+z, end of file 文件结束标志

2、getchar()函数实际上是int getchar(void),它返回的是ASCII码值,所以只要是ASCII码表里有的字符它 都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符

3、putchar(ch) 向终端输出一个字符,其中ch可以是被单引号引起来的一个字符,可以是介于0~127之间 的一个十进制整型数(包含0和127)(超过127就不是ASCII码了)

4、rewind(stdin): 清除缓冲区中的所有字符;

5、scanf函数在遇到空格,回车,制表符就会认为输入结束;

#include <stdio.h>
void test2() {
    char a, b;
    printf("请输入a字符:\n");
    a = getchar();
    rewind(stdin);// 清理缓冲区的内容
    printf("请输入b字符:\n");
    b = getchar();
    rewind(stdin);// 清理缓冲区的内容
    printf("c=%c,c=%d; c=%c,c=%d\n", a, a, b, b);
}
void test3() {
    char password[20] = { 0 };
    printf("请输入密码:");
    scanf("%s", password); // scanf函数在遇到空格,回车,制表符就会认为输入结束
    getchar();// 从缓冲区中取出回车符
    printf("是否确认密码?(Y 是 N 否)\n");
    int ret = getchar();
    if (ret == 'Y') {
        printf("确认!");
    }
    else {
        printf("取消确认!");
    }
}
void test4() {
    int ch;
    while ((ch = getchar()) != EOF) {
        if (ch < '0' || ch > '9') {
            continue;
        }
        putchar(ch);
    }
}
void test5() {
    // 声明两个变量  a\n
    char a, b;
    scanf_s("%c", &a, 1);
    getchar();
    scanf_s("%c", &b, 1);
    getchar();
    printf("%c,%c", a, b);
}
void test6() {
    char a, b;
    int i = 1;//控制循环
    while (i <= 3) {
        printf("对a,b进行赋值\n");
        scanf_s("%c%c", &a, 1, &b, 1);
        // 取出回车符
        getchar();
        i = i + 1;
        printf("%c,%c\n", a, b);
    }
}
void test7() {
    char a, b;
    int i = 1;//控制循环
    while (i <= 3) {
        printf("对a,b进行赋值\n");
        scanf("%c%c", &a, &b);
        // 取出回车符
        getchar();
        i = i + 1;
        printf("%c,%c\n", a, b);
    }
}
void test8() {
    char name[5]; // 定义了一个字符数组
    // 数组中第一个元素怎么表示  name[0]
    // 声明一个表示一标的变量
    int i = 0;
    while (i < 5) {
        //printf("用户输入\n");
        scanf("%c", &name[i]);
        // 更新循环变量
        i = i + 1;
    }
    rewind(stdin);//清空缓冲区
    // 打印
    int j = 0;
    while (j < 5) {
        printf("%c\n", name[j]);
        j = j + 1;
    }
}
// 求两个数的最大值
int getMax(int a,int b) {
    int max = a;
    if (a<b) {
        max = b;
    }
    return max;
    
}
int main2() {
    test7();
   char a, b;
   scanf("%c %c",&a,&b);
   printf("a=%c,b=%c\n",a,b);
   test8();
   char str[5] = "hell";
   printf("%s",str);
        char a, b;
           scanf("%c %c", &a, &b);
           printf("a=%c,b=%c\n", a, b);
     int max = getMax(10,20);
     max = getMax(max,30);
     return 0;
}

2、for循环以及break 与 continue

//语法结构:
  for(表达式1;表达式2;表达式3){
   循环语句块;
}

注释:

表达式1:初始化部分,用于初始化循环变量

表达式2:条件判断部分,用于是否进行循环操作的判断

表达式3:调整部分,用于更新循环变量

for循环中也只可以使用break和continue,它们的意义和在while循环中一样。

#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 退出循环
}
printf("%d\n", i);
}
return 0;
}
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5)
continue; // 结束本次循环
printf("%d\n", i);
}
return 0;
}

for循环的变种

// 变种1
for (;;) {
printf("死循环!");
}
// 变种2
int i = 0;
int j = 0;
for (; i < 10; i++) {
for (; j < 10; j++) {
printf("hahaha");
}
}
// 变种3
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, ++y) {
printf("hahaha");
}

3、do-while循环

do-while的语法:

do {
循环语句块;
} while(表达式);

do-while循环的特点:

循环至少执行一次,使用的场景有限。

例如:用户输入考试成绩,如果没有通过,继续进行考试,直到通过为止。

#include <stdio.h>
int main() {
int score = -1;
do {
printf("请输入考试成绩:[0,100]");
scanf("%d", &score);
} while (score < 60);
printf("恭喜您,通过考试!");
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值