day04

局部变量全局变量可以重名作用域遵循就近原则

#include<stdio.h>                                            // 引入标准输入输出库
int a=10;                                                          // 全局变量a,初始值为10
void fun();                                                       // 函数声明,fun函数没有参数,返回类型为void

int main(int argc, char const *argv[])              // 主函数,程序的入口点
{
    int a=8;                                                      // 局部变量a,覆盖全局变量a,初始值为8
    fun();                                                         // 调用fun函数
    printf("%d",a);                                           // 打印局部变量a的值,输出8
    return 0;                                                    // 主函数返回0,表示程序正常结束
}

void fun()                                                      // fun函数的定义
{
    printf("a:%d",a);                                       // 打印全局变量a的值,输出10
}

[1]输入输出

1.1字符输入输出

getchar           读取字符

man手册查看getchar:

#include <stdio.h>      //来自标准库stdio.h

int getchar(void);

功能终端输入一个字符

参数

返回值终端输入字符ASCII

使用示例:

#include <stdio.h>

int main() {

    int res=getchar();

    printf("%d\n",res);
    return 0;
}

putchar          输出字符

#include <stdio.h>      //来自标准库stdio.h

int putchar(int c);

功能终端输出一个字符

参数字符ASCII

返回值字符ASCII

使用示例:

#include <stdio.h>

int main() {
    int res=getchar();

    putchar(res);

    int num=putchar('\n');或者putchar(10);

                                      //putchar()函数的参数是一个整数,表示要输出的字符的ASCII码值

                                     //应该使用单引号来表示一个字符常量,而不是双引号

                                     //'\n'和10表示换行

    printf("%d\n",num);//输出


}

1.2格式输入输出

printf

#include <stdio.h>

int printf(const char *format, ...);

功能指定格式终端输出

参数多个

返回值正确输出字符个数

格式

%d int

%c char

%f float

%lf double

%s 字符串

%p 指针

%o 八进制 %#o

%x 十六进制 %#x

使用示例:

#include <stdio.h>                        // 引入标准输入输出库

int main()

{
    int a = 0x123;                           // 定义整型变量a并赋值为十六进制数0x123(十进制数291)

    printf("%#x", a);                       // 以带前缀的十六进制形式输出变量a的值

    printf("hello");                          // 输出字符串"hello"和一个换行符

    int a = 0x123;                         // 再次定义整型变量a并赋值为十六进制数0x123(十进制数291)

    printf("%#x", a);                     // 再次以带前缀的十六进制形式输出变量a的值

    int b = 456;                            // 定义整型变量b并赋值为十进制数456

    printf("a:%d b:%d", a, b);       // 输出变量a和b的值,分别用%d格式化为十进制整数

    return 0;                                 // 程序正常结束,返回0
}

scanf                输入多个字符时可用空格键隔开或者enter键换行

#include <stdio.h>

int scanf(const char *format, ...);

功能指定格式终端 (输入)

参数多个

返回值正确输入字符个数

第一个字符输入格式错误直接返回0

scanf不能加'\n'

int a=0;

scanf("%d",&a);

printf("a:%d\n",a);

=====================

int a=0,b=0;

scanf("%d %d",&a,&b);

printf("a:%d b:%d\n",a,b);

[2]垃圾字符回收

2.1 通过空格回收

可以回收一个多个空格 tab 回车

char  c=0,d=0;

scanf("%c %c",&c,&d);

printf("c:%c d:%d\n",&c,&d);

2.2 %*c *抑制符 (了解)

可以回收任意一个字符

char  c=0,d=0;

scanf("%c%*c%c",&c,&d);

printf("c:%c d:%c\n",c,d);

2.3 getchar

while(1)

{

char a;

scanf(‘%c’,&a);

printf("%c\n",a);

getchar();

}

[2]分支语句

顺序结构:程序按照代码的顺序逐行执行,从上到下依次执行。

分支结构:根据条件判断,选择不同的执行路径。常见的分支结构有if语句、switch语句等。

循环结构:重复执行一段代码,直到满足特定条件才停止。常见的循环结构有for循环、while循环和do-while循环。

if

基本结构

if(常量值或表达式)

{

//代码块

}

=====================

int age=10;

if(age>18)

{

printf("work\n");

}

========================

if(常量值或表达式)

{

//代码块1;

}

else

{

//代码块2;

}

===========================

int age=10;

if(age>18)

{

printf("work\n");

}

else

{

printf("study\n");

}

多层分支

if(表达式1)

{

代码段1

}

else if(表达式2)

{

}

else

{

}

===========================

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)

终端输入一个年份判断平年闰年

#include <stdio.h>
int main() {
    int year=0;
    printf("请输入一个年份:");
    scanf("%d", &year);
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        printf("%d是闰年。\n", year);
    } else {
        printf("%d是平年。\n", year);
    }
    return 0;
}

终端输入大写小写

终端输入小写出大写

输入其他打印"error"

#include <stdio.h>
int main() {
    char input;
    printf("请输入一个字符:");
    scanf("%c", &input);
    if (input >= 'A' && input <= 'Z') {
        printf("输出小写字母:%c\n", input + ('a' - 'A'));
    } else if (input >= 'a' && input <= 'z') {
        printf("输出大写字母:%c\n", input - ('a' - 'A'));
    } else {
        printf("error\n");
    }
    return 0;
}

100-90: A

89-80: B

79-70: C

<70: 补考

#include <stdio.h>
int main() {
    int score;
    printf("请输入分数:");
    scanf("%d", &score);
    if (score >= 90 && score <= 100) {
        printf("等级:A");
    } else if (score >= 80 && score < 90) {
        printf("等级:B");
    } else if (score >= 70 && score < 80) {
        printf("等级:C");
    } else if (score < 70) {
        printf("补考");
    } else {
        printf("无效分数");
    }
    return 0;
}

嵌套结构

if(表达式1)

{

if(表达式2)

{

}

}

================

if(s>=0&&s<=100)

{

// if() ABC...

}

else

{

printf("error\n");

}

注意

1.  if后边可以没有else, else前边必须有if

2.  分支语句代码块只有一句可以省略{ }

switch

switch(常量值或表达式)

{

case 常量值1:

代码块1;

break;

case 常量值2:

代码块2;

break;

default:

代码块n;

break;

}

============================

int a=4;

switch (a)

{

case 1:

printf("aaaa\n");

break;

case 4:

printf("bbb\n");

break;

case 5:

printf("ccc\n");

break;

default:

break;

}

===========================

100-90: A

89-80: B

79-70: C

<70: 补考

注意:

1.  case后边的常量值是整型或字符型,不能是浮点型或字符串

2.  case分支遇到break结束; 后边可以没有break,会从符合条件的分支开始一直运行到整个switch语句执行完结束

#include <stdio.h>
int main() {
    int score;
    char grade;
    printf("请输入分数:");
    scanf("%d", &score);
    if (score >= 90 && score <= 100) {
        grade = 'A';
    } else if (score >= 80 && score < 90) {
        grade = 'B';
    } else if (score >= 70 && score < 80) {
        grade = 'C';
    } else if (score < 70) {
        grade = 'D';
    } else {
        printf("无效分数\n");
        return 1;
    }
    switch (grade) {
        case 'A':
            printf("等级:A\n");
            break;
        case 'B':
            printf("等级:B\n");
            break;
        case 'C':
            printf("等级:C\n");
            break;
        case 'D':

        
            printf("补考\n");
            break;
        default:
            break;
    }
    return 0;
}

2.  终端输入一个日期,判断是这一年的第几天

scanf("%d-%d-%d",&y,&m,&d);

闰年229平年228

#include <stdio.h>
int main() {
    int y, m, d;
    while(1){
      printf("请输入日期()\n");
      printf("例如:2024-1-1\n");
      scanf("%d-%d-%d", &y, &m, &d);
      if(y==0){
        break;
    }
      int days = 0;
      switch (m) {
          case 12: days += 30;
          case 11: days += 31;
          case 10: days += 30;
          case 9: days += 31;
          case 8: days += 31;
          case 7: days += 30;
          case 6: days += 31;
          case 5: days += 30;
          case 4: days += 31;
          case 3: days += 28;
              if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
                  days++; 
              }
          case 2: days += 31;
          case 1: days += d;
    }
    printf("这是这一年的第%d天\n", days);
    }
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值