niusouti.com
更多“有如下程序: #defineN2 #defineMN+1 #defineNUM2*M+1 main() { inti; for(i=1;i<=NU ”相关问题
  • 第1题:

    有如下程序void func1(int st[],int i){ printf("%c",st[i]); if(i}void func2(int st[],int i){ printf("%c",st[i]); if(i}main(){ char st[ ]="hello,friend! "; int i=0;func1(st,i); printf("\n");}程序执行后输出的结果是A.hello B.hel C.hlo D.编译出错


    正确答案:D
    本题主要考查全局变量的作用域。在本题中,程序首先声明两个无返回值函数func1和func2。func1函数带有两个形参,一个是需要输出的数字,一个是输出数组元素的下标。在函数体中,首先输出以形参作为下标的数组元素值,然后执行if条件判断语句,其条件为形参变量i<3。如果结果为真,则将变量i加2后保存,然后调用func2函数;如果条件结果为假,则结束该函数。
    从程序中不难看出,func2函数与func1函数基本类似,只是最后它对函数func1进行调用,与前者不同,两个函数是互相调用的。
    在主函数中首先定义了一个字符数组,并赋了初值,然后定义一个变量i并赋值为0,如果数组st是一个全局数组,那么调用函数func1,根据我们对函数func1的分析可知,此时能输出st[0]即字符’h’,而此时if语句的结果为真,执行i加2并调用func2函数操作。此时变量i的值为2,因此,输出st[2]即字符‘l’,此时函数func2中的if条件语句结果为真,同样执行i加2并调用func1函数操作,然后通过func1函数输出st[4]即字符‘o’,但由于数组只是一个局部数组,局部数组的作用域是定义它的函数或者程序段,调用函数func1时,数组有效,当再调用函数func2时,已经超出了数组的作用域。因此,系统在编译时会报错。本题答案选D。

  • 第2题:

    有以下程序include main(){ int i,j; for(i=3;i>=-1;i-) { for(i=1;j<=2;

    有以下程序#include <stdio.h>main(){ int i,j; for(i=3;i>=-1;i-) { for(i=1;j<=2;j++) printf("%d",i+j); printf("\n"); }} 程序的运行结果是______。

    A.234 345

    B.432 543

    C.23 34 45

    D.45 34 23


    正确答案:D
    解析:本题考查的是for循环的嵌套。外层循环变量i从3递减到1,内层循环变量j从1递增到2,具体运行过程如下: i-3:j=1,满足条件j=2,输出i+j=3+1=4;j=2,满足条件j=2,输出i+j=3+2=5;j=3,不满足条件j=2,退出内层循环,执行“printf("\n");”语句,换行。执行i--,此时i=2,满足条件i>=1;
    i=2:j=1,满足条件j=2,输出i+j-2+1=3:j=2,满足条件j=2,输出i+j=2+2=4;j=3,不满足条件j=2,退出内层循环,执行“ptintf("\n");”语句,换行。执行i-,此则i=1,满足条件i>=1;
    i=1:j=1,满足条件j=2,输出i+j=1+1=2;j=2,满足条件j=2,输出i+j=1+2=3;j=3,不满足条件j=2,退出内层循环,执行“printf("\n");”语句,换行。执行i--,此时i=0,不满足条件i>=1,结束外层循环。

  • 第3题:

    有以下程序include main(){ int i,j; for(i=3;i>=1;i) { for(i=1;j<=2;

    有以下程序#include <stdio.h>main(){ int i,j; for(i=3;i>=-1;i-) { for(i=1;j<=2;j++) printf("%d",i+j); printf("\n"); }} 程序的运行结果是______。

    A.234 345

    B.432 543

    C.23 34 45

    D.45 34 23


    正确答案:D
    解析:本题考查的是for循环的嵌套。外层循环变量i从3递减到1,内层循环变量j从1递增到2,具体运行过程如下: i-3:j=1,满足条件j=2,输出i+j=3+1=4;j=2,满足条件j=2,输出i+j=3+2=5;j=3,不满足条件j=2,退出内层循环,执行“printf("\n");”语句,换行。执行i--,此时i=2,满足条件i>=1;
    i=2:j=1,满足条件j=2,输出i+j-2+1=3:j=2,满足条件j=2,输出i+j=2+2=4;j=3,不满足条件j=2,退出内层循环,执行“ptintf("\n");”语句,换行。执行i-,此则i=1,满足条件i>=1;
    i=1:j=1,满足条件j=2,输出i+j=1+1=2;j=2,满足条件j=2,输出i+j=1+2=3;j=3,不满足条件j=2,退出内层循环,执行“printf("\n");”语句,换行。执行i--,此时i=0,不满足条件i>=1,结束外层循环。

  • 第4题:

    有以下程序:includemain(){int i,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",

    有以下程序: #include<stdio.h> main() {int i,j; for(i=3;i>=1;i--) { for(j=1;j<=2;j++)printf("%d",i+j); printf("\n"); } } 程序运行的结果是( )。

    A.2 3 4

    B.4 3 2

    C.2 3

    D.4 5 3 4 5 5 4 3 3 4 3 4 4 5 2 3


    正确答案:D
    解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。

  • 第5题:

    有如下程序#define N 2#define M N+1#define NUM 2*M+1main(){ int i; for(i = 1; i <= NUM; i++) printf("%d\n",i);}该程序中for循环执行的次数是A.5 B.6 C.7 D.8


    正确答案:B
    分别将N、M的宏定义代入NUM的表达式中,可以得到NUM=2*2+1+1=6,所以当常数NUM作为for循环的终止条件时,应当循环6次。

  • 第6题:

    1、有如下程序,该程序的执行结果是 () main() { int i,sum=0; for(i=1;i<=3;i++) sum+=i++; printf("%d\n",sum); }

    A.6

    B.3

    C.死循环

    D.4


    死循环