C语言入门(二)之变量、printf、scanf

版权声明:如果觉得文章对你有用,转载不需要联系作者,但请注明出处 https://blog.csdn.net/jinxin70/article/details/83211100

变量的定义、初始化、格式化输出

#include <stdio.h>

int main(int argc, const char * argv[]) {
    float floatValue;//定义变量
    floatValue = 10.1f;//初始化(第一次赋值)
    printf("%f\n",floatValue);
    return 0;
}

变量的作用域、内存寻址方式、取地址符

#include <stdio.h>

int main(int argc, const char * argv[]) {
    //局部变量在函数内部有效
    int number;
    {//代码块作用域
        //int number;//如果定义了number,下一行赋值就不会找外层的number,直接找这行定义的number
        number = 10;
        printf("%i\n",number);
    }
    printf("%i\n",number);
    
    
    //内存以字节为单位
    //内存寻址从地址大的往地址小的找,先定义的变量的内存地址一定大于后定义的变量地址
    //变量的首地址即为变量的地址
    //不同的数据类型占用不同数量的字节
    
    //获得变量的地址,使用&,占位符为%p
    printf("%p\n",&number);//输出十六进制数
    
    return 0;
}

printf函数的使用、位宽、保留位数、一些坑

#include <stdio.h>

int main(int argc, const char * argv[]) {

//    printf("%i\n",10);
//
//    printf("%f\n",10.2f);
//
//    printf("%c\n",'a');
//
//    printf("%lf\n",9.9);
//
//    printf("1、指定位宽\n");
    
    /*
    //默认位宽是右对齐,如果需要输出的类型宽度不够,会在左边补空格
    printf("%5i\n",99);
    //在位宽前加上'-'号,会改变对齐方式为左对齐
    printf("%-5i\n",99);
    */
    //位宽的用处:格式化输出字符
    //位宽的坑:如果指定了位宽,但是实际输出的内容超过指定宽度,会按照实际宽度输出
//    int number = 9999;
//    printf("%2i\n",number);
    
    
//    number = 8;
//    printf("%02i\n",number);//位宽前加0,宽度不够会补0输出
    
//    printf("2、保留位数\n");
    
    //%.nf  n是保留多少位小数
//    float floatValue = 3.14;
//    printf("%.2f\n",floatValue);//3.14
    
    //3.%f各种坑
    float floatValue = 3.1415966525;
    printf("%.10f\n",floatValue);//3.1415965557
    //因为float类型的有效位是7位,有效位从第一个数(不是小数)开始,不包括小数点
    
    //如果想完整输出,使用double类型。double类型的有效位是15
    double doubleValue = 3.1415966525;
    printf("%.10lf\n",doubleValue);
    
    return 0;
}

scanf函数的使用、输入多个值时使用分隔符、占位符%c、scanf的结束符\n

#include <stdio.h>

int main(int argc, const char * argv[]) {
//    //1、定义变量
//    int number;
//    //2、使用scanf函数,传入变量的地址
//    scanf("%i",&number);
//
//    printf("number = %i\n",number);
    
    //输入两个数,输出相加的结果
//    int num1,num2;
//    printf("请输入第一个数字,以回车键结束\n");
//    scanf("%i",&num1);
//    printf("请输入第二个数字,以回车键结束\n");
//    scanf("%i",&num2);
//
//    int result = num1 + num2;
//    printf("result = %d\n",result);
    
    //scanf输入多个
    //scanf("%i,%i",&num1,&num2);//必须和格式化字符串格式相同的输入,这里要用逗号隔开两个数,比如:4,23
    
    //scanf("%i%i",&num1,&num2);//如果多个数据之间没有其他字符,可以利用空格,回车,table键作为分隔,%c的占位符除外
    
    char charValue;
    int num1,num2;
    
//    scanf("%i%c%i",&num1,&charValue,&num2);
//
//    printf("num1 = %i,char = %c, num2 = %i\n",num1,charValue,num2);
    //123 a 456
    //num1 = 123,char =  , num2 = 0
    
    //由上面的输出可以看出,char接收了输出的空格,num2无法接收a。所以在使用scanf输出多个值,需要用分隔符
    
//    scanf("%i,%c,%i",&num1,&charValue,&num2);
//
//    printf("num1 = %i,char = %c, num2 = %i\n",num1,charValue,num2);
    //123,a,456
    //num1 = 123,char = a, num2 = 456
    
    //回车\n是scanf函数的结束符,不能在scanf的格式化字符串末尾写\n,也可以最后输入\n,或者不匹配的数据,让程序结束
//    scanf("%i\n",&num1);
    scanf("%i\n%i",&num1,&num2);
    
    printf("num1 = %i, num2 = %i\n",num1,num2);
    
    return 0;
}

scanf函数的坑、输入缓冲区

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int num1,num2;
    
    char charValue;
    scanf("%i,%c,%i",&num1,&charValue,&num2);
    
    int result = num1 - num2;
    
    printf("result = %i\n",result);
    
    //输入缓冲区中有内容,就不会要求用户输入内容,直接使用缓冲区中数据。
    
    //连续使用scanf时的坑,
    
    //避免入坑的方法,就是将scanf中的占位符用分隔符分开
    return 0;
}

猜你喜欢

转载自blog.csdn.net/jinxin70/article/details/83211100
今日推荐