C语言入门(3)

输入输出

1.1按字符输入输出

getchar

#include <stdio.h>

int getchar(void);

功能终端输入一个字符

参数

返回值终端输入字符ASCII

(需与输出函数配合使用,不会自己输出可通过此特性充当垃圾字符回收)

putchar

#include <stdio.h>

int putchar(int c);

功能终端输出一个字符

参数字符ASCII

返回值字符ASCII(输出值与返回值不同,返回值为在终端内部的存在形式,具体输出为返回值在ASCII表中对应的字符)

putchar没有换行效果需要额外添加

int res=getchar();

putchar(res);

int num=putchar('\n');//putchar(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 //%o为直接输出八进制,%#o输出带格式的八进制

%x 十六进制 %#x //同上,%x输出123,%#x输出0x123

scanf

#include <stdio.h>

int scanf(const char *format, ...);//不能加\n!!

功能:按指定的格式向终端输入 (输入完毕时以回车结束)//一次只能输入一个字符

参数:多个

返回值:正确输入的字符个数

第一个字符输入格式错误,直接返回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.1 通过空格回收

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

char a=0,b=0;

scanf("%c %c",&a,&b);//两个%c之间加个空格,可以把输入的两个字符之间的空格给回收了,不然空格也会被当成字符赋予

printf("a:%c b:%c",a,b)V

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

可以回收任意一个字符//用法类似上文,将空格换为%*c即可

2.3 getchar

scanf输入结束时,会在终端输入'\n';

解决'\n'对程序造成的影响:

 

while(1)
{
  char a=0,b=0;
  scanf("%c %c",&a,&b);
  printf("%c %C",a,b);
  getchar();//若无,上面输入结束时用作确定的回车会被当做下一个代码的输入
  char c=0,d=0;
  scanf("%c %c",&c,&d);
  printf("%c %C",c,d);

}

分支语句

顺序结构:

分支结构:

循环结构:

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");

}

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

多层结构 else if()可以有多个

if(表达式1)

{

代码段1;

}

else if(表达式2)

{

}

else

{

}

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

嵌套结构

if(表达式1)

{

if(表达式2)

{

}

}

注意:

  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;

}

注意:

  1. case后边的常量值是整型或字符型,不能是浮点型或字符串
  2. case分支遇到break结束; 后边可以没有break,会从符合条件的分支开始一直运行到整个switch语句执行完才结束,即后续分支不需要符合条件直接运行

 练习

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

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

#include<stdio.h>
char a=0,b=0;
int main()
{
    printf("请输入年月日");
    int y=0,m=0,d=0,n=0;
    scanf("%d-%d-%d",&y,&m,&d);
    getchar();
  if (y>=1)
  {
     if ((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d>31||d<1))
     {
        printf("输入错误\n");
     }
     else if (m==2&&d>28||d<1)
     {
         printf("输入错误\n");
     }
     else if ((m==4||m==6||m==9||m==11)&&(d>30||d<1))
    {
       printf("输入错误\n");
    }
    else
    {
        switch(m)
        {
            case 1:n=d;
            break;
            case 2:n=d+31;
            break;
            case 3:n=d+60;
            break;
            case 4:n=d+91;
            break;
            case 5:n=d+121;
            break;
            case 6:n=d+152;
            break;
            case 7:n=d+182;
            break;
            case 8:n=d+213;
            break;
            case 9:n=d+244;
            break;
            case 10:n=d+274;
            break;
            case 11:n=d+305;
            break;
            case 12:n=d+335;
            break;
        }
         if (y%4!=0&&m>=3)
  {
    printf("%d\n",n-1);
  }
  else
  {
      printf("%d\n",n);
  }
  if (y%4!=0&&m==2&&d==29)
  {
    printf("%d\n",n-1);
  }
  

    }

    
    

     }
    
     
     

  
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值