提示:内容已经过期谨慎付费,点击上方查看最新答案

二级C语言编程技巧与实例解析(山东联盟)

  1. 若i,j已定义为int型,则以下程序段中循环体的总的执行次数是
    for(i=5;i;i--)
    for(j=0;j<4;j++)
    { }

  2. A:30 B:20 C:24 D:25
    答案:24
  3. 下面程序的运行结果是:
    #include
    main( )
    { int y=10;
    do { y--; }
    while(--y) ;
    printf(“%d\n”,y--); }

  4. A:8 B:-1 C:0 D:1
    答案:dAI参考:正确选项是 C:0。程序运行过程如下:1. 初始时,y=10。2. do-while循环开始,y自减1,变为9。3. while条件判断,y再自减1,变为8。此时循环条件为真,继续执行循环体。4. 在循环体内,y再自减1,变为7。此时循环条件仍为真,继续执行循环体。5. 循环结束后,y再自减1,变为6。但是printf函数中的y--在输出结果时会先输出6,然后再将y减1。所以最终输出结果为6。因此,程序的运行结果是0。'
  5. 下面程序的正确运行结果是:
    main( )
    {int a=2, i;
    for(i=0;i<3;i++) printf(“%4d”,f(a) ); }
    f( int a)
    { int b=0; static int c=3;
    b++; c++;
    return (a+b+c);}

  6. A:7911 B:777 C:7 8 9 D:710 13
    答案:-40443AI参考:正确选项是:C:7 8 9程序的运行结果是f(a)中变量b和c的累加值,也就是f(a) = 3+4+5 = 12,所以在main函数中循环输出的结果是7、8、9,总共循环3次,所以正确答案是C选项。'
  7. 表达式a+=a-=a=9的值是(  )


  8. A:0 B:18 C:-9 D:9
    答案:B.0;
  9. 一个C语言程序是由


  10. A:若干过程组成; B:若干子程序组成. C:函数组成, 并且每一个C程序必须且只能由一个主函数; D:一个主程序和若干个子程序组成;
    答案:函数组成
  11. #include
    void fun(int a[], int n)
    { int i, t;
    for(i=0; i {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}
    }
    main()
    { int k[10]={1,2,3,4,5,6,7,8,9,10}, i;
    fun(k,5);
    for(i=2; i<8; i++) printf("%d", k[i]);
    printf("\n");}
    程序的运行结果是

  12. A:1098765 B:345678 C:876543 D:321678

  13.       有以下程序:

      #include <stdio.h>

      int fun(  )

      {static int x=1;

      x+=1;return x;

      }

      main(  )

      {int i,s=1;

      for(i=1;i<=2;i++) s+=fun(  );

      printf("%d",s);

      }

      程序运行后的输出结果是(  )



  14. A:4 B:3 C:5 D:6
    AI参考:程序运行后的输出结果是选项C,即“5”。程序中的fun函数是一个静态变量,每次调用时都会自增1,因此第一次调用返回2,第二次调用返回3,以此类推。在main函数中,for循环调用了fun函数两次,因此变量s的值最终为5。所以程序的输出结果为5。'
  15.  在C语言中,以     作为字符串结束标志



  16. AI参考:在C语言中,字符串是以空字符()作为结束标志的。所以,答案应该是: A. C语言中字符串是以空字符作为结束标志。 这个答案来源于你给出的段落:“在C语言中,以     作为字符串结束标志”。这个描述并不准确,因为C语言中的字符串实际上是以空字符()作为结束标志的,而不是 。不过,如果你想在C语言中表示一个由空格组成的字符串,你可以使用双引号()将空格括起来,例如:这是一个由空格组成的字符串。这样的字符串在C语言中会被正确地处理和存储。"
  17. 以下说法不正确的是:

  18. A:形参可以是常量、变量或表达式 B:形参应与其对应的实参类型一致 C:实参可以是任意类型 D:实参可以是常量、变量或表达式
    AI参考:正确答案是C:实参可以是任意类型。选项C表述不正确,因为实参可以是常量、变量或表达式,但必须在值可以使用的有效范围内,也就是需要在函数被调用之前确定实参的类型和值。因此选项C不正确,选项A、B和D表述正确。所以答案是C。'
  19.  typedef  struct  stu

      {  int  a;

         float  b;

      } stutype;

        下面叙述中错误的是



  20. A:stutype是用户定义的结构体变量名 B:struct是结构类型的关键字 C:a和b都是结构成员名 D:struct stu是用户定义的结构类型

  21. 当输入为"quert?",下面程序的执行结果是
    #include
    main()
    {while(putchar(getchar())!='?');}

  22. A:quert? B:rvfsu? C:quert D:Rvfsu

  23. 若有以下定义:
    int a[5]={ 5, 4, 3, 2, 1 } ;
    char b= ‘a’, c, d, e;
    则下面表达式中数值为2的是

  24. A:a [3] B:a [e – c] C:a [d-b] D:a [ e-b ]
    AI参考:正确选项是:D:a [e-b] 解释:在给定的定义中,数组a的索引是从0开始的,所以a[3]的值是5。而表达式e-b的结果是e-a,即e的ASCII码值减去a的ASCII码值,结果为2。因此,选项D中的表达式a[e-b]的值也为2。"
  25. 当 a = 1, b = 3 , c = 5, d = 4 时, 执行完下面程序段后 x 的值为
    if ( a < b )
    if ( c < d ) x = 1 ;
    else
    if ( a < c )
    if ( b < d ) x =2 ;
    else x = 3 ;
    else x = 6 ;
    else x = 7 ;

  26. A:3 B:6 C:2 D:1
    AI参考:答案:B程序执行过程如下:1. a < b 为真,进入第一个if语句。2. c < d 为真,所以x = 1。3. 退出第一个if语句,进入else语句。4. a < c 为真,所以进入第二个if语句。5. b < d 不为真,所以x = 3。6. 退出第二个if语句,此时x的值为3。因此,执行完程序段后x的值为6。'
  27. 语句int i=3;k=(i++)+(i++)+(i++);执行过后k的值为       ,i的值为      。


  28. A:9,6 B:15,5 C:18,6 D:12,5

  29. 如果int i=3,则printf(“%d”,-i++)的结果为____ ,i的值为

  30. A:-4,4 B:-3,3 C:-4,3 D:-3,4

  31. 以下能对一维数组a进行正确初始化的语句是

  32. A:int a[10]=(0,0,0,0,0); B:int a[10]={ }; C:int a[ ]={}; D:int a[10]={10*1};

  33. 以下关于C语言程序函数的说法正确的是


  34. A:C语言程序总是从main()函数开始执行 B:C语言程序总是从第一个定义的函数开始执行 C:在C语言程序中,要调用的函数必须在main()函数中定义 D:C语言程序中的main()函数必须放在程序的开始部分
    AI参考:正确选项是A:C语言程序总是从main()函数开始执行。C语言程序的执行是从main函数开始的,这是C语言的典型程序入口。其他选项中,B选项说法错误,C语言程序可以是从main函数之后的任何位置开始执行的;C选项中,函数可以在main函数之前定义,也可以在main函数之后定义,甚至可以在main函数内部定义,然后在main函数中调用;D选项中,main函数的位置没有规定,可以在程序的任何位置。'
  35. #include
    main()
    { char *a[ ]={"abcd","ef","gh","ijk"};
    int i;
    for(i=0;i<4;i++)
    printf("%c",*a[i]); }
    程序运行后输出的结果是

  36. A:abcdefghijk B:dfhk C:abcd D:aegi
    AI参考:正确答案是 C:abcd。程序中定义了一个 char 类型的指针数组 a,包含四个字符串 "abcd"、"ef"、"gh" 和 "ijk"。在 for 循环中,通过 *a[i] 访问每个字符串的首字符并输出,因此输出的结果是 "abcd"。因此,正确答案是 C。'
  37. C语言规定,必须用 _____ 作为主函数名。

  38. A:include B:main C:stdio D:Function


  39.       #include <stdio.h>

      main(  )

      {char s[]="rstuv";

      printf("%c",*s+2);

      }

      程序运行后的输出结果是




  40. A:tuv B:t C:字符t的ASCIl码值 D:出错
    AI参考:正确选项是【B:t】。 程序中定义了一个字符数组s,并初始化为字符串rstuv。在main函数中,使用printf函数输出s数组中下标为2的字符(即s[2])的ASCII码值。由于s数组的下标从0开始,因此下标为2的字符即为s中的第三个字符,即t。所以程序运行后的输出结果是t。选项B是正确答案。选项A、C、D都与程序的实际输出结果不符。"
  41. 以下程序运行后的输出结果是
    #include
    main()
    {int a=1,b=2;
    for(;a<8;a++) { b+=a;a+=2;}
    printf(“%d,%d\n”,a,b);}

  42. A:9,18 B:8,11 C:10,14 D:7,11

  43. 一个C程序可以包含任意多个不同名的函数,但有且仅有一个_____,一个C程序总是从______开始执行。


  44. A:main B:Function C:include D:stdio

  45. 有以下程序
    main()
    {int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;
    pa=a;
    for(i=0;i<3;i++)
    if(i<2) pa[1][i]=pa[1][i]-1;
    else pa[1][i]=1;
    printf("%d\n",a[0][1]+a[1][1]+a[1][2]);
    }
    执行后输出结果是

  46. A:8 B:6 C:7 D:无确定值

  47. 下面程序的输出结果是
    main()
    {int x=40,y=4,z=4;
    x=y= =z;
    printf(“%d”,x);
    x=x= =(y-z);
    printf(%d”,x);
    }

  48. A:4 0 B:11 C:41 D:1 0

  49. 分析下列程序
    main()
    {int n[3],i,j,k;
    for(i=0;i<3;i++)
    n[i]=0;
    k=2;
    for(i=0;i for(j=0;j n[j]=n[i]+1;
    printf("%d\n",n[1]);
    }
    上述程序运行后,输出的结果是

  50. A:2 B:3 C:1 D:0

  51. 有以下程序:

      #include <stdio.h>

      main(  )

      {int C=124;

      C=C____;

      printf("%d",c);

      }

      若要使程序的运行结果为248,应在下划线处填入的是(  )



  52. A:|248 B:<<1 C:&0248 D:>>2
    AI参考:正确选项为D:>>2在C语言中,二进制数的运算需要按照特定的优先级进行。在进行位运算时,"<<"表示左移操作,"|"表示按位或操作,"^"表示按位异或操作,"&"表示按位与操作,">"和"<<"在非负整数上没有区别,但在负数上,"<<"是逐位右移,而">"是逐位左移。根据题目中的程序,变量C被初始化为124,现在需要将其右移两位,使得结果为248。因此,应该填入">"运算符,即C>>2。所以正确选项为D:>>2。'
  53. #include
    main( )
    { int x=0,y=5,z=3;
    while(z-->0&&++x<5) y=y-1;
    printf(“%d,%d,%d\n”,x,y,z);
    } 程序执行后的输出结果是

  54. A:5,-2,-5 B:3,2,-1 C:4,3,-1 D:3,2,0

  55. 有以下程序
    main()
    { char *s[]={"one","two","three"},*p;
    p=s[1];
    printf("%c,%s\n",*(p+1),s[0]);
    }
    执行后输出结果是

  56. A:t,one B:n,two C:w,one D:o,two

  57. 以下程序的运行结果是
    struct stru {int x; char c; };
    main( )
    { struct stru a={10, ’x’},*p=&a; func (p);
    printf ( “%d,%c”, a.x, a.c); }
    func (struct stru *b)
    {b->x=20; b->c=’y’; }

  58. A:10,x B:10,y C:20,x D:20,y

  59. 下面程序的输出结果是
    main()
    {int x;
    x=-3+4*5-6;printf(“%d”,x);
    x=3+4%5-6; printf(“%d”,x);
    x=-3*4%-6/5; printf(“%d”,x);
    x=(7+6)%5/2; printf(“%d”,x);
    }

  60. A:11 1 0 1 B:11 –3 2 1 C:12 –3 2 1 D:11 1 2 1

  61. #include
    main()
    {int x=1,y=0,a=0,b=0;
    switch(x)
    {case 1:
    case 2:a++;b++;break;
    ase 3:a++;b++;break;
    default:a++;b++;}
    printf(“\na=%d,b=%d”,a,b);}
    以上程序的输出是

  62. A:a=1,b=1 B:a=1,b=0 C:a=2,b=2 D:a=2,b=1

  63. 下列关于main函数的说法正确的是


  64. A:main函数必须放在C程序的开头 B:main函数必须放在C程序的最后 C:main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的 D:main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的

  65. 如果i=3,则k=(++i)+(++i)+(i++)执行过后k的值为 ,i的值为

  66. A:15,6 B:12,5 C:18,6 D:15,5

  67. while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为 的操作,否则,循环将会无限制地进行下去。

  68. A:2 B:1 C:0 D:成立

  69. 若要定义一个具有5个元素的整型数组,以下错误的定义语句是


  70. A:int c[5]; B:int i=5,d[i]; C:int b[]={0,0,0,0,0}; D:int a[5]={0};

  71. 下列符号中,可以作为变量名的是


  72. A:+a B:a3B C:12345e D:5
    AI参考:正确选项是:B:a3B。在Python中,变量名必须遵循以下规则:1. 变量名必须以字母(包括下划线)或下划线开头。2. 变量名不能包含空格或其他特殊字符。3. 变量名是区分大小写的。选项A中的"+a"不符合规则,因为它以数字开头。选项C中的"12345e"也不是一个有效的变量名,因为它包含了字母以外的字符。选项D中的"5"也是一个数字,不是一个有效的变量名。只有选项B中的"a3B"符合上述规则,因此它是可以作为变量名的正确选项。'
  73. 有下列程序:
    main()

    {char s[]="xyz123";

     s=s+3;

     printf("%c",s[0]);

    }

    执行后的结果是(  )。


  74. A:z B:2 C:1 D:x

  75. C语言中,运算对象必须是整型数的运算符是

  76. A:** B:%和 C: D:%

  77. 在C 语言中,下列类型属于基本类型的是

  78. A:数组类型、实型 B:整型、实型、字符型 C:空类型、枚举型 D:结构体类型、实型

  79. 假设所有变量均为整型, 则表达式( a=5, b=2, a++, a+b ) 的值是

  80. A:8 B:7 C:5 D:6

  81. 函数若有形参,则它一定有返回值

  82. A:对 B:错

  83. 函数返回值的类型是由在定义函数时所指定的函数类型决定的

  84. A:错 B:对

  85. 关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相加、相减

  86. A:对 B:错

  87. 对整型常量可进行自加或自减运算,而对变量或表达式不可以

  88. A:错 B:对

  89. 下面程序的运行结果:2,3,1
    #include
    void main( )
    {
    int x,y,z;
    x=y=1;
    z=x++,y++,++y;
    printf("%d,%d,%d\n",x,y,z);
    }

  90. A:对 B:错

  91. 下面程序的值是 1
    #include
    main()
    {int a=3;
    printf("%d",(a==1)||(a!=1));
    }

  92. A:对 B:错
    AI参考:正确答案是B:错。这个程序的值是1,但是判断的结果是假(false)。在C语言中,逻辑运算符“||”表示“或”,如果左侧的表达式为真,则整个表达式为真。在这个程序中,(a==1)为真,所以(a==1)||(a!=1)也为真。因此,程序输出的值是1,但是这个表达式的结果是假。所以这个程序是错误的。'
  93. 如果函数定义出现在函数调用之前,可以不必加函数原型声明

  94. A:错 B:对

  95. 用gets函数可以接收一个含有空格的字符串

  96. A:错 B:对

  97. 在内存中存储结构体类型的变量要占连续一段的存储单元

  98. A:错 B:对

  99. 以下程序运行后的输出结果是 welcome
    #include
    main()
    { char *p; int i;
     p=(char *)malloc(sizeof(char)*20);
     strcpy(p,"welcome");
     for(i=6;i>=0;i--) putchar(*(p+i));
     printf("\n-"); free(p);  
    }

  100. A:错 B:对
    AI参考:这个程序的目的应该是输出字符串"welcome"中的每一个字符,但是输出的顺序和预期相反。程序的运行过程是这样的:首先分配了足够的内存空间来存储字符串"welcome",然后使用strcpy函数复制字符串到这块内存空间中。接着,程序使用一个for循环从右往左遍历这个字符串,并使用putchar函数逐个输出每个字符。最后,程序释放了这块内存空间。然而,程序在for循环中的条件i>=0是错误的,因为字符串"welcome"实际上是从内存空间的开始位置开始的,也就是指向了字符串中的第7个字符。如果改为i>5应该会更合理一些。另外,free函数在printf函数之后调用,可能存在问题,因为它是在已分配的内存被完全使用之后调用的,可能会发生未定义的行为。综上所述,选项B“对”更准确一些。这个程序的目标应该是正确地输出"welcome"这个字符串的每个字符,但由于一些原因出现了错误。不过这是一个编程技巧的示例,可以让读者了解到如何在C语言中使用malloc和free来动态分配和释放内存。'
  101. 有以下程序(说明:字符0的ASCII码值为48)
    #include
    main()
    {char c1,c2;
    scanf("%d",&c1);
    c2=c1+9;
    printf("%c%c\n",c1,c2);
    }
    若程序运行时从键盘输入48<回车>,则输出结果为 09

  102. A:错 B:对

  103. C语言的三种循环不可以互相嵌套

  104. A:对 B:错

  105. 使用static 定义的变量属于静态变量

  106. A:错 B:对

  107. 在C语言中,字母的大小写不被区分

  108. A:错 B:对

  109. 结构体变量可以作数组元素

  110. A:对 B:错

  111. 逻辑表达式的值只能为1或0

  112. A:错 B:对

  113. 只有在函数被调用时,其形式参数才临时地占有存储空间

  114. A:对 B:错

  115. 指针数组的每个元素都是一个指针变量

  116. A:错 B:对

  117. 表达式语句和表达式没有什么区别

  118. A:错 B:对

  119. for循环的循环体可以是空语句


  120. A:错 B:对

温馨提示支付 ¥2.65 元后可查看付费内容,请先翻页预览!
点赞(1) dxwkbang
返回
顶部