C语言学习篇:逗号运算符的应用

 今天来说说我最近碰到的一道C语言题!虽然说这个知识点应该有大神说过了,但是为了确保我确实掌握啦,还是决定将这个写出来!

 先看看该题目的要求:对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。请计算需要经过几步才能将n变到1,并且测试案例需要多组输入!(就直接说了吧,这个是九度oj里面的编号为1031的题目要求,大家有兴趣或者想刷题,感觉这是一个不错的选择)

首先看看我写的c语言代码(采用DEVc++编辑):

 1 #include <stdio.h>
 2 /*对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。
 3     请计算需要经过几步才能将n变到1 */
 4 void GetCount( int a)
 5 {
 6     int step = 0;
 7     while(a != 1){
 8         step++;
 9         if(a%2 == 0)
10         a /= 2;
11         else
12         a = (3 * a + 1)/2;
13     }
14     printf("%d\n",step);
15 }
16
17 int main(int argc, char *argv[]) {
18     int n;
19     while(scanf("%d", &n), n)//逗号表达式,值看最最右边 ,输入是0跳出循环
20     {
21         GetCount(n);
22     }
23     return 0;
24 }

  这也不是一个很难的程序!我们主要看第19行——while(scanf("%d", &n), n),这段代码!一般我们用while只是里面一个循环判断条件比如什么不等于0之类的,其实这个也是一个循坏条件!主要是括号里面scanf("%d", &n), n的是一个逗号表达式!这其实是一个逗号运算符的使用!

  先来看看逗号运算符,它的功能是将两个或多个表达式连接起来,结合性是左结合,即从左至右计算各个表达式,整个表达式的值为最右边的子表达式的值!逗号运算符是所有运算符级别最低的运算符(这段话是我的C语言课中本摘抄的:C语言程序设计,呼克佑主编)!

  下来我们来理解上面这段代码!因为while(x)表示while(x != 0),所以括号内最右边的子表达式n的值为0就退出循坏啦!

  所以这段程序,就是可以连续测试多组数据,输入0就退出循坏!这是ACM刷题常见的一个输入写法!!!

  下面给出一段该程序运行的截图:

时间: 2024-12-20 13:08:24

C语言学习篇:逗号运算符的应用的相关文章

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"

c语言中的逗号运算符

c语言中的逗号运算符是优先级较低的运算符,常和for循环中的变量初始化和条件判断结合使用 a + b, c;    //此表达式的值是c变量的值 m = a + b, c; //其中m变量的值是a加上b的值,表达式的值依旧是c变量的值 n = m = a + b, c;  //其中n和m变量的值是a加上b的值,表达式的值依旧是c变量的值 n = ( m = a + b, c );  //其中n变量的值是c变量的值,m变量的值是a加上b的值

C语言学习笔记(四) 运算符优先级

C语言中有很多运算符,除了四则运算,还有位运算.比较运算.逻辑运算.赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼.通常建议在写代码的时候不用省略括号,但是并不是所有程序员都会按照这个规矩来,因此还是有必要记录一下,以备查阅. 下面表格中详细记录了各种运算符的优先级.没有必要死记硬背这张表,代码见多了用多了就慢慢记得了.总结几个比较重要的原则: 取成员的"0"目运算符[() . -> []]优先级最高: 单目运算符高于双目运算符: 四则运算高于移位运算: 移位运算高于比较运算

【学习笔记】【C语言】逗号运算符

逗号运算符主要用于连接表达式,例如: int a = 9; int b = 10; a = a+1 , b = 3*4; * 用逗号运算符连接起来的表达式称为逗号表达式,它的一般形式为: 表达式1, 表达式2, - -, 表达式n 逗号表达式的运算过程是:从左到右的顺序,先计算表达式1,接着计算表达式2,...,最后计算表达式n * 逗号运算符也是一种运算符,因此它也有运算结果.整个逗号表达式的值是最后一个表达式的值 int a = 2; int b = 0; int c; c = (++a,

C语言逗号运算符

C语言提供一种特殊的运算符--逗号运算符.用它将两个表达式连接起来.如: 3+5,6+8称为逗号表达式,又称为"顺序求值运算符".逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2.整个逗号表达式的值是表达式2的值.例如,上面的逗号表达式"3+5,6+8"的值为14.又如,逗号表达式 a=3*5,a*4对此表达式的求解,读者可能会有两种不同的理解:一种认为"3*5,a*4" 是一个逗号表达式,先求出此

c语言中逗号运算符和逗号表达式

原文:c语言中逗号运算符和逗号表达式 C语言提供一种特殊的运算符——逗号运算符.用它将两个表达式连接起来.如: 3+5,6+8 称为逗号表达式,又称为“顺序求值运算符”.逗号表达式的一般形式为 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2.整个逗号表达式的值是表达式2的值.例如,上面的逗号表达式“3+5,6+8”的值为14.又如,逗号表达式 a=3*5,a*4对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达

C语言学习笔记(三) 输入输出函数的基本用法以及运算符

printf() ——将内容输出到显示器上 四种用法 1.printf("字符串");   直接输出字符串 2.printf("输出控制符",输出参数); 3.printf("输出控制符1 输出控制符2",输出参数1,输出参数2); 输出控制符和输出参数的个数必须一致: 4.printf("输出控制符 非输出控制符",输出参数); 输出控制符包含如下: 1.%d —— int 2.%ld ——  long int 3.%c —

C语言:逗号运算符

逗号运算符主要是用于连接表达式 例如:a=1+2,b=3*4 用逗号运算符连接起来的表达式称为逗号表达式 它的一般形式为:表达式1,表达式2,… …,表达式n逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n 整个逗号表达式的值是最后一个表达式的值