0.1124

五煦查题

快速找到你需要的那道考题与答案

超星C语言程序设计_71课后答案(学习通2023完整答案)

84 min read

超星C语言程序设计_71课后答案(学习通2023完整答案)

第1周 程序设计与C语言

1.1 程序设计及C语言随堂测验

1、超星以下选项中属于结构化程序设计语言的语言程是()
A、汇编语言
B、序设习通机器语言
C、计课C语言
D、后答Java语言

2、案学计算机可以识别的完整指令是()
A、二进制
B、答案八进制
C、超星十进制
D、语言程十六进制

3、序设习通以下说法正确的计课是()
A、计算机可以直接执行C语言程序
B、后答机器指令执行速度快,案学易于移植
C、完整汇编语言需要经过编译后计算机才可以执行
D、高级语言的执行效率高于机器语言

1.4 算法随堂测验

1、以下叙述不正确的是()
A、算法的有穷性是指算法必须能在执行有限个步骤之后终止
B、一个问题可以有多个算法
C、算法必须有输出
D、算法必须有输入

2、以下属于算法描述工具的是()
A、流程图
B、自然语言
C、伪代码
D、以上均正确

3、流程图中,可以表示判断“是否大于0”的流程图符号是()
A、矩形
B、菱形
C、平等四边形
D、圆形

4、一个解决问题的方案称为算法。下列属于算法的基本性质的是( )
A、有穷性
B、确定性
C、可行性
D、以上都是

5、下列关于算法的说法中,不正确的是( )
A、算法的作用在于记录和交流人类解决问题的思想
B、对于给定的一个问题,其算法不一定是唯一的
C、对于复杂问题,我们一般先进行算法设计,然后再编程解决
D、算法的步骤可以无限制执行下去,永不停止

第2周 数据类型、运算符与表达式

2.1 常量与变量随堂测验

1、以下用户标识符中,合法的是( )。
A、char
B、net
C、123
D、a-1

2、以下不是合法的字符常量的是( )。
A、‘\\’
B、‘a’
C、“a”
D、‘\n’

3、以下选项中,不正确的浮点型常量是( )。
A、19
B、3.5
C、3.
D、1.2e3.5

2.2 数据类型随堂测验

1、C语言中字符型数据在内存中的存储形式是()
A、原码
B、反码
C、补码
D、ASCII码

2、已知ch是字符型变量,下面不正确的赋值是()
A、ch=’a’
B、ch=‘z’-‘c’
C、ch=’A’+7
D、ch=’a+4’

3、以下选项中不属于C语言的类型是( )。
A、signed int
B、long short
C、char
D、unsigned short int

4、以下为单精度常量的是()
A、3.5
B、345
C、6.7f
D、1.2e3

5、以下不属于算术类型的是()
A、基本整型
B、字符型
C、浮点型
D、结构体类型

2.3 运算符与表达式随堂测验

1、以下运算符中,优先级最低的是( )
A、+
B、*=
C、%
D、=

2、以下运算符中,结合性与其它运算符不同的是( )
A、--
B、*
C、%
D、/

3、设有定义:int x=2;,以下表达式中,值不为6的是()。
A、x*=x+1
B、x+=4
C、x*=(1+x)
D、x*=3.0

4、有以下程序 #include<stdio.h> void main( ) { char c1,c2; c1=’A’+’6’-‘3’; c2=’A’+’6’-‘5’; printf(“%c,%d\n”,c1,c2); } 程序运行后的输出结果是( )。
A、D,68
B、B,66
C、D,B
D、输出无定值

5、设有定义:int x=2; double y=2.5,以下表达式中,值为4的是()。
A、x+y
B、x+(int)y
C、(int)x+y
D、int(x+y)

第2周 编程作业

1、编写程序,输出以下内容:

2、编写程序,有两个整型变量a和b,它们的值分别为8和3,计算它们的和、差、积、商并输出。

3、编写程序,假设圆柱体的底面积半径r=2.5,高h=3.5,计算该圆柱体的体积并输出。 提示:体积=底面积*高,底面积=π*r*r

第3周 顺序结构

3.1 程序的基本结构随堂测验

1、结构化程序设计的三种基本结构是_____。
A、顺序、选择和转向
B、层次、网状和循环
C、模块、选择和循环
D、顺序、选择和循环

3.2 C语句概述随堂测验

1、复合语句常用在if语句或循环中,是由_______组成。
A、( )
B、[ ]
C、{ }
D、< >

2、复合语句在语法上是_______条语句。
A、0
B、1
C、2
D、视具体语句数而定

3.3 格式化输入输出随堂测验

1、已知整型变量a,b,t,以下语句组中,不能实现a,b值交换的是_______ 。
A、t=a; a=b; b=t;
B、t=a; a=b; b=t;
C、a=b; b=a;
D、a=a+b; b=a-b; a=a-b;

2、若有以下程序段,程序运行时输入字符A,则输出结果是________。 char ch; scanf(“%c”,&ch); printf(“%c %d”, ch+32,ch);
A、a 65
B、A 65
C、97 A
D、a65

3、以下程序段的输出结果是______。 printf(“%d%d\n”,320/60,320%60);

第一次测验

1、下列标识符中,不合法的用户标识符是()
A、word
B、s7p
C、-in
D、Main

2、下列不是C语言的关键字的选项是()
A、void
B、int
C、double
D、printf

3、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()
A、关键字可用作用户标识符,但失去原有含义
B、预定义标识符可用作用户标识符,但失去原有含义
C、在标识符中大写字母和小写字母被认为是相同的字符
D、用户标识符可以由字母和数字任意顺序组成

4、下列选项中,错误的字符常量是()
A、‘A’
B、’\n’
C、”h”
D、’\101’

5、下列选项中,错误的实型常量是()
A、3.0
B、.123
C、3.9e1
D、5e3.6

6、下列选项中,错误的字符串常量是()
A、‘””
B、”\n”
C、”\0123”
D、’\101’

7、下列选项中,不属于常量的是()
A、#define N 100
B、const n= 100 ;
C、int n=100;
D、100

8、以下算术表达式值不是实数的是()
A、10/4
B、10/4.0
C、(double)10/4
D、10/(double)4

9、已有如下定义: double a=1.2345; 以下选项中,可以将a的值取小数点后两位并进行四舍五入的表达式是()
A、(int)a*100
B、(int)(a*100+0.5)
C、(int)(a*100+0.5)/100
D、(int)(a*100+0.5)/100.0

10、下列表达式中,错误的是()
A、3+5
B、7/6.3
C、8-9.6
D、5.6%3

11、以下表达式中,计算结果不正确的是()
A、5/2
B、5/2.0
C、5.0/2
D、5.0/2.0

12、已有整型变量a,b,t,以下语句组中,不能实现将a,b的值进行交换的选项是()
A、t=a;a=b;b=t;
B、t=a,a=b,b=t;
C、a=b; b=a;
D、a=a+b; b=a-b; a=a-b;

13、已有变量定义: int a,b; double c; 若想使变量a得到123,b得到45,c得到67.8,用户按下述格式进行输入 123 45 67.8 以下选项中正确的输入语句是()
A、scanf(“%d%d%lf”,&a,&b,&c);
B、scanf(“%d%d%lf”,a,b,c);
C、scanf(“%d%lf%d”,&a, &c,&b);
D、scanf(“%d,%d,%lf”,&a,&b,&c);

14、以下选项中,不属于三种基本结构的是()
A、顺序结构
B、分支结构
C、递归结构
D、循环结构

15、以下说法错误的是()
A、算法必须有输入
B、算法必须有输出
C、算法需要在合理的有限时间内结束
D、算法的步骤必须是有限的

16、以下有关汇编语言的说法正确的是()
A、执行效率高
B、好移植
C、好记
D、计算机可以直接执行

17、以下选项中,不属于结构化程序三种基本结构的特点是()
A、单入口
B、单出口
C、结构内部的流程可以任意跳转
D、结构内部不存在死循环

18、以下语言中,可以直接被计算机执行的语言是()
A、机器语言
B、汇编语言
C、C语言
D、Basic语言

19、若有定义: int a; double b; 以下选项中,能为a读入3,b读入4.5的正确输入语句是()
A、scanf(“%d%f”,&a,&b);
B、scanf(“%d%lf”,&a,&b);
C、scanf(“%d%f”,a,b);
D、scanf(“%d%lf”,a,b);

20、若有定义: int a; double b; 若输入的内容是:a=3,b=4.5 则以下选项中,能为a读入3,b读入4.5的正确输入语句是()
A、scanf(“%d%lf”,&a,&b);
B、scanf(“a=%d,b=%f”,&a,&b);
C、scanf(“a=%d b=%lf”,&a,&b);
D、scanf(“a=%d,b=%lf”,&a,&b);

21、若有定义: int a,b; char c; scanf(“%d%c%d”,&a,&c,&b); 则以下选项中,能为a读入3,b读入4,c读入‘+’的正确输入格式是()
A、3 4 +
B、3 + 4
C、3+ 4
D、3 +4

22、以下说法正确的是:
A、一个程序可以包含多个源程序文件
B、每个源程序文件都可以包含一个main函数
C、每个源程序文件都必须包含“stdio.h“头文件
D、每个源程序文件都必须添加注释

23、若有定义:int x=0; 则下列赋值语句执行完后,变量x的值是() x=(x=3+5,x*5)

24、以下程序段的输出结果是() printf(“%d,%d\n”,1500/350,1500%350);

25、若有以下变量定义,表达式的值是() float m=1.5; (int)m+0.66*2

26、以下程序段的输出结果是() char ch=’A’; printf(“%c”,ch+32);

27、以下程序段的输出结果是() int x=0,y=0; x=(x=2,y=3,x+y); printf(“%d”,x);

28、以下程序段的输出结果是() char c=’2’; printf(“%c”,c+c);

29、以下程序段的输出结果是() printf("%-6.2f,%.2f\n",1.2345,4.567);

30、C编译系统分为()和正式编译两个阶段。

31、()是介于自然语言和计算机语言之间的语言。

第3周编程练习

1、编写程序,输入一个4位数的正整数,计算并输出各位数字之和。

2、1. 编写程序,计算并输出三角形的面积。已知三角形的三边长为a,b,c,计算三角形面积的公式为: area= s= 注意:输入的 a、b、c值要满足构成三角形的条件。

第4周 分支结构

4.1关系运算符和关系表达式随堂测验

1、下列运算符中优先级最高的是()。
A、%
B、+
C、=
D、!=

2、假设x为整型变量,下列程序段的输出结果是()。 x=-8; printf(“%d”,-10 < x <=--2) ;
A、1
B、-1
C、0
D、-2

3、下列能表示两位正整数n的个位数与十位数之和为8的表达式是()。
A、n/10+n % 10=8
B、n % 10+n/10==8
C、n/10 % 10==8
D、n % 10/10==8

4.2 逻辑运算符和逻辑表达式随堂测验

1、设a、b、c都是整型变量,且a=3,b=4,c=5;则以下表达式中值为0的是()。
A、a && b
B、a <= b
C、a||b+c&&b-c
D、!((a<b)&&!c||1)

2、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( )。
A、num%2==1
B、!(num%2==0)
C、!(num%2)
D、num%2

3、x的值在-10到-1内,或在1到10的范围内时,值为“真”的表达式是( )。
A、(x>=-10)&&(x<=-1)||(x>=1)&&(x<=10)
B、!(x>=-10&&x<=-1||x>=1&&x<=10)
C、x<-10||x>-1&&x<1||x>10
D、(x<-10)||(x>-1&&x<1)||(x>10)

4.3 用if语句实现选择结构随堂测验

1、在C语言的if语句中,用以决定分支流程的是( )。
A、只能用逻辑表达式或关系表达式
B、只能用关系表达式
C、只能用逻辑表达式
D、可用任意合法的表达式

2、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { int x1=3,x2=0,x3=0; if(x1=x2+x3) printf(“****”); else printf(“####”); return 0; }
A、输出****
B、输出####
C、存在语法错误
D、无输出结果

3、3.以下正确的if语句是( )。
A、if(n>0) printf(“%f”,n) else printf(“%f”,-n);
B、if(n>0) { n=n+m;printf(“%f”,n); } else printf(“%f”,-n);
C、if(n>0) { n=n+m;printf(“%f”,n); }; else printf(“%f”,-n);
D、if(n>0) { n=n+m;printf(“%f”,n) }; else printf(“%f”,-n);

4.4 选择结构的嵌套随堂测验

1、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c=c+1; printf(“%d\n”,c); return 0; }
A、0
B、1
C、2
D、3

2、下面程序段所表示的数学函数关系是( )。 x=-1; if(a!=0) if(a>0) x=1; else x=0;
A、
B、
C、
D、

4.5 用switch语句实现多分支选择结构随堂测验

1、若a和b是正整型变量,正确的switch语句是( )。
A、switch(a+b) { case1: case3: y=a+b; break; case0: case4+1: y=a-b; }
B、switch(a*a+b*b) { case 3: case 1: y=a+b; break; case 3: y=b-a; break; }
C、switch a { default: x=a+b; case 1: y=a-b; break; case 2: y=a*b; break; }
D、switch(a +b) { case 10: y=a+b; break; case 11: y=a-b; break; }

2、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { 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); return 0; }
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=2

4.6 条件运算符与条件表达式随堂测验

1、若运行时为变量x输入12,则以下程序的输出结果是( )。 #include <stdio.h> int main(void) { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); return 0; }
A、0
B、22
C、12
D、10

第4周 编程练习

1、从键盘输入三角形的三条边长(边长分别存放在a,b,c 中),判断是否能构成三角形,如果能,则计算其面积area的公式为: 其中:

2、根据下面提示信息,编写程序计算下面分段函数的值。

第5周 循环结构

5.1 用while语句实现循环随堂测验

1、下列关于while语句和do-while语句,描述不正确的是()。
A、while语句的循环体可能被执行0次,更多的情况是被执行多次。
B、do-while语句的循环体至少被执行一次。
C、循环体的语句必须用{ }括起来,构成一条复合语句。
D、无论是while语句,还是do-while语句,都是循环条件为真时,执行循环体语句,否则,结束循环。

2、执行下列程序段后,m的值是()。 int r,m=18,n=12; while(n!=0) { r=m%n; m=n; n=r; }
A、3
B、4
C、6
D、9

3、以下程序段的输出结果: int n=9; while(n>6) { n--; printf(“%d”,n); }

5.2 用do-while语句实现循环随堂测验

1、要计算1~10之和,并将结果存于变量s中,下列程序正确的是()。
A、int n=1,s; while(n<=10) { s=s+n; n++; }
B、int n=1,s=0; while(n<=10) { s=s+n; n++; }
C、int n=1,s=0; do { s=s+n; n++; } while(n<=10)
D、int n=0,s=0; do { n++; s=s+n; } while(n<=10);

2、以下程序段: int x=-1; do { x=x*x; } while ( !x ) ;
A、是死循环
B、循环执行两次
C、循环执行一次
D、有语法错误

3、以下程序段的输出结果是: int i=10,j=0; do { j=j+1; i--; } while( i>2); printf (“%d \n”, j); }
A、50
B、52
C、51
D、8

5.3 用for语句实现循环随堂测验

1、以下循环语句的循环次数是: int i; for ( i=2 ; i==0; ) printf(“%d”, i--);
A、无限次
B、0次
C、1次
D、2次

2、以下程序段的输出结果是: int i , sum; for ( i=1 ; i<6; i++) sum+=sum;
A、15
B、14
C、不确定
D、0

3、输出1~20之间能被3整除的整数,下列程序正确的是()。
A、for(i=1,i<20,i=i+3) printf("%d ",i);
B、for (i=1;i<20;i=i+3) printf("%d ",i); printf("\n");
C、for(i=1;i<20;i++) if(i%3==0) printf("%d ",i);
D、for(i=1;i<20;i+1) if (i%3==0) printf("%d ",i);

5.5 改变循环执行的状态随堂测验

1、下列程序段,描述正确的是【】。 int k=1; while(10) { k++; if (k==5) break; }
A、一次也不执行循环体语句
B、执行一次循环体语句
C、执行4次循环体语句
D、执行5次循环体语句

2、执行下列程序段中的循环后,变量k的值是【】。 int i,k=1; for(i=0;i<10;i++) { if (i%2) continue; k++; }
A、10
B、6
C、5
D、1

3、下列程序段,输入206#<回车>时,输出的第3个字符是【】。 char c; while((c=getchar())!='@') switch(c-'0') { case 0: case 1:putchar(c+1); case 2:putchar(c+2); break; default:putchar(c); }
A、1
B、2
C、4
D、6

第二次测验

1、以下运算符中优先级最高的是( )。
A、++
B、?:
C、!=
D、&&

2、以下程序的输出结果是()。 #include <stdio.h> int main(void) { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); return 0; }
A、6,1
B、2,0
C、6,0
D、2,1

3、若执行以下程序时从键盘上输入3和4,则输出结果是( )。 #include <stdio.h> int main(void) { int a,b,s; scanf("%d%d",&a,&b); s=a; if(a<b) s=b; s*=s; printf("%d\n",s); return 0; }
A、14
B、16
C、18
D、20

4、若a、b、c为int型变量,执行以下语句后,a、b、c中的值分别是( )。 a=1;b=2;c=3; if(a>c) b=a;a=c;c=b; printf("%d %d %d\n",a,b,c);
A、1 2 3
B、3 1 1
C、3 2 1
D、3 2 2

5、为了避免在嵌套的条件语句if-else中产生二义性,C语言中规定的if-else配对原则是( )。
A、else子句与缩排位置相同的if配对
B、else子句与其之前最近的且不带else的if配对
C、else子句与其之后最近的if配对
D、else子句与同一行上的if配对

6、当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;
A、6
B、3
C、2
D、1

7、若变量已正确定义,以下语句段的输出结果是( )。 x=0;y=2;z=3; switch(x) { case 0:switch(y==2) { case 1: printf("*");break; case 2: printf("%");break; } case 1:switch(z) { case 1: printf("$"); case 2: printf("*");break; default: printf("#"); } }
A、*
B、%
C、*#
D、%#

8、设w、x、y、z、k均为int型变量,则执行下面语句后的k值是( )。 w=1;x=2;y=3;z=4; k=(w<x)?w:x; k=(k<y)?k:y; k=(k<z)?k:z;
A、1
B、2
C、3
D、4

9、下列程序段不是无限循环的是()。
A、int i; for(i=10;i>0;i++) printf("*");
B、int a; a=5; while(a); { a=a/2; printf("%d",a); }
C、int x,s=0; x=1; do { s=s+x; x+1; } while(x<=10); printf("%d",s);
D、char ch; ch=getchar(); while(ch!='\n') ch=getchar();

10、执行下列程序段后,变量i和变量s的值是()。 int i,s=0; for(i=1;i<=100;i++) if (i%2) s=s+i; else s=s-i;
A、i=100,s=50
B、i=100,s=-50
C、i=101,s=50
D、i=101,s=-50

11、下列程序的输出结果是()。 for(i=1;i<=3;i++) for(j=i;j<=3;j++) printf("* "); printf("\n");
A、* * * * * *
B、* * * * * *
C、* * * * * *
D、* * * * * *

12、若使下列程序的输出值为2,则应该从键盘给n输入的值是()。 int s=0,a=1,n; scanf("%d",&n); while(a!=n) { s++; a=a-2; } printf("%d\n",s);
A、-1
B、-3
C、-5
D、0

13、若有以下程序段,其中s,a,b,c均已定义为整数变量,且a,c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是()。
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;

14、下列对循环语句的描述不正确的是 ()。
A、使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成。
B、while循环是先判断表达式,当表达式的值是非0时,执行循环体。
C、for、while和do-while循环中循环体均可以由空语句构成。
D、while语句和for语句构建的循环不可以互相替代。

15、关于下列循环次数的描述正确的是()。 int a=5; while(!a) a--;
A、执行5次循环
B、循环无限次
C、一次也不执行
D、只执行一次循环

16、关于下列循环次数的描述正确的是()。 int a=5; while(a!=0) a--;
A、执行5次循环
B、循环无限次
C、一次也不执行
D、只执行一次循环

17、while语句中循环结束的条件是while后面表达式的值是()。

18、下列程序段输出1~100之间“是3的倍数且个数是3”的整数,对if后条件描述正确的是()。 int i; for(i=1;i<=100;i++) if( ________ ) printf("%d ",i);

19、下面代码段的输出结果是() int c=5,k; for(k=1;k<=3;k++) switch(k) { case 1: c++; case 2: c+=2;break; } printf("%d\n",c);

20、下列程序的循环结束后,变量s的值是()。 int s=0,a=246; do { s=s+a % 10; a=a/10; }while(a);

21、下列程序的功能是:从键盘输入若干个整数中,分别统计正整数和负整数的个数,用0结束输入操作。请填空。 int a,n1=0,n2=0; scanf("%d",&a); while( a ) { if (a>0) n1++; if (a<0) n2++; __________ ; } printf("n1=%d,n2=%d\n",n1,n2);

22、下列程序的运行结果是________ int main() { int i; for(i=0;i<=10;i++) if (i==5) continue; printf("%5d",i); return(0); }

23、若i,j已定义为int类型变量,则以下程序段中内循环体的执行次数是______次。 for(i=5;i;i--) for(j=1;j<4;j++) { ……}

24、break语句只能用于__________语句和switch语句之中。

25、for语句的一般形式如下: for(表达式1;表达式2;表达式3) 循环体语句 其中,___________用于描述循环条件,通常情况不要省略。

26、下面代码段的输出是__ int c=5,k; for(k=1;k<=3;k++) switch(k) { case 1: c++; case 2: c+=2;break; } printf("%d\n",c);

27、下面代码段的输出是__ int k,m=0; for(k=0;k<10;k++ ) { m=m+k*k; if(m>50) break; } printf("%d,%d\n",k,m);

28、下面代码段的输出是__ int k,m=0; for(k=0;k<10;k++ ) { if(k%3) continue; m=m+k; } printf("%d,%d\n",k,m);

29、以下代码片段的输出是__ int i,j=4; for(i=1; i<=6; i++ ) { switch ( i%3) { case 0: case 1: printf("*"); case 2: printf("#");break; } }

第5周 编程练习

1、输入两个正整数m和n,求其最大公约数和最小公倍数。

2、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

3、打印所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为

4、计算:s=1-1/2+1/3-1/4...-1/100,输出s的值。

5、根据输入的数值,输出图案。例如:若输入4,则输出下述图案: * *** ***** 试题及答案

* ***** *** * 若输入3,则输出下述图案: * *** ***** *** *

第6周 一维数组与二维数组

6.1 一维数组随堂测验

1、对定义“int a[2];”的正确描述是( )。
A、定义一维数组a,包含a[1]和a[2]两个元素
B、定义一维数组a,包含a[0]和a[1]两个元素
C、定义一维数组a,包含a[0]、a[1]和a[2]三个元素
D、定义一维数组a,包含a(0)、a(1)和a(2)三个元素

2、以下数组的定义中,合法的是( )。
A、int x(3);
B、int x[3];
C、int x[2+1]
D、int n=3,x[n];

3、以下对一维数组的定义中,正确的是( )。
A、#define MAX 5 int a[MAX];
B、int Max =5; int a[Max];
C、int Max; scanf("%d",&Max); int a[Max];
D、#define MAX 5; int a[MAX];

4、以下有关数组的说明中,不正确的是( )
A、C语言中可以通过数组名对数组进行整体的输入和输出
B、数组中的各元素依次占据内存中连续的存储空间
C、同一数组中的元素具有相同的名称和类型
D、在使用数组前必须先对其进行定义

6.1 一维数组随堂测验

1、在引用数组元素时,其下标表达式的类型必须是( )
A、字符型
B、整型
C、整型或字符型
D、整型变量

2、以下叙述中,不正确的是( )
A、数组有一组类型相同的元素组成
B、引用数组元素时,下标表达式的值不能越界,否则将产生编译错误
C、C语言不自动给所定义的数组元素赋初始值
D、数组类型决定了数组元素所占内存单元的字节数

3、若有初始化语句“int a[5]={ 1,2,3};”,则值为3的表达式是( )
A、a[3]
B、a(2)
C、a(3)
D、a[2]

4、若有初始化语句“int a[]={ 1,2,3,4,5,6,7,8,9,10}”,则对a数组元素的错误引用是( )
A、a[10]
B、a[0]
C、a[5]
D、a[1]

6.2 二维数组随堂测验

1、以下叙述中,不正确的是( )
A、数组名是用户标识符,应符合用户标识符的命名规则
B、用初始化的方法可以确定二维数组的行数,但不能确定其列数
C、二维数组中的各元素在内存中以“列主序”的顺序依次排列
D、引用二维数组元素时,第1个下标称为“行下标”,第2个下标称为“列下标”

2、以下定义中,正确的是( )
A、int m=2,n=3,a[m][n];
B、int a[2][3]={ 1,2,3,4,5,6,7};
C、int a[2][3]={ 1,2,3,4};
D、int a[2][]={ 1,2,3,4,5,6};

3、对二维数组a的正确初始化形式是( )
A、int a[2][3]={ 1,2,3,4,5,6,7};
B、int a[][3]={ { 1,2,3},{ 4,5,6}};
C、int a[2][3]={ { 1,2},{ 3,4},{ 5,6}};
D、int a[2][3]={ { },{ 4,5,6}};

4、若有初始化“int ast[3][3]=;”,则下面叙述中正确的是( )
A、定义非法
B、只有元素ast[0][0]的值为0,其他元素值不确定
C、数组ast中所有元素都得到初值0
D、只有元素ast[3][3]的值为0,其他元素值不确定

5、若有说明“int s[2][5],n=3;”,则对s数组元素的非法引用是( )
A、s[1][2+3]
B、s[0][n+1]
C、s[1][4-2]
D、s[n-2][0]

6、若有定义“int a[3][4]”,则数组中排在元素a[i][j]前面的元素个数是( )
A、3*i+ j
B、4*j+ i
C、j*3+ i
D、i*4+ j

第6周 编程练习

1、从键盘输入10个整数保存到一维数组中,将数组中的值按逆序重新存放,输出逆序存放后的结果。

2、用筛选法求100之内的素数

3、有一个已排好序的数组,要求输入一个整数后,按原来排序的规律将它插入到数组中。

4、随机产生一个3×3的整型矩阵,求对角线元素之和。

5、输出以下杨辉三角形(要求输出10行) 1 1 2 1 1 3 3 1 1 4 6 4 1 ………………

第7周 字符数组与字符串

7.1 字符数组随堂测验

1、1、已知 char str[10]; int i; for(i=1;i<=10;i++) scanf("%c",&str[i]); for(i=1;i<=5;i++) print("%c ",str[i]); 则以下选项中存在错误的是()。
A、第1行
B、第2行
C、第3行
D、第4行

2、有以下程序: main() { char s[2][5],i,j,k=97; for(i=0;i<2;i++) for(j=0;j<5;j++) s[i][j]=k+i+j; printf("%c",s[1][1]); } 程序运行后的输出结果是()。
A、97
B、98
C、c
D、b

3、以下不正确的初始化形式是()。
A、char c[]={ "boy"};
B、char c[]="boy";
C、char c= "boy";
D、char c[6]={ 'b', 'o', 'y', '\0'};

7.1 字符数组随堂测验

1、1设有如下定义: char a[]="abc"; char b[]={ 'a', 'b', 'c'}; 则以下叙述正确的是( )。
A、a与b数组中存放的内容完全相同
B、a与b数组的长度相同;
C、a与b数组中均存放a、b、c三个字符
D、a数组的长度比b数组的长度长

2、若有定义“char a[10],b[10];”,则以下正确的输入格式是( )。
A、gets(a,b);
B、gets("a");gets("b");
C、scanf("%s%s",a,b);
D、scanf("%s%s",&a,&b);

3、判断字符串"abcd"和"ab cd"是否相等,应使用的语句是( )。
A、if("abcd"=="ab cd")
B、if(abcd==ab cd)
C、if(strcmp("abcd","ab cd"))
D、if(strcmp(abcd,ab cd))

4、有以下程序: #include<string.h> main() { char a[10]="abcdef"; char b[4]="AB\0C"; strcpy(a,b); printf("%c",a[3]); } 程序运行后的输出结果是( )。
A、d
B、C
C、\0
D、0

5、有以下程序: #include<string.h> main() { char a[15]="good",b[10]="morning"; printf("%d\n",strlen(strcat(a,b))); } 程序运行后的输出结果是( )。
A、4
B、7
C、11
D、12

第7周 编程练习

1、有一行电文,已按下面规律译成密码: A->Z a->z B->Y b->y C->X c->x ………… 即第1字字母变成第26个字母,第 i 个字母变成第 (26-i+1)个字母,非字母字符 不变,要求编写程序将译码译回原文,并输出密码和原文。

2、编一程序,将两个字符串连接起来,不要用strcat函数。

第8周 函数

8.1 再识函数随堂测验

1、C语言程序从哪个位置开始执行【】
A、程序中第一条可执行语句
B、程序中的第一个函数
C、程序中的main函数
D、包含文件中的第一个函数

2、以下叙述正确的是【 】
A、C程序可从任意一个函数开始执行。
B、C程序总是从main()函数开始执行,并在main()函数中结束整个程序的运行。
C、一个C语言程序中可包含多个函数,main()函数可以调用其它函数,其它函数也能调用main()函数。
D、一个C程序中可包含多个函数,这些函数之间可以相互调用和嵌套定义。

3、C语言程序的基本单位是【 】
A、函数
B、过程
C、子程序
D、源程序文件

8.2 函数的定义与调用随堂测验

1、C语言中的函数【 】。
A、可以嵌套定义,不可以嵌套调用。
B、不可以嵌套定义,可以嵌套调用。
C、可以嵌套定义,也可以嵌套调用。
D、嵌套定义和嵌套调用都不允许。

2、下列关于函数的说法,正确的是【 】。
A、在C语言程序中,要调用的函数必须在main()函数中定义
B、C程序总是从第一个定义的函数开始执行
C、main()函数的定义必须在所有其他函数之前。
D、main()函数可以不带参数,但其后的小括号不能省略。

3、下列函数定义中,正确的是【 】。
A、double fun (double x, y) { return x+y; }
B、double fun(double x, double y) { return x+y; }
C、double fun(double x, double y); { return (x+y); }
D、void fun(double x, double y) { return x+y; }

4、函数fun的功能是计算n!,将计算结果作为函数值返回主调函数。下列函数定义正确的是【 】。
A、int fun(int n); { int i,s=1; for(i=1;i<=n;i++) s=s*i; return s; }
B、int fun(int n) { int i,s=1; for(i=1;i<=n;i++) s=s*i; return s; }
C、int fun(int n) { int i,s; for(i=1;i<=n;i++) s=s*i; return s; }
D、void fun(int n) { int i,s=1; for(i=1;i<=n;i++) s=s*i; return s; }

8.2 函数的定义与调用随堂测验

1、下列对函数实参和形参描述中,不正确的是【 】。.
A、实参可以是常量、表达式或有确定值的变量。
B、实参与形参的类型、个数必须一致。
C、实参与形参共用同一内存单元。
D、函数调用时,将为形参分配内存单元。

2、C语言中规定,调用函数时,实参和形参之间的数据传递是【 】。
A、由形参传值给实参
B、由实参传值给形参
C、实参和形参之间可以互相传值
D、由用户指定传递方式

3、若定义函数void fun( int a) { ...... },下列正确的调用形式是【 】。
A、m=fun(3);
B、fun(2,3);
C、fun(5);
D、int n=5; printf("%d",fun(n));

4、若有函数定义: double fun(int a,int b) { return (a+b)/3.0; } 下列对函数的调用语句,正确的是【 】。
A、int x; x=fun(5,8);
B、printf("%lf\n",fun(5,8));
C、double x; x=fun(5,8,11);
D、int a=5,b=8; printf("%d\n",fun(a,b));

8.2 函数的定义与调用随堂测验

1、C语言中,函数返回值的类型由【 】决定。
A、return语句中表达式的类型
B、调用该函数时的主调函数类型
C、调用该函数时的形参类型
D、定义该函数时所指定的函数类型

2、以下叙述中正确的是【 】。
A、用户定义的函数中可以没有return语句;
B、用户定义的函数中可以有多个return语句,以便调用函数时,可以一次返回多个函数值;
C、用户定义的函数中若没有return语句,则不用定义函数的类型;
D、函数返回值的类型由return语句中表达式的类型决定;

3、下列程序的运行结果是【 】。 #include <stdio.h> void fun(int a,int b) { int t=0; if(a>b) { t=a;a=b;b=t;} } int main() { int a=5,b=3; fun(a,b); printf("%d,%d",a,b); return(0); }
A、3,5
B、5,3
C、3 5
D、5 3

8.3 函数声明 随堂测验

1、以下叙述中正确的是【 】。
A、函数必须有原型声明,无论其定义在什么位置;
B、当函数定义在主调函数之前时,需要进行原型声明;
C、当函数定义在主调函数之后时,需要在调用语句之前进行函数原型声明;
D、函数无论定义在什么位置,都不需进行原型声明。

2、若程序中定义函数 double add(double a, double b) { return (a+b)/2; } 并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是【】
A、double add(double x, double y);
B、double add(double b, double a);
C、double add(double, double );
D、double add(double a, b);

8.4 函数的嵌套调用随堂测验

1、以下程序运行后的输出结果是【 】。 int fun(int a, int b) { if(a>b) return a; else return b; } int main() { int x=11,y=8,z=6; z=fun(fun(x,y),2*z); printf("%d\n", z); }
A、6
B、8
C、11
D、12

2、下列程序的运行结果是【 】。 #include <stdio.h> int fun(int x,int y) { return x*y; } int main() { printf("%d\n",fun(fun(1,2),fun(2,3))); return 0; }
A、2
B、6
C、8
D、12

3、下列程序的输出结果是【 】。 #include <stdio.h> int fun1(int n); int fun2(int n); int main() { int n=5,sum; sum=fun1(n); printf("%d\n",sum); return 0; } int fun1(int n) { int i,sum=0; for(i=1;i<=n;i++) sum+=fun2(i); return sum; } int fun2(int n) { int i,sum=0; for(i=1;i<=n;i++) sum+=i; return sum; }
A、15
B、35
C、55
D、各函数中有同名的sum、n等变量,相互干扰,无法得到正确的值

8.4 函数的嵌套调用随堂测验

1、C语言规定了程序中各函数之间调用关系,以下说法正确的是【 】
A、既允许直接递归调用,也允许间接递归调用;
B、不允许直接递归调用,也不允许间接递归调用;
C、允许直接递归调用,但不允许间接递归调用;
D、不允许直接递归调用,但允许间接递归调用;

2、如果函数fa调用了函数fb,函数fb又调用了函数fa,则称这种函数调用过程为【 】。
A、函数的直接递归调用
B、函数的间接递归调用
C、函数的循环调用
D、C语言中不允许这种函数调用

3、已知第一位员工的奖金为5500元,其余员工的奖金,依次递增350元,编写函数求第7位员工的奖金,则正确的函数是【 】 #include<stdio.h> int bonus(int n); int main() { int n=7; printf("第%d位员工的奖金是:%d\n", n, bonus(n)); }
A、int bonus(int n) { int s; s=bonus(n-1)+350; return s; }
B、int bonus(int n) { int s; if(n==1) s=5500; else s=bonus(n-1)+350; return s; }
C、int bonus(int n) { int s; if(n==1) s=5500; else s=bonus(n)+350; return s; }
D、int bonus(int n); { int s; if(n==1) s=5500; else s=bonus(n-1)+350; return s; }

8.5 数组做为函数参数随堂测验

1、有以下程序,它的输出结果是【 】。 void fun (int x,int y,int z) { x=123; y=456; z=x+y; } int main() { int x=100, y=200,z=500; fun (x,y,z); printf("%d,%d,%d\n",x,y,z); return 0; }
A、100,200,500
B、123,456,579
C、100,200,579
D、100,200,300

2、以下程序的输出结果是【 】。 int fun (int x,int y,int z) { x=123; z=x+y; return z; } int main() { int x=100, y=200,z=500; z=fun(x,y,z); printf("%d,%d,%d\n",x,y,z); return 0; }
A、100,200,500
B、123,200,323
C、100,200,323
D、100,200,300

8.5 数组做为函数参数随堂测验

1、若用数组名作为函数调用的实参,则传递给形参的是【 】
A、数组第一个元素的地址值;
B、数组第一个元素的值;
C、数组中所有元素的值;
D、数组元素的个数;

2、若有以下程序段: int main() { int a[10],m=10,x; x=fun(a,m); } 则定义函数fun时,不正确的函数首部形式是【 】。
A、int fun(int a,int m)
B、int fun(int a[ ],int n)
C、int fun(int a[10],int m)
D、int fun(int p[ ],int x)

3、以下程序的输出结果是【 】 。 int f(int b[],int m,int n) { int i,s=0; for(i=m;i<n;i=i+2) s=s+b[i]; return s; } int main() { int x,a[]={ 1,2,3,4,5,6,7,8,9,10,}; x=f(a,2,8); printf("%d\n",x); return 0; }
A、15
B、24
C、33
D、55

8.5 数组做为函数参数随堂测验

1、若有以下程序段: int main() { int a[3][10],m; m=fun(a); } 则定义函数fun时,不正确的函数首部形式是【 】。
A、int fun(int array[][6])
B、int fun(int a[3][])
C、int fun(int a[][4])
D、int fun(array[2][5])

2、下列程序的功能是调用函数计算二维数组所有元素之和。代码中"_____"处应填写的是【 】。 #include <stdio.h> int fun( _____ ) { int i,j,t=0; for(i=0;i<m;i++) for(j=0;j<n;j++) t=t+b[i][j]; return(t); } int main() { int a[2][3]={ 1,2,3,4,5,6}; printf("%d\n",fun(a,2,3)); return(0); }
A、int a,int m,int n
B、int a[2][3],int m,int n
C、int b[2][3],int m,int n
D、int b[2][ ],int m,int n

8.6 局部变量与全局变量随堂测验

1、如果一个函数位于C程序文件的上部,且在该函数的复合语句中定义了一个变量,则该变量为【 】。
A、全局变量,在本程序文件范围内有效
B、局部变量,只在该函数内有效
C、局部变量,只在该复合语句中有效
D、定义无效,为非法变量

2、以下程序输出的t值是【 】 #include <stdio.h> int main() { int i=0,j=6; int a[7]={ 1,2,3,4,5,6,7}; while(i<j) { int t; t=a[i]; a[i++]=a[j]; a[j--]=t; } printf("%d",t); return 0; }
A、3
B、4
C、5
D、编译出错

3、以下程序的运行结果是【 】 int a=11,b=15; int f(int a,int b) { int m; m=a<b?a:b; return m; } void main() { int a=10; printf("%d",f(a,b)); }
A、10
B、11
C、15
D、编译出错

4、关于变量的作用域,下列描述中错误的是【 】.
A、局部变量在整个函数的运行周期中有效
B、全局变量的作用域为整个程序的运行周期
C、当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量
D、全局变量会覆盖掉所有与它重名的局部变量

8.6 局部变量与全局变量随堂测验

1、关于C语言中的全局变量与局部变量,下列描述中正确的是【 】
A、全局变量的生存期一定比static局部变量的时间长
B、局部变量的生存期只是它所在的函数
C、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
D、static类别变量的生存周期贯穿于整个程序的运行期间。

2、关于static存储类,以下叙述中正确的是【 】。
A、只能用来定义局部变量。
B、static变量的生存期贯穿于整个程序的运行期间。
C、只能用来定义全局变量。
D、在定义完static变量且没有给其赋初始值时,该变量的初值不确定

3、以下程序的输出结果是【 】 #include <stdio.h> int f(int x[],int n) { static int s=0,i; for(i=0;i<n;i++) s+=x[i]; return s; } int main() { int a[5]={ 1,2,3,4,5},b[3]={ 6,7,8},s=0; s=f(a,5)+f(b,3); printf("%d\n",s); return 0; }
A、15
B、21
C、36
D、51

4、下列程序的输出结果是【 】。 int m=3; int fun(int x,int y) { int m=10; return(x*y-m); } int main() { int a=7,b=5; printf("%d\n",fun(a,b)/m); return 0; }
A、2
B、3
C、8
D、10

第8周编程练习

1、编写判素数函数。

2、编写两个函数,分别求两个整数的最大公约数和最小公倍数。

第9周 指针

9.1 什么是指针随堂测验

1、若有语句: int a=4,*p=&a; 下面均代表地址的一组选项是( )。
A、a, p, &*a
B、*&a, &a, *p
C、&a, p, &*p
D、*&p, *p, &a

9.2指针变量的定义与引用随堂测验

1、设有语句: int k=1,*p1=&k,*p2=&k; 以下不能正确执行的赋值语句是( )。
A、p1=k;
B、p1=p2;
C、*p1=*p2;
D、k=*p1+*p2;

2、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p=&n; *p=*pk*(*pm); printf(“%d\n”,n); return 0; }
A、4
B、6
C、8
D、10

9.3指针变量作为函数参数随堂测验

1、以下程序的输出结果是( )。 #include <stdio.h> void sub(double x,double *y,double *z) { *y=*y-1.0; *z=*z+x; } int main(void) { double a=2.5,b=9.0,*pa,*pb; pa=&a; pb=&b; sub(b-a,pa,pb); printf(“%lf\n”,a); return 0; }
A、9.000000
B、1.500000
C、8.000000
D、10.500000

2、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果,能正确执行此功能的函数是( )。
A、funa(int *x,int *y) { int *p; *p=*x; *x=*y; *y=*p; }
B、funb(int x,int y) { int t; t=x; x=y; y=t; }
C、func(int *x,int *y) { *x=*y; *y=*x; }
D、fund(int *x,int *y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; }

9.4 指针与数组随堂测验

1、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { int a[]={ 2,4,6,8,10},y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y=y+*(p+x); printf(“%d\n”,y); return 0; }
A、17
B、18
C、19
D、20

2、以下主函数中调用整型函数fun,根据调用语句,正确的函数首部是( )。 int main(void) { int a[20],n; . . . fun(a,&n); . . . return 0; }
A、fun(*a,*n)
B、int fun(int *s,*m)
C、fun(int *b,int *x)
D、int fun(int x[],int n)

3、以下函数从数组a下标为0到n的元素中查找最大值并返回调用函数,在函数的if语句中的表达式是( )。 int findmax(int *a,int n) { int *p,*s; for(p=a,s=a;p<a+n;p++) if( ) s=p; return (*s); }
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s

9.5通过指针引用字符串随堂测验

1、以下程序的输出结果是()。 #include <stdio.h> #include <string.h> int main(void) { char *q1=”abc”,*q2=”ABC”,str[50]=”xyz”; strcpy(str+2,strcat(q1,q2)); printf(“%s\n”,str); return 0; }
A、xyabcABC
B、zabcABC
C、xyzabcABC
D、yzabcABC

2、以下程序的输出结果是( )。 #include <stdio.h> int main(void) { char a[]=”Language”,b[]=”program”; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf(“%c”, *(p1+k)); return 0; }
A、gae
B、ga
C、Language
D、有语法错

3、以下函数的功能是( )。 #include <stdio.h> #include <string.h> int main(void) { int i=0,n=0; char s[80],*p; p=s; strcpy(p,"It is a book."); for(;*p!='\0';p++) if(*p==' ') i=0; else if(i==0) { n++; i=1; } printf("n=%d\n",n); } A. B. C. D.
A、统计字符串中的单词个数
B、统计字符串中的空格个数
C、统计字符串中的字母个数
D、统计字符串中的全部字符个数

第9周 编程练习

1、从键盘为数组c(数组中有10个整型元素)输入值,然后找出数组c中大于10且下标是偶数的数组元素,将这些数保存到另一个数组d中。要求必须使用指针实现。

2、从键盘为输入一个字符串存放在字符数组a中,大小为100,判断输入的字符串是否为回文,如果是输出“YES”,否则输出“NO”。要求必须使用指针实现。所谓回文是顺序读和倒序读完全一样的字符串,例如字符串“eye”是回文。

第10周 结构体与链表(一)

10.1 结构体的声明、定义与引用随堂测验

1、下列关于结构体的描述,不正确的是【】。
A、结构体是由一批数据组合而成的一种新的数据类型,组成结构体数据的每个数据称为结构体数据的成员。
B、结构体通常用来表示类型不同但是又相关的若干数据。
C、结构体类型的成员可以是基本数据类型、数组、指针等,但不是其他结构体类型。
D、结构体类型并非只有一种,不同的结构体类型各自包含不同的成员。

2、若声明结构体类型 struct aa { int a; char c; } 下列选项中,说法不正确的是【】。
A、语法错误
B、结构体类型名是aa
C、结构体成员名是a和c,它们的类型分别是整型和字符型。
D、struct是声明结构体类型的关键字

3、下列定义结构体变量,不正确形式是【】。
A、struct { int a; double x; } st;
B、struct aa { int a; double x; }; struct aa st[3];
C、struct aa { int a; double x; }; struct *p;
D、struct aa { int a; double; } st; struct aa *p=&st;

4、若有以下结构体声明和定义,则x所占存储单元的字节数是【】。 struct node { int a; char b[5]; double c; }; struct node x;
A、7
B、8
C、13
D、17

10.3 结构体与指针随堂测验

1、若有以下结构体声明和变量定义,则不能正确执行的语句是【】。 struct ss { char name[10]; char sex; int age; } stu1={ "XiaoQiang",'M',20},stu2,*p;
A、stu2=stu1;
B、p=&stu1;
C、p=&stu2;
D、*p=stu1;

2、对以下结构体变量stu1中成员age的引用,不正确的是【】。 struct student { char name[20]; int age; } stu1,*p; p=&stu1;
A、student.age
B、stu1.age
C、p->age
D、(*p).age

3、有以下定义,若要使指针p指向data中的成员a,正确的赋值语句是【】。 struct { int a; float b; } data; int *p;
A、p=&a;
B、p=data.a;
C、p=&data.a;
D、p=&data->a;

4、若有以下结构体声明,下列结构体数组初始化形式不正确的是【】。 struct ss { char name[10]; double w; };
A、struct ss pers[3]={ { "Harry",60},{ "Lily",53.2}};
B、struct ss pers[3]={ "Harry",60,"Lily",53.2,"Tom",72.8};
C、struct ss pers[ ]={ { "Harry",60},{ "Lily",53.2},{ "Tom",72.8}};
D、struct ss pers[3]={ "Harry",60},{ "Lily",53.2},{ "Tom",72.8};

第11周 结构体与链表(二)

11.4单链表结点的插入和删除随堂测验

1、已知链表结构声明和变量定义,判断链表是否为空链表的条件是【】。
A、h->next=NULL
B、h->next=='\0'
C、h->next!=NULL
D、h->next=’\0’

2、已知链表结构和指向链表结点的指针h,p,s,实现将s所指结点插入到结点值为‘B’的结点之后的语句是【】。
A、s->next=p->next; p->next=s;
B、p=p->next; s->next=p;
C、p=p->next; s->next=p->next;
D、s->next=p->next->next; p->next->next=s;

3、已知指针p,q,r分别指向单链表中的3个结点,如图所示。现要将q所指的结点从链表中删除,同时保持链表的连续,则下列不能完成指定操作的语句是【】。
A、p->next=q->next
B、p->next=p->next->next;
C、p->next=r;
D、p=p->next;

学习通C语言程序设计_71

学习通C语言程序设计_71是一门涵盖了C语言基础知识、算法与数据结构、计算机操作系统等多方面的课程。在这门课程中,我们将学习C语言的基础语法和应用,以及如何使用C语言编写程序。

C语言基础语法

C语言基础语法是C语言编程的基础,我们需要掌握C语言的数据类型、运算符、控制语句和函数等知识。在学习这些知识之前,我们需要了解C语言的编译过程和运行过程。

C语言的编译过程分为四个阶段:预处理、编译、汇编和链接。其中,预处理阶段会处理头文件和宏定义等内容;编译阶段会将源代码转换成汇编代码;汇编阶段将汇编代码转换成机器代码;链接阶段将多个目标文件链接成可执行文件。

C语言的运行过程分为编译时和运行时两个阶段。编译时会将源代码编译成可执行文件,而运行时则是执行可执行文件。

算法与数据结构

算法与数据结构是计算机科学的重要基础,也是编程的必备知识。在这门课程中,我们将学习常见的排序算法、查找算法和树结构等常用数据结构。

排序算法是将一组无序数据按照一定规则进行排序的过程。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。

查找算法是在一个有序数据集合中查找某一个特定元素的过程。常见的查找算法包括二分查找、插值查找、斐波那契查找等。

树结构是一种非线性数据结构,具有层次化的结构。常见的树结构包括二叉树、红黑树、AVL树、B树等。

计算机操作系统

计算机操作系统是计算机系统的核心组成部分,负责管理计算机的资源和提供各种服务。在这门课程中,我们将学习操作系统的基本概念、进程管理、内存管理、文件系统等内容。

进程是计算机系统中一个正在执行的程序,它需要计算机的资源来完成任务。进程管理是管理进程的运行状态、分配资源、调度等工作。

内存管理是操作系统管理计算机内存的过程,包括内存分配、内存回收、虚拟内存等内容。

文件系统是操作系统管理计算机文件存储的过程,包括文件的创建、读取、写入等操作。

总结

学习通C语言程序设计_71是一门非常实用的课程,它涵盖了C语言基础语法、算法与数据结构、计算机操作系统等多方面的知识。通过学习这门课程,我们可以深入了解计算机编程的本质,掌握C语言编程的基本技能,为以后的编程学习打下坚实的基础。