Skip to content

输入输出

  1. 输出:printf()
#include <stdio.h>

int main() {
    int x=6; //整数形式
    float y=6.3;  //浮点类型
    char z ='&';    //字符类型
    printf("第一种形式\n");
    printf("%d\n",x);  //%d相当于一个转义字符,代表的是参数x
    printf("%f\n",y);  //%f相当于一个转义字符,代表的是参数y
    printf("%c\n",z);
    printf("%d,%f,%c",x,y,z);
}

2.输入:scanf()

#include <stdio.h>

int main() {
    int x;
    float y;
    char z;
    printf("请输入三个数(int,float,char):");
    scanf("%d,%f,%c",&x,&y,&z);
    printf("%d,%f,%c",x,y,z);
}

一些常见的格式说明符包括:

  • %d: 用于整数(int)的输出。
  • %f: 用于浮点数(floatdouble)的输出。
  • %c: 用于字符的输出。
  • %s: 用于字符串的输出。
  • %x%X: 用于十六进制数的输出。
  • %o: 用于八进制数的输出
  • %p: 用于指针的输出

运算符

各运算符优先级: 算数运算符>关系运算符>逻辑运算符

算数运算符

加: + 减: - 乘: * 除: / 取余: % ++ --

  1. 其中取余%,
i%xi%x
情况i=x
余数i(为被去余数本身)如6%6=0(余数为0)6%2=0(余数为0)6%4=2(余数为2)
  1. 其中++和--
#include <stdio.h>

int main() {
    int i=6;
    printf("%d\n",++i); //先加1,后输出值为7
    printf("%d\n",i); //输出值为7
    printf("%d\n",i++);  //先输出i值为7,然后加1为8
    printf("%d\n",i); //i值已经为8
    printf("%d\n",i/3); //i为8,8除以3,8/3=2,%d只取整数
    printf("%d\n",i%3); //i值变为了2,2%3=2
    printf("%d\n",i--);  //i值为8,先输出为8在减1,i值变为7
    printf("%d\n",--i);  //i值为7,先减1在输出为6
}

关系运算符

假为0,真为1

等于 = 不等于 != 大于 > 小于 > 大于等于 >= 小于等于 <=

测试代码

#include <stdio.h>

int main() {
    int x=3;
    int y=2;
    printf("%d\n",x>y); //3>2为真,值为1
    printf("%d\n",x<y); //3<2为假,值为0
    printf("%d\n",x!=y);  //3不等于2为真,值为1
    x=2;//x值变为了2
    printf("%d\n",x==y); //2=2为真,值为1
    printf("%d\n",x<=y); //2<=2为真,值为1
    printf("%d\n",x>=y);  //2>=2为真,值为1
}

逻辑运算符

&&||!

  1. && 比如 a && b,a和b条件必须同时满足
  2. || 比如 a || b,a条件和b条件,只需要满足一个
  3. ! 比如 !(x<170),表示不是 x<170,或者!5,那就为0,5代表非0数
#include <stdio.h>
//各运算符优先级: 算数运算符>关系运算符>逻辑运算符
int main() {
    int a=3,b=4,c=5,x,y;
    printf("%d\n",a+b>c&&b==c);  //7>5为假&& 4=5也为假,结果为假,值为0
    printf("%d\n",a||b+c&&b-c);   //3||9&&-1值都无比较,结果为真,值为1
    printf("%d\n",!(a>b)&&!c||1);   //3<=4为真&&0||1,结果为真,值为1,!非0数,那就是0
    printf("%d\n",!(x=a)&&(y=b)&&0);   //!3为0在与中,一值为假,即为假,结果为假,值为0
    printf("%d\n",!(a+b)>c-1&&b+c/2);   //0>4为假,结果为假,值为0
}

条件运算符

表达式1: ? 表达式2: :

  1. max=(a>b)?a:b; 如果(a>b),那么整体表达式的值为a,然后max=a,如果a不大于b,那么表达式整体为b,然后max=b,
  2. a>b?(max=a):(max=b)0 如果a>b,那么整体表达式的值为max=a,如果不大于b,那么表达式整体为max=b,
  3. 前面为真,那么就会选择最近的那个数,如果为假,那么就会选择远的那个数

示例

#include <stdio.h>

int main() {
    int a=3,b=4;
    a>b?printf("%d",1):printf("%d",0); \\3>4为假,所以会输出0
}

程序设计结构

  1. 循环结构两种结构:while for
  2. 选择结构两种结构:if else switch case

while循环语句

只要while(.....){....};,括号中不为0,就会一直执行{ }中的内容,

比如

#include <stdio.h>

int main() {
    while (123456) //括号中不为0,会一直执行{}中内容
    {
        printf("I Love you!\n");
    }
  
}

比如,在括号中填入关系式

#include <stdio.h>

int main() {
    int i=0; //定义一个变量i为0
    while (i<3) //在i<3的情况下{}中的内容会一直执行,会执行3次
    {
        printf("I Love you!\n");
        ++i;  //每循环一次,i加一
    }
  
}

比如,在括号中填入逻辑加关系式

#include <stdio.h>

int main() {
    int i=0; //定义一个变量i为0
    int j=0;
    while (i<3&&j<5) //在i<3的情况下{}中的内容会一直执行,会执行3次,在第三次之后,j尽管<5,但i之后会大于3,所以之后不会执行
    {
        printf("I Love you!\n");
        ++i;  //每循环一次,i加一
        ++j;
    }
  
}

for循环

只要for(;😉{....};,括号中不为0( ; ; )括号中;两边默认为1,就会一直执行{ }中的内容,

例如:for (i=0;i<5;i++) 使i先为0,i小于5时不为0,为真,则执行{}中内容,每执行一次i的值就加一

#include <stdio.h>

int main() {
    int i;//定义一个变量i为0
    for (i=0;i<5;i++) //在i<5的情况下{}中的内容会一直执行,会执行3次
    {
        printf("I Love you!\n");
    }
  
}

if else

如果if ()括号中为真,则执行if和else中的代码,如果为假,则执行else后的内容,也可以嵌套执行

#include <stdio.h>

int main() {
    int i=179;//定义一个变量i为0
    char y='m'; //"有u m h,可选择
    if (i=180&&y=='h')
  
        printf("考虑\n");
    else 
    if (i<180 && y=='m')
        printf("考虑\n");
    else
        printf("不考虑");

}

switch-case

例如,输入等级,显示所在分数段

#include <stdio.h>

int main() {
    char grade;
    scanf ("%c",&grade);
    printf("你的等级:");
    switch (grade)
    {
    case 'A':printf("85~100\n");break;
    case 'B':printf("85~100\n");break;
    case 'C':printf("85~100\n");break;
    case 'D':printf("85~100\n");break;
    default:printf("data erro\n");break;
    }
}

函数

例子,通过调用函数,来实现加减乘除的功能

#include <stdio.h>

int com(int a,int b) //创建一个名为com的函数
{
    int n,max;
    printf("1-------------两数相加\n");
    printf("2-------------两数相减\n");
    printf("3-------------两数相乘\n");
    printf("4-------------两数相除\n");
    printf("5-------------两数取余\n");
    printf("6-------------两数比较大小\n");
    printf("请输入你需要的功能:\n");
    scanf("%d",&n); //输入且赋值给n
    switch (n)
    {
    case 1:printf("%d",a+b);break;
    case 2:printf("%d",a-b);break;
    case 3:printf("%d",a*b);break;
    case 4:printf("%d",a/b);break;
    case 5:printf("%d",a%b);break;
    case 6:printf("%d",max=a>b?a:b);break;
    default:("请选择正确的数字");break;
    }
}


int main() {
    int a,b;
    printf("请输入两个数:");
    scanf("%d,%d",&a,&b); //输入且赋值给a和b
    com(a,b); //调用这个名为com的函数
}

函数的返回值

定义函数,有两种,一种带返回值为 int和不带返回值 void

第一种,带返回值int定义函数

#include <stdio.h>

int max(int x,int y) //创建一个名为com的函数
{
    int z;
    z=x>y?x:y;
    return z; //返回值为z,因为函数类型为int,所以整个函数返回z值
}


int main() {
    int x,y;
    scanf("%d,%d",&x,&y);
    printf("%d",max(x,y)); //打印除max函数,因为返回值为z,所以,输出z值
}

第二种,不带返回值void定义函数

#include <stdio.h>

void max(int x,int y) //创建一个名为max的函数
{
    int z;
    z=x>y?x:y;
    printf("%d",z); //返回值为z,因为函数类型为void,所以整个函数不会返回任何值,用return也不回返回,所以直接打印出来
}

int main() {
    int x,y;
    scanf("%d,%d",&x,&y);
    max(x,y); //打印除max函数,因为返回值为z,所以,输出z值
}