给出下面几个C语言程序段的时间复杂度。要求写出计算过程 ,谢谢了,在线等。

给出下面几个C语言程序段的时间复杂度。要求写出计算过程 ,谢谢了,在线等。,第1张

求时间复杂度只需找出执行次数最多的那条语句。

对于第一个,设执行次数为k,则i最终等于k^5=n; 解出k即可;

对于第二个,设执行次数为k,则最终有k^2=n;解出k;

对于第三个,if语句执行n/3次,单独看里面的for执行(n-n/3)次,结合if语句,则最终有

(n-n/3)n/3 ,时间复杂度一眼便知

第一个if不满足条件

然后执行c=a; ,即c=3

然后第二个if也不满足条件所以直接输出   3,5,3

也就是俩个if后面的语句 a=b;和c=b;都不执行

材料/工具:Excel2010

宏是一些指令集,每个人在制作表格的过程中也许会有多种功能,而一直重复做的话会非常繁琐,因此就可以通过宏录制来节约时间简化步骤,对于提高工作效率是非常有好处的。对于经常使用excel表格来工作的话,能有效地提高工作,让自己变得更轻松。

1、我们这里为每一行都填充第一个数字

2、那么直接点击导航栏中的视图,在这里能进行宏的定义。

3、接着选择使用相对引用,然后再点击录制。

4、接着对于宏进行命名和定义快捷键,这样会加快工作效率。

5、接着录制。然后在第一行里将所有的行都复制上第一个数字,填充好

6、接着点击停止录制,这样一个宏定义就做好了。

7、接着将鼠标点击第二行的第一列,这时候再宏,或者直接按住快捷键也能直接执行宏定义。

8、点击执行,如果自己有宏快捷键的话,直接按快捷键就很容易做好了,能很快地将表格做好,效率非常高。

1.一个C程序的执行是从( A )。

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C) 本程序的main函数开始,到本程序文件的最后一个函数结束

D) 本程序文件的第一个函数开始,到本程序的main函数结束

2.以下叙述正确的是( C )。

A) 在C程序中,main函数必须位于程序的最前面

B) C程序的每行中只能写一条语句

C) C语言本身没有输入输出语句

D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3.以下叙述不正确的是( D )。

A) 一个C源程序可由一个或多个函数组成

B) 一个C源程序必须包含一个main函数

C) C程序的基本组成单位是函数

D) 在C程序中,注释说明只能位于一条语句的后面

4.C语言规定,在一个源程序中,main函数的位置( C )。

A) 必须在最开始 B) 必须在系统调用的库函数的后面

C) 可以任意 D) 必须在最后

5.一个C语言源程序是由( B )。

A) 一个主程序和若干子程序组成 B) 函数组成

C) 若干过程组成 D) 若干子程序组成

二 填空题

1.C源程序的基本单位是 函数 。

2.一个C源程序中至少应包括一个 main函数 。

3.在一个C源程序中,注释部分两侧的分界符分别为 / 和 / 。

4.一个函数是由两部分组成的,它们分别是 函数名 和 函数体 。

5.在C语言中,一个函数的函数体一般包括 声明部分 和 执行部分 。

第三章 数据类型、运算符与表达式

一 单项选择题

1.下面四个选项中,均不是c语言关键字的选项是( A )。

A) define IF Type B) getc char printf

C) include scanf case D) while go pow

2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C )。

A) 必须为字母 B) 必须为下划线

C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符

3.下列四个选项中,均是C语言关键字的选项是( B )。

A) auto enum include B) switch typedef continue

C) signed union scanf D) if struct type

4.下面四个选项中,均是不合法的用户标识符的选项是( C )。

A) A P_0 do B) float la0 _A

C) b-a goto int D) _123 temp int

5.以下有4组用户标识符,其中合法的一组是( C )。

A) For -sub Case B) 4d DO Size

C) f2_G3 IF abc D) WORD void define

二 填空题

1.若x和a均是int型变量,则计算表达式(1)后的x值为 12 ,计算表达式(2)后的x值为 4 。

(1) x=(a=4, 62)

(2) x=a=4, 62

2.若a是int型变量,则表达式(a=45, a2), a+6的值为 26 。

3.若b是int型变量,则表达式b=25/3%3的值为 2 。

4.若s是int型变量,且s=6 则下面表达式s%2+(s+1)%2的值为 1 。

5.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。

6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为 10 ,n的值为 6 。

7.若有定义:int b=7;float a=25,c=47;则表达式a+(int)(b/3(int)(a+c)/2)%4的值为 45 。

8.若有定义:int a=2,b=3;float x=35,y=25;则表达式(float)(a+b)/2+(int)x%(int)y的值为 35 。

9.若有定义:int x=3,y=2;float a=25,b=35;则表达式(x+y)%2+(int)a/(int)b的值为 1 。

10.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。

第四章 最简单的C程序设计——顺序程序设计

一 单项选择题 1~5 BDDAB

1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式( B )。

A) 从左起输出该字符串,右补空格

B) 按原字符长从左向右全部输出

C) 右对齐输出该字串,左补空格

D) 输出错误信息

2.已有定义int a= -2; 和输出语句 printf(“%8x”,a); 以下正确的叙述是( D )。

A) 整型变量的输出形式只有%d一种

B) %x是格式符的一种,它可以适用于任何一种类型的数据

C) %x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的

D) %8x不是错误的格式符,其中数字8规定了输出字段的宽度

3.若x, y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是

( D )。

A) scanf(“%d %x, %le”, &x, &y, &z);

B) scanf(“%2d %d, %lf”, &x, &y, &z);

C) scanf(“%x %d %o”, &x, &y);

D) scanf(“%x %o%62f”, &x, &y, &z);

4.以下程序的输出结果是( D )。

main( )

{ int k=17;

printf("%d,%o,%x\n",k,k,k);

}

A)17,021,0x11 B)17,17,17

B)17,0x11,021 D)17,21,11

5.下列程序的运行结果是( B )。

#include <stdioh>

main()

{ int a=2,c=5;

printf("a=%d,b=%d\n",a,c);

}

A) a=%2,b=%5 B) a=2,b=5

C) a=d,b=d D) a=2,c=5

二 填空题

1.下面程序的运行结果是 i:dec=4,oct=4,hex=4,unsigned=65531 。

main()

{

short i;

i= -4;

printf(“\ni: dec=%d, oct=%o, hex=%x, unsigned=%u\n”, i, i, i, i);

}

2.若想通过以下输入语句使a=50,b=4,c=3,则输入数据的形式应该是 50,4,c=3 。

int b,c; float a;

scanf("%f,%d,c=%d",&a,&b,&c);

3.下列程序的输出结果是1600,请填空。

main()

{ int a=9, b=2;

float x= 66 , y=11,z;

z=a/2+bx/y+1/2;

printf("%52f\n", z );

}

4.在printf格式字符中,只能输出一个字符的格式字符是 c ;用于输出字符串的格式字符是 s ;以小数形式输出实数的格式字符是 f ;以标准指数形式输出实数的格式字符是 e 。

三 编程题

1 若a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1=’a’, c2=’b’。想得到以下的输出格式和结果,请写出完整的程序(包括定义变量类型和设计输出)。

要求输出的结果如下:

a= <空格>3 <空格><空格> b= <空格> 4<空格><空格> c= <空格>5

x=1200000, y=2400000, z= -3600000

x+y=<空格>360<空格><空格> y+z = -120<空格><空格>z+x= -240

u=<空格>51274<空格><空格>n=<空格><空格><空格>128756

c1= a <空格>or<空格>97(ASCII)

c2= B <空格>or<空格>98(ASCII)

/

void main()

{

int a, b, c;

unsigned u;

long int n;

float x, y, z;

char c1,c2;

a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1='a', c2='b';

printf("a=%2d b=%2d c=%2d\n", a, b, c);

printf("x=%f, y=%f, z=%+f\n");

printf("x+y=%52f y+z =%+52f z+x=%+52f\n", x+y, y+z, z+x);

printf("u=%6d n=%9d\n");

printf("c1=%c or %d(ASCII)\n", c1, c1);

printf("c2=%c or %d(ASCII)\n", c2-32, c2);

}

/

2 输入一个华氏温度,要求输出摄氏温度。公式为

输出要有文字说明,取2位小数。

/

void main()

{

float c, f;

printf("输入一个华氏温度:\n");

scanf("%f", &f);

c = 50/90(f-32);

printf("\n输入的华氏温度 %2f,摄氏温度为: %2f\n", f, c);

}

/

3 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。

/

void main()

{

char c1, c2;

c1 = getchar();

c2 = getchar();

putchar(c1);

putchar(c2);

printf("\nc1 = %c; c2 = %c\n", c1, c2);

}

/

第五章 选择结构程序设计

一 单项选择题

1.逻辑运算符两侧运算对象的数据类型是( D )。

A) 只能是0或1

B) 只能是0或非0正数

C) 只能是整型或字符型数据

D) 可以是任何类型的数据

2.已知x=43, ch='A', y=0;则表达式(x>=y&&ch<'B'&&!y)的值是( C )。

A) 0 B) 语法错 C) 1 D) “假”

3.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( B )。

if(x>y)

z=x;x=y;y=z;

A) x=10,y=20,z=30 B) x=20,y=30,z=30

C) x=20,y=30,z=10 D) x=20,y=30,z=20

4.执行下列语句后a的值为( 2 ),b的值为( 1 )。( C )

int a, b, c;

a=b=c=1;

++a|| ++b && ++c;

A) 错误 1 B) 2 2 C) 2 1 D) 1 1

5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。

A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2

二 填空题

1.若从键盘输入58,则以下程序输出的结果是 585858 。

main()

{ int a;

scanf(“%d”,&a);

if(a>50) printf(“%d”,a);

if(a>40) printf(“%d”,a);

if(a>30) printf(“%d”,a);

}

2.下面程序的运行结果是 -1 。

main()

{

int a=2, b=3, c;

c=a;

if(a>b) c=1;

else if(a==b) c=0;

else c=-1;

printf(“%d\n”,c);

}

3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。

main()

{

int x, y, z, c;

scanf(“%d %d %d”, &x, &y, &z);

if( x<y )

if( x<z )

if( y<z )

printf(“ %d %d %d”, x, y, z);

}

4.如果运行时输入字符Q,则下面程序的运行结果是 Q 。

main()

{

char ch;

scanf(“%c”, &ch);

ch=(ch>=‘A’&& ch<=‘Z’) (ch+32):ch;

ch=(ch>=‘a’&& ch<=‘z’) (ch-32):ch;

printf(“%c”, ch);

}

5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 x==0 。

第六章 循环控制

一 单项选择题

1.下面程序段的运行结果是( C )。

int n=0;

while(n++<=2);

printf(“%d”,n);

A) 2 B) 3 C) 4 D) 有语法错

2.设有程序段:

t=0;

while(printf(“”))

{t++;

if(t<3) break;

}

下面描述正确的是( D )。

A) 其中循环控制表达式与0等价

B) 其中循环控制表达式与'0'等价

C) 其中循环控制表达式是不合法的

D) 以上说法都不对

3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。

#include <stdioh>

main()

{int a,b,t;

scanf(“%d%d”,&a,&b);

while( ___________ )

{if(a>b)

printf(“%d,%d\n”,a,b);

scanf("%d%d",&a,&b);

}

}

A) !a=b B) a!=b C) a==b D) a=b

4.C语言中,while和do-while循环的主要区别是( A )。

A) do-while的循环体至少无条件执行一次

B) while的循环控制条件比do-while的循环控制条件更严格

C) do-while允许从外部转到循环体内

D) do-while的循环体不能是复合语句

5.对以下程序段描述正确的是( C )。

x=-1;

do

while(!x);

A) 是死循环 B) 循环执行二次

C) 循环执行一次 D) 有语法错误

二 填空题

1.以下程序运行后的输出结果是 52 。

main()

{ int i=10, j=0;

do

while(i>2);

printf("%d\n",j);

}

2.设有以下程序:

main()

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298,则输出结果为 8921 。

3.若输入字母b,程序输出结果为 b, B ;若输入字符,程序将怎样 等待重新输入 。

#include<stdioh>

main()

{char c1, c2;

c1=getchar();

while(c1<97||c1>122)

c1=getchar();

c2=c1-32;

printf("%c, %c\n",c1, c2);

}

4.用以下程序计算1到100的整数的累加和。

main()

{ int i=1, sum= 0 ;

for( ; i<=100 ; )

{sum+=i;

i++;

}

printf("sum=%d\n", sum );

}

5.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请填空。

main()

{ float x, amax, amin;

scanf(“%f”,&x);

amax=x;

amin=x;

while( x>=0 )

{if(x>amax) amax=x;

if( x<amin ) amin=x;

scanf(“%f”,&x);

}

printf("amax=%f\namin=%f\n",amax, amin);

}

宏可以做什么

所有你想同时完成的事情都可以让宏来一次完成,并且所有会不断重复的命令(比如说话或其他动作)都可以事先宏里面定义好

1、什么是宏?

宏是微软公司为其OFFICE软件包设计的一个特殊功能,目的是让用户文档中的一些任务自动化。OFFICE中的WORD和EXEAL都有宏。在下面的讨论中我们以WORD为例。

如果在Word中重复进行某项工作,可用宏使其自动执行。宏是将一系列的Word命令和指令组合在一起,形成一个命令,以实现任务执行的自动化。您可创建并执行一个宏,以替代人工进行一系列费时而重复的 Word *** 作。

以下是宏的一些典型应用:

加速日常编辑和格式设置

组合多个命令

使对话框中的选项更易于访问

使一系列复杂的任务自动执行

Word提供了两种创建宏的方法:宏录制器和Visual Basic编辑器。

宏录制器可帮助您开始创建宏。Word在Visual Basic for Applications编程语言中把宏录制为一系列的Word命令。

可在Visual Basic编辑器中打开已录制的宏,修改其中的指令。也可用Visual Basic编辑器创建包括Visual Basic指令的非常灵活和强有力的宏。

您可将宏保存到模板或文档中。在默认的情况下,Word将宏存贮在 Normal模板中,以便所有的Word文档均能使用。注意这一特点几乎为所有的宏病毒所利用

2、什么是宏病毒?

宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会 “感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。

如果某个文档中包含了宏病毒,我们称此文档感染了宏病毒;如果 WORD系统中的模板包含了宏病毒,我们称WORD系统感染了宏病毒。

虽然OFFICE97/Word97无法扫描软盘、硬盘或网络驱动器上的宏病毒(要得到这种保护,需要购买和安装专门的防病毒软件)。但当打开一个含有可能携带病毒的宏的文档时,它能够显示宏警告信息。

这样就可选择打开文档时是否要包含宏,如果希望文档包含要用到的宏(例如,单位所用的定货窗体),打开文档时就包含宏。

如果您并不希望在文档中包含宏,或者不了解文档的确切来源。例如,文档是作为电子邮件的附件收到的,或是来自网络或不安全的 Internet节点。在这种情况下,为了防止可能发生的病毒传染,打开文档过程中出现宏警告提示时最好选择“取消宏”。

OFFICE97软件包安装后,系统中包含有关于宏病毒防护的选项,其默认状态是允许“宏病毒保护”复选框。如果愿意,您可以终止系统对文档宏病毒的检查。当Word显示宏病毒警告信息时,清除“在打开带有宏或自定义内容的文档时提问”复选框。或者关闭宏检查:单击“工具”菜单中的“选项”命令,再单击“常规”选项卡,然后清除“宏病毒保护”复选框。

不过我强烈建议您不要取消宏病毒防护功能,否则您会失去这道防护宏病毒的天然屏障。

二、宏病毒的判断方法

虽然不是所有包含宏的文档都包含了宏病毒,但当有下列情况之一时,您可以百分之百地断定您的OFFICE文档或OFFICE系统中有宏病毒:

1、在打开“宏病毒防护功能”的情况下,当您打开一个您自己写的文档时,系统会会d出相应的警告框。而您清楚您并没有在其中使用宏或并不知道宏到底怎么用,那么您可以完全肯定您的文档已经感染了宏病毒。

2、同样是在打开“宏病毒防护功能”的情况下,您的OFFICE文档中一系列的文件都在打开时给出宏警告。由于在一般情况下我们很少使用到宏,所以当您看到成串的文档有宏警告时,可以肯定这些文档中有宏病毒。

3、如果软件中关于宏病毒防护选项启用后,不能在下次开机时依然保存。WORD97中提供了对宏病毒的防护功能,它可以在“工具/选项/常规”中进行设定。但有些宏病毒为了对付OFFICE97中提供的宏警告功能,它在感染系统(这通常只有在您关闭了宏病毒防护选项或者出现宏警告后您不留神选取了“启用宏”才有可能)后,会在您每次退出 OFFICE时自动屏蔽掉宏病毒防护选项。因此您一旦发现:您的机器中设置的宏病毒防护功能选项无法在两次启动WORD之间保持有效,则您的系统一定已经感染了宏病毒。也就是说一系列WORD模板、特别是normaldot 已经被感染。

鉴于绝大多数人都不需要或着不会使用“宏”这个功能,我们可以得出一个相当重要的结论:如果您的OFFICE文档在打开时,系统给出一个宏病毒警告框,那么您应该对这个文档保持高度警惕,它已被感染的几率极大。注意:简单地删除被宏病毒感染的文档并不能清除OFFICE系统中的宏病毒!

三、宏病毒的防治和清除

1、首选方法:用最新版的反病毒软件清除宏病毒。使用反病毒软件是一种高效、安全和方便的清除方法,也是一般计算机用户的首选方法。但是宏病毒并不象某些厂商或麻痹大意的人那样认为的有所谓“广谱”的查杀软件,这方面的突出例子就是ETHAN宏病毒。

ETHAN宏病毒相当隐蔽,比如您使用KV300 Z+、RAV V90(11)、 KILL 8503等反病毒软件(应该算比较新的版本了)都无法查出它。此外这个宏病毒能够悄悄取消WORD中宏病毒防护选项,并且某些情况下会把被感染的文档置为只读属性,从而更好地保存了自己。

因此,对付宏病毒应该和对付其它种类的病毒一样,也要尽量使用最新版的查杀病毒软件。无论你使用的是何种反病毒软件,及时升级是非常重要的。比如虽然KV300 Z+版不能查杀ETHAN宏病毒,但最新推出的KV300 Z++已经可以查杀它。

2、应急处理方法:用写字板或WORD 60文档作为清除宏病毒的桥梁。如果您的WORD系统没有感染宏病毒,但需要打开某个外来的、已查出感染有宏病毒的文档,而手头现有的反病毒软件又无法查杀它们,那么您可以试验用下面的方法来查杀文档中的宏病毒:打开这个包含了宏病毒的文档(当然是启用WORD中的“宏病毒防护”功能并在宏警告出现时选择“取消宏”),然后在“文件”菜单中选择“另存为”,将此文档改存成写字板(RTF)格式或WORD60格式。

在上述方法中,存成写字板格式是利用RTF文档格式没有宏,存成 WORD 60格式则是利用了WORD97文档在转换成WORD60格式时会失去宏的特点。写字板所用的rtf格式适用于文档中的内容限于文字和的情况下,如果文档内容中除了文字、外还有图形或表格,那么按 WORD60格式保存一般不会失去这些内容。

存盘后应该检查一下文档的完整性,如果文档内容没有任何丢失,并且在重新打开此文档时不再出现宏警告则大功告成。

计算机等级考试二级模拟试题4

基础知识与FOXBASE程序设计

(考试时间120分钟,满分100分)

一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)

下列各题A)、B)、C)、D)、四个有选项中,只有一个选项是正确的

(1)通常所说的主机主要包括

A)CPU B)CPU和内存

C)CPU、内存与外存 D)CPU、内存与硬盘

(2)在微机系统中,最基本的输入出模块BIOS存放在

A)RAM中 B)ROM中 C)硬盘中 D)寄存器中

(3)一个2424点阵的汉字字形信息所占的字节数为

A)2 B)24 C)32 D)72

(4)bit的意思是

A)字 B)字长 C)字节 D)二进制位

(5)某学校的工资管理程序属于

A)系统程序 B)应用程序

C)工具软件 D)文字处理软件

(6)与十六进制数BB等值的十进制数是

A)187 B)188 C)185 D)186

(7)设一张软盘已染上病毒的措施是

A)删除该软盘上的所有文件 B)格式化该软盘

C)删除该软盘上的所有可执行文件 C)删除该软盘上的所有批处理文件

(8)一张35英寸双面高密度软盘片的容量为

A)360KB B)720KB C)144MB D)12MB

(9)与二进制小数01等值的十六进制小数为

A)01 B)02 C)04 D)08

(10)DOS系统的热启动与冷启动的不同之处为热启动时

A)不检测键盘、处设接口与内存 B)不提示用户输入日期与时间

C)不用装入COMMAND COM文件 D)不能从软盘启动

(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令

A)COPY K1+K2+K3 K4 B)COPY K1+K2+K3+K4

C)COPY K1+K2+K3+K4 K4 D)COPY K4+K1+K2+K3

(12)下列文件名中可以作为批处理文件名的是

A)AUTOEXECC B)AUTOEXEC

C)ATXBAT D)AUTOTXT

(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令

A)DIR \ >PRN B)TYPE \ >PRN

C)DIR >PRN C)TYPE >PRN

(14)设可执行文件 ABCEXE 所需要的本该由键盘输入的数据已经按格式存放在文

件 XYZ 中,并要求执行结果放在文件 XYZ 中输入数据的后面 下列命令中正

确的是

A) ABC < XYZ > XYZ B) ABC >XYZ

C) ABC << XYZ >XYZ

(15)设当前盘中某一目录路径为 \A\B\C,当前目录为\A下列命令中肯定出错的是

A)MD \A\C B) CD C) MD \A\B\A D) MD \A\B

(16)设 A 盘的目录结构如下:

根目录

┌—————┬┴——┬———┬———┬————┐

│ │ │ │ │ │

ABC D1子目录 DXC QDAT D2子目录 AFOR

│ │

┌————┬—┴——┬———┐ ┌———┬———┐

│ │ │ │ │ │ │

BPAS D3子目录 YBAS AC A1C D4子目录 XYZC

┌————┬————┬————┐

│ │ │ │

QRC NAC ATXT BC

如果当前盘为 C 盘,A 盘的当前目录为\D2,则下列对 A 盘上文件QRC 的指定

中,合法的是

A)\D2\D4\QRC B)D4\QRC

C)A:D4\QRC D)A:D2\D4\QRC

(17)下列DOS命令中,有错误的是

A)TYPE AABFOR>CON B)TYPE ABFOR

C)COPY C CON D)COPY CON PRN

(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1TXT连接在C 盘根目录下

的文件XYZTXT的后面,正确的命令是

A)COPY C:\XYZTXT+AB1TXT

B)COPY AB1TXT>>C:\XYZTXT

C)TYPE AB1TXT>C:\XYZTXT

D)AB1TXT+C:\XYZTXT>C:\XYZTXT

(19)下列命令中合法的是

A)DISKCOPY A: A: B)DISKCOPY A: C:

C)DISKCOPY C: A: D)DISKCOPY C: D:

(20)设当前盘中某一目录路径为\A\B\C\D\XU,当前目录为\A要将根目录下扩展名

为C的所有文件复制到当前目录下,并将扩展名改为FOR,应使用命令

A)COPY \C FOR B)COPY C \A\FOR

C)COPY FOR \C D)COPY \A\C FOR

(21)FoxBASE数据库管理系统的数据模型是

A)结构型 B)关系型

C)网状型 D)层次型

(22)关系数据库管理系统存储与管理数据的基本形式是

A)关系树 B)二维表

C)结点路径 D)文本文件

(23)在关系运算中,查找满足一定条件的元组的运算称之为

A)复制 B)选择

C)投影 D)连接

(24)在一个FoxBASE数据库文件中有4个备注型字段,该数据库的备注文件数目是

A) 1 B) 4

C) 7 D)10

(25)在FoxBASE中,如果一个表达式包含数值运算、关系运算、逻辑运算和函数时,

运算的优先次序是

A)数值运算,关系运算、逻辑运算,函数

B)数值运算,逻辑运算,关系运算,函数

C)函数,数值运算,关系运算,逻辑运算

D)函数,数值运算,关系运算,数值运算

(26)某数据库文件共有10条记录,当前记录的序号为6。先执行命令SKIP 10, 再

执行命令EOF()。执行最后一条命令后显示的结果是

A)出错信息 B)11

C) T D) F

(27)用DIMENSION Q(2,3)命令定义数组Q,再对各数组元素赋值:Q(1,1)=1,

Q(1,2)=2,Q(1,3)=3,Q(2,1)=4,Q(2,2)=5,Q(2,3)=6然后再执行命令?Q(2),则

显示结果是

A)变量未定义的提示 B) 4

C) 2 D) F

(28)在一个关系中,能够唯一确定一个元组的属性或属性组合叫做

A)索引码 B)关键字

C)域 D)排序码

(29)假定N、C、L分别为数值型、字符型、逻辑型内存变量 在下面的表达式中错

误的表达式是

A)3N B)C-"A"

C)N=10ORL D)C>10

(30)使用DIMENSION命令定义数组后,各数组元素在没赋值之前的数据类型是

A)字符型 B)数值型

C)逻辑型 D)未定义

(31)在没有打开索引文件的情况下,就功能而言,一条APPEND命令相当于命令组

A)SKIP BOTTOM B)GOTO BOTTOM

INSERT BEFORE INSERT BOTTOM

C)GOTO EOF D)GOTO BOTTOM

INSERT INSERT

(32)某数值型字段的宽度定义为6,小数位为2该字段所能存放的最小数值是

A)0 C)-9999 C)-9999 D)-999999

(33)执行如下程序:

ST="FOXBASE"

UPPER(SIBSTR(ST,1,1))+LOWER(SUBSTR(ST,2))

屏幕的显示结果是

A)FOXBASE B)FoxBASE C)Foxbase D)foxBASE

(34)假定STUDENTDBF 数据库文件共有8条记录,当EOF()函数的值为逻辑真时, 执

行命令? RECNO()的输出是

A)1 B)7 C)8 D)9

(35)假定出生年月字段为日期型,日期格式为dd/mm/yy以下四组命令中各命令

A)LIST FOR SUBSTR(DTOC(出生年月),4,2)="97"

LIST FOR YEAR(出生年月)=1997

LIST FOB "97" $ DTOC(出生年月)

B)LIST FOR SUBSTR(DTOC(出生年月),7,2)="97"

LIST FOR YEAR(出生年月)=1997

LIST FOR "97" $ DTOC(出生年月)

C)LIST FOR SUBSTR(DTOC(出生年月),1,2)="97"

LIST FOR YEAR(出生年月)="1997"

LIST FOR "97" $ DTOC(出生年月)

D)LIST FOR SUBSTR(DTOC(出生年月),7,2)="97"

LIST FOR YEAR(出生年月)=1997

LIST FOE "97" $ 出生年

(36)一个有多条记录的数据库打开后,要在第一条记录后增加一条空记录, 应使用

命令

A)APPEND BLANK B)INSERT BLANK

C)APPEND BEFORE BLANK D)INSERT BEFORE BLANK

(37)在下列表达式中,结果为字符型的是

A)"125"-"100" B)"ABC"+"XYZ"="ABCXYZ"

C)CTOD("07/01/97") D)DTOC(DATE()) >"07/01/97"

(38)已打开数据库,其中出生年月字段为日期型,年龄字段为数值型。要计算每个今

年的年龄并把其值填入年龄字段中,应使用命令

A)REPLACE ALL 年龄 WITH YEAR(DATE())-YEAR(出生年月)

B)REPLACE ALL 年龄 WITH DATE()-出生年月

C)REPLACE ALL 年龄 WITH DTOC(DATE())-DTOC(出生年月)

D)REPLACE ALL 年龄 WITH VAL(SUBS(DTOC(DATE()),7,2)-SUBS(DTOC(出生年

月),7,2))

(39)在FoxBASE中,对数据库文件分别用COPY命令和COPY FILE命令进行复制时, 以

下叙述中错误的是

A)使用COPY命令时必须先打开数据库

B)使用COPY FILE 命令时数据库必须关闭

C)COPY FILE 命令可以同时复制备注文件

D)COPY 命令可以同时复制备注文件

(40)在图书数据库文件中,书号字段为字符型,要求将书号以字母D开头的所有图书

记录打上删除标记,应使用命令

A)DELETE FOR "D" $ 书号

B)DELETE FOR SUBSTR (书号,1,1)="D"

C)DELETE FOR 书号=D

D)DELETE FOR RIGHT (书号,1)="D"

(41)在已打开的数据库文件中有"姓名"字段,此外又定义了一个内存变量"姓名"

要把内存变量姓名的值传送给当前记录的姓名字段,应使用命令

A)姓名=M->姓名

B)RAPLACE 姓名 WITH M->姓名

C)STORE M->姓名 TO 姓名

D)GATHER FROM M->姓名 FIELDS 姓名

(42)在圆点提示符状态下,将A盘根目录下的STDPRG 文件复制到C盘的\DB目录中,

应使用命令

A)COPY A:\STDPRG C:\DB

B)COPY FILE A:\STDPRG TO C:\DB\STDPRG

C)COPY A:\STDPRG TO C:\DB\STDPRG

D)COPY TO C:\DB\STDPRG

(43)设STUDENTDBF 数据库中共有100条记录,执行如下命令序列:

USE STUDENT

GOTO 10

DISPLAY ALL

RECNO()

执行最后一条命令后一条命令后,屏幕显示的值是

A)1 B)10 C)100 D)101

(44)有以下程序段:

@5,10 SAY "请输入1—4" GET ANS

READ

CX="PG"+ANS+"PRG"

DO &CX

其功能是根据用户输入的数字,转去执行子程序PG1、PG2、PG3、PG4之一。但该程

序段有一个明显的错误,为此应当作以下修改

A) 增加STORE " " TO ANS 作为第一条命令

B) 把@ 5,10 sAY "请输入1—4"TO ANS 命令改为 ACCEPT" 请输入1—4" TO ANS

C) 把 CX="PG"+ANS+"PRG" 命令中的"+"PRG" 部分去掉

D) 把DO &CX 命令的&去掉

(45)有如下程序段:

SET TALK OFF

CLEAR

@ 2,20 SAY"请选择菜单项"

@ 4,15 PROMPT "1-修改"

@ 5,15 PROMPT "2-查询"

@ 6,15 PROMPT "3-报表"

@ 7,15 PROMPT "0-退出"

MENU TO ANS

ANS

执行该程序段后,如果移动光带选择"0-退出"项,则内存变量ANS的值应是

A)4 B)"0" C)0 D)"4"

(46) 现有向希望工程捐款的数据库文件,内容如下:

RECORD#姓名 捐款数额 捐款日期

1 欧阳惠 30000 07/12/89

2 李明 23000 02/24/90

3 杨霞 8000 11/05/91

4 李明 17000 02/24/92

5 杨霞 40000 11/05/92

6 欧阳惠 20000 07/12/93

7 李明 13700 02/24/94

8 杨霞 21500 11/05/95

9 欧阳惠 31300 07/12/96

其中捐款数额字段为数值型假定库文件及按姓名建立的索引文件均已打开,为

统计各位捐款者的捐款总额,应使用命令

A)SUM 捐款数额TO JK

B)COUNT 捐款数额TO JK

C)AVERAGE 捐款数额TO JK

D)TOTAL ON 姓名 TO JK FIELDS 捐款数额

(47)已打开数据库文件,其中出生日期字段为日期型, 下列表达式中结果不是日期

型的为

A)CTOD("09/18/97") B)出生日期+5

C)DTOC(出生日期) D)DATE()-2

(48)执行以下命令序列

SELEC1

USE STUDENT

LIST

record# 学 号 姓 名 性别 所在专业

1 9801 欧阳惠 女 计算机

2 9802 李 明 男 应用数学

3 9803 杨 霞 女 电子工程

4 9804 郭 昊 男 计算机

5 9805 何文强 男 电子工程

SELECT 2

USE SC ALIAS W

LIST

record # 学 号 课程号

1 9801 C1

2 9801 C2

3 9802 C2

4 9803 C2

5 9803 C2

6 9804 C1

7 9804 C4

SELECT 1

JOIN WITH W TO LK FOR学号=B->学号ANDB->课程号="C1" FIELDS

学号,姓名,所在专业

USE LK

LIST 姓名

最后一条LIST命令显示的姓名依次是

A)欧阳惠,李明 B)欧阳惠,郭昊

C)欧阳惠,郭昊,何文强 D)李明,杨霞,郭昊

(49)执行如下命令序列

USE STUDENT

LIST

record# 姓 名 性别 入学成绩

1 王中一 男 4700

2 李 慧 女 4240

3 程 凯 男 4870

4 陈嘉伟 男 3890

5 刘广田 男 5790

6 张晓敏 女 4460

SORT TO ST ON 性别/D,入学成绩

USE ST

LIST 姓名

最后一条LIST命令显示的姓名顺序是

A)李慧,张晓敏,陈嘉伟,王中一,程凯,刘广田

B)王中一,程凯,陈嘉伟,刘广田,李慧,张晓敏

C)李慧,张晓敏,王中一,程凯,陈嘉伟,刘广田

D)张晓敏,李慧,刘广田,程凯,王中一,陈嘉伟

(50)执行如下程序

SET TALK OFF

S=0

I=1

INPUT"N="TO N

DO WHILE S<=N

S=S+I

I=I+1

ENDDO

S

SET TALK ON

如果输入N值为5,则最后S的显示值是

A)1 B)3 C)5 D)6

二、填空题(每空2分,共40分)

(1)自动批处理文件名为____(1)

(2)DOS命令分为内部命令与外部命令,COMP命令属于____(2)命令

(3)设当前盘为C盘,现要用一条DOS命令在打印机上输出A 盘当前目录下所有扩展

名为DAT的文件内容这一条DOS命令应为_____(3)

(4)要将当前盘当前目录下的子目录XYZ中所有扩展名为BAK的文件名改成扩展名

为FOR,应使用的DOS命令为____(4)

(5)设DOS外部命令文件所在的路径均已用PATH命令打通 现要将当前盘当前目录下的

文件WSTTXT设置为只读属性,应使用的DOS命令为____(5)

(6)用格式输出命令@<坐标>SAY设计的报表,如果需要打印输出, 应当使用设置命

令____(6)如果要在屏幕上输出,应当使用设置命令____(7)

(7)在FoxBASE的圆点状态,要调用过程文件ABCPRG中的一个过程ZZ,必须首先用

____(8)命令打开这个过程文件;然后再用____(9)命令运行它

(8)设有职工数据库文件,其内容是:

编号 姓名 部门 工资 奖金

1001 常胜 车间 850 200

1002 汪洋 车间 700 200

1003 陆地 车间 680 200

2001 林木 设计科 900 150

2002 陈路 设计科 1200 150

3004 孙海 财务科 900 100

3006 李扬 财务科 1300 100

3010 张虎 财务科 1100 100

请对以下程序或命令的执行结果依次填空:

USE 职工

TOTAL ON 部门 TO TEMP

USE TEMP

SORT ON 工资 TO TEMP1

USE TEMP1

DISPLAY 部门,工资,奖金

显示的结果是:______(10)

USE 职工

AVERVGE 工资 TO a FOR 部门="财务科"

变量 a 的值是:_____(11)

INDEX ON 工资 TO idx1

GO 1

编号,姓名

显示结果是:_____(12)

SEEK 900

SKIP 3

工资+奖金

显示结果是:_____(13)

LOCATE FOR 工资=900

CONTINUE

姓名

显示结果是:_____(14)

SUM 奖全 TO b FOR SUBSTR (编号,1,1)="1"

(9)在学生数据库中,年龄字段为N型,标志字段为L型,请填空:

USE 学生

INDEX ON 年龄 TO idx2

将记录指针定位在第一个年龄是20的记录上,应使用命令_____(16)

显示所有年龄为20的学生记录,应使用命令DISPLAY ALL_____(17)

执行下列命令

SET INDEX TO

GO 11

之后,把从记录号11到末记录的标志字段设置为逻辑真,应使用命令:

REPLACE 标志 WITH T____(18)

(10)设有职工(编号,姓名,职称,基本工资)和工资(编号,…,实发工资)两个数据

库文件,如下程序段用关联方法显示所有职工的编号,姓名,职称,基本工资和实发工资

的数据,请填空:

SELECT 1

USE 工资 ALIAS GZ

INDEX ON 编号 TO idx3

SELECT 2

USE 职工

SET RELATION ON _____(19)

LIST 编号,姓名,职称,基本工资,_____(20)实发工资

程序是:

int i=5, s=0;

do

if(i%2) continue;

else s+=i;

while(--i);

运行过程:

i=5,s=0

进入循环,i%2=5%2=1,为真,执行continue;

程序回到do语句:还是i=5,i%2还是1,再回到do,成为死循环。

这是我的理解。

世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由BWKernighan和DMRitchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。

当代最优秀的程序设计语言

早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它 *** 作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。

C语言的特点

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的 *** 作。由于C语言实现了对硬件的编程 *** 作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

C语言版本

目前最流行的C语言有以下几种:

·Microsoft C 或称 MS C

·Borland Turbo C 或称 Turbo C

·AT&T C

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

面向对象的程序设计语言

在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的最新版本是Borland C++45,Symantec C++61,和Microsoft VisualC++ 20。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C和C++

但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。

《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?

学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。

那么,我们如何学好《C程序设计》呢?

一.学好C语言的运算符和运算顺序

这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。

先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:

(1) 58/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;

(2)a = 3;b = 5;c =++ a b ;d =a + + b;

对于c=++ab来说,按表中所列顺序,+ +先执行,后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为45=20而不是35=15了;而对于d=a++b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;

(3)(a = 3,b = 5,b+ = a,c = b 5)

例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。

(4)a=5;b=6;c=a>ba:b;

例中的a>ba:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。

二.学好C语言的四种程序结构

(1)顺序结构

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 314159rr,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

(2) 分支结构

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。

①if(条件)

{

分支体

}

这种分支结构中的分支体可以是一条语句,此时“”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;

②if(条件)

else

这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根

分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:

d=bb-4ac;

if(d>=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%84f,x2=%84f\n”,x1,x2);

}

else

{r=-b/(2a);

i =sqrt(-d)/(2a);

printf(“x1=%84f+%84fi\n”r, i);

printf(“x2=%84f-%84fi\n”r,i)

}

③嵌套分支语句:其语句格式为:

if(条件1) ;

else if(条件2)

else if(条件3)

……

else if(条件n)

else

嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。

④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。

(3)循环结构:

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的 *** 作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。

(4)模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

三.掌握一些简单的算法

编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何 *** 作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:

for(i=1;i<=9;i++)

for(j=i+1;j<=10;j++)

if(a[i]>a[j]

{temp=a[i];

a[i]=a[j];

a[j]=temp;

}

结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。

以上就是关于给出下面几个C语言程序段的时间复杂度。要求写出计算过程 ,谢谢了,在线等。全部的内容,包括:给出下面几个C语言程序段的时间复杂度。要求写出计算过程 ,谢谢了,在线等。、5、若变量已正确定义,以下程序段的输出结果是_____3,5,5___3___。 int a=3、Excel里的宏有什么作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9989824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存