回 帖 发 新 帖 刷新版面

主题:c

P43.

29.设n、i均为整型变量,并已经赋值,以下非法的赋值表达式是:

1. n=(i-1)  2.n=n++   3.i=(n+1)++   4.n=i<0;

答案:3。

为什么?

 

10.设m是整型变量,能表示”m是奇数”的C语言表达式是(?)。

答案:m%2.

为什么?

 

例:求正整数的每位上的数字字符。

设正整数在m中,求各位数字字符的算法如下:

当m值不为0时,反复执行下列操作:

m%10+’0’就是当前个位上的数字字符;

m=m/10是去掉m中的个位上的数字后的正整数。

上述算法的结构是一个当型循环,下面是编写的程序列表:

#include <stdio.h>

viod main()

{

long m;

char ch;

scanf(“%ld”,&m);

while(m!=0)

  {ch=’0’+m%10;

  printf(“%c”,ch);

  m=m/10

}

}

 

这题我不太理解,是正整数我取:m=27  这样个位数为:m%10=2为什么是m%10+’0?

回复列表 (共3个回复)

沙发

1、++只能用在变量前后,而n+1是一个表达式;
2、m%2表示m对2取余数,当m%2==0就说明m是偶数;
3、27%10应等于7,ch=m%10+'0'表示将m%10得到的数字转换成字符。

板凳

[quote] 2.n=n++   [/quote]

总是不明白,怎么老是看到这样的语句??
虽然不是什么非法的语句,但它也是一个未定义的行为。
它是编译器根据自己的需要来实现的。

3 楼

lz把%和/搞混了,(int)27/10=2,27%10=7
另外,C里int是可以作为逻辑值的,0是false,非0都是true,因此m%2相当于m%2!=0

我来回复

您尚未登录,请登录后再回复。点此登录或注册