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

C语言程序设计基础

  1. 设 f是实型变量,下列表达式中不是逗号表达式的是

  2. A:f=(3.2, 1.0) B:f= 3.2, 1.0 C:f>0, f D:f=2.0, f>0
    答案:f=(3.2,1.0)
  3. 访问个结构体的成,可以用的算符是

  4. A:“;” B:“.” C:“( )” D:“=”
    答案:“.”
  5. 表达式: 10!=9的值是

  6. A:true B:0 C:1 D:非零值
    答案:1AI参考:正确选项是D:非零值。在大多数编程语言中,非零的零值通常被视为真(true),而零被视为假(false)。因此,表达式 10 != 9 的结果是非零值,即D选项中的“非零值”。所以答案是D。至于为什么是单选题,因为在这样的简单表达式中,只需要直接使用一个答案就可以正确得出结果,无需分析。此外,在计算机编程中,这类简单逻辑判断问题通常是基础的题目,有助于新手理解和掌握。'
  7. 设变量i是int类型,f是float型,d是double型,执行表达式5+’i’-f*d,其结果的数据类型为

  8. A:double型 B:非法表达式 C:float型 D:int型
    答案:double型
  9. 运行下面程序时,从键盘输入数据为"2,13,5",
    则输出结果是( )。
    #include
    main( )
    { int a,b,c;
    scanf("%d,%d,%d",&a,&b,&c);
    switch(a)
    { case 1: printf("%d\n",b+c); break;
    case 2: printf("%d\n",b-c); break;
    case 3: printf("%d\n",b*c); break;
    case 4: { if(c!=0) {printf("%d\n",b/c);break;}
    else {printf("error\n");break;}
    }
    defualt: break;
    }
    }

  10. A:8 B:65 C:error D:10
    答案:8
  11. 已知各变量的类型说明如下:
    intk,a,b;
    longw=8;
    floatx=2.56;
    以下不符合C语言语法的表达式是

  12. A:x%5 B:)w-=5 C:k=(a=8,b=6,a-b) D:a+=a-=(b=2)*(a=5)

  13. 若定义floata;,现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用

  14. A:scanf("%5.2f",a); B:scanf("%6.2f",&a); C:scanf("%f",a); D:scanf("%6f",&a);

  15. 为表示关系x≥y≥z,应使用C语言表达式

  16. A:(x>=y)AND(y>=z) B:(x>=y)&&(y>=z) C:(x>=y) || (y>=z) D:(x>=y>=z)

  17. 以下正确的函数原型是 。

  18. A:int fun[int x, int y]; B:int fun(int x, y); C:int fun(int ,int ); D:int fun(int x; int y );
    AI参考:正确选项是B:int fun(int x, y);。函数原型是声明一个函数的基本格式,它应该包括函数类型、函数名、参数列表和返回值类型。选项A和D中缺少了参数列表中的参数数量和类型,选项C中缺少了返回值类型。只有选项B符合函数原型的格式要求,它声明了一个名为fun的函数,该函数接受两个int类型的参数x和y,并且没有指定返回值类型。'
  19. 以下程序的输出结果是 。
    int x;
    void fun( int x)
    {
    x*=x;
    printf("%d",x);
    }
    int main( )
    {
    int x=4;
    fun(x);
    printf("%d",x);
    {
    int x=0;
    printf("%d",++x);
    }
    printf("%d",x);
    return 0;
    }

  20. A:16,4,5,5 B:16,16,17,17 C:16,4,1,1 D:16,4,1,4
    AI参考:正确答案是【C:16,4,1,1】。程序中首先定义了一个变量x,值为4,然后调用fun函数,将x的值传递给fun函数中的x,fun函数中x*=x运算后值为16,然后输出这个值。接着main函数中输出变量x的值,值为4。然后在fun函数中的代码块中又定义了一个变量x,并使用++x将x的值变为1,再输出这个值。最后再次输出变量x的值,此时x的值为1。所以程序输出的结果为:16,4,1,1。因此选项C为正确答案。'
  21. 以下不是无限循环的语句为    

  22. A:for(i=10;;i--) sum+=i; B:for(;;x++=i); C:for(y=0,x=1;x>++y;x=i++) i=x D:while(1) { x++; }
    AI参考:正确选项是:D:while(1) { x++; }该题目要求找出不是无限循环的语句,因为只有非无限循环的语句才是正确的选项。在四个选项中,只有D选项是条件语句,并且在无限循环的条件为假的情况下,x的值会增加一个单位。其他三个选项都存在无限循环的条件,不符合题目要求。因此,D选项是正确答案。'
  23. 设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,
    值为0的表达式是



  24. 下面程序的运行结果是    
    #include
    main()
    {
    char ch[7]={“12ab56”};
    int i,s=0;
    for(i=0;ch[i]>=‘0’&&ch[i]<=‘9’;i+=2)
    s=10*s+ch[i]-‘0’;
    printf(“%d\n”,s);
    }

  25. A:1 2 5 6 B:1256 C:12ab56 D:1

  26. 下面程序运行结果是 。
    #define MUL(x,y) x*y
    int main( )
    {
    double x=4,y=6,z;
    z=MUL(x-y,x+y);
    printf("%.2f",z);
    return 0;
    }

  27. A:-14 B:-20 C:24 D:12
    AI参考:正确选项是 `C:24`。程序中使用了宏定义 `MUL(x,y)`,它相当于一个函数,将 `x*y` 的结果返回。在 `main()` 函数中,将 `x-y` 和 `x+y` 分别代入 `MUL(x-y,x+y)` 中,得到 `z = 4*6 = 24`。最后使用 `printf("%.2f",z)` 输出结果,保留两位小数,所以最终输出结果为 `24.00`。'
  28. 下面程序段中,for循环的执行次数是___________。
    char *s=”\ta\018bc”;
    for( ;*s!=’\0’; s++) printf(“*”);

  29. A:9 B:5 C:7 D:6
    AI参考:正确选项是【D:6】。 程序段中,首先定义了一个字符指针s,指向字符串a18bc。然后使用for循环遍历这个字符串,直到遇到字符串的结束符为止。在每次循环中,指针s都会向前移动一位,输出一个星号(*)。由于字符串a18bc中有5个字符(包括),因此循环将会执行5次。但是在循环内部使用了printf函数输出星号,因此在执行了前四次循环后,s指针会到达字符串的末尾,因此第五次循环不会再执行,即循环执行次数为6次。所以答案为D。"
  30. 以下函数的功能是 。
    void fun(char *s1,char*s2)
    {int i;
    char*s =s1;
    for(; *s2!= '\0';s2++)
    {for(j=0, s1=s;*s1!= '\0';s1++)
    if(*s1!=*s2)
    s[j++]=*s1;
    s[j]='\0';
    }
    }

  31. A:找出字符串s1和s2中共有的字符; B:找出在字符串s1中而不在s2中的所有字符; C:比较两个字符串的长度是否相等; D:将字符串s2连接到s1之后;
    AI参考:正确选项是【B:找出在字符串s1中而不在s2中的所有字符】。 根据代码逻辑,函数的功能是找出在字符串s1中而不在字符串s2中的所有字符。函数首先将字符串s1复制到变量s中,然后遍历字符串s2,如果s1和s2中对应位置的字符不相等,就将s1中该字符复制到s中,并在末尾添加字符串结束符。最后,返回的是在s1中而不在s2中的所有字符。因此,选项B是正确的。选项A、C、D都不符合代码逻辑。"
  32. 对于return语句说法正确的是 。

  33. A:main函数中不能使用return语句。 B:return语句必须返回值; C:return语句只能出现在函数的结尾部分; D:return语句可以在一个函数中出现多次;
    AI参考:正确选项是【B:return语句必须返回值;】。在编程中,return语句用于从函数中返回结果。在main函数中可以使用return语句,但是通常main函数不需要返回值,它只是一个程序的入口点。return语句通常出现在函数的结尾部分,用于返回函数执行的结果。在函数中可以多次使用return语句,但每次只能返回一个值。因此,选项B是正确的。'
  34. 设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是

  35. A:0 B:3 C:-12 D:9

  36. 下面有关for循环的正确描述是    

  37. A:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 B:for循环是先执行循环体语句,后判断表达式 C:for循环只能用于循环次数已经确定的情况 D:在for循环中,不能用break语句跳出循环体
    AI参考:正确选项:A:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。for循环的描述中,A选项是正确的。B选项是错误的,因为for循环是先判断表达式,再执行循环体语句。C选项也是错误的,因为for循环可以用于循环次数不确定的情况,例如遍历一个集合或者列表。D选项也是错误的,因为for循环中可以使用break语句跳出循环体。因此,正确答案为A选项。'
  38. 请读程序:
    #include
    main( )
    { int x=1,y=0,a=0,b=0;
    switch(x)
    { case 1: switch (y)
    { case 0: a++;break;
    case 1: b++;break;
    }
    case 2: a++;b++;break;
    }
    printf("a=%d,b=%d\n",a,b);
    }
    上面程序的输出结果是

  39. A:a=2,b=1 B:a=1,b=0 C:a=2,b=2 D:a=1,b=1
    AI参考:输出结果为:D:a=1,b=1程序中,变量x的值为1,根据switch语句,执行case 1的代码块。在case 1的代码块中,又嵌套了一个switch语句,当y的值为0时,a++;当y的值为1时,b++。由于y的值没有变化,所以b只会执行一次,即b++为b=1。在case 1的代码块中,还有一个break语句,用于跳出switch语句。因此,执行完case 1的代码块后,a的值变为1,b的值变为1。接下来执行case 2的代码块,由于x的值不是1,所以不会执行case 2的代码块。最后,程序输出变量a和b的值,即a=1,b=1。因此,正确答案是D:a=1,b=1。'
  40. 选择出合法的判断a和b是否相等的if语句(设int x,a,b,c;)。

  41. A:if (a=b) x++; B:if (a!=b) x++; C:if (a= D:if (a=>b) x++;
    AI参考:正确的选项是 B:if (a!=b) x++;这个语句是用来判断变量a和b是否相等的。在C语言中,等号“=”用于赋值操作,因此选项A中的if (a=b)语句表示将b的值赋给a,然后再判断a是否等于b,这显然是不合法的。选项C中的if语句缺失了表达式,也是不完整的。选项D中的if语句使用大于号“=>”来判断相等关系,这是不合法的。只有选项B中的if语句符合语法规则,它表示如果a不等于b,则将变量x的值加1。'
  42. 设ch是 char型变量,其值为 'A',则下面表达式的值是 。ch=(ch>='A'&& ch<='Z')? (ch+32):ch

  43. A:A B:Z C:z D:a

  44. 有字符数组a[80]和b[80],则正确的输出形式是    

  45. A:puts(a),puts(b); B:printf(“%s %s”,a[],b[]); C:puts(a,b); D:putchar(a,b);

  46. 若有以下数组说明,则数值最小的和最大的元素下 。int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};

  47. A:0,12 B:1,12 C:0,11 D:1,11

  48. 设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是

  49. A:1,0 B:1,1 C:0,0 D:0,1

  50. 下列叙述中正确的是()。

  51. A:break语句只能用于switch语句体中 B:在循环体内使用break语句和continue语句的作用相同 C:continue语句的作用是使程序的执行流程跳出包含它的所有循环 D:break语句只能用在循环体内和switch语句体中

  52. 下列程序段的功能是计算:s=1+12+123+1234+12345,则划线处应填()。
    int i,s=0,t=0;
    for(i=1;i<=5;i++)
    {t=i+ ;
    s=s+t;
    }
    printf("s=%d",s);

  53. A:t*t B:i*i C:t*10 D:i*10

  54. int a[4]={5,3,8,9};其中 a[3]的值为

  55. A:3 B:8 C:9 D:5

  56. 下面程序的运行结果是    
    #include
    main()
    {
    char a[]=“morning”,t;
    int i,j=0;
    for(i=1;i<7;i++) if(a[j] t=a[j]; a[j]=a[7];
    a[7]=a[j]; puts(a);
    }

  57. A:mornin B:mogninr C:mo D:morning

  58. 下面程序的运行结果是    
    #include
    main()
    {
    char str[]=“SSSWLIA”,c;
    int k;
    for(k=2;(c=str[k])!=‘\0’;k++)
    {
    switch(c)
    {
    case ‘I’: ++k; break;
    case ‘L’: continue;
    default: putchar(c); continue;
    }
    putchar(‘*’);
    }
    }

  59. A:SW B:SW*A C:SW* D:SSW*

  60. 下列各语句定义了数组,其中哪一个是不正确的

  61. A:float x[2][ ]={1,2,4,6,8,10}; B:int m[][3]={1,2,3,4,5,6}; C:int x[2][2]={1,2,3,4}; D:char a[3][10]={"China","American","Asia"};

  62. 定义以下结构体类型
    struct s
    { char x;
    float f;
    }a[3];
    语句printf("%d",sizeof(a))的输出结果为


  63. A:15 B:12 C:4 D:6

  64. 下面与x=y++完全等价的表达式是

  65. A:x=++y B:x+=y+1 C:x=y,y=y+1 D:)x=x+1,y=x
    AI参考:正确答案是【B:x+=y+1】。x=y++等价于先让y自增1,再让x加上y的值,所以选项B正确。选项A是先让x自增再让y自增,不符合题意;选项C是赋值语句,不符合题意;选项D是两个独立的语句,也不符合题意。'
  66. 有以下程序
      #include
      main()
      {FILE*fp;int i,k,n;
      fp=fopen("data。dat","w+");
      for(i=1;i<6;i++)
      {fprintf(fp,"%d",i);
      if(i%3==0)fprintf(fp,"\n");
      }
      rewind(fp);
      fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
      fclose(fp);
      }
      程序运行后的输出结果是

  67. A:123 45 B:0 0 C:1 4 D:1 2

  68. 下面程序段的运行结果是    
    char c[]=“\t\v\\\0will\n”;
    printf(“%d”,strlen(c));

  69. A:字符串中有非法字符,输出值不确定 B:3 C:9 D:14

  70. 以下程序的运行结果是( )。
    #include
    int main( )
    { int a;
    for(a=0;a<5&&a!=1;a++)
    {
    printf("%d ;",a);
    }
    }

  71. A:0;2;3;4 B:0; C:0;2;3;4;5 D:0 ;1
    AI参考:正确选项是:C程序的主要逻辑是一个for循环,循环条件是a小于5且a不等于1。在循环体中,每次输出a的值,即printf("%d ;",a);。因此,程序的运行结果是:0、2、3、4。选项A和B都只输出前两个数字,选项D只输出了一个数字。因此,正确答案是C,即0、2、3、4。'
  72. 设ch是char型变量,其值为A,且有下面的表达式:
    ch=(ch>='A'&&ch<='Z')?(ch+32):ch
    上面表达式的值是

  73. A:a B:z C:Z D:A

  74. 以下程序的运行结果是( )。
    #include
    int main( )
    { int x=3;
    do
    { printf(“%d”,x--);
    }while(!x);
    return 0;
    }

  75. A:3 2 1 B:3 C:2 1 0 D:2
    AI参考:正确选项是 C:2 1 0。程序中的 do-while 循环会不断执行,直到 x 的值为 0 为止。在每次循环中,都会输出 x 的值,并递减 1。所以当 x 的初始值为 3 时,循环会输出 3、2、1,直到 x 的值为 0 为止。因此,程序的运行结果是 2、1、0。'
  76. 下面不是构体型特选项为

  77. A:结构体可以把不同类型的数据组合成一个整体 B:结构体类型中可以有不同类型的成员 C:结构体中的成员都必须是相同的数据类型 D:结构体是C语言中一种构造数据类型

  78. int b=0,x=1;执行语句 if(x++) b=x+1; 后,x,b 的值依次为

  79. A:2,3 B:3,2 C:3,0 D:2,0

  80. 假定int类型变量占用两个字节,其定义为:int x[10]={0,2,4};则数组x在内存中所占字节数是

  81. A:3 B:20 C:6 D:10

  82. 有以下程序
    #include
    int main()
    {
    int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0;
    for(i=0;i<5;i++) s=s+a[b[i]];
    printf(“%d\n”,s);
    }
    运行后的输出结果是 。

  83. A:6 B:10 C:11 D:15

  84. 有以下定义和语句:
    struct student
    { int age;
    int num; };
    struct student stu[3]={{1001,20},{1002,19},{1003,21}};
    int main( )
    { struct student *p;
    p=stu;
    …… }
    则以下不正确的引用是


  85. A:p=&stu.age B:p->num C:(p++)->num D:(*p).num

  86. 与语句while(!s)中的条件等价的是()。

  87. A:s==0 B:s=0 C:s==1 D:s!=0

  88. 要为字符型变量 a赋初值,下列语句中哪一个是正确的

  89. A:char a="3"; B:char a=’3’; C:char a=%; D:char a=*;

  90. 设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是

  91. A:12 B:表达式出错 C:15 D:6

  92. 能正确表示逻辑关系“a≥10”或“a≤0”的C语言表达式是( )。

  93. A:a>=10||a B:a>=0|a C:a>=10 or a D:a>=10&&a

  94. 当运行以下程序时,从键盘输入:aa bb
    cc dd
    (表示回车),则下面程序的运行结果是
        
    #include
    main()
    {
    char a1[5],a2[5],a3[5],a4[5];
    scanf(“%s %s”,a1,a2);
    gets(a3); gets(a4);
    puts(a1); puts(a2);
    puts(a3); puts(a4);
    }

  95. A:aabbcc dd B:aabbcc ddee C:aa bbccdd D:aabbccdd
    AI参考:正确选项是 C:aa bbccdd。程序首先使用scanf函数从键盘输入两个字符串,存储在变量a1和a2中。接着使用gets函数分别从键盘输入两个字符串,存储在变量a3和a4中。程序最后使用puts函数输出变量a1和a2中的字符串,以及变量a3和a4中的字符串。在键盘输入为"aa bb
    cc dd
    "的情况下,程序将按照以下顺序执行:1. scanf(“%s %s”,a1,a2);:读取输入的"aa bb",并存储在变量a1和a2中。2. gets(a3); gets(a4);:分别从键盘读取两个字符串,并存储在变量a3和a4中。由于gets函数会读取整行的输入,所以这里会读取到回车符,导致变量a3和a4中会包含回车符。3. puts(a1); puts(a2);:输出变量a1和a2中的字符串"aa bb"。但由于变量a3和a4中包含回车符,所以在输出时会跳过回车符,只输出剩余的字符"cc"和"dd"。因此,程序的运行结果是"aa bbccdd"。选项C是唯一符合程序逻辑的答案。选项A、B、D中的输出结果都包含了回车符或其他不符合逻辑的字符。'

  96. 以下选项中,正确的 C 语言整型常量是

  97. A:32L B:-1 C:567 D:510000
    AI参考:正确选项是C:567。在C语言中,整型常量可以是正数、负数或者零。选项A中的32L表示一个长整型常量,选项B中的-1表示一个负数,选项D中的510000是一个十进制整数,都不是题目中要求的整型常量。因此,选项C中的567是一个符合要求的整型常量。'
  98. 下面的程序
    #include
    main( )
    { int x=3,y=0,z=0;
    if (x=y+z) printf("* * * *");
    else printf("# # # #"); }

  99. A:可以通过编译,但是不能通过连接,因而不能运行 B:输出* * * * C:有语法错误不能通过编译 D:输出# # # #

  100. C语言中,一个整数如果其值在-323768~32767范围内,认为它是int型,只能赋值给int型变量。

  101. A:对 B:错

  102. 如果将结构体指针作为函数的参数,可以完成比基本类型指针更为复杂的操作。

  103. A:错 B:对

  104. 结构体指针变量不可以直接指向结构体数组中的元素。

  105. A:对 B:错

  106. 以下语句有错,错误原因是未给指针变量p赋地址值。
    # include<stdio.h>
    int main()
    {int*p;
    * p=100;

  107. A:对 B:错

  108. 在C语言中,字符串常量隐含处理成以‘\0’结尾。

  109. A:对 B:错

  110. C语言中,符号常量的值在程序运行过程中可以改变。

  111. A:错 B:对

  112. C语言中,不要求对程序中所用到的变量进行强制定义。

  113. A:错 B:对

  114. 程序设计语言有两个功能即数据表达和流程控制。

  115. A:错 B:对

  116. 指针数组和指向一维数组的指针含义相同。

  117. A:错 B:对

  118. C语言中函数参数传递方式有地址传递和值传递两种。

  119. A:对 B:错

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