niusouti.com
更多“有如下程序#define N2#define MN+1#define NUM2*M+1main(){ int i; for(i = 1; i <= NUM; i++ ”相关问题
  • 第1题:

    以下程序中的for循环执行的次数是______。 #define N 2 #define M N+1 #define NUM 2*M+1 main() { int i; for(i=1;i<NUM;i++) printf("%d\n",i); }

    A.5

    B.6

    C.7

    D.8


    正确答案:B
    解析:宏替换是先替换再运算返回结果,因此N的值为2,M的值为3,NUM的值=2*M+1=2*N+1+1=6,而不是:2*M+1=2*(N+1)+1=7。因此该循环只执行6次。

  • 第2题:

    有如下程序: #define n 2 #define m N+1 #define NUM 2*m+1 main() { int i; for(i=1;i<=NUM;i++)printf("%d\n",i); } 该程序中的for循环执行的次数是______。

    A.5

    B.6

    C.7

    D.8


    正确答案:B
    解析:在C语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+1+1,即2*2+1+1,值为6。因此,for循环执行的次数为6。

  • 第3题:

    7、有同学实现了约分算法,可以对num1和num2组成的分数进行约分,代码为:minValue = min(num1, num2) for i in range(2, minValue + 1): if num1 % i == 0 and num2 % i == 0: num1 = num1 // i num2 = num2 // i 下面的说法中,正确 的有:

    A.当num1正好可以被num2整除时,上述代码运行正确#B.当num1和num2都为素数时,上述代码运行正确#C.当num1和num2都可以被4整除时,上述代码运行不正确#D.minValue + 1 有误,应该为 minValue#E.if num1 % i == 0 and num2 % i == 0 有误,应该为: while num1 % i == 0 or num2 % i == 0
    D

  • 第4题:

    有如下程序: #define n 2 #define m N+1 #define NUM 2*m+1 main() { int i; for(i=1;i<=NUM;i++)printf("%d\n",i); } 该程序中的for循环执行的次数是______。

    A.5

    B.6

    C.7

    D.8


    正确答案:B
    解析:在C语言中,宏定义在编译时将被直接替换,所以NUM最后会被替换成2*N+1+1,即2*2+1+1,值为6。因此,for循环执行的次数为6。

  • 第5题:

    有如下程序: #define N 2 #define M N+1 #define NUM 2*M+1 main() { int i; for(i=1; i<=NUM;i++)printf("%d\n",i); } 该程序中的for循环执行的次数是( )。

    A.5

    B.6

    C.7

    D.8


    正确答案:B
    解析:该题关键要注意在不带参数的宏中对2*M+1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2*N+1+1(千万不要随意给N+1加上括号,使NUM变为2*(N+1)+1,这就是宏名和变量名之间的区别),再将N代进去,得到NUM的值为6。