《ios零基础教程》--scanf函数、基本运算

今天学习了scanf函数、基本运算。

一、scanf函数


1、学习scanf函数,首先要理解地址运算符&,下面是关于地址运算符&获取内存的知识。

/*
 1.内存寻址由大到小,优先分配内存地址比较大的字节给变量,也就是比如Oxffc4 > Oxffc1.
 如下面的a、b、c地址值比较:
 a的地址是:0x7fff5fbff78c
 b的地址是:0x7fff5fbff788
 c的地址是:0x7fff5fbff784

 地址值:a > b > c
 
 2.变量越先定义,内存地址就越大
 
 3.取得变量的地址:&变量名
 
 4.输出地址:%p
 
 5.一个变量只有初始化之后才能使用
 */


#include <stdio.h>

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

    // 内存寻址由大到小
    int a = 10;
    
    int b = 20;
    
    int c;
    
    //&是一个地址运算符,取得变量的地址;
    //%p用来输出地址
    
    printf("a的地址是:%p\n",&a);
    
    printf("b的地址是:%p\n",&b);
    
    printf("c的地址是:%p\n",&c);
    
    //由于变量c没有经过初始化,所以直接拿来使用是不对的
    //int d = c + 1;
    
    return 0;
}


2scanf函数是一个阻塞式函数,使用之后需要用户手动输入内容。如下是scanf函数的简单使用。


#include <stdio.h>

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

    // 定义一个变量,用来保存用户输入的整数
    int number;
    
    //scanf函数只接受变量的地址
    //scanf函数是一个阻塞式的函数,等待用户输入
    //用户输入完毕后,就会将用户输入的值赋值给number变量
    //函数调用完毕
    scanf("%d",&number);
    
    
    printf("用户输入的值是%d\n",number);
    
    return 0;
}

3、下面是scanf函数的一些其他用法总结。

1)可以输入字符串。

2)一次性输入多个数值,并且一某些符号离开。

3)如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符

4)scanf中不能写\n

#include <stdio.h>

int main(int argc, const char * argv[])
{
    /*1.可以输入字符串
    char myc;
    scanf("%c",&myc);
    printf("输入的字符是%c\n",myc);
    */
    
    /*2.一次性输入多个数值,并且以某些符号隔开
    int num1 ,num2;
    scanf("%d,%d",&num1 ,&num2);
    printf("num1 = %d,num2 = %d",num1 , num2);
    */
    
    //3.如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符
     int num1 ,num2;
     scanf("%d %d",&num1 ,&num2);
     printf("num1=%d, num2=%d\n",num1,num2);
    
    
    /*4.scanf中不能写\n
     int a;
     scanf("%d\n",&a);//错误写法
     printf("a的值是%d\n",a);
     */
     return 0;
    
}


4、关于scanf函数的练习。

/*
 提示用户输出两个整数,计算并且输出两个整数的和
 */


#include <stdio.h>

int main(int argc, const char * argv[])
{
    //1.定义用户输入第1个整数
    int num1 , num2;
    
    //2.提示用户输入第1个整数
    printf("请输入第1个整数:\n");
    
    //3.接收用户输入的第1个整数
    scanf("%d",&num1);
    
    //4.提示用户输入第2个整数
    printf("请输入第2个整数:\n");
    
    //5.接收用户输入的第2个整数
    scanf("%d",&num2);
    
    //6.计算和,并且输出
    int sum = num1 + num2;
    printf("%d + %d = %d\n",num1 ,num2 , sum);

    return 0;
}


二、基本运算

1、加+  、减-  、乘*  、除/  、模运算%

1)基本用法。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    int a = 10 + 1 + 3 - 3;
    
    int b = -10;
    
    int c = 10 * b;
    
    int d = 10 / 2;
    
    //取余运算(模运算)
    //%两边都是整数
    //%取余结果的正负性只跟%左边的数值有关
    //%左边的被除数决定,被除数是整数,余数就是正数,反之则反
    int e = -10 % (-3);
    printf("%d\n",e);
    
    return 0;
}


2)自动类型转换和强制类型转化

#include <stdio.h>

int main(int argc, const char * argv[])
{
    /*
    //自动类型转换(double->int)
    int a = 10.8;
    
    //强制类型转换(int->double)
    int b = (int) 10.5;
    printf("%d\n",b);
     */
    
    double c = 10.6 + 6;
    
    double d = 1/3;
    
//    double e = 3/2;//(这里的输出结果是1.000000,原因是首先是整数运算,结果是1,然后转换为1.000000)
//    double e = 3.0/2;
    double e = (double)3/2;
    printf("%f\n",e);
    return 0;
}

3)练习

/*
 1.提示用户输入两个整数,并输出两个整数的平均值(数学构造思维思考:先两数相加,再除2,得到平均值)
 
 2.提示用户输入一个时间的秒数比如500秒就输入500,然后输出对应的分钟和秒,比如500s就是8分钟20秒
 */




#include <stdio.h>

int main(int argc, const char * argv[])
{
    /*1.提示用户输入两个整数,并输出两个整数的平均值
     
    //首先定义两个整数
    int a ,b;
    
    //提示用户输入两个整数
    printf("提示用户输入两个整数:");
    scanf("%d %d",&a,&b);
    
    //平均值是两数相加之和除以2
    int privite = (a + b)/2;
    printf("两整数的平均值是:%d\n",privite);
    */
    
    
    /*2.提示用户输入一个时间的秒数比如500秒就输入500,然后输出对应的分钟和秒,比如500s就是8分钟20秒
     
     //首先定义一个输入数和输出分钟和秒数
     int time , f , m;
     
     //提示用户输入时间
     printf("用户输入秒数:");
     scanf("%d",&time);
     
     //将总秒数转换为分钟秒
     f = time /60;
     m = time % 60;
     
     printf("对应的时间是%d分钟%d秒\n",f ,m);
     
     */
    
    
    //老师的方法和思路
    //1.提示用户输入时间
    printf("请输入一个时间值(秒):");
    
    //2.接受用户输入的时间
    int time;
    scanf("%d",&time);
    
    //3.转换成对应的分钟和秒
    int minute = time / 60;//分钟
    int second = time % 60;//秒
    
    printf("%d秒= %d分钟%d秒\n",time ,minute ,second);
    
    return 0;
}

2、赋值运算

  • =     赋值运算符
  • +=   加值运算符
  • -=    减值运算符
  • *=    乘值运算符
  • /=    值运算符
  • %=   取余值运算符
#include <stdio.h>

int main(int argc, const char * argv[])
{
    int a = 10;
    // a = a + 5;
    
    //复合赋值运算符
    a += 5;// 既是a = a + 5;
    
    a *= 5;// 既是a = a * 5;
    
    a += 5 + 6 + 4;//既是a = a + (5 + 6 +4);
    
    printf("a的值是%d\n",a);
    
    return 0;
}

3、自增运算符

1)基本用法

#include <stdio.h>

//注意:自增自减运算符不能用在常数上,比如 b = 10++;

int main(int argc, const char * argv[])
{
    int a = 10;
    
    a = a + 1;//11
    
    a += 1;//12
    
    a++;//13
    
    ++a;//14
    
    a--;//a -= 1; a = a - 1;
    
    printf("a的值是%d\n",a);
    return 0;
}

2)++a 与 a++的区别

/*
 a++的结果:先将a的值赋给对象之后,再进行a的自增运算(先赋值,再自增)
 ++a的结果:进行a的自增自减运算之后,再将值赋给对象(先自增,再赋值)
 
 */


#include <stdio.h>

int main(int argc, const char * argv[])
{
    int b;
    int a = 10;
    
    //其结果:b = 10 + 12;
//    b = (a++) + (++a);
  
    //其结果:b = 11 + 11;
    b = (++a) + (a++);
    
    printf("b =%d\n",b);
    printf("a =%d\n",a);
    return 0;
}

今天就学了这么多,消化好了也感觉蛮有成就感!




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值