iOS笔记:第二篇 C语言scanf函数、变量和运算符

2024-09-02 12:08

本文主要是介绍iOS笔记:第二篇 C语言scanf函数、变量和运算符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


第一节  scanf函数

一、scanf函数的作用和语法

1>作用:可以在程序运行的时候让用户输入数据将用户输入的数据存储在变量起来。

2>语法:scanf("格式控制字符串",变量的地址列表);

      

二、scanf函数的用法

1scanf函数是1个阻塞式的函数.当执行到这句代码的时候 CPU的执行会暂停,等着用户输入数据。数据输入完毕之后,才会继续往下执行。

2、格式控制字符串中应该写上占位符(格式控制符),格式控制符的作用要求用户输入的数据的类型。如:

              int num = 0;

             scanf("%d",&num);

a. 格式控制字符串中的格式控制符决定要求用户输入什么类型的数据.

b. 将用户输入的数据存储到那1个变量之中.给变量的地址. &变量名

    执行的简单原理:

    当执行到这句代码的时候,程序会暂停,等待用户输入1个整型的数据。用户输入完毕之后按下回车表示输入结束。此时就会将用户输入的数据存储到num变量之中。

3、格式控制符与printf的格式控制符是一样的。

4scanf的其他用法

    1).  scanf函数可以一次的接收用户输入多个数据.

intnum1 =0 ,num2 = 0;//定义两个整型的变量,用来存储输入的值

scanf("%d%d",&num1,&num2);

用户输入多个数据的时候,1个数据用回车或者空格分开。

    2). 用户在输入1数字的时候,在输入数字之前,输入的空格回车 Tab都会被忽略. 直到你输入了1个数为止.

    3). 当混合输入数字和字符型的时候.就会有问题.无法正常接收每1个数据了.

5、注意细节:

   1). 当我们输入多个数字数据的时候,默认情况下每1个数据使用空白回车分隔。可以在格式控制字符串中自己定义每1个数据的分隔符。

         scanf("%d,%d",&num1,&num2);

        表示用户在输入数据的时候1个数据使用逗号分隔。

    2).如果用户输入的是非法数据。

       如果要求输入1个整数但是输入1个浮点型只会拿到整数部分。

       如果输入的不是数字,那么int变量的值就是自己的默认值。

6scanf的运行原理:

    1) scanf函数在内存之中有1个缓冲区.用户输入的数据首先是被放到了这个缓冲区之中。在执行这个函数的时候要数据先去查看缓冲区中是否有数据,如果有数据直接从缓冲区取出来,如果没有才让用户输入。

    2). 解决方案:

        指定分隔符来混合接收含有字符数据的数据。

    3). 分别接收两个char类型的数据。

        想法吸收掉回车符。

int num1 = 0,num2 = 0;//定义两个整型的变量num1,num2;

        charch = ' ';//定义字符型变量ch

        scanf("%d,%c,%d",&num1,&ch,&num2);

        printf("num1 = %d, ch = %c, num2 = %d\n",num1,ch,num2);

             

 

第二节 交换两个变量的值

交换两个变量的值方法

1、声明1个第三方的临时变量,如:

       int  a = 10,b=2;//定义两个整型的变量,并赋初始值为102

       int  temp = a;//定义一个整型的临时变量,并将a的值赋给他;

       a= b;

b = temp;

2、将两个数相加再相减。

       a= a+b;   b = a-b;   a =a-b;

#include <stdio.h>

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

{

   int a = 10;//定义整型变量a赋初始值为10

   int b = 2;//定义整型变量b赋初始值为2

    a = a+b; //a+b的结果12重新赋给a

    b = a-b; //a-b的结果10重新赋给b

    a = a-b; //a-b的结果2重新赋给a,实现交换

//   int temp = a;

//   a = b;

//   b = temp;

    printf("a=%d, b=%d\n",a,b);//输出ab交换后的值

    return 0;

}

      

 

第三节 算术运算符

一、算术运算符种类

+(加) -(减) *(乘)  /(除) %(模)

二、算术表达式

定义:由算术运算符连接起来的式子就叫做算术表达式。

如果单独的写1个算术表达式,是没有意义的。算术表达式都有1个结果,如果不处理这个结果是没有任何意义的。一般情况下,声明1个变量将表达式的结果存储在其中,以用来调用。

变量 =表达式;

先计算表达式的结果,然后再将这个表达式的结果通过赋值符号赋值给变量。

三、算术运算符简介

1 +号:求左右两边的数据的数学和。

2 -号:求左右两边的数据的数学差。

3 *号:求左右两边的数据的数学乘积。

4 /求商。

inta = 10, b = 4;

doublec = a / b;

c的值并不是2.5执行顺序:先计算算术表达式的结果。 a/b 因为ab的类型都是整形的,所以算出来的结果就是整型的。如果非要得到带小数点的结果:

->修改参与算术表达式的数据的类型为浮点型.

->通过*1.0

 int a = 10, b = 4;

double c = a*1.0 / b;

5%号:求模运算(求余数运算)

     m%n  结果是m除以n的余数.

     10%3  1

     求模运算只能由整型的数据参与,不能有浮点型参与,因为这样没意义。

      作用:可以用来判断1个数是不是另外1个数的倍数。

       应用: m%n如果表达式的结果为0,说明m可以被n除尽 mn的倍数.

四、算术运算符的优先级

先乘除模,再加减。如果同级别就从左到右依次计算。

使用小括弧可以改变运算的优先级,如果有小括弧,就先算小括弧之中的。

使用小括弧改变运算的优先级的时候:

       -> 小括弧可以无限制的套用。

       -> 小括弧一定要成对出现。

 

第四节 类型转换

一、类型转换

1>   1个变量赋值的时候,尽量的保证为变量赋值的数据的类型要和变量的类型一致。

2>   类型转换:1个类型的数据赋值给另外的1个类型的变量。

int num = 10;

float f1 = num;

3>   int变量num的值拿出来转换为float类型.然后将这个转换后的值存储到float变量之中。把整型转换为浮点型,这是没有问题的.。但是将1个浮点型的数据赋值给1个整型的数据的时候,就会直接将浮点型的整数部分拿出来赋值给整型变量。

4>   C语言是很灵活的1门语言。在为变量赋值的时候,如果数据的类型和变量的类型不一致,这样是允许的,但是这个时候会发生类型转换。

   int num = 12;//定义整型变量num

   float f1 = num;//定义浮点型变量f1,并将整型变量num的值赋给他

printf("f1=%f\n",f1);

    float f2 = 12.92f;//定义浮点型变量f2,并赋初始值12.92

    int num = f2;//定义整型变量num,将f2的值赋给num,发生类型转换

    printf("num=%d\n",num);

   

第五节       复合赋值运算符

复合赋值运算符

1. 注意的问题:

    在写1个表达式时,在表达式中用到了变量,仅仅是使用到了变量的值,没有改值。

 2. 如果要改变某个变量的值的话,要为其赋值才可以。

     int num = 10;

     num = num + 1;

 3. 变量的值在自己的基础之上做改变.其实可以用另外的一种写法。

     +=    -=    *=    /=     %=

     int num = 10;

     num += 1;   这句话等价于 num = num + 1;

      复合赋值运算符

#include <stdio.h>

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

{

    int num = 10;//定义整型变量num,赋值为10

    num %= 10; // num = num% 10

    printf("num=%d\n",num);

   return 0;

}

 

第六节         逗号运算符

逗号运算符

1、逗号在C语言中是1个运算符,用来连接多个表达式。

2、语法格式:

     表达式1,表达式2,表达式3,.......表达式n;

 3、逗号表达式的执行顺序:

    从左到右的依次的计算每1个表达式,将最后1个表达式的结果作为逗号表达式的结果。

 4、使用逗号表达式的注意:

    逗号表达式要用小括弧括起来,否则编译器就会认为第1个表达式和赋值语句是1个整体。

5、写1个逗号表达式的意义:

    并不是去想要得到前面的表达式的结果.而是想要让前面的表达式去执行,得到最后1个表达式的结果。

int a = 1;//定义整型变量a赋值为1

        int b = (a++,a++,a+3);//定义整型变量b,并将表达式的值赋给b

  printf("%d\n",b);//打印b的值

 

第七节       自增自减运算

自增运算

1无论是前自增还是后自增都是将自身的值增加1

2、前自增和后自增的区别:

           num++ 后自增表达式

             ++num前自增表达式.

 

         当后自增表达式参与到另外1条语句的时候,先计算出表达式的结果,然后再将变量的值增加1

后自增表达式的结果的计算方式:

先将变量的值取出来当做表达式的结果,然后再将自身的值加1

       前自增表达式的结果的计算方式:

先将变量的值增加1,然后再将变量的值作为前自增表达式的结果。

 

自减运算(同自增类似)

#include<stdio.h>

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

{

          int a = 3;//定义整型变量a赋值为3

          int b = 5;//定义整型变量b赋值为5

       int res = ++a + b--;// 定义整型变量res将表达式值赋给res'

          printf("res=%d\n",res);//打印res的值

//    int num1 = 10;//定义整型变量num1,赋值为10

//     int num2 = ++num1;//定义整型变量num2,将表达式值赋给num2

//     num1++这个后自增表达式的结果赋值给num2

//     后自增表达式计算方式:先将num1的值取出来作为表达式的结果,然后

//     再将num1的值自增。

 //      printf("num1=%d\n",num1);//打印num1的值

  //    printf("num2=%d\n",num2);//打印num2的值

      return0;

}




这篇关于iOS笔记:第二篇 C语言scanf函数、变量和运算符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129910

相关文章

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)