2020 大学计算机基础(二)陈朋(湖南第一师范学院) 最新满分章节测试答案

2025年1月7日 分类:免费网课答案 作者:网课帮手
文章目录[隐藏]

本答案对应课程为:点我自动跳转查看
本课程起止时间为:2020-03-06到2020-06-30
本篇答案更新状态:已完结

第1周——初识C语言从认识变量和常量开始 第1周测验

1、 问题:下列选项中,合法的C语言标识符是
选项:
A:_a1
B:width.x
C:#abc123 
D:123abc
E:o*k
F:a?
G:a+b
H:%a
I:b!
答案: 【_a1

2、 问题:以下不适合定义为用户标识符的是
选项:
A:int 
B:a2
C:def2
D:3com
E:PI 
F:Source
G:abc
答案: 【int 

3、 问题:#include <stdio.h>是
选项:
A:编译预处理指令
B:语句
C:函数
D:什么都不是
E:有语法错误
答案: 【编译预处理指令

4、 问题:在windows下,程序编译链接后形成的可执行文件是
选项:
A:.obj文件
B:.exe文件
C:.o文件
D:.c文件
E:.h文件
答案: 【.exe文件

5、 问题:程序编译链接后显示" 0 error,0 warning" 代表
选项:
A:程序中没有语法错误
B:程序是正确的
C:程序是不正确的
D:程序中可能存在语法错误
E:程序中有语义错误
答案: 【程序中没有语法错误

6、 问题:用8位无符号二进制数能表示的最大十进制数为
选项:
A:255
B:127
C:128
D:256
答案: 【255

7、 问题:关于可执行文件说法正确的是
选项:
A:可执行文件是编译链接后生成的文件
B:可执行文件就是源代码文件
C:可执行文件后缀为.obj
D:可执行文件就是main.c文件
答案: 【可执行文件是编译链接后生成的文件

8、 问题:若变量a是int类型,并执行了语句:a=’A’+1.6;,则正确的叙述是
选项:
A:’A’+1.6的结果是浮点型
B:a的值还是整型
C:a的值是字符C
D:a的值是浮点型
E:不允许字符型和浮点型相加
答案: 【‘A’+1.6的结果是浮点型;
a的值还是整型

9、 问题:C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A:运算符
B:一元运算符
C:只需要一个操作数的运算符
D:函数
E:语句
F:标识符
G:变量
答案: 【运算符;
一元运算符;
只需要一个操作数的运算符

10、 问题:以下不属于Codeblocks中用于调试程序的工具是
选项:
A:run
B:build
C:run to cursor
D:next line
E:stop debugger
F:watches
答案: 【run;
build

11、 问题:程序的开发步骤中不包括
选项:
A:撰写文档
B:运行程序
C:编译链接
D:程序测试
E:编辑(编写代码)
答案: 【撰写文档

12、 问题:下列说法中错误的是()
选项:
A:尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B:内存是按位编址的。
C:有符号和无符号整数的表数范围是相同的。
D:int型在所有的计算机上都占4个字节的存储单元。
E:编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F:内存是按字节编址的。
G:对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H:sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。

13、 问题:若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A:1
B:1.4
C:2.0
D:2
答案: 【1

14、 问题:在C语言中,字符型数据在内存中以字符的(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码 
答案: 【ASCII码

15、 问题:以下符合C语言语法的实型常量是
选项:
A:5e-3
B:3.14.159e
C:1.2e0.5
D:e15
答案: 【5e-3

16、 问题:以下选项中可作为C语言合法整数的是
选项:
A:0xffa
B:10110B       
C:038x
D:x2a2
答案: 【0xffa

17、 问题:下列说法正确的是
选项:
A:在C语言中,变量必须先定义后使用。
B:一条变量定义语句可定义多个同类型的变量。
C:C89规定所有变量必须在第一条可执行语句前定义。
D:const常量只能在定义时赋值。
E:实型常量的默认类型是double类型。
F:一条变量定义语句不可以同时定义多个变量。
G:不同类型的变量分配的存储空间大小都是相同的。
H:在C语言中,所有变量都必须在定义时进行初始化。
I:变量在没有初始化的时候,其值都是0
J:宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。

18、 问题:下列变量定义中合法的是
选项:
A:long ao=0xfdaL;
B:short _a=1-.1e-1;
C:double b=1+5e2.5;
D:float 2_and=1-e-3;
答案: 【long ao=0xfdaL;

【作业】第1周——初识C语言从认识变量和常量开始 练兵区——编程题——不计入总分

1、 问题:hello world!
建议:【本题是主观题,暂无解析

2、 问题:在屏幕上输出多行信息
建议:【本题是主观题,暂无解析

3、 问题:计算半圆弧长及半圆的面积。
建议:【本题是主观题,暂无解析

4、 问题:计算长方体体积
建议:【本题是主观题,暂无解析

第1周——初识C语言从认识变量和常量开始 练兵区——单选题——不计入总分

1、 问题:下列选项中,合法的C语言标识符是
选项:
A:_a1
B:width
C:#abc123 
D:123abc
E:o*k
F:a?
G:a+b
H:%a
I:b!
答案: 【_a1;
width

2、 问题:以下不适合定义为用户标识符的是
选项:
A:float 
B:main
C:define
D:3com
E:PI
F:Source
G:abc
答案: 【float ;
main;
define

3、 问题:#include <stdio.h>是
选项:
A:编译预处理指令
B:语句
C:函数
D:什么都不是
E:有语法错误
答案: 【编译预处理指令

4、 问题:在windows下,程序编译链接后形成的可执行文件是
选项:
A:.obj文件
B:.exe文件
C:.o文件
D:.c文件
E:.h文件
答案: 【.exe文件

5、 问题:程序编译链接后显示" 0 error,0 warning" 代表
选项:
A:程序中没有语法错误
B:程序是正确的
C:程序是不正确的
D:程序中可能存在语法错误
E:程序中有语义错误
答案: 【程序中没有语法错误

6、 问题:用8位无符号二进制数能表示的最大十进制数为
选项:
A:255
B:127
C:128
D:256
答案: 【255

7、 问题:关于可执行文件说法正确的是
选项:
A:可执行文件是编译链接后生成的文件
B:可执行文件就是源代码文件
C:可执行文件后缀为.obj
D:可执行文件就是main.c文件
答案: 【可执行文件是编译链接后生成的文件

8、 问题:若变量a是int类型,并执行了语句:a=’A’+1.6;,则正确的叙述是
选项:
A:’A’+1.6的结果是浮点型
B:a的值还是整型
C:a的值是字符C
D:a的值是浮点型
E:不允许字符型和浮点型相加
答案: 【‘A’+1.6的结果是浮点型;
a的值还是整型

9、 问题:C语言用sizeof计算变量在内存中的字节数,其中sizeof是()
选项:
A:运算符
B:一元运算符
C:只需要一个操作数的运算符
D:函数
E:语句
F:标识符
G:变量
答案: 【运算符;
一元运算符;
只需要一个操作数的运算符

10、 问题:以下不属于Codeblocks中用于调试程序的工具是
选项:
A:run
B:build
C:run to cursor
D:next line
E:stop debugger
F:watches
答案: 【run;
build

11、 问题:程序的开发步骤中不包括
选项:
A:撰写文档
B:运行程序
C:编译链接
D:程序测试
E:编辑(编写代码)
答案: 【撰写文档

12、 问题:下列说法中错误的是()
选项:
A:尾数决定了实数的表数范围,阶码决定了实数的表数精度。
B:内存是按位编址的。
C:有符号和无符号整数的表数范围是相同的。
D:int型在所有的计算机上都占4个字节的存储单元。
E:编译器按变量定义的类型对不同类型的变量分配不同大小的内存空间。
F:内存是按字节编址的。
G:对于同样的尾数,阶码的值越大,则浮点数所表示的数值的绝对值就越大。
H:sizeof是编译时执行的运算符,不会导致额外的运行时间开销。
答案: 【尾数决定了实数的表数范围,阶码决定了实数的表数精度。;
内存是按位编址的。;
有符号和无符号整数的表数范围是相同的。;
int型在所有的计算机上都占4个字节的存储单元。

13、 问题:若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为
选项:
A:1
B:1.4
C:2.0
D:2
答案: 【1

14、 问题:在C语言中,字符型数据在内存中以字符的(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码 
答案: 【ASCII码

15、 问题:以下符合C语言语法的实型常量是
选项:
A:5e-3
B:3.14.159e
C:1.2e0.5
D:e15
答案: 【5e-3

16、 问题:以下选项中可作为C语言合法整数的是
选项:
A:0xffa
B:10110B       
C:038x
D:x2a2
答案: 【0xffa

17、 问题:下列说法正确的是
选项:
A:在C语言中,变量必须先定义后使用。
B:一条变量定义语句可定义多个同类型的变量。
C:C89规定所有变量必须在第一条可执行语句前定义。
D:const常量只能在定义时赋值。
E:实型常量的默认类型是double类型。
F:一条变量定义语句不可以同时定义多个变量。
G:不同类型的变量分配的存储空间大小都是相同的。
H:在C语言中,所有变量都必须在定义时进行初始化。
I:变量在没有初始化的时候,其值都是0
J:宏常量有数据类型,编译器在宏替换时可以进行类型检查。
答案: 【在C语言中,变量必须先定义后使用。;
一条变量定义语句可定义多个同类型的变量。;
C89规定所有变量必须在第一条可执行语句前定义。;
const常量只能在定义时赋值。;
实型常量的默认类型是double类型。

18、 问题:下列变量定义中合法的是
选项:
A:long ao=0xfdaL;
B:short _a=1-.1e-1;
C:double b=1+5e2.5;
D:float 2_and=1-e-3;
答案: 【long ao=0xfdaL;

第3周——从键盘中来,到键盘中去,开始输入和输出啦 第3周测验

1、 问题:分析下列程序,写出程序运行结果#include <stdio.h>
int main()

    char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
    printf("a%cb%cc%cabc", c1, c2, c3);
    return 0;
}
选项:
A:aabbccabc
B:acbcabc
C:aabcabc
D:acbbcabc
答案: 【aabbccabc

2、 问题:有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b);
选项:
A:a=1,b=2
B:1 2
C:1,2
D:a=1 b=2
答案: 【a=1,b=2

3、 问题:#include <stdio.h>
int main()

    int a,b,c,d;
    scanf("%c%c%d,%d",&a,&b,&c,&d);
    printf("%c,%c,%c,%c",a,b,c,d);
    return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A:6,5,A,B
B:6,5,65,66
C:6,5,6,5
D:6,5,6,6
答案: 【6,5,A,B

4、 问题:给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{  
    int a,b,s;
    scanf("%2d%2d",&a,&b);
    s=a/b;
    printf("s=%d",s);
    return 0;
}
选项:
A:1
B:1.6875
C:2
D:0
答案: 【1

5、 问题:以下程序的输出结果为#include <stdio.h> 
int main() 

   float a = 1234.567,b = 55.32; 
   printf("a = %4.2f, b = %5.1f", a,b); 
   return 0;
 }
选项:
A:a = 1234.57, b = 55.3
B:a =1234, b =55
C:a = 1234.6, b = 5.32
D:a =1234.567, b = 55.32
答案: 【a = 1234.57, b = 55.3

6、 问题:以下程序的输出结果为#include <stdio.h>
int main()
{
      int a=2, c=5;
      printf("a = %%d, b = %%d", a, c);
      return 0;
}
选项:
A:a = %d, b = %d
B:a = %2, b = %5
C:a = 2, b = 5
D:a = %%d, b = %%d
答案: 【a = %d, b = %d

7、 问题:有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
 { 
     char ch;
     ch=getchar();
     ch=ch+32;
     printf("%c",ch);
     return 0;
}
选项:
A:b
B:98
C:32
D:66
答案: 【b

8、 问题:在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。

9、 问题:设有语句“char c=’\72′;”,则变量c
选项:
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:不合法
答案: 【包含1个字符

10、 问题:在下列语句中存在错误的是
选项:
A:int a,b;scanf("%d %f",&a,&b);
B:int a,b;scanf("%d %d",a,b);
C:int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);
D:float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E:float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F:float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G:int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H:int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I:int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);

11、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int a=666,b=888;
    printf("%d",a,b);
    return 0;
}
选项:
A:666
B:错误信息 
C:888  
D:666,888
答案: 【666

12、 问题:有以下语句段#include <stdio.h>
int main()
{
    int n1=10,n2=20;
    printf("___",n1,n2);
    return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A:n1=%dn2=%d
B:n1=%dn2=%d
C:n1=%d,n2=%d
D:n1=%d n2=%d
答案: 【n1=%dn2=%d

13、 问题:以下选项中合法的字符常量是
选项:
A: ‘\010’
B:"B"
C:68
D:D
答案: 【 ‘\010’

14、 问题:写出下面程序的输出结果#include<stdio.h>
int main()
  {
     int x=6,y,z;
     x*=18+1;
     printf("%d,",x–);
     x+=y=z=11;
     printf("%d",x);
     return 0;
}
选项:
A:114,124
B:113,124
C:109,116
D:110,116
答案: 【114,124

15、 问题:给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{  
    int a,b,sum;
    scanf("%d%*c%d",&a,&b);
    sum=a+b;
    printf("sum=%d",sum);
    return 0;
}
选项:
A:57
B:输出报错
C:33
D:输出一个随机数
答案: 【57

16、 问题:给出程序的运行结果#include <stdio.h>
int main()
{  
    int a,b,s;
    char op;
    scanf("%d %c%d",&a,&op,&b);
    s=a%b;
    printf("s=%d",s);
    return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A:0
B:程序报错
C:输出一个随机数
D:3
答案: 【0

17、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  int a,b,c,d;
  char op1,op2,op3;
  int sum;
  printf("please input:a+b+c+d");
  scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
  sum=a+b+c+d;
  printf("sum=%d",sum);
  return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A:7
B:1
C:3
D:6
答案: 【7

18、 问题:在C语言中,字符型数据在内存中以(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码
答案: 【ASCII码

19、 问题:以下程序的执行结果是#include  <stdio.h> 
int main() 

   int  a = 5, b = 4, x, y; 
   x = 2  a++;
   y = –b 
 2; 
   printf("a=%d, x=%d", a, x); 
   printf("b=%d, y=%d", b, y); 
   return 0;
}
选项:
A:a=6,  x=10b=3,  y=6
B:a=6,  x=10b=3,  y=8
C:a=6,  x=12b=3,  y=6
D:以上均不对
答案: 【a=6,  x=10b=3,  y=6

20、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a; 
    int c=10;
    float f=100.0; 
    double x;
    a=f/=c*=(x=6.5);
    printf("%d,%d,%3.1f,%3.1f",a,c,f,x);
    return 0;
}
选项:
A:1,65,1.5,6.5
B:1,65,1,6.5
C:1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【1,65,1.5,6.5

21、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  char a,b;
  int s;
  printf("please input a and b:");
  a=getchar();
  b=getchar();
  s=a+b;
  printf("a=%c,b=%c",a,b);
  return 0;
}程序运行时从键盘输入:1<空格>2<回车>
选项:
A:a=1,b=
B:a=1,b=2
C:a= ,b=2
D:输出乱码
答案: 【a=1,b=

22、 问题:以下程序的输出结果是#include <stdio.h>
int main()
{
    int a=1234;
    printf("%2d",a);
    return 0;
}
选项:
A:1234
B:12
C:34
D:提示出错、无结果
答案: 【1234

第2周——数字间的那些事儿,做点计算哈 第2周测验

1、 问题:下列程序的输出结果是#include <stdio.h>
int main()

   int a=7,b=5;   
   printf("%d",b/a);
   return 0;   
}
选项:
A:0
B:5
C:1
D:0.7
答案: 【0

2、 问题:下列关于单目运算符++、–的叙述中正确的是
选项:
A:a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B:++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C:a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D:a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【a++的运算过程是:先使用变量a的值,然后再执行a=a+1。

3、 问题:以下程序的输出结果是:#include <stdio.h>
int main() 

    int a=1, b=2; 
    a=a+b; 
    b=a-b; 
    a=a-b; 
    printf("%d,%d", a, b );
    return 0;  
}
选项:
A:2,1
B:3,1
C:3,2
D:1,2
答案: 【2,1

4、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int m=3,n=4,x;
    x=m++;
    ++n;
    x=x+8/n;
    printf("%d,%d",x,m);
    return 0;
}
选项:
A:4,4
B:4,3
C:5,4
D:5,3
答案: 【4,4

5、 问题:下面程序的运行结果是#include  <stdio.h>
int main()
{
    int    a = 2, b = 3 ;
    float  x = 3.5, y = 2.5 ;
    printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
    return 0;
}
选项:
A:3.500000
B:3.000000
C:3.5
D:3
答案: 【3.500000

6、 问题:以下非法的赋值语句是
选项:
A:++(i+1);
B:x=(j–);
C:n=++i;
D:j++;
答案: 【++(i+1);

7、 问题:设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A:6.000000
B: 6.500000
C:6             
D:5.500000  
答案: 【6.000000

8、 问题: 以下程序的运行结果是#include <stdio.h>
int main() 

    int  a = 12, b = 3; 
    float  x = 18.5, y = 4.5; 
    printf("%f", (float)(a * b) / 2); 
    printf("%d", (int)x %(int)y); 
    return 0;
}
选项:
A:18.0000002
B:182
C:182.000000
D:18.0000002.000000
答案: 【18.0000002

9、 问题:设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A:-12
B:3
C:0
D:9
答案: 【-12

10、 问题:在C语言中,要求操作数必须是整型的运算符是
选项:
A:%
B:/
C:*
D:+
E:-
答案: 【%

11、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    char a=’a’;
    printf("%c,",++a);
    printf("%c",a++);
    return 0;
}
选项:
A: b,b
B:b,c
C:a,b
D:a,c
答案: 【 b,b

12、 问题:下面哪条语句可以生成0-9之间的随机数
选项:
A:magic=rand()%10;
B:magic=rand()%10+1;
C:magic=rand()/10;
D:magic=rand()/10+1;
答案: 【magic=rand()%10;

13、 问题:在下面的C语言语句中,存在错误的是
选项:
A:int a=b=10;
B:int a=10,b=10;
C:int a,b;a=b=10;
D:int a,b;a=10;b=10;
答案: 【int a=b=10;

14、 问题:若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A:x3=x2=x1=0; 
B:x1=26.8%3;
C:1+2=x2; 
D:x4=1+2=3;
答案: 【x3=x2=x1=0; 

15、 问题:若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
    char  a;
    int b;
    float  c;
    double d;
    ….
    return 0;
}
选项:
A:double
B:int
C:float
D:char
答案: 【double

16、 问题:在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A:#include <math.h>
B:#include <stdio.h>
C:#define <math.h>
D:#define <stdio.h>
答案: 【#include <math.h>

17、 问题:十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A:d=(x-(x/100)100)/10;
B:d=(x%100)/10;
C:d=(x/10)%10;
D:d=x%10;
E:d=(x-x%10)/10;
F:d=x%100;
答案: 【d=(x-(x/100)
100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】

18、 问题:在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A:变量a和b中的值都是0
B:变量a和b中都没有数值
C:变量a和b中的值都是未知的随机数
D:a和b都是整型变量
E:变量a和b占用的内存空间的大小是相同的
答案: 【变量a和b中的值都是0;
变量a和b中都没有数值

19、 问题:已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是(     )。
选项:
A:2和1
B:0和1.67
C:3和1
D:5和1
E:0和1
F:3和1.67
G:5和1.67
答案: 【2和1

20、 问题:设有以下定义,则下面给出的语句中错误的是int a=0; 
float b=1.25;
char c=’A’;

define d 2

选项:
A:d++;
B:(a+b)++;
C:(-a)++;
D:(a+1)++;
E:a++;
F:b++;
G:c++;
答案: 【d++;;
(a+b)++;;
(-a)++;;
(a+1)++;

第2周——数字间的那些事儿,做点计算哈 练兵区——单选题——不计入总分

1、 问题:设有语句“int a = 3;”,执行语句“a += a -= a * a;”后,变量a的值是
选项:
A:-12
B:3
C:0
D:9
答案: 【-12

2、 问题:在C程序中如果要使用数学函数,如sin(x),log(x)等,需要在程序中加入的语句是
选项:
A:#include <math.h>
B:#include <stdio.h>
C:#define <math.h>
D:#define <stdio.h>
答案: 【#include <math.h>

3、 问题:设有以下定义,则下面给出的语句中错误的是int a=0; 
float b=1.25;
char c=’A’;

define d 2

选项:
A:d++;
B:(a+b)++;
C:(-a)++;
D:(a+1)++;
E:a++;
F:b++;
G:c++;
答案: 【d++;;
(a+b)++;;
(-a)++;;
(a+1)++;

4、 问题:下列关于单目运算符++、–的叙述中正确的是
选项:
A:a++的运算过程是:先使用变量a的值,然后再执行a=a+1。
B:++a的运算过程是:先使用变量a的值,然后再执行a=a+1。
C:a++的运算过程是:先执行a=a+1,然后再使用变量a的值。
D:a++和++a都是最终使变量a执行a=a+1,因此对于包含a++或++a的表达式而言(如j=a++;或者j=++a;),两种情况下表达式的最终运算结果一定是相同的。
答案: 【a++的运算过程是:先使用变量a的值,然后再执行a=a+1。

5、 问题:以下程序的输出结果是:#include <stdio.h>
int main() 

    int a=1, b=2; 
    a=a+b; 
    b=a-b; 
    a=a-b; 
    printf("%d,%d", a, b );  
    return 0;
}
选项:
A:2,1
B:3,1
C:3,2
D:1,2
答案: 【2,1

6、 问题:下面哪条语句可以生成0-9之间的随机数
选项:
A:magic=rand()%10;
B:magic=rand()%10+1;
C:magic=rand()/10;
D:magic=rand()/10+1;
答案: 【magic=rand()%10;

7、 问题:在下面的C语言语句中,存在错误的是
选项:
A:int a=b=10;
B:int a=10,b=10;
C:int a,b;a=b=10;
D:int a,b;a=10;b=10;
答案: 【int a=b=10;

8、 问题:若有以下定义,则表达式“a * b + d – c”的值的类型为#include <stdio.h>
int main()
{
    char  a;
    int b;
    float  c;
    double d;
    ….
    return 0;
}
选项:
A:double
B:int
C:float
D:char
答案: 【double

9、 问题:十进制3位数整数x,下面哪条语句能正确分离出它的十位上的数字d?
选项:
A:d=(x-(x/100)100)/10;
B:d=(x%100)/10;
C:d=(x/10)%10;
D:d=x%10;
E:d=(x-x%10)/10;
F:d=x%100;
答案: 【d=(x-(x/100)
100)/10;;
d=(x%100)/10;;
d=(x/10)%10;】

10、 问题:在C语言中对下面的语句而言,哪个说法是错误的?int a, b;
选项:
A:变量a和b中的值都是0
B:变量a和b中都没有数值
C:变量a和b中的值都是未知的随机数
D:a和b都是整型变量
E:变量a和b占用的内存空间的大小是相同的
答案: 【变量a和b中的值都是0;
变量a和b中都没有数值

11、 问题:下列程序的输出结果是#include <stdio.h>
int main()

   int a=7,b=5;   
   printf("%d",b/a);
   return 0;   
}
选项:
A:0
B:5
C:1
D:0.7
答案: 【0

12、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int m=3,n=4,x;
    x=m++;
    ++n;
    x=x+8/n;
    printf("%d,%d",x,m);
    return 0;
}
选项:
A:4,4
B:4,3
C:5,4
D:5,3
答案: 【4,4

13、 问题:下面程序的运行结果是#include  <stdio.h>
int main()
{
    int    a = 2, b = 3 ;
    float  x = 3.5, y = 2.5 ;
    printf("%f", (float)(a+b) / 2 + (int)x % (int)y) ;
    return 0;
}
选项:
A:3.500000
B:3.000000
C:3.5
D:3
答案: 【3.500000

14、 问题:以下非法的赋值语句是
选项:
A:++(i+1);
B:x=(j–);
C:n=++i;
D:j++;
答案: 【++(i+1);

15、 问题:已知int a,b;并且有a=5%3;以及b=5/3;,则a和b的值分别是
选项:
A:2和1
B:0和1.67
C:3和1
D:5和1
E:0和1
F:3和1.67
G:5和1.67
答案: 【2和1

16、 问题:设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
选项:
A:6.000000
B: 6.500000
C:6
D:5.500000  
答案: 【6.000000

17、 问题:以下程序的运行结果是#include <stdio.h>
int main() 

    int  a = 12, b = 3; 
    float  x = 18.5, y = 4.5; 
    printf("%f", (float)(a * b) / 2); 
    printf("%d", (int)x %(int)y); 
    return 0;
}
选项:
A:18.0000002
B:182
C:182.000000
D:18.0000002.000000
答案: 【18.0000002

18、 问题:在C语言中,要求操作数必须是整型的运算符是
选项:
A:%
B:/
C:*
D:+
E:-
答案: 【%

19、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    char a=’a’;
    printf("%c,",++a);
    printf("%c",a++);
    return 0;
}
选项:
A:b,b
B:b,c
C:a,b
D:a,c
答案: 【b,b

20、 问题:若以下选项中的变量已正确定义,则正确的赋值语句是
选项:
A:x3=x2=x1=0; 
B:x1=26.8%3;
C:1+2=x2; 
D:x4=1+2=3;
答案: 【x3=x2=x1=0; 

【作业】第2周——数字间的那些事儿,做点计算哈 练兵区——编程题——不计入总分

1、 问题:输出逆序数
建议:【本题是主观题,暂无解析

2、 问题:计算总分和平均分
建议:【本题是主观题,暂无解析

3、 问题:存款利率计算器V1.0
建议:【本题是主观题,暂无解析

4、 问题:数位拆分v1.0
建议:【本题是主观题,暂无解析

5、 问题:求正/负余数
建议:【本题是主观题,暂无解析

6、 问题:身高预测
建议:【本题是主观题,暂无解析

7、 问题:求一元二次方程的根
建议:【本题是主观题,暂无解析

第3周——从键盘中来,到键盘中去,开始输入和输出啦 练兵区——单选题——不计入总分

1、 问题:以下程序的输出结果为#include <stdio.h> 
int main() 

   float a = 1234.567,b = 55.32; 
   printf("a = %4.2f, b = %5.1f", a,b); 
   return 0;
 }
选项:
A:a = 1234.57, b = 55.3
B:a =1234, b =55
C:a = 1234.6, b = 5.32
D:a =1234.567, b = 55.32
答案: 【a = 1234.57, b = 55.3

2、 问题:以下选项中合法的字符常量是
选项:
A: ‘\010’
B:"B"
C:68
D:D
答案: 【 ‘\010’

3、 问题:给出程序的运行结果程序运行时从键盘输入:1<空格>2<回车>#include <stdio.h>
int main()
{
  char a,b;
  int s;
  printf("please input a and b:");
  a=getchar();
  b=getchar();
  s=a+b;
  printf("a=%c,b=%c",a,b);
  return 0;
}
选项:
A:a=1,b=
B:a=1,b=2
C:a= ,b=2
D:输出乱码
答案: 【a=1,b=

4、 问题:有如下语句,为使变量a的值为1,b的值为2,从键盘输入数据的正确形式是scanf("a=%d,b=%d",&a,&b)
选项:
A:a=1,b=2
B:1 2
C:1,2
D:a=1 b=2
答案: 【a=1,b=2

5、 问题:#include <stdio.h>
int main()

    int a,b,c,d;
    scanf("%c%c%d,%d",&a,&b,&c,&d);
    printf("%c,%c,%c,%c",a,b,c,d);
    return 0;
}若运行以上程序时从键盘上输入:6565,66<回车>。则输出结果是
选项:
A:6,5,A,B
B:6,5,65,66
C:6,5,6,5
D:6,5,6,6
答案: 【6,5,A,B

6、 问题:给出程序的运行结果,程序运行时从键盘输入:54321<回车>#include <stdio.h>
int main()
{  
    int a,b,s;
    scanf("%2d%2d",&a,&b);
    s=a/b;
    printf("s=%d",s);
    return 0;
}
选项:
A:1
B:1.6875
C:2
D:0
答案: 【1

7、 问题:在调用printf函数输出数据时,当数据的实际位宽小于printf函数中的指定位宽时,下面叙述正确的是
选项:
A:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。
B:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补空格;如果格式字符前面有负号,那么输出的数据将会右对齐、左补空格。
C:如果格式字符前面没有负号,那么输出的数据将会右对齐、左补0;如果格式字符前面有负号,那么输出的数据将会左对齐、右补0。
D:如果格式字符前面没有负号,那么输出的数据将会左对齐、右补0;如果格式字符前面有负号,那么输出的数据将会右对齐、左补0。
答案: 【如果格式字符前面没有负号,那么输出的数据将会右对齐、左补空格;如果格式字符前面有负号,那么输出的数据将会左对齐、右补空格。

8、 问题:程序运行后的输出结果是#include <stdio.h>
int main()

    int a=666,b=888;
    printf("%d",a,b);
    return 0;
}
选项:
A:666
B:错误信息 
C:888
D:666,888
答案: 【666

9、 问题:在C语言中,字符型数据在内存中以(  )形式存放
选项:
A:ASCII码
B:国标码
C:BCD码
D:反码
答案: 【ASCII码

10、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a; 
    int c=10;
    float f=100.0; 
    double x;
    a=f/=c*=(x=6.5);
    printf("%d,%d,%3.1f,%3.1f",a,c,f,x);
    return 0;
}
选项:
A:1,65,1.5,6.5
B:1,65,1,6.5
C:1,65,1.0,6.5
D: 2,65,1.5,6.5
答案: 【1,65,1.5,6.5

11、 问题:以下程序的输出结果是#include <stdio.h>
int main()
{
    int a=1234;
    printf("%2d",a);
    return 0;
}
选项:
A:1234
B:12
C:34
D:提示出错、无结果
答案: 【1234

12、 问题:设有语句“char c=’\72′;”,则变量c
选项:
A:包含1个字符
B:包含2个字符
C:包含3个字符
D:不合法
答案: 【包含1个字符

13、 问题:有以下语句段#include <stdio.h>
int main()
{
    int n1=10,n2=20;
    printf("___",n1,n2);
    return 0;
}要求按以下格式输出n1和n2的值,每个输出行都是从第一列开始,则空白处代码填写正确的是运行结果示例如下:n1=10n2=20
选项:
A:n1=%dn2=%d
B:n1=%dn2=%d
C:n1=%d,n2=%d
D:n1=%d n2=%d
答案: 【n1=%dn2=%d

14、 问题:给出程序的运行结果,程序运行时从键盘输入:45-12<回车>#include <stdio.h>
int main()
{  
    int a,b,sum;
    scanf("%d%*c%d",&a,&b);
    sum=a+b;
    printf("sum=%d",sum);
    return 0;
}
选项:
A:57
B:输出报错
C:33
D:输出一个随机数
答案: 【57

15、 问题:给出程序的运行结果#include <stdio.h>
int main()
{  
    int a,b,s;
    char op;
    scanf("%d %c%d",&a,&op,&b);
    s=a%b;
    printf("s=%d",s);
    return 0;
}程序运行时从键盘输入:15<回车>%5<回车>
选项:
A:0
B:程序报错
C:输出一个随机数
D:3
答案: 【0

16、 问题:分析下列程序,写出程序运行结果#include <stdio.h>
int main()

    char c1 = ‘a’, c2 = ‘b’, c3 = ‘c’;
    printf("a%cb%cc%cabc", c1, c2, c3);
    return 0;
}
选项:
A:aabbccabc
B:acbcabc
C:aabcabc
D:acbbcabc
答案: 【aabbccabc

17、 问题:以下程序的输出结果为#include <stdio.h>
int main()
{
      int a=2, c=5;
      printf("a = %%d, b = %%d", a, c);
      return 0;
}
选项:
A:a = %d, b = %d
B:a = %2, b = %5
C:a = 2, b = 5
D:a = %%d, b = %%d
答案: 【a = %d, b = %d

18、 问题:有以下程序,运行时若输入为B,则输出是#include <stdio.h>
int main()
 { 
     char ch;
     ch=getchar();
     ch=ch+32;
     printf("%c",ch);
     return 0;
}
选项:
A:b
B:98
C:32
D:66
答案: 【b

19、 问题:在下列语句中存在错误的是
选项:
A:int a,b;scanf("%d %f",&a,&b);
B:int a,b;scanf("%d %d",a,b);
C:int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);
D:float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);
E:float a,b;scanf("%f %f",&a,&b);printf("%f %f",a,b);
F:float a,b;scanf("%f %f",&a,&b);printf("a=%4.3f,b=%4.3f",a,b);
G:int a,b;scanf("%2d%2d",&a,&b);printf("a=%d,b=%d",a,b);
H:int a,b;scanf("%d,%d",&a,&b);printf("a=%2d,b=%2d",a,b);
I:int a,b;scanf("a=%d,b=%d",&a,&b);printf("a=%d,b=%d",a,b);
答案: 【int a,b;scanf("%d %f",&a,&b);;
int a,b;scanf("%d %d",a,b);;
int a,b;scanf("%d%d",&a,&b);printf("%d %d",a,b);;
float a,b;scanf("%3.2f %4.2f",&a,&b);printf("%f %f",a,b);

20、 问题:写出下面程序的输出结果#include<stdio.h>
int main()
  {
     int x=6,y,z;
     x*=18+1;
     printf("%d,",x–);
     x+=y=z=11;
     printf("%d",x);
     return 0;
}
选项:
A:114,124
B:113,124
C:109,116
D:110,116
答案: 【114,124

21、 问题:给出程序的运行结果#include <stdio.h>
int main()
{
  int a,b,c,d;
  char op1,op2,op3;
  int sum;
  printf("please input:a+b+c+d");
  scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d);
  sum=a+b+c+d;
  printf("sum=%d",sum);
  return 0;
}程序运行时从键盘输入:1<回车>2+3+1<回车>
选项:
A:7
B:1
C:3
D:6
答案: 【7

22、 问题:以下程序的执行结果是#include  <stdio.h> 
int main() 

   int  a = 5, b = 4, x, y; 
   x = 2  a++;
   y = –b 
 2; 
   printf("a=%d, x=%d", a, x); 
   printf("b=%d, y=%d", b, y); 
   return 0;
}
选项:
A:a=6,  x=10b=3,  y=6
B:a=6,  x=10b=3,  y=8
C:a=6,  x=12b=3,  y=6
D:以上均不对
答案: 【a=6,  x=10b=3,  y=6

【作业】第3周——从键盘中来,到键盘中去,开始输入和输出啦 第3周编程题在线测试

1、 问题:学分绩计算
建议:【本题是主观题,暂无解析

2、 问题:一尺之捶,日取其半
建议:【本题是主观题,暂无解析

3、 问题:网购打折商品V1.0
建议:【本题是主观题,暂无解析

4、 问题:计算时间差V1.0
建议:【本题是主观题,暂无解析

第4周——无处不在的抉择 第4周测验

1、 问题:程序代码如下:#include <stdio.h>
int main()
{
  int a,b;
  printf("please input a and b:");
  scanf("%d%d",&a,&b);
  printf("the output data is %d",a<b?b:a);
  return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A:the output data is 7
B:the output data is 2
C:the output data is 1
D:the output data is 0
答案: 【the output data is 7

2、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()
{ int a,b,c;
  a=10;
  b=20;
  c=(a%b<1)||(a/b>1);
  printf("%d,%d,%d",a%b,a/b,c);
  return 0;
}
选项:
A:10,0,0
B:10,1,0
C:10,0,1
D:10,1,1
答案: 【10,0,0

3、 问题:从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。#include <stdio.h>

include  <math.h>

int main()
{
    float  a, b, c;             
    float  s, area;                
    printf("Input a,b,c:");
    scanf("%f,%f,%f",&a,&b,&c);
    if (a+b>c && b+c>a && a+c>b)  
    {
       s = 1/2  (a + b + c); 
       area = sqrt(s 
 (s – a)  (s – b)  (s – c));
       printf("area=%.2f", area); 
    }
    else
    {
       printf("It is not a triangle");    
    }
    return 0; 
}
选项:
A:第11行:   s = 1/2 * (a + b + c); 
B:第9行:   if (a+b>c && b+c>a && a+c>b)  
C:第12行:   area = sqrt(s * (s – a) * (s – b) * (s – c));
D:第8行:  scanf("%f,%f,%f",&a,&b,&c);
答案: 【第11行:   s = 1/2 * (a + b + c); 

4、 问题:编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:        操作数1    运算符op    操作数2然后,计算并输出表达式的值指定的运算符为:    加(+)    减(-)    乘()    除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
         float    data1, data2;            
         char   op;
         printf("Please enter the expression:");
         scanf("%f  %c%f", &data1, &op, &data2); /
 %c前有一个空格 
         switch (op) 
         {
                   case ‘+’:
                            printf("%f + %f = %f", data1, data2, data1 + data2); 
                            break;
                   case ‘-‘:
                            printf("%f – %f = %f", data1, data2, data1 – data2);
                            break;
                   case ‘
‘:
                            printf("%f  %f = %f", data1, data2, data1  data2); 
                            break;
                   case ‘/’:
                            printf("%f/%f = %f", data1, data2,data1/data2); 
                            break;
                   default: 
                            printf("Invalid operator!");
         }
        return 0;
}
选项:
A:第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6
B:default分支缺少break语句
C:没有错误
D:第20行语句有错误,改成:if (data2=0) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);
答案: 【第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6

5、 问题:若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A:(x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C:x-y>-10 && x-y<10
D:(x-y)*(x-y)<100
答案: 【(x-y)<-10||!(y-x)>10

6、 问题:下列复合语句中,不能实现两数交换的是
选项:
A:{
  a=b;
  b=a;
}
B:{
    b = a * b;
    a = b / a;
    b = b / a; 
}
C:{
   t=a;
   a=b;
   b=t;
}
D:{
    a = a + b;
    b = a – b;
    a = a – b; 
}
答案: 【{
  a=b;
  b=a;
}

7、 问题:写出下面程序的输出结果#include <stdio.h>
int main()

   int x=1, y=0, a=0, b=0;
   switch(x)
   {  
       case 1:
              switch(y)
              {
                case 0: a++; 
                case 1: b++;
              }
      case 2:  a++;
               b++;
   }
   printf("a=%d, b=%d", a, b) ;
   return 0;
}
选项:
A:a=2, b=2
B:a=2, b=1
C:a=1, b=1
D:a=1, b=0
答案: 【a=2, b=2

8、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=5,b=4,c=3,d;
   d=(a>b>c);
   printf("%d",d);
   return 0;
}
选项:
A:0
B:1
C:5
D:4
E:3
答案: 【0

9、 问题:执行以下程序后的输出结果为#include <stdio.h>
int main()
{
   int a=1,b=0;
   switch (a)
   {  
     case  1:
            switch (b)
            {   
               case  0: printf("0");break;
               case  1: printf("1");break;
            }
    case  2: printf("2");break;
   }
  return 0;
}
选项:
A:0*2*
B:
0

C:0*1*2
D:有语法错误
答案: 【02

10、 问题:下面程序运行后的输出结果是#include <stdio.h> 
int main()
{
    int a=3,b=4,c=5,d=2;
    if(a>b)
    { 
         if(b>c)
         { 
             printf("%d",d++ +1);
         }
         else
         { 
             printf("%d",++d +1);
         }
   }
   printf("%d",d);
   return 0;
}
选项:
A:2
B:3
C:43
D:44
答案: 【2

11、 问题:下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
    int m;
    printf("Input m: ");
    scanf("%d", &m);        //输入一个整数
    if (m > 0)              //是否为正数
    {
        if (m % 2 == 0)     //是正数,且能被2整除,则是正偶数
        {
            printf("%d is a positive even", m);
        }
        else                    //不能被2整除,则是正奇数
        {
            printf("%d is a positive odd", m);
        }
    }

    
   __          //判断是否为负数
    
    {
        __

        
        {
             printf("%d is a negative even", m);   //是负偶数
        }
        else
        {
             printf("%d is a negative odd", m);    //是负奇数
        }
    }
    else
    {
        printf("%d is zero.It is an even", m);    
    }
   return 0;
}
选项:
A:第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B:第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C:第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D:第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)

12、 问题:程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h> 
int main() 
{  
  char c;   
  printf("Please input a character:");  
  scanf("%c",&c); 
  if(c >=’A’&&c <= ‘Z’)   
    c =___;  
  printf("%c",c); 
  return 0;  
}
选项:
A:c+32 
B:c+48
C:C+65
D:C+97
答案: 【c+32 

13、 问题:执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()

  int k;
  scanf("%d",&k);
  switch(k)
  { 
     case 1:   printf("%d",k++);
     case 2:   printf("%d",k++);
     case 3:   printf("%d",k++);
               break;
     default:  printf("Full!");
  } 
  return 0;
}
选项:
A:123
B:1
C:2
D:3
答案: 【123

14、 问题:编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。 程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。 #include <stdio.h>

include <math.h>

int main()
{
    int x;
    double y;
    printf("Input x: ");
    scanf("%d", &x);        // 输入一个整数
    if (x > 0)
    {
        y = exp(-x);        //如果大于0,计算y=exp(-x)的值 
    }
    _______
    {
        y = 1;              //x=0,则y=1
    }
    else
    {
        y = -exp(x);        //x<0,则y=-exp(x)
    }
    printf("y=%f", y);
    return 0;
}
选项:
A:else if (x == 0)
B:else if (x = 0)
C:if (x == 0)
D:if (x = 0)
答案: 【else if (x == 0)

15、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=1,b=2,m=0,n=0,k;
   k=(n=b>a)||(m=a<b);
   printf("%d,%d",k,m);
   return 0;
}
选项:
A:1,0
B:0,0
C:0,1
D:1,1
答案: 【1,0

16、 问题:以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。 #include  <stdio.h>

include  <stdlib.h>

include  <math.h>

define   EPS 1e-6

int main()

      float  a, b, c, disc, p, q;
      printf("Please enter the coefficients a,b,c:"); 
      scanf("%f,%f,%f", &a, &b, &c); 
      _________      / a=0时,输出"不是二次方程" /

     {
               printf("It is not a quadratic equation!");
               exit(0);  / C标准库函数,用于终止整个程序的执行,强制返回操作系统 /
     }
      disc = b  b – 4  a  c; / 计算判别式 /
      p = – b / (2 
 a);
      q = sqrt(fabs(disc)) / (2  a);
      if (fabs(disc) <= EPS)    /
 判别式等于0时,输出两相等实根 /
      {
                   printf("x1 = x2 = %.2f", p);
      }
     else                      
     { 
                 if (disc > EPS)        /
 判别式大于0时,输出两不等实根 /
                 {
                            printf("x1 = %.2f, x2 = %.2f", p+q, p-q);
                 }
                 else                     /
 判别式小于0时,输出两共轭复根 */
                 {
                            printf("x1 = %.2f+%.2fi, ", p, q);
                            printf("x2 = %.2f-%.2fi", p, q);
                 }
      }
     return 0;
}
选项:
A:if (fabs(a) <= EPS)
B:if (a <= EPS)       
C:if (a=0)     
D:if (a<= EPS || a>=-EPS)
答案: 【if (fabs(a) <= EPS)

17、 问题:下列说法错误的是()。
选项:
A:case后的“常量表达式”的类型只能是整型。
B:若case后面的语句省略不写,则表示它什么也不做。
C:switch语句中的break和default可有可无。
D:每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E:程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F:若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G:每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H:case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。

第4周——无处不在的抉择 练兵区——单选题——不计入总分

1、 问题:下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。#include <stdio.h>
int main()
{
    int m;
    printf("Input m: ");
    scanf("%d", &m);        //输入一个整数
    if (m > 0)              //是否为正数
    {
        if (m % 2 == 0)     //是正数,且能被2整除,则是正偶数
        {
            printf("%d is a positive even", m);
        }
        else                    //不能被2整除,则是正奇数
        {
            printf("%d is a positive odd", m);
        }
    }
    
    __          //判断是否为负数
    
    {
        __

        
        {
             printf("%d is a negative even", m);   //是负偶数
        }
        else
        {
             printf("%d is a negative odd", m);    //是负奇数
        }
    }
    else
    {
        printf("%d is zero.It is an even", m);    
    }
   return 0;
}
选项:
A:第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)
B:第19行代码: if(m < 0)第22行代码: if (m % 2 == 0)
C:第19行代码: else if(m < 0)第22行代码: if (m % 2 != 0)
D:第19行代码: if(m < 0)第22行代码: if (m % 2 != 0)
答案: 【第19行代码: else if(m < 0)第22行代码: if (m % 2 == 0)

2、 问题:执行以下程序后的输出结果为#include <stdio.h>
int main()
{
   int a=1,b=0;
   switch (a)
   {  
     case  1:
            switch (b)
            {   
               case  0: printf("0");break;
               case  1: printf("1");break;
            }
    case  2: printf("2");break;
   }
  return 0;
}
选项:
A:0*2*
B:
0

C:0*1*2
D:有语法错误
答案: 【02

3、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=1,b=2,m=0,n=0,k;
   k=(n=b>a)||(m=a<b);
   printf("%d,%d",k,m);
   return 0;
}
选项:
A:1,0
B:0,0
C:0,1
D:1,1
答案: 【1,0

4、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

    int a,b,c;
    a=10;
    b=20;
    c=(a%b<1)||(a/b>1);
    printf("%d,%d,%d",a%b,a/b,c);
    return 0;
}
选项:
A:10,0,0
B:10,1,0
C:10,0,1
D:10,1,1
答案: 【10,0,0

5、 问题:编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:        操作数1    运算符op    操作数2然后,计算并输出表达式的值指定的运算符为:    加(+)    减(-)    乘()    除(/)代码如下,所给程序是否存在错误,若有,找出错误所在并改正。#include <stdio.h>
int main()
{
         float    data1, data2;            
         char   op;
         printf("Please enter the expression:");
         scanf("%f  %c%f", &data1, &op, &data2); /
 %c前有一个空格 
         switch (op) 
         {
                   case ‘+’:
                            printf("%f + %f = %f", data1, data2, data1 + data2); 
                            break;
                   case ‘-‘:
                            printf("%f – %f = %f", data1, data2, data1 – data2);
                            break;
                   case ‘
‘:
                            printf("%f  %f = %f", data1, data2, data1  data2); 
                            break;
                   case ‘/’:
                            printf("%f/%f = %f", data1, data2,data1/data2); 
                            break;
                   default: 
                            printf("Invalid operator!");
         }
        return 0;
}
选项:
A:第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6
B:default分支缺少break语句
C:没有错误
D:第20行语句有错误,改成:if (data2=0) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);
答案: 【第20行语句有错误,改成:if (fabs(data2)<=EPS) printf("Division by zero!");else  printf("%f/%f = %f", data1, data2, data1/data2);同时,第1行语句下方应加入#include  <math.h>#define   EPS 1e-6

6、 问题:下列复合语句中,不能实现两数交换的是
选项:
A:{
  a=b;
  b=a;
}
B:{
    b = a * b;
    a = b / a;
    b = b / a; 
}
C:{
   t=a;
   a=b;
   b=t;
}
D:{
    a = a + b;
    b = a – b;
    a = a – b; 
}
答案: 【{
  a=b;
  b=a;
}

7、 问题:写出下面程序的输出结果#include <stdio.h>
int main()

   int x=1, y=0, a=0, b=0;
   switch(x)
   {  
       case 1:
              switch(y)
              {
                case 0: a++; 
                case 1: b++;
              }
      case 2:  a++;
               b++;
   }
   printf("a=%d, b=%d", a, b) ;
   return 0;
}
选项:
A:a=2, b=2
B:a=2, b=1
C:a=1, b=1
D:a=1, b=0
答案: 【a=2, b=2

8、 问题:执行下列程序,k输入为1时的输出结果是#include <stdio.h>
int main()

  int k;
  scanf("%d",&k);
  switch(k)
  { 
     case 1:   printf("%d",k++);
     case 2:   printf("%d",k++);
     case 3:   printf("%d",k++);
               break;
     default:  printf("Full!");
  } 
  return 0;
}
选项:
A:123
B:1
C:2
D:3
答案: 【123

9、 问题:编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。#include <stdio.h>

include <math.h>

int main()
{
    int x;
    double y;
    printf("Input x: ");
    scanf("%d", &x);        // 输入一个整数
    if (x > 0)
    {
        y = exp(-x);        //如果大于0,计算y=exp(-x)的值 
    }
    _______
    {
        y = 1;              //x=0,则y=1
    }
    else
    {
        y = -exp(x);        //x<0,则y=-exp(x)
    }
    printf("y=%f", y);
    return 0;
}
选项:
A:else if (x == 0)
B:else if (x = 0)
C:if (x == 0)
D:if (x = 0)
答案: 【else if (x == 0)

10、 问题:以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。#include  <stdio.h>

include  <stdlib.h>

include  <math.h>

define   EPS 1e-6

int main()

      float  a, b, c, disc, p, q;
      printf("Please enter the coefficients a,b,c:"); 
      scanf("%f,%f,%f", &a, &b, &c); 
      _________      / a=0时,输出"不是二次方程" /
    
     {
               printf("It is not a quadratic equation!");
               exit(0);  / C标准库函数,用于终止整个程序的执行,强制返回操作系统 /
     }
      disc = b  b – 4  a  c; / 计算判别式 /
      p = – b / (2 
 a);
      q = sqrt(fabs(disc)) / (2  a);
      if (fabs(disc) <= EPS)    /
 判别式等于0时,输出两相等实根 /
      {
                   printf("x1 = x2 = %.2f", p);
      }
     else                      
     { 
                 if (disc > EPS)        /
 判别式大于0时,输出两不等实根 /
                 {
                            printf("x1 = %.2f, x2 = %.2f", p+q, p-q);
                 }
                 else                     /
 判别式小于0时,输出两共轭复根 */
                 {
                            printf("x1 = %.2f+%.2fi, ", p, q);
                            printf("x2 = %.2f-%.2fi", p, q);
                 }
      }
     return 0;
}
选项:
A:if (fabs(a) <= EPS)
B:if (a <= EPS)
C:if (a=0)
D:if (a<= EPS || a>=-EPS)
答案: 【if (fabs(a) <= EPS)

11、 问题:从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。#include <stdio.h>

include  <math.h>

int main()
{
    float  a, b, c;             
    float  s, area;                
    printf("Input a,b,c:");
    scanf("%f,%f,%f",&a,&b,&c);
    if (a+b>c && b+c>a && a+c>b)  
   {
       s = 1/2  (a + b + c); 
       area = sqrt(s 
 (s – a)  (s – b)  (s – c));
       printf("area=%.2f", area); 
    }
    else
    {
       printf("It is not a triangle");    
    }
    return 0; 
}
选项:
A:第11行:   s = 1/2 * (a + b + c); 
B:第9行:   if (a+b>c && b+c>a && a+c>b)  
C:第12行:   area = sqrt(s * (s – a) * (s – b) * (s – c));
D:第8行:  scanf("%f,%f,%f",&a,&b,&c);
答案: 【第11行:   s = 1/2 * (a + b + c); 

12、 问题:若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
选项:
A:(x-y)<-10||!(y-x)>10
B: fabs(x-y)<10
C:x-y>-10 && x-y<10
D:(x-y)*(x-y)<100
答案: 【(x-y)<-10||!(y-x)>10

13、 问题:程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include<stdio.h> 
int main() 
{  
  char c;   
  printf("Please input a character:");  
  scanf("%c",&c); 
  if(c >=’A’&&c <= ‘Z’)   
    c =___;  
  printf("%c",c); 
  return 0;  
}
选项:
A:c+32
B:c+48
C:c+65
D:c+97
答案: 【c+32

14、 问题:程序代码如下:#include <stdio.h>
int main()
{
  int a,b;
  printf("please input a and b:");
  scanf("%d%d",&a,&b);
  printf("the output data is %d",a<b?b:a);
  return 0;
}从键盘输入以下数据:2<回车>7<回车>则程序输出为
选项:
A:the output data is 7
B:the output data is 2
C:the output data is 1
D:the output data is 0
答案: 【the output data is 7

15、 问题:以下程序运行后的输出结果是#include <stdio.h>
int main()

   int a=5,b=4,c=3,d;
   d=(a>b>c);
   printf("%d",d);
   return 0;
}
选项:
A:0
B:1
C:5
D:4
E:3
答案: 【0

16、 问题:下面程序运行后的输出结果是#include <stdio.h> 
int main()
{
    int a=3,b=4,c=5,d=2;
    if(a>b)
    { 
         if(b>c)
         { 
             printf("%d",d++ +1);
         }
         else
         { 
             printf("%d",++d +1);
         }
   }
   printf("%d",d);
   return 0;
}
选项:
A:2
B:3
C:43
D:44
答案: 【2

17、 问题:下列说法错误的是()。
选项:
A:case后的“常量表达式”的类型只能是整型。
B:若case后面的语句省略不写,则表示它什么也不做。
C:switch语句中的break和default可有可无。
D:每个case后的“常量表达式”的类型应该与switch后括号内表达式的类型一致。
E:程序执行到switch语句时,先计算表达式的值,然后自上而下寻找与该值匹配的case常量,找到后则按顺序执行此case后的所有语句,而不再进行判断,直到遇break语句或右花括号}为止。
F:若所有的case常量都不能与表达式的值相匹配,那么就执行default后面的语句。通常用于处理不在合理区间内的非法数据。
G:每个case后的常量只起语句标号的作用,所以case常量的值必须互不相同,而且在每个case的语句序列后都有break的情况下,改变case常量出现的次序,不影响程序的运行结果。
H:case后面的表达式不能是含有变量的关系表达式和逻辑表达式,它不能像if语句那样起到判断表达式真假的作用。
答案: 【case后的“常量表达式”的类型只能是整型。;
若case后面的语句省略不写,则表示它什么也不做。;
switch语句中的break和default可有可无。

【作业】第4周——无处不在的抉择 练兵区——编程题——不计入总分

1、 问题:检测用户错误输入
建议:【本题是主观题,暂无解析

2、 问题:闰年判断
建议:【本题是主观题,暂无解析

3、 问题:程序改错v1.0
建议:【本题是主观题,暂无解析

4、 问题:字符类型判断
建议:【本题是主观题,暂无解析

5、 问题:快递费用计算
建议:【本题是主观题,暂无解析

6、 问题:数位拆分v2.0
建议:【本题是主观题,暂无解析

7、 问题:出租车计价
建议:【本题是主观题,暂无解析

8、 问题:数据区间判断
建议:【本题是主观题,暂无解析

9、 问题:计算一元二次方程的根v2.0
建议:【本题是主观题,暂无解析

【作业】第3周——从键盘中来,到键盘中去,开始输入和输出啦 练兵区——编程题——不计入总分

1、 问题:日期显示
建议:【本题是主观题,暂无解析

2、 问题:产品信息格式化
建议:【本题是主观题,暂无解析

3、 问题:计算两个数的平方和
建议:【本题是主观题,暂无解析

4、 问题:逆序数的拆分计算
建议:【本题是主观题,暂无解析

5、 问题:拆分英文名
建议:【本题是主观题,暂无解析

6、 问题:计算体指数
建议:【本题是主观题,暂无解析

【作业】第4周——无处不在的抉择 第4周编程题在线测试

1、 问题:分数比较
建议:【本题是主观题,暂无解析

2、 问题:存款利率计算器v2.0
建议:【本题是主观题,暂无解析

3、 问题:存款利率计算器v3.0
建议:【本题是主观题,暂无解析

4、 问题:博弈论之Best Response
建议:【本题是主观题,暂无解析

第10周——字符串:C语言世界中的大力水手 第10周测验

1、 问题:下面程序的功能是从键盘输入一个字符串,编程将其字符顺序颠倒后重新存放,并输出这个字符串。程序的运行结果如下:Input a string:abcdef↙The inversed string is:fedcba按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

void Inverse(char *pStr);
int main()
{
    char  str[80];
    printf("Input a string:");
    gets(str);//输入字符串
    Inverse(str);//将存于str数组中的字符串逆序存放
    printf("The inversed string is:");
    puts(str);//输出字符串
    return 0;
}

void Inverse(char pStr)
{
    int  len = 0;
    char temp;
    char 
pStart = pStr;//指针变量pStart指向字符串的第一个字符
    char pEnd;//指针变量pEnd指向字符串的最后一个字符
    for (; 
pStart!=’\0′; ___)    //求出字符串长度
        {
            len++;
        }
    for (pStart=pStr,__; pStart<pEnd; pStart++,pEnd–)
    {
        temp = 
__;
        
__;
        
        pEnd = temp;
    }
}
选项:
A:第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  
pStart第28行:  pStart = pEnd
B:第21行:  pStart++第25行:  pEnd=pStr+len第27行:  pStart第28行:  pStart = pEnd
C:第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  pStart第28行:  pStart = pEnd
D:第21行:  pStart++第25行:  pEnd=pStr+len第27行:  pStart第28行:  pStart = pEnd
答案: 【第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  
pStart第28行:  pStart = pEnd】

2、 问题:Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符。例如,输入为:abcdef↙c↙输出为:abdef按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

void Squeeze(char s, char c);
int main()
{
    char  a[80], c, 
s;
    s = a;
    gets(a);
    scanf("%c",&c);
    Squeeze(s, c);
    printf("%s", s);
    return 0;
    }
    
 void  Squeeze(char s, char c)
    {
        int i, j;
        for (i = j = 0; s[i] != ‘\0’; i++)
            {
                if (_)
                {
                    
_;
                    j++;
                }
            }
        _______; /
 在字符串t2的末尾添加字符串结束标志 */
     }
选项:
A:第20行: s[i] != c第22行: s[j] = s[i]第26行: s[j] = ‘\0’
B:第20行: s[i] == c第22行: s[j] = s[i]第26行: s[i] = ‘\0’
C:第20行: s[j] != c第22行: s[i] = s[j]第26行: s[j] = ‘\0’
D:第20行: s[j] == c第22行: s[j] = s[i]第26行: s[i] = ‘\0’
答案: 【第20行: s[i] != c第22行: s[j] = s[i]第26行: s[j] = ‘\0’

3、 问题:以下程序中函数FindMinString的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。例如,若运行时依次输入三个字符串:123↙1223↙124↙输出结果为1223按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

char *FindMinString( ___ )
{
    if(
_____)
        return(s1);
    else
        return(s2);
}

int main()
{
    int i; 
    char string[20], str[3][20];
    for(i=0;i<3;i++) 
    {
        gets(str[i]);
    }
    strcpy(string,FindMinString(str[0],str[1])); /对字符串进行复制/
    strcpy(string,_______);
    printf("%s",string);
    return 0;
}
选项:
A:第3行: char s1, char s2第5行: strcmp(s1,s2)<0第20行: FindMinString(string,str[2])
B:第3行: char s1, char s2第5行: s1<s2第20行: FindMinString(string,str[2])
C:第3行: char s1, char s2第5行: strcmp(s1,s2)>0第20行: FindMinString(str[0],str[2])
D:第3行: char s1, char s2第5行: s1>s2第20行: strcmp(str[1],str[2])
答案: 【第3行: char s1, char s2第5行: strcmp(s1,s2)<0第20行: FindMinString(string,str[2])

4、 问题:子函数Move的功能是将某字符串中的第i个字符向左移动1位,覆盖第i-1个字符。下面程序通过多次调用Move函数,将字符数组b中存放的字符串依次左移3位,并在移动后的字符串末尾添上字符0补足。程序的运行结果为:234567890034567890004567890000按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void Move( ___,int i)
{
    a[i-1]=a[i];
}

int main( )
{   
    char b[11]={"1234567890"};
    int i,j;
    for (j=0;j<=2;j++)
    {
      for(i=1;b[i]!=’\0′;i++)
        {
            _;
            printf("%c",b[i-1]);
        }
      
__;
      printf("%c",
______);
    }
    return 0;
}
选项:
A:第2行:  char a第15行: Move(b,i)第18行: b[i-1]=’0’第19行: b[i-1]
B:第2行:  char a第15行: Move(b,i)第18行: b[i-1]=’\0’第19行: b[i-1]
C:第2行:  char
a第15行: Move(b,i)第18行: b[i]=’0’第19行: b[i]
D:第2行:  char a第15行: Move(i,b)第18行: b[i]=’\0’第19行: b[i]
答案: 【第2行:  char *a第15行: Move(b,i)第18行: b[i-1]=’0’第19行: b[i-1]

5、 问题:下面能正确进行字符串赋值操作的是
选项:
A:char s=“ABCDE”; 
B:char s[5]={“ABCDE”}; 
C:char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; 
D:char
s,scanf(“%s”,s); 
答案: 【char *s=“ABCDE”; 

6、 问题:下列对字符串的定义中,错误的是
选项:
A:char  str[7] = "FORTRAN";
B:char  str[] = "FORTRAN";
C:char  *str = "FORTRAN";
D:char  str[] = {‘F’,’O’,’R’,’T’,’R’,’A’,’N’,0};
答案: 【char  str[7] = "FORTRAN";

7、 问题:已知:int *p(); 则p是
选项:
A:一个函数,该函数的返回值是指向int型的指针变量
B:指向int型的指针变量
C:int型的指针数组
D:一个指向函数的指针变量,该函数的返回值是int型
答案: 【一个函数,该函数的返回值是指向int型的指针变量

8、 问题:下面函数Fun的功能是#include <stdio.h>

include <string.h>

int Fun(char ps)
{
    char 
p;
    p=ps;
    while(*p++);
    return (p-ps);
}

int main()
{
    char  *s;
    int a1,a2;
    s = "hello";
    a1=Fun(s);
    a2=strlen(s);
    printf("%d,%d", a1,a2);
    return 0;
    }
选项:
A:以上三种说法都不对
B:比较两个字符串的大小
C:求字符串的长度
D:将串ps复制到串s中
答案: 【求字符串的长度

9、 问题:下面函数Fun的功能是void Fun(char s1, char s2){    while(s2++=s1++);}
选项:
A:串复制
B:求串长
C:串比较
D:串反向
答案: 【串复制

10、 问题:给出以下定义,则正确的叙述是char  x[ ]= “abcedfg”;char  y[ ]={ ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’’, ‘g’ };
选项:
A:数组x 的长度大于数组y的长度
B:数组x 和数组y 等价
C:数组x 和数组y 的长度相同
D:数组x 的长度小于数组y的长度
答案: 【数组x 的长度大于数组y的长度

11、 问题:执行以下代码段后,输出的字符串是#include <stdio.h>

include <string.h>

int main()
{
   char s1[10],*s2="ab\0cdef";
   strcpy(s1,s2);
   puts(s1);
   …….
   return 0;
}
选项:
A:ab
B:cdef
C:ab\0cdef
D:内容不确定
答案: 【ab

12、 问题:下面程序的功能是将字符数组中存放的字符串以多种书写形式输出,如“Program”,“PROGRAM”,以及逆序输出的字符串“margorp”等,程序的运行结果为:ProgramPROGRAMmargorp按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

int main(void)
{
    int  i = 0;
    char  b[] = "program";
    char  a = "PROGRAM";
    printf("_", a, b + 1);  / 输出Program */
    while (
___)    /
 输出PROGRAM /
    {   
        __;
        i++;
    }
    printf("");
    while (
__)                /
 输出margorp /
    {
        putchar (__);
    }
    
_;
    return 0;
}
选项:
A:第8行:  %c%s第9行:  
(a+i)!=’\0’第11行: putchar((a + i))第15行: –i第17行: (b + i)第19行: putchar ((b + i))
B:第8行:  %s%s第9行:  (
a+i)!=’\0’第11行: putchar(a + i))第15行: i–第17行: (b + i)第19行: putchar ((b + i))
C:第8行:  %c%s第9行:  
(a+i)==’\0’第11行:  putchar((a + i)) 第15行: –i第17行: b + i第19行: putchar (b + i))
D:第8行:  %s%s第9行:  (
a+i)==’\0’第11行:  putchar(a + i))第15行: i–第17行: b + i第19行: putchar (b + i)
答案: 【第8行:  %c%s第9行:  
(a+i)!=’\0’第11行: putchar((a + i))第15行: –i第17行: (b + i)第19行: putchar (*(b + i))】

13、 问题:下面程序的功能是用字符指针变量作函数参数编程实现字符串连接函数strcat()的功能,将字符串srcStr连接到字符串dstStr的尾部。程序的运行结果如下:Please enter the source string:abcd↙Please enter the other string:efgh↙The concat is:abcdefgh按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void  MyStrcat(char dstStr, char srcStr);
int main()
{
    char  s[80];  //源字符串
    char  t[80];  //待连接字符串
    printf("Please enter the source string: ");
    gets(s);
    printf("Please enter the other string: ");
    gets(t);  //输入字符串
    MyStrcat(s, t);  //将字符数组t中的字符串连到s的尾部
    printf("The concat is:");
    puts(s);  //输出连接后的字符串s
    return 0;
}

void  MyStrcat(char dstStr, char srcStr)   //用字符指针作为函数参数
{
    while (_)
    {
        dstStr++;
    }
    while (*srcStr != ‘\0’)  //若srcStr所指字符不是字符串结束标志
    { 
        
__; //将srcStr所指字符复制到dstStr所指的存储单元中
        srcStr++;  //使srcStr指向下一个字符
        dstStr++; //使dstStr指向下一个存储单元
    }
     
_____; //在字符串dstStr的末尾添加一个字符串结束标志
}
选项:
A:第19行: dstStr != ‘\0’第25行: dstStr = * srcStr第29行: dstStr = ‘\0’
B:第19行: dstStr != ‘\0’第25行: dstStr =  srcStr第29行: 
dstStr = ‘\0’
C:第19行: dstStr == ‘\0’第25行: dstStr = * srcStr第29行: dstStr = ”
D:第19行: dstStr == ‘\0’第25行: dstStr =  srcStr第29行: 
dstStr = ”
答案: 【第19行: dstStr != ‘\0’第25行: dstStr = * srcStr第29行: *dstStr = ‘\0’

14、 问题:以下程序的功能是分别测量字符数组及数组中存放的字符串的长度,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

int main( )

    char a[]="abcdefg",b[10]="abcdefg";
    ____;  /测量字符数组a,b的长度,并输出/
    
____;  /测量字符数组a,b中存放的字符串的长度,并输出/
    return 0;
}
选项:
A:第6行: printf("%d %d",sizeof(a) ,sizeof(b))第7行: printf("%d %d",strlen(a) ,strlen(b))
B:第6行: printf("%d %d",strlen(a) ,strlen(b))第7行: printf("%d %d",sizeof(a) ,sizeof(b))
C:第6行: printf("%d %d",sizeof(a) ,sizeof(b))第7行: printf("%d %d",strlen(a) ,strlen(b))
D:第6行: printf("%d %d",sizeof(&a) ,sizeof(&b))第7行: printf("%d %d",strlen(&a) ,strlen(&b))
答案: 【第6行: printf("%d %d",sizeof(a) ,sizeof(b))第7行: printf("%d %d",strlen(a) ,strlen(b))

15、 问题:下面程序的功能是将一个字符串s2插入到字符串s1中,其起始插入位置为n。程序运行示例如下:main string:hello,world!sub string:cc site of begining:(<=12)5After instert:hellocc,world!按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

define N 100

int main()
{
    int n, i, j, k, len;
    char s1[N], s2[N], s3[2 * N];
    printf("main string:");
    gets(s1);
    printf("sub string:");
    gets(s2);
    len = strlen(s1);
    do
        {
            printf("site of begining:(<=%d)", len);
            scanf("%d", &n);
        }while (_);
        
    for (i = 0; i < n; i++)
       {
           s3[i] = s1[i];
       }
    for (j = 0; s2[j] != ‘\0’; j++)
      {
           
__;
      }
    for (_
; s1[k] != ‘\0’; k++)
     {
           ____;
     }
    s3[j + k] = ‘\0’;
    printf("After instert:%s", s3);
    return 0;
}
选项:
A:第17行:  n > len第25行:  s3[i + j] = s2[j]第27行:  k = n第29行:  s3[j + k] = s1[k]
B:第17行:  n < len第25行:  s3[i] = s2[j]第27行:  k = n第29行:  s3[j] = s1[k]
C:第17行:  n <= len第25行:  s2[j]=s3[i + j] 第27行:  k = 0第29行:  s3[j] = s1[k]
D:第17行:  n >= len第25行:  s3[j] = s2[j]第27行:  k = 0第29行:  s1[k] = s3[j + k]
答案: 【第17行:  n > len第25行:  s3[i + j] = s2[j]第27行:  k = n第29行:  s3[j + k] = s1[k]

16、 问题:下面程序的功能是从键盘输入一行字符(最长不超过80字符),用函数编程统计其中单词(以空格作为间隔符的字符串)的个数。基本思路是:当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。(下面答案中两个单引号”中间都有一个空格)样例1:Input a string:How are you↙Numbers of words = 3样例2:Input a string:  How are you↙Numbers of words = 3#include <stdio.h>
int CountWords(char str[]);
int main()
{
    char  str[81];
    int num;
    printf("Input a string:");
    gets(str);
    num=CountWords(str);
    printf("Number of words=%d", num);
    return 0;
}

int CountWords(char str[])
{
    int  i, num;
    num = (_) ? 1 : 0;
    i=1;
    while (str[i]!=’\0′)
    {
        if (
____)
        {
            num++;
        }
         
__;
    }
    return num;
}
选项:
A:第17行: str[0] != ‘ ‘第21行: str[i]!=’ ‘ && str[i-1] == ‘ ‘第25行: i++
B:第17行: str[0] == ‘ ‘第21行: str[i]!=’ ‘ || str[i-1] == ‘ ‘第25行: i++
C:第17行: str[0] != ‘\0 ‘第21行: str[i]==’ ‘ && str[i-1] == ‘ ‘第25行: i++
D:第17行: str[0] != ‘ ‘第21行: str[i]!=’ ‘ && str[i-1] != ‘ ‘第25行: num++
答案: 【第17行: str[0] != ‘ ‘第21行: str[i]!=’ ‘ && str[i-1] == ‘ ‘第25行: i++

17、 问题:下面程序的功能是实现字符串逆序存放。程序运行结果如下:Input a string:ABCDEFGHI↙Inversed results:IHGFEDCBA按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

define N 80

void Inverse(char *pStr);
int main()
{
    char a[N];
    printf("Input a string:");
    gets(a);
    Inverse(a);
    printf("Inversed results:%s", a);
    return 0;
}

/ 函数功能: 实现将字符数组中的字符串逆序存放 /
void Inverse(__)
{
    int  len;
    char temp;
    char pStart;  / 指针变量pStart指向字符串的第一个字符 /
    char 
pEnd;   / 指针变量pEnd指向字符串的最后一个字符 /
    len = strlen(pStr);  / 求出字符串长度 /
    for (pStart=pStr,
___; pStart<pEnd; pStart++,_)
    {
        temp = *pStart;
        
_____;
        
        pEnd = temp;
    }
}
选项:
A:第16行:   char
pStr第23行:   pEnd=pStr+len-1             pEnd–第26行:   pStart = pEnd
B:第16行:   char pStr第23行:   pEnd=pStr+len             pEnd–第26行:   pStart = pEnd
C:第16行:  char pStr第23行:  pEnd=pStr+len-1            pEnd++第26行:   pStart = pEnd
D:第16行:  char pStr第23行:  pEnd=pStr+len+1            pEnd++第26行:   
pStart = pEnd
答案: 【第16行:   char
pStr第23行:   pEnd=pStr+len-1             pEnd–第26行:   pStart = pEnd】

18、 问题:下面程序的功能是从键盘输入一行字符(不超过80个),统计其中的英文字符、数字字符、空格和其他字符的个数。例如,输入的一行字符为*c language.***输出为English character:  9digit character:  0space:  1other character:  11按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

define STR_LEN 80

int main()
{
    char str[STR_LEN+1];
    int  len, i, letter = 0, digit = 0, space = 0, others = 0;
    printf("Please input a  string:");
    __;
    for (i = 0; 
_; i++)
        {
            if (_____)
                letter ++;              /统计英文字符 /
            else if (
________)
                digit ++;               /统计数字字符 /
            else if (str[i] == ‘ ‘ )
                space ++;               /统计空格/
            else
                others ++;              /统计其他字符的个数/
    }
    printf("English character:  %d", letter);
    printf("digit character:  %d", digit);
    printf("space:  %d", space);
    printf("other character:  %d", others);
    return 0;
    }
选项:
A:第9行:  gets(str)第10行: str[i] != ‘\0’第12行: str[i] >= ‘a’ && str[i] <= ‘z’ || str[i] >= ‘A’ && str[i] <= ‘Z’第14行: str[i] >= ‘0’ && str[i] <= ‘9’ 
B:第9行:  scanf("%s",str)第10行: str[i] != ‘\0’第12行: ‘z’ >= str[i] >= ‘a’ || ‘A’ <= str[i] <= ‘Z’第14行: 9 >= str[i] >= 0 
C:第9行:  puts(str)第10行: str[i] != ”第12行: ‘z’ >= str[i] >= ‘a’ || ‘A’ <= str[i] <= ‘Z’第14行: str[i] >= ‘0’ && str[i] <= ‘9’ 
D:第9行:  scanf("%s",str)第10行: str[i] != ”第12行: str[i] >= ‘a’ || str[i] <= ‘z’ && str[i] >= ‘A’ || str[i] <= ‘Z’第14行: str[i] >= 0 && str[i] <= 9 
答案: 【第9行:  gets(str)第10行: str[i] != ‘\0’第12行: str[i] >= ‘a’ && str[i] <= ‘z’ || str[i] >= ‘A’ && str[i] <= ‘Z’第14行: str[i] >= ‘0’ && str[i] <= ‘9’ 

19、 问题:下面程序的功能是在字符串每个字符间插入一个空格。程序的运行结果如下:Input a string:Howareyou↙Insert results:H o w a r e y o u按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

define N 100

void Insert(char s[]);
int main()
{
     char str[N];
     printf("Input a string:");
     gets(str);
     Insert(str);
     printf("Insert results:%s", str);
     return 0;
}

void Insert(char s[])
{
    char t[N];
    int  i, j;
    __;
    for (i=0, j=0; 
_; i++, j++)
    {
        
_;
        j++;
        
______;
    }
    s[j] = ‘\0’;/ 在字符串s的末尾添加字符串结束标志 /
}
选项:
A:第19行:strcpy(t, s)第20行:t[i]!=’\0’第22行:s[j] = t[i]第24行:s[j] = ‘ ‘
B:第19行:t=s;第20行:t[i]!=’\0’第22行:s[i] = t[j]第24行:s[j] = ‘ ‘
C:第19行:strcpy(t, s)第20行:t[i]=’\0’第22行:t[j] = s[i]第24行:s[j] = ‘\0 ‘
D:第19行:strcpy(s, t)第20行:t[i]==’\0’第22行:s[j] = t[i]第24行:s[j] = ‘0 ‘
答案: 【第19行:strcpy(t, s)第20行:t[i]!=’\0’第22行:s[j] = t[i]第24行:s[j] = ‘ ‘

20、 问题:子函数Change的功能是将英文大写字母转换为小写字母,下面程序的输出结果是 abc_abc_def按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void Change(_)
{    
    int i;
    for(;
_;ch++)
    {
        if(
_)  
        
__;
    }
}

int main()
{   
     char s[]="ABC_abc_DEF";
     Change(s);
     printf("%s",s);
     return 0;
}
选项:
A:第2行:  char ch第5行:  ch!=’\0’第7行:  ch>=’A’&& ch<=’Z’第8行:  ch=ch-‘A’+’a’
B:第2行:  char ch第5行:  ch!=’\0’第7行:  ch>=’A’&& ch<=’Z’第8行:  ch=ch-‘A’+’a’
C:第2行:  char ch第5行:  ch!=’\0’第7行:  ch>=’A’&& ch<=’Z’第8行:  ch=ch-‘A’+’a’
D:第2行:  char ch[]第5行:  ch==’\0’第7行:  ch>=’A’|| ch<=’Z’第8行:  ch=ch-‘A’+’a’
答案: 【第2行:  char
ch第5行:  ch!=’\0’第7行:  ch>=’A’&& ch<=’Z’第8行:  ch=*ch-‘A’+’a’】

21、 问题:下面程序的功能是比较用户键盘输入的口令userInput与内设的口令password是否相同。若相同,则输出"Correct password! Welcome to the system…",若userInput<password,则输出"Invalid password!user input<password",否则输出"Invalid password!user input>password"。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

int main()
{
    char password[7] = "secret";     
    char userInput[81] ; 
    printf("Input Password:");
    scanf(___);
    if ( 
__ )
        printf("Correct password! Welcome to the system…");
    else if ( 
_____)
    
        printf("Invalid password!user input<password");
    else 
        printf("Invalid password!user input>password");    
    return 0;
}
选项:
A:第8行: "%s", userInput第9行: strcmp(userInput, password) == 0第11行: strcmp(userInput, password) < 0
B:第8行: "%c", userInput第9行: strcmp(userInput, password) = 0第11行: strcmp(userInput, password) < 0
C:第8行: "%s", userInput第9行: userInput==password第11行: userInput<password
D:第8行: "%c", userInput第9行: strcpy(userInput, password) == 0第11行: strcpy(userInput, password) < 0
答案: 【第8行: "%s", userInput第9行: strcmp(userInput, password) == 0第11行: strcmp(userInput, password) < 0

22、 问题:下列说法错误的是
选项:
A:字符数组的最后一个元素必须是字符’0’才能表示一个字符串。
B:char pStr = "Hello China";表示定义了一个指向字符串常量的字符指针变量。此时既可以修改pStr的值,也可以通过间接寻址的方法修改pStr指向的字符。
C:char
pStr;scanf("%s", pStr);这两条语句的作用就是将用户从键盘输入的字符串保存到字符指针变量pStr中。
D:字符串不能用关系运算符>,<,==直接比较大小,必须使用strcmp函数比较大小,当出现第一对不相等的字符时,就由这两个字符的ASCII码值的大小来决定其所在字符串的大小。
E:用双引号括起的一串字符是字符串常量,系统自动为其添加空字符’\0’作为字符串的结束标志。
F:通过间接寻址运算符引用指针变量指向的变量的值,称为指针的解引用。
答案: 【字符数组的最后一个元素必须是字符’0’才能表示一个字符串。;
char pStr = "Hello China";表示定义了一个指向字符串常量的字符指针变量。此时既可以修改pStr的值,也可以通过间接寻址的方法修改pStr指向的字符。;
char
pStr;scanf("%s", pStr);这两条语句的作用就是将用户从键盘输入的字符串保存到字符指针变量pStr中。

23、 问题:下列说法正确的是
选项:
A:指针变量指向的数据的类型,称为指针的基类型。指针变量只能指向同一基类型的变量。
B:指针变量使用之前必须初始化,如果你不知道该用什么值对其进行初始化的话,那么就先用NULL对其进行初始化。使用未初始化的结果将是无法预知的。
C:指针变量占用的内存单元字节数就是它所指向的变量所占用的内存单元字节数。
D:strcat(str2, str1);是将字符数组str2中的字符串连接到字符数组str1中的字符串的末尾,str1中的字符串末尾的空字符’\0’将被覆盖。
E:字符串不能使用赋值运算符整体复制,必须使用strcpy函数进行字符串的复制。strcpy(str2, str1);是将字符数组str2中的字符串复制到字符数组str1中。
F:strlen()计算的是包含’\0’在内的字符串的长度。
答案: 【指针变量指向的数据的类型,称为指针的基类型。指针变量只能指向同一基类型的变量。;
指针变量使用之前必须初始化,如果你不知道该用什么值对其进行初始化的话,那么就先用NULL对其进行初始化。使用未初始化的结果将是无法预知的。

第10周——字符串:C语言世界中的大力水手 练兵区——单选题——不计入总分

1、 问题:下面能正确进行字符串赋值操作的是
选项:
A:char s=“ABCDE”; 
B:char s[5]={“ABCDE”}; 
C:char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; 
D:char
s,scanf(“%s”,s); 
答案: 【char *s=“ABCDE”; 

2、 问题:已知:int *p(); 则p是
选项:
A:一个函数,该函数的返回值是指向int型的指针变量
B:指向int型的指针变量
C:int型的指针数组
D:一个指向函数的指针变量,该函数的返回值是int型
答案: 【一个函数,该函数的返回值是指向int型的指针变量

3、 问题:给出以下定义,则正确的叙述是char  x[ ]= “abcedfg”;char  y[ ]={ ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’’, ‘g’ };
选项:
A:数组x 的长度大于数组y的长度
B:数组x 和数组y 等价
C:数组x 和数组y 的长度相同
D:数组x 的长度小于数组y的长度
答案: 【数组x 的长度大于数组y的长度

4、 问题:下面程序的功能是用字符指针变量作函数参数编程实现字符串连接函数strcat()的功能,将字符串srcStr连接到字符串dstStr的尾部。程序的运行结果如下:Please enter the source string:abcd↙Please enter the other string:efgh↙The concat is:abcdefgh按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void  MyStrcat(char dstStr, char srcStr);
int main()
{
    char  s[80];  //源字符串
    char  t[80];  //待连接字符串
    printf("Please enter the source string: ");
    gets(s);
    printf("Please enter the other string: ");
    gets(t);  //输入字符串
    MyStrcat(s, t);  //将字符数组t中的字符串连到s的尾部
    printf("The concat is:");
    puts(s);  //输出连接后的字符串s
    return 0;
}

void  MyStrcat(char dstStr, char srcStr)   //用字符指针作为函数参数
{
    while (_)
    {
        dstStr++;
    }
    while (*srcStr != ‘\0’)  //若srcStr所指字符不是字符串结束标志
    { 
        
__; //将srcStr所指字符复制到dstStr所指的存储单元中
        srcStr++;  //使srcStr指向下一个字符
        dstStr++; //使dstStr指向下一个存储单元
    }
     
_____; //在字符串dstStr的末尾添加一个字符串结束标志
}
选项:
A:第19行: dstStr != ‘\0’第25行: dstStr = * srcStr第29行: dstStr = ‘\0’
B:第19行: dstStr != ‘\0’第25行: dstStr =  srcStr第29行: 
dstStr = ‘\0’
C:第19行: dstStr == ‘\0’第25行: dstStr = * srcStr第29行: dstStr = ”
D:第19行: dstStr == ‘\0’第25行: dstStr =  srcStr第29行: 
dstStr = ”
答案: 【第19行: dstStr != ‘\0’第25行: dstStr = * srcStr第29行: *dstStr = ‘\0’

5、 问题:以下程序中函数FindMinString的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。例如,若运行时依次输入三个字符串:123↙1223↙124↙输出结果为1223按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

char *FindMinString( ___ )
{
    if(
_____)
        return(s1);
    else
        return(s2);
}

int main()
{
    int i; 
    char string[20], str[3][20];
    for(i=0;i<3;i++) 
    {
        gets(str[i]);
    }
    strcpy(string,FindMinString(str[0],str[1])); /对字符串进行复制/
    strcpy(string,_______);
    printf("%s",string);
    return 0;
}
选项:
A:第3行: char s1, char s2第5行: strcmp(s1,s2)<0第20行: FindMinString(string,str[2])
B:第3行: char s1, char s2第5行: s1<s2第20行: FindMinString(string,str[2])
C:第3行: char s1, char s2第5行: strcmp(s1,s2)>0第20行: FindMinString(str[0],str[2])
D:第3行: char s1, char s2第5行: s1>s2第20行: strcmp(str[1],str[2])
答案: 【第3行: char s1, char s2第5行: strcmp(s1,s2)<0第20行: FindMinString(string,str[2])

6、 问题:子函数Move的功能是将某字符串中的第i个字符向左移动1位,覆盖第i-1个字符。下面程序通过多次调用Move函数,将字符数组b中存放的字符串依次左移3位,并在移动后的字符串末尾添上字符0补足。程序的运行结果为:234567890034567890004567890000按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>
void Move( ___,int i)
{
    a[i-1]=a[i];
}

int main( )
{   
    char b[11]={"1234567890"};
    int i,j;
    for (j=0;j<=2;j++)
    {
      for(i=1;b[i]!=’\0′;i++)
        {
            _;
            printf("%c",b[i-1]);
        }
      
__;
      printf("%c",
______);
    }
    return 0;
}
选项:
A:第2行:  char a第15行: Move(b,i)第18行: b[i-1]=’0’第19行: b[i-1]
B:第2行:  char a第15行: Move(b,i)第18行: b[i-1]=’\0’第19行: b[i-1]
C:第2行:  char
a第15行: Move(b,i)第18行: b[i]=’0’第19行: b[i]
D:第2行:  char a第15行: Move(i,b)第18行: b[i]=’\0’第19行: b[i]
答案: 【第2行:  char *a第15行: Move(b,i)第18行: b[i-1]=’0’第19行: b[i-1]

7、 问题:下面程序的功能是将字符数组中存放的字符串以多种书写形式输出,如“Program”,“PROGRAM”,以及逆序输出的字符串“margorp”等,程序的运行结果为:ProgramPROGRAMmargorp按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

int main(void)
{
    int  i = 0;
    char  b[] = "program";
    char  a = "PROGRAM";
    printf("_", a, b + 1);  / 输出Program */
    while (
___)    /
 输出PROGRAM /
    {   
        __;
        i++;
    }
    printf("");
    while (
__)                /
 输出margorp /
    {
        putchar (__);
    }
    
_;
    return 0;
}
选项:
A:第8行:  %c%s第9行:  
(a+i)!=’\0’第11行: putchar((a + i))第15行: –i第17行: (b + i)第19行: putchar ((b + i))
B:第8行:  %s%s第9行:  (
a+i)!=’\0’第11行: putchar(a + i))第15行: i–第17行: (b + i)第19行: putchar ((b + i))
C:第8行:  %c%s第9行:  
(a+i)==’\0’第11行:  putchar((a + i)) 第15行: –i第17行: b + i第19行: putchar (b + i))
D:第8行:  %s%s第9行:  (
a+i)==’\0’第11行:  putchar(a + i))第15行: i–第17行: b + i第19行: putchar (b + i)
答案: 【第8行:  %c%s第9行:  
(a+i)!=’\0’第11行: putchar((a + i))第15行: –i第17行: (b + i)第19行: putchar (*(b + i))】

8、 问题:Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符。例如,输入为:abcdef↙c↙输出为:abdef按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

void Squeeze(char s, char c);
int main()
{
    char  a[80], c, 
s;
    s = a;
    gets(a);
    scanf("%c",&c);
    Squeeze(s, c);
    printf("%s", s);
    return 0;
    }
    
 void  Squeeze(char s, char c)
    {
        int i, j;
        for (i = j = 0; s[i] != ‘\0’; i++)
            {
                if (_)
                {
                    
_;
                    j++;
                }
            }
        _______; /
 在字符串t2的末尾添加字符串结束标志 */
     }
选项:
A:第20行: s[i] != c第22行: s[j] = s[i]第26行: s[j] = ‘\0’
B:第20行: s[i] == c第22行: s[j] = s[i]第26行: s[i] = ‘\0’
C:第20行: s[j] != c第22行: s[i] = s[j]第26行: s[j] = ‘\0’
D:第20行: s[j] == c第22行: s[j] = s[i]第26行: s[i] = ‘\0’
答案: 【第20行: s[i] != c第22行: s[j] = s[i]第26行: s[j] = ‘\0’

9、 问题:下列对字符串的定义中,错误的是
选项:
A:char  str[7] = "FORTRAN";
B:char  str[] = "FORTRAN";
C:char  *str = "FORTRAN";
D:char  str[] = {‘F’,’O’,’R’,’T’,’R’,’A’,’N’,0};
答案: 【char  str[7] = "FORTRAN";

10、 问题:下面函数Fun的功能是void Fun(char s1, char s2){    while(s2++=s1++);}
选项:
A:串复制
B:求串长
C:串比较
D:串反向
答案: 【串复制

11、 问题:执行以下代码段后,输出的字符串是#include <stdio.h>

include <string.h>

int main()
{
   char s1[10],*s2="ab\0cdef";
   strcpy(s1,s2);
   puts(s1);
   …….
   return 0;
}
选项:
A:ab
B:cdef
C:ab\0cdef
D:内容不确定
答案: 【ab

12、 问题:下面程序的功能是从键盘输入一个字符串,编程将其字符顺序颠倒后重新存放,并输出这个字符串。程序的运行结果如下:Input a string:abcdef↙The inversed string is:fedcba按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h>

include <string.h>

void Inverse(char *pStr);
int main()
{
    char  str[80];
    printf("Input a string:");
    gets(str);//输入字符串
    Inverse(str);//将存于str数组中的字符串逆序存放
    printf("The inversed string is:");
    puts(str);//输出字符串
    return 0;
}

void Inverse(char pStr)
{
    int  len = 0;
    char temp;
    char 
pStart = pStr;//指针变量pStart指向字符串的第一个字符
    char pEnd;//指针变量pEnd指向字符串的最后一个字符
    for (; 
pStart!=’\0′; ___)    //求出字符串长度
        {
            len++;
        }
    for (pStart=pStr,__; pStart<pEnd; pStart++,pEnd–)
    {
        temp = 
__;
        
__;
        
        pEnd = temp;
    }
}
选项:
A:第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  
pStart第28行:  pStart = pEnd
B:第21行:  pStart++第25行:  pEnd=pStr+len第27行:  pStart第28行:  pStart = pEnd
C:第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  pStart第28行:  pStart = pEnd
D:第21行:  pStart++第25行:  pEnd=pStr+len第27行:  pStart第28行:  pStart = pEnd
答案: 【第21行:  pStart++第25行:  pEnd=pStr+len-1第27行:  
pStart第28行:  pStart = pEnd】

13、 问题:下面函数Fun的功能是#include <stdio.h>

include <string.h>

int Fun(char ps)
{
    char 
p;
    p=ps;
    while(*p++);
    return (p-ps);
}

int main()
{
    char  *s;
    int a1,a2;
    s = "hello";
    a1=Fun(s);
    a2=strlen(s);
    printf("%d,%d", a1,a2);
    return 0;
    }
选项:
A:以上三种说法都不对
B:比较两个字符串的大小
C:求字符串的长度
D:将串ps复制到串s中
答案: 【求字符串的长度

本门课程剩余章节答案为付费内容
本文章不含期末不含主观题!!
本文章不含期末不含主观题!!
支付后可长期查看
有疑问请添加客服QQ 2356025045反馈
如遇卡顿看不了请换个浏览器即可打开
请看清楚了再购买哦,电子资源购买后不支持退款哦
请输入手机号或商家订单号
打不开请联系客服QQ 2356025045 商家订单号在哪里?点此了解

商家订单号查看步骤

打开支付宝
方法一:我的 > 账单 > 账单详情 > 更多>复制商家订单号
方法二:我的 > 账单 >搜索关键字【网课小帮手】
> 账单详情 > 更多>复制商家订单号
方法三:联系客服QQ 2356025045
微信支付
我 > 支付 > 钱包 > 账单 > 账单详情
继续阅读