文档库 最新最全的文档下载
当前位置:文档库 › 顺序结构程序设计练习题

顺序结构程序设计练习题

顺序结构程序设计练习题
顺序结构程序设计练习题

C语言练习题总汇

一、单选题:

【顺序结构程序设计】

1.己知int k,m=1;执行语句k=-m++;后k的值是(A )。(提示:负号与自加运算符同级,结合方向从右向左)A)-1 B) 0 C)1 D)2

2.若有定义int x=4;则执行语句x + = x * = x + 1;后,x的值为(C )。

A)5 B)20 C)40 D)无答案

3.若有定义:float a=3.0,b=4.0,c=5.0;则表达式1/2*(a+b+c)的值为( C )。

A)6.0 B)6 C)0.0 D)无答案

4.以下程序段的输出结果是( C )。(提示:a当约束过严时,约束失效。按自由格式输出。)

int a=1234;

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

A)12 B)34 C)1234 D)提示出错,无结果

5.下列程序段的输出结果是(C)。

int a=1234;

float b=123.456;

double c=12345.54321;

printf("%2d,%3.2f,%4.1f",a,b,c);

A)无输出 B)12, 123.46, 12345.5 C)1234,123.46,12345.5 D)1234,123.45, 1234.5

6.设x, y均为整型变量,且x=8, y=5,则以下语句的输出结果是(D)。

printf("%d,%d\n",x--,++y);

A)8,5 B)7,5 C) 7,6 D) 8,6

7.以下程序的输出结果是( A )。

int main()

{ int a=20,b=10;

printf("%d,%%d\n",a+b,a-b); }

A) 30,%d B)30,10 C)30,%10 D)以上答案均不正确(%%d中第一个%后面的表示字符)8.下列程序的运行结果是(A)。

int main()

{ float x=2.5;

int y;

y=(int)x;

printf("x=%f,y=%d",x,y);}

A) x=2.500000,y=2 B)x=2.5,y=2 C)x=2,y=2 D) x=2.500000,y=2.000000

9.以下程序的输出结果是(A)。

int main()

{ char c=‘z’;

printf("%c",c-25);}

A)a B)z C)z-25 D)y (字母共有26个,而z是最后一个)

10.下面程序的输出结果是(C)。

int main( )

{ double d=3.2 ;

int x=1.2, y ;

y=(x+3.8)/5.0 ;

printf("%d\n",d*y);}

A) 3 B) 3.2 C)0 D) 3.07

11.下面程序的输出结果是( C )。(提示:输出时无定界符)

int main()

{ int k=17;

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

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

12.下列程序执行后的输出结果是(C)。

int main()

{ char x =OxFFFF;

printf("%d\n",x--);}

A)-32767 B)FFFE C)-1 D)=-32768

13.printf("a\bre\'hi\'y\\\bou\n");的输出结果是(C)。

A)a\bre\'hi\'y\\\bou B)a\bre\'hi\'y\bou

C)re'hi'you D)abre'hi'y\bou

14.有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中错误的是(A)。

A)11<空格>12<回车> B)11,<空格>12<回车>

C)11,12<回车> D)11,<回车>12<回车>

15.有以下程序段:

int m=0,n=0;

char c=‘a';

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\n",m,c,n);

若从键盘上输入:10A10 <回车>,则输出结果是(A)。

A)10,A,10 B)16,a,10 C)10,a,0 D)10,A,0

16.若变量已正确说明为int类型,要通过语句scanf("%d %d %d ",&a,&b,&c);给a赋值1,b赋值2,c赋值3,不

正确的输入形式是(B)。

A) 1<空格>2<空格>3<回车> B)1,2,3<回车> C)1<回车>2<空格>3<回车> D)1<空格>2<回车>3<回车>

17.a, b,c被定义为int型变量,若从键盘给a, b,c输入数据,正确的输入语句是(D)

A)input a,b,c; B)read("%d%d%d",&a,&b,&c); C)scanf("%d%d%d",a,b,c); D)scanf("%d%d%d",&a,&b,&c); 18.已知a,b,c为int型变量,若从键盘输入:1,2,3<回车>,使a的值为1,b的值为2,c的值为3,以下选项中正确的输入语句是(B)。

A)scanf("%2d,%2d,%2d",a,b,c); B)scanf("%d,%d,%d",&a,&b,&c);

C)scanf("%d %d %d",&a,&b,&c); D)scanf("i=%dj=%d,k=%d",&a,&b,&c);

19.执行下程序时输入:123<空格>456<空格>789<回车>,输出结果是( D )。

int main()

{char s;

int c,i;

scanf("%c",&c);

scanf("%d",&i);

scanf("%c",&s);

printf("%c,%d,%c\n",c,i,s);}

A)123,456,789 B)1,456,789 C)1,23,456,789 D) 1,23,

20.已定义c为字符型变量,则下列语句中正确的是( C )。

A)c='97 ' B)c=“97 “ C)c=97 D)c=“a”

21.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。

#include

void main()

{

int r;

float s;

scanf("%d",&r);

s=p*r*r;

printf("s=%f\n",s);

}

出错的原因是()。

A)注释语句书写位置错误

B)存放圆半径的变量r不应该定义为整型

C)输出语句中格式描述符非法

D)计算圆面积的赋值语句中使用了非法变量

答案:D

22.有以下程序

#include

void main( )

{

int m=12,n=34;

printf("%d%d",m++,++n);

printf("%d%d\n",n++,++m);

}

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

A)12353514 B)12353513 C)12343514 D)12343513

答案:A

23.数字字符0的ASCII值为48,若有以下程序

#include

void main( )

{

char a='1',b='2';

printf("%c,",b++);

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

}

程序运行后的输出结果是______。

A)3,2 B)50,2 C)2,2 D)2,50

答案:C

24.有以下程序

#include

void main( )

{

char c1='1',c2='2';

c1=getchar( ); c2=getchar( ); putchar(c1); putchar(c2); }

当运行时输入:a<回车> 后,以下叙述正确的是______。

A)变量c1被赋予字符a,c2被赋予回车符

B)程序将等待用户输入第2个字符

C)变量c1被赋予字符a,c2中仍是原有字符2

D)变量c1被赋予字符a,c2中将无确定值

答案:A

25.

【选择结构程序设计】

1.有变量说明语句int a,b ,c;,顺序执行下面语句:

a=b=c=1;

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

那么,变量b的值应是( B )

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

2.有变量说明int a=3;,则表达式a<1&&--a>1的运算结果和a的值应该是( B )

A.0和2 B.0和3 C.1和2 D.1和3

3.设int a=3,b=4,c=5;,下列表达式的值不为1的是( A )。

A)a+b>c&&b==c B)a||b+c&&b-c

C)!(a>b)&&!c||1 D)!(a+b)+c-1&&b+c/2

4.#include

int main( )

{

int a,b,c;

a=10;b=50;c=30;

if(a>b) a=b;b=c;c=a;

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

}

程序的输出结果是( C )。

A.a=10, b=50, c=10

B. a=10, b=50, c=30

C.a=10, b=30, c=10

D. a=50, b=30, c=50

5.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

(A)1 (B)2 (C)3 (D)4

6.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( C )。

A)abs(x-y)<10 B)x-y>-10&&x-y<10 C)!(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100

7.若有定义:int a=7;f1oat x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( A )。

A) 2.5 B) 2.7 C) 3.5 D) 4.7

8.若有定义和语句:

int s,p;

s=p=5; p=s++,++p,p+2,p++;则执行语句后 p的值是( C )

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

9.若有定义:int a,b;则表达式 a=4,b=3,a+b+2,a++,a+b+2的值为( C )。

A) 12 B)11 C)10 D)无答案

10.己知int k=10 , m=3,n;则下列语句的输出结果是( B )。

printf("%d\n",n=(k%m,k/m));

A) 2 B)3 C)4 D)5

11.设x和y均为int型变量,则以下语句:x+=y; y=x-y; x-=y; 的功能是()。

A) 把x和y按从大到小排列 B) 把x和y按从小到大排列

C) 无确定结果 D) 交换x和y中的值

答案:D

12.设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ik)&&(c=i,j,k)后,c值是()。A)0 B)1 C)2 D)3

答案:D

13.若x、a、b、c均为int型变量,则执行表达式x= (a = 4, b = 8, c = 12)后,x的值为_______。A)4 B)8 C)12 D)24

答案:C

14.以下程序的输出结果是_______。

#include

void main()

{

int a=-1, b=4, k;

k = ( ++a < 0) && ( b += 5);

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

}

A)104 B)103 C)003 D)004 答案:D

15.下列运算符中,结合方向为自左向右的是()。

(A)?:(B),(C)+ = (D)+ +

答案:(B)

16.下列运算符中优先级最高的是()

A)! B)% C)- = D)&&

答案:(A)

17.有以下程序

#include

void main( )

{

int m=3,n=4,x;

x=-m++;

x=x+8/++n;

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

}

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

A)3 B)5 C)-1 D)-2

答案:D

18.

【循环结构练习题】

1.下面有关for循环的正确描述是( )

A.for循环只能用于循环次数已经确定的情况

B.for循环是先执行循环体语句,后判定表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环体语句中,可以包含多条语句,但要用花括号括起来答案:D

2.对于for(表达式1;;表达式3)可理解为()

A.for(表达式1:1;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3)

D.for(表达式1;表达式3;表达式3)

答案:B

3.以下正确的描述是( )。

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句

答案:B

4.下面程序段不是死循环的是( )。

A.int I=100; B.for ( ; ; );

while(1)

{ I=I%100+1;

if(I>100) break;}

C.int k=0; D.int s=36;

do{- -k; } while(s);

while(k>=0); --s;

答案:C

5.以下能正确计算1*2*3*……*10的程序是( )。

A.do{i=1;s=1; B.do{i=1;s=0;

s=s*i; s=s*i;

i++; i++;

}while(i<=10); }while(i<=10);

C.i=1;s=1; D.i=1;s=0;

do{ s=s*i; do{ s=s*i;

i++; i++;

}while(i<=10); }while(i<=10);

答案:C

6.下面程序的运行结果是( )。

#include

int main( )

{ int y=10;

do{y--;}

while(--y);

printf("%d\n",y--);}

A.-1 B.1 C.8 D.0

答案:D

7.下面程序的运行结果是( )。

#include

int main()

{ int num=0;

while(num<=2)

{num++;

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

}

}

A.1 B.1 2 C.1 2 3 D.1 2 3 4

答案:C

8.若运行以下程序时,从键盘输入3.6 2.4表示回车),则下面程序的运行结果是( )。#include

#include

void main( )

{ float x,y,z;

scanf(“%f%f”,&x,&y);

z=x/y;

while(1)

{ if(fabs(z)>1.0)

{ x=y;y=z;z=x/y;}

else

break;

}

printf(“%f\n”,y);

}

A.1.500000 B.1.600000 C.2.000000 D.2.400000

答案:B

9.有以下程序:

#include

void main( )

{

int i=0,s=0;

for(; ;)

{

if(i==3||i==5)continue;

if(i==6) break;

i++;

s+=i;

};

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

}

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

A)10 B)13 C)21 D)程序进入死循环答案:D

10.若有程序段:

for (m=1;m<=100;m++)

{

scanf("%d",&y);

if(y<0) continue;

printf("%3d",m);

}

正确的描述是()。

A)当y<0时整个循环结束 B)y>=0时什么也不输出

C)printf函数永远也不执行 D)最多允许输出100个非负整数

答案:D

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

# include “stdio.h”

void main( )

{ int i=23;

do{++i;}

while(i);

printf(“%d”,i);

}

A)23 B)24 C)死循环 D)无任何结果

答案:C

12.

二、填空题

【顺序结构程序设计】

1.有以下程序:

int main()

{ int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);}

若想从键盘上输入数据,使变量m中的值为123, n中的值为456, p中的值为789,则正确的输入是 m=123n=456p=789。

2.以下程序段的输出结果是 28 。

int main()

{ int a=2,b=3,c=4;

a*=16 +(b++)-(++c);

printf("%d",a);}

3.以下程序段的输出结果是 5 。

int x=17,y=26;

printf("%d",y/=(x%=6));

4.下列程序的输出结果为 12 。

int main()

{ int x=3,y=5;

printf("%d",x= (x--)*(--y));}

5.若有以下程序:

int main()

{ char a;

a=‘H’-‘A’+‘0’; (‘0’,’o’)

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

执行后的输出结果是 7,55 。

6.以下程序段的输出结果是 261 。

void main()

{ int a=177;

printf("%o\n",a); }

7.以下程序的输出结果是 0 (-32767~32767int) 。

void main( )

{ unsigned short a=65536; int b;

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

提示:当unsigned short和int 均占2个字节时。

8.输入“12345,xyz”,下列程序输出的结果是。

int main( )

{ int x;char y;

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

printf (“%d,%c”,x,y);}

答案:123,4

9.以下程序的运行结果是。

#include

void main( )

{

int i=8,j=9,m,n;

m=++i;

n=j++;

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

}

答案:9,10,9,9

10.下列程序的输出结果是。

#include

void main( )

{

int a = 3 , b = 14 , c = 5 ;

c = c + a *a + b % 5 * 10 ;

printf("%o\n" , c );

}

答案:66

11.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后

#include

void main( )

{

int a, b, c;

a = (

b = (

c = 3) * 5)*5;

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

}

运行结果是:

答案:运行结果是:a = 75, b = 15, c = 3

12.

【选择结构程序设计】

1.以下程序运行的结果是。

#include

void main( )

{

int a,b,c;

a=1;b=2;c=3;a=b--<=a||a+b!=c;

printf("%d,%d",a,b);

}

答案:1,1

2.以下程序的运行结果是。

#include

void main( )

{

int a,b,c;

a=b=c=1;

if (a++||++b) c++;

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

}

答案:2,1,2

3.以下程序的输出结果是。

#include

void main( )

{

int k, i=0, j=2;

k = i++&&j++;

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

}

答案:1,2,0

4.

【循环结构程序设计】

1.若运行以下程序时,从键盘输入ADescriptor↙,则下面程序的运行结果是 v0=12,v1=4,v2=12 。#include

void main( )

{char c;

int v0=0,v1=0,v2=0;

do{

switch(c=getchar())

{case ’a’:case ’A’:

case ’e’:case ’E’:

case ’i’:case ’I’:

case ’o’:case ’O’:

case ’u’:case ’U’:v1+=1;

default:v0+=1;v2+=1;}

}while(c!=’\n’);

printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2);

}

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

#include

void main( )

{ int i,b,k=0;

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

{ b=i%2;

while(b- ->=0) k++;

}

printf(“%d,%d”,k,b);

}

3.下面程序的运行结果是 8,22 。

#include

void main( )

{ int a,b;

for (a=1,b=1;a<=100;a++)

{ if(b>=20) break;

if(b%3==1) {b+=3; continue;}

b-=5;

}

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

}

4.下面程序的运行结果是 x=8 。

#include

void main( )

{ int i,j,x=0;

for (i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{ if(j%2) continue;

x++;

}

x++;

}

printf(“x=%d\n”,x);

}

5.下面程序的运行结果是 *#*#*#$ 。

#include

void main( )

{ int i;

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

{ if(i%2) printf(“*”);

else continue;

printf(“#”);

}

printf(“$\n”);

}

6.下面程序的运行结果是 4 。

#include

void main()

{

int i,j,a=0;

for(i=0;i<2;i++)

{ for (j=0; j<4; j++)

{ if (j%2) break;

a++;

}

a++;

}

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

}

7.有以下程序, 若从键盘输入:247<回车>,则程序的输出结果是。#include

void main( )

{

int c;

while ((c=getchar())!='\n')

{

switch (c-'2')

{

case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

case 3: putchar(c+3);

default:putchar(c+2);break;

}

}

}

答案:6689

8.

三、程序填空题

1.下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,请在空白处填入正确内容。

#include

void main( )

{

char c;

while((c=getchar())!=’\n’)

{ if(c>=’a’&&c<=’z’)

{ ;

if(c>’Z’&&c<=’Z’+2);

;

}

printf(“%c”,c);

}

}

答案:c-=30,c-=26。

2.下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输出m,n中的较大数,请在内填入正确内容。

#include

void main( )

{

int m=0,n=0;

char c;

while(( )!=’\n’)

{ if(c>=’A’&&c<=’Z’) m++;

if(c>=’a’&&c<=’z’) n++;

}

printf(“%d\n”,m

}

[解答]:c=getchar( ),n:m。

3.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在内填入正确内容。

#include

void main( )

{

float x, amax, amin;

scanf(“%f”,&x);

amax=x;

amin=x;

while( )

{

if(x>amax)

amax=x;

if( )

amin=x;

scanf(“%f”,&x);

}

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

}

[解答]:x>=0,x

4.求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表示一个三位数)。请在内填入正确内容。#include

void main( )

{

int x,y,z,i,result=532;

for(x=1; ;x++)

for(y=1; ;y++)

for(z=0; ;z++)

{

i=100*x+10*y+z+100*y+10*z+z;

if( )

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

}

}

[解答]:x<10,y<10,z<10,i==result。

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

顺序结构程序设计习题

一维数组程序设计习题 1、【逆序输出问题】 题目描述:按照顺序从键盘读入十个数据,以逆序方式输出。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:10 9 8 7 6 5 4 3 2 1 2、【数组元素的移动问题】 题目描述:将元素个数为10的数组a中的第一个元素移到数组末尾,其余数据依次往前平移一个位置,请编程实现。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:2 3 4 5 6 7 8 9 10 1 3、【斐波那契数列问题】 题目描述:有这样一种数列:1、1、2、3、5、8、……,这个数列的特点是:第1、2两个数为1,1,从第3个数开始,该数是其前面两个数之和。这种数列被称为Fibonacci(斐波那契)数列,请编程输出斐波那契数列的前20项(用一维数组完成)。 输出结果:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4、【求和问题】 题目描述:编程计算并输出S=∑ = 10 1 i i i y x 其中,Xi的值为1、8、5、7、2、99、34、67、2589、19,Yi的值为2、22、14、3、7、9、11、8、132、30。 输出结果:344402 5、【排序问题】 题目描述:从键盘输入10个数,将它们按照从小到大的顺序输出。 输入数据:72 98 79 66 39 95 96 25 5 37 输出结果:5 25 37 39 66 72 79 95 96 98 6、【进制转换问题】 题目描述:请编程将一个从键盘输入的十进制整数转化为二进制数输出。 输入格式:32570 输出格式:111111********* 7、【圆环找数问题】 题目描述:有一组数,其排列形式如下:11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8且尾部8和头部11首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置。 输出结果:58 19 8、【质数问题】 题目描述:用筛选法求100之内的质数,要求每行输出5个数据。 输出结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

第4章 结构化设计方法

第4章结构化设计方法 4.1 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗? 在“编写”程序时并没有设计软件。软件设计包括概要设计和详细设计,编码是将详细设计中的过程描述转换成用程序设计语言来描述。 4.2 举出3个数据抽象的例子和可以用来操作这些数据抽象的过程抽象的一个例子。 抽象是忽略事物的细节,获取其本质特征的过程。抽象是一种重要的机制,使人们能够对复杂系统能够很好地理解、交流和推理。在软件领域,可以将抽象分为两类,即数据抽象和过程抽象。 在传统的结构化程序设计语言中,就提供了这两种抽象机制。 (1) 数据抽象:在所有的结构化程序设计语言中,用户都可以自定义抽象数据类型。如定义抽象数据类型Student(学生)、Course(课程)、ClassScoreList(班级成绩单)。 (2) 过程抽象:过程抽象也称为是基于方法的抽象。过程抽象使我们关心处理过程的名字和它能做什么,而无需知道如何完成所有实现细节。如求班级总平均分average(ClassScoreList)就是一个过程抽象。 在面向对象的程序设计语言中,抽象与封装的概念密切相关,数据抽象和相关的过程抽象被封装在类中,不同类中相似的过程抽象(方法)又可以进一步抽象,放在接口中。封装是保证事物有明确内外界限的机制。内部是受保护的,与外部事物相隔离。 4.3 应在什么时候把模块设计实现为单块集成软件?如何实现?性能是实现单块集成软件的唯一理由吗? 由于模块之间的调用降低了系统的运行速度,可能会导致满足不了用户的性能要求,这时就需要将软件设计为单块集成软件。但是在设计时,最好按照模块化的原则进行设计,只是没有显式的模块定义而已。这样的程序也具有模块化的优点。性能是实现单块集成软件的唯一理由。 4.4 是否存在一种情况:复杂问题需要较少的工作去解决?这样的情况对模块化观点有什么影响? 通过对复杂的问题进行合理分解,分解为若干个相对简单及独立的子问题,就可以用较少的工作去解决。这种情况能够较好地支持模块化的观点,每个子问题用单独的模块去解决,模块之间应该是高内聚、低耦合的,这样才能减少工作量,否则,虽然每个模块的工作简单了,但模块之间的联系很复杂,也增加了问题解决的难度和工作量。

软件工程随堂练习(习题)

软件工程随堂练习 一、选择题 1.软件工程是()。 A、是结构化程序设计的指导方法 B、是软件开发技术和软件工程管理学为内容的学科 C、是指导计算机软件开发和维护的工程学科 D、是指导软件开发的工程方法。 2.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的()阶段。 A.各个 B. 前期 C.中期 D.后期 3.原型方法是用户和设计者之间的一种交互过程,选用于()系统。 A. 需求确定的 B. 需求不确定性较高的 C. 管理信息 D. 决策支持 4.要将一个复杂的系统分析清楚,常用方法是结构化分析方法,结构化分析方法就是()。 A、面向数据流自顶向下逐步求精的方法 B、由内向外进行分析的方法 C、先局部后整体的分析方法 D、使用IPO图形工具分析的方法 5.概要设计过程是() A. 先确定系统的实现方案,然后在结构设计阶段中确定软件的模块结构 B. 确定软件的模块结构,再设计出系统的所有程序和数据文件 C. 设计出系统的HIPO 图并对所有模块进行描述 D. 规划出系统的后期设计总体结构 6.程序的三种基本结构是()。 A、过程,子程序,分程序 B、顺序,选择,循环 C、递归,堆栈,队列 D、调用,返回,转移 7.结构化程序设计的一种基本方法是()。 A、筛选法 B、递归法 C、归纳法 D、逐步求精法 8.软件维护的四类维护活动是:() A.改正性维护,适应性维护,完善性维护和预防性维护。 B.适应性维护,完善性维护,抢救性维护和辅助性维护。 C.改正性维护,适应性维护,完善性维护和辅助性维护。 D.适应性维护,完善性维护,抢救性维护和预防性维护。 9.软件开发瀑布模型中的软件定义时期各个阶段依次是:() A.可行性研究,问题定义,需求分析。 B.问题定义,可行性研究,需求分析。 C.可行性研究,需求分析,问题定义。

顺序结构程序设计练习题

顺序结构程序设计练习题 一、选择题 1、下面正确的赋值语句是()。A)x+y=30B)y=π*r*r C)y=x+30D)3y=x 2、为了给x,y,z三个变量赋初值1,下面正确的赋值语句是()A)x=1:y=1:z=1B)x=1,y=1,z=1C)x=y=z=1D)xyz=1 3、赋值语句:a=123+left("123456",3)执行后,a变量中的值是。A)"12334"B)123C)12334D)246 4、在Visual Basic中,下列____程序行是正确的。A)X=Y=5B)A+B=C^3C)Y=1&Y=Y+1D)I=X10” 5、假定X是一个数值型变量,那么由函数组成的表达式INT(X/2)=X/2,作用是____。 A)用于测试X是否偶数B)返回一个整数C)返回一个奇数D)用于测试X是否整数 6、在Visual Basic中,下列____单词用于注释语句。A)Rem B)End C)Else D)Loop 7、inputBox函数反回值的类型为()。A)数值B)字符串C)变体D)数值或字符串(视输入的数据而定) 8、如果在立即窗口中执行以下操作: a=8:b=9 print a>b 则输出结果是()。A)–1B)0C)False D)True 9、语句Print Format(32548.5,"000,000.00")的输出结果是()A)32548.5B)32,548.5C)032,548.50D)32,548.50 10、为了把焦点移到某个指定的控件,所使用的方法是()A)SetFocus B)Visible C)Refresh D)GetFocus 11、在窗体(Name属性为Form1)上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(Name属性为Command1),然后编写如下两个事件过程: Private Sub Command1_Click() a=Text1.Text+Text2.Text Print a End Sub Private Sub Form_Load() Text1Text="" Text2Text="" End sub 程序运行后,在第一个文本框(Text1)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为()。 A)444B)321123C)123321D)132231 12、在VB中,下列()语句可以改变变量A的值:A)a=a+1B)t=A C)print a+1D)b=a+1 13、在VB中,下列()语句是错误的:A)PRINT"x="&x B)PRINT"X=";X C)PRINT A+1D)PRINT"X="+X 14、下列VB程序段运行后,变量X,Y的结果为(): A=256:X=INT(A/100):Y=INT(A/10)-X*10A)65B)652C)25D)665 15、.在VB中,下列()表达式能够表达[10,50]之间的随机整数: A)INT(10*RND)+40B)40*INT(RND(10+40))C)10+INT(41*RND)D)INT(10*RND)*(10+40) 16、在VB中,要交换变量A和B的值,应用的语句组是(): A)A=B:B=A B)C=A:B=A:B=C C)A=B:B=C:C=A D)C=A:A=B:B=C 17、在某个VB程序中,变量A的值为A=3.14,则应定义为()类型:A)integer B)single C)boolean D)string 18、下列VB程序运行后,变量A、B的值为():A)-6,5B)-5,4C)5,-6D)4,-5 A=4:B=-5:A=A+1:B=B-1:M=A:A=B:B=M 19、在VB中,欲显示静态的文本,可采用下列():A)命令按钮B)标签控件C)文本框D)定时器控件 20、下列关于Print方法的说法中,()不正确: A)Print方法具有计算和输出的双重功能B)使用Print方法输出数据时,前面的窗体名称可以省略 C)Print方法对于字符串是原样输出,但不包括定界符双引号D)Print方法在窗体的Load事件下也可以运行 21、下面程序运行结果为(): Dim a as single,b as single,c as single A)123B)321C)231D)632 A=1:b=2:c=3:Let b=a*b*c:Let a=b/(c*2):Let c=a*c:Let b=b/3:Print a,b,c 22、设有语句x=inputbox(“输入数值”,“0”,“示例”),程序运行后如果从键盘上输入数值10并按回车键,则下列叙述正确的是() A)变量X的值是数值10B)在INPUTBOX对话框标题栏中显示的是“示例”C)0是默认值D)变量X的值是字符串“10” 23、要使控件与框架捆绑在一起,以下操作正确的是() A)在窗体不同位置上分别画一框架和控件,再将控件拖到框架上B)在窗体上画好控件,再画框架将控件框起来 C)在窗体上画好框架,再在框架中画控件D)在窗体上画好框架,再双击工具箱中的控件 24、要使文本框获得输入焦点,则应采用文本框控件的哪个方法()A)GotFocus B)LostFocus C)KeyPress D)SetFocus 25、能够获得一个文本框中被选取文本的内容的属性是()A)Text B)Length C)SelText D)SelStart 26、要使标签能够显示所需要的东西,则在程序中应设置其哪一属性的值()A)Caption B)Text C)Name D)AutoSize 27、在运行阶段,要在文本框TEXT1获得焦点时选中文本框中所有内容,对应的事件过程是 A)Private Sub Text1_GotFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub B)Private Sub Text1_LostFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub C)Private Sub Text1_Change() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub D)Private Sub Text1_SetFocus() Text1.SelStart=0 Text1.Sellength=Len(Text1.Text) End Sub

结构化程序设计方法

结构化程序设计方法 设计方法的产生 结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。 基本要点 1.采用自顶向下,逐步求精的程序设计方法 在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。 2.使用三种基本控制结构构造程序 任何程序都可由顺序、选择、重复三种基本控制结构构造。 (1)用顺序方式对过程分解,确定各部分的执行顺序。 (2)用选择方式对过程分解,确定某个部分的执行条件。 (3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

(4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。 3. 主程序员组的组织形式指开发程序的人员组织方式应采用由一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三个为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。 设计语言 C,FORTRAN,PASCAL,Ada,BASIC 设计方法的原则 自顶向下

程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 逐步细化 对复杂问题,应设计一些子目标作为过渡,逐步细化。 模块化设计 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。 限制使用goto语句 结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。

实验二结构化程序设计题目及答案

C语言实验二题目及答案 第一次课(2学时): 必作实验: 1.编写程序,输入一个正整数,计算并显示该整数的各位数字之和,例如,整型数1987 的各位数字之和是1+9+8+7,等于25。 2.编写一个程序,找出被2,3,5整除时余数均为1的最小的10个自然数。 选作实验: 3. 编写一个程序,它打印出个位数是6、且能被3整除的所有三位正整数及其个数。要求一行打印8个数据。 4. 求N内的勾股数(A2+B2=C2)A、B、C。 参考答案: 1、答: #include void main( ) { int i,sum; int k; printf("\nEnter a integer:"); scanf("%d",&i); sum=0; while(i!=0) { k=i%10; /*取数字的最后一位*/ sum=sum+k; /*累加到计数器中*/ i=i/10; /*去掉数字的最后一位*/ } printf("sum is %d\n",sum); } 2、答: 程序如下: #include void main ( ) { int i=1; int count=0; printf ("\n能被2,3,5整除时余数为1的最小10个自然数是:\n"); while (count<=10) { if ((i%2==1)&&(i%3==1)&&(i%5==1)) { count++;

printf ("%d\n",i); } i++; } } 3、【解】题目中要求打印的是三位数,且个位数必须是6。因此可以for循环,它的循环控制变量从106开始,直到996为止,增量为10(因此要保证个位数是6)。由于还要打印这种数据的总个数,因此需要设置一个用于计数的变量,比如是count。发现一个这样的数,它就加1。为了满足一行打印8个数据要求,可以利用计数器count,让这样的数一个个地打印下去。如果count %8= =0,就打印一个回车换行。具体程序如下: #inc lud e void ma in( ) { int cou nt=0,j; for(j=106;j<=996;j+=10) { if(j%3!=0) cont inu e; else { coun t++; prin tf("%d\t",j); if(c oun t%8==0) prin tf("\n"); } } prin tf("\n The co unt is %d\n",co unt); } 运行此程序,输出结果如下图所示。 4、【解析】 (1)分析题意,建立数据模型,设计算法。 该问题可用枚举法实现,直接用C语言描述:

(1)下列选项中不属于结构化程序设计方法的是

(1)下列选项中不属于结构化程序设计方法的是 A)自顶向下B)逐步求精C)模块化D)可复用 (2)下列选项中不符合良好程序设计风格的是() A) 源程序文档化B) 数据说明的次序要规范化 C) 避免滥用GOTO语句D)模块设计要高藕合、低内聚 (3)下面描述中,符合结构化程序设计风格的是______ A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (4)下面概念中,不属于面向对象方法的是 ( ) A. 对象 B. 继承 C. 类 D. 过程调用 (5)结构化程序设计主要强调的是 ( ) A. 程序的规模 B. 程序的易读性 C. 程序的执行效率 D. 程序的可移植性 (6)对建立良好的程序设计风格,下面描述正确的是( ) A.程序应简单、清晰、可读性好 B. 符号名的命名要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无 (7)下面对对象概念描述错误的是( ) A.任何对象都必须有继承性 B.对象是属性和方法的封装体 C.对象间的通讯靠消息传递 D.操作是对象的动态性属性 (8)算法一般都可以用哪几种控制结构组合而成( ) A.循环、分支、递归 B.顺序、循环、嵌套 C.循环、递归、选择 D.顺序、选择、循环 (9)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送( ) A. 调用语句 B.命令 C.口令 D.消息 (10) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是( ) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

结构化程序设计习题答案

第三章结构化程序设计部分习题 一、选择题 1、设有程序段 int k=10; while(k=0) k=k-1; 则下面叙述中正确的是( ) (A) while循环执行10次 (B) 循环是无限循环 (C) 循环体语句一次也不执行 (D) 循环体语句执行一次 2、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; cout<

while(n++<=2); cout< void main() { int a,b,t; cin>>a>>b; while( ①) { if(a>b) {t=a; a=b; b=t } cout<>a>>b; } } (A) !a=b (B) a!=b (C) a==b (D) a=b 9、下面程序的运行结果是( ) #include void main() { int i,j,x=0; for(i=0;i<2;i++)

第3章顺序结构程序设计练习题及答案

第3章顺序 一、单选题: 1.己知int k,m=1;执行语句k=-m++;后k的值是( A)。(提示:负号与自加运算符同级,结合方向从右向左) A)-1 B) 0 C)1 D)2 2.若变量a, b已正确定义,且a,b均已正确赋值,下列选项中合法的语句是( B) A) a=b B)++a; C) a+=b++=1; D)a=int(b); (提示:a=b 只是表达式非语句; b++是个表达式)3.若有定义int x=4;则执行语句 x + = x * = x + 1;后,x的值为( C )。 A)5 B)20 C)40 D)无答案 4.若有定义和语句: int s,p; s=p=5; p=s++,++p,p+2,p++;则执行语句后 p的值是( C) A)9 B)8 C)7 D)6 5.若有定义:int a,b;则表达式 a=4,b=3,a+b+2,a++,a+b+2的值为( C)。 A) 12 B)11 C)10 D)无答案 6.若有定义:float a=3.0,b=4.0,c=5.0;则表达式 1/2*(a+b+c)的值为( C )。 A)6.0 B)6 C)0.0 D)无答案 7.以下程序段的输出结果是( C )。(提示:a当约束过严时,约束失效。按自由格式输出。) int a=1234; printf("%2d\n",a); A)12 B)34 C)1234 D)提示出错,无结果 8.下列程序段的输出结果是(C)。 int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%3.2f,%4.1f",a,b,c); A)无输出 B)12, 123.46, 12345.5 C)1234,123.46,12345.5 D)1234,123.45, 1234.5 9.设x, y均为整型变量,且x=8, y=5,则以下语句的输出结果是(D)。 printf("%d,%d\n",x--,++y); A)8,5 B)7,5 C) 7,6 D) 8,6 10.以下程序的输出结果是( A )。 void main() { int a=20,b=10; printf("%d,%%d\n",a+b,a-b); } A) 30,%d B)30,10 C)30,%10 D)以上答案均不正确(%%d中第一个%后面的表示字符)11.下列程序的运行结果是(A)。 void main() { float x=2.5; int y; y=(int)x; printf("x=%f,y=%d",x,y);} A) x=2.500000,y=2 B)x=2.5,y=2 C)x=2,y=2 D) x=2.500000,y=2.000000 12.己知int k=10 , m=3,n;则下列语句的输出结果是(B)。 printf("%d\n",n=(k%m,k/m));

C程序的设计复习题集带答案.docx

一、选择题 1.结构化程序设计的 3 种结构是 (D) A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构 C)多分支结构、赋值结构、等价结构 D)顺序结构、选择结构、循环结构 2.以下叙述中正确的是 (C) A)C 语言比其他语言高级 B)C 语言可以不用编译就能被计算机识别执行 C)C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C 语言出现的最晚,具有其他语言的一切优点 3.C语言中用于结构化程序设计的 3 种基本结构是 (A) A)顺序结构、选择结构、循环结构 B)if,switch,break C)for,while,do-while D)if,for,continue 4.C语言中最简单的数据类型包括(B) A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)字符型、实型、逻辑型 5.若变量已正确定义并赋值,以下符合 C 语言语法的表达式是 (B) A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b 6.下列可用于 C 语言用户标识符的一组是(B) A)void, define, WORD B)a3_b3, _123,Car C)For, -abc, IF Case D)2a, DO, sizeof 7. C语言中运算对象必须是整型的运算符是(A) A)%= B)/ C)= D)<=

8.若变量 a,i已正确定义,且i已正确赋值,合法的语句是(B) A)a= =1 B)++i ; C)a=a++=5; D)a=int (i ); 9.已知 int t=0; while(t=1) {...} 则以下叙述正确的是 (B) A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 10.若变量已正确说明为float型,要通过语句 scanf("%f%f%f",&a,&b,&c); 给 a 赋予 10.0 , b 赋予 22.0 , c 赋予 33.0 ,下列不正确的输入形式是 (B) A)10<回车 >22<回车 >33<回车 > B)10.0,22.0,33.0<回车> C)10.0< 回车 >22.0< 空格 >33.0< 回车 > D)10<<空格 >>22<回车 >33<回车 > 11.有如下程序: main() { int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是 (A) A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 12.有以下程序 main()

六结构化程序设计测试卷

结构化程序设计模拟试卷 一、选择题: 1..将逻辑值赋给内存变量LZ的正确方法是: A)LZ=".T." B)STORE "T" TO LZ C)LZ=TRUE D)STORE .T. TO LZ 2.将98年国庆节的日期赋给内存变量ND的正确方法是: A)ND=DTOC("10/01/98") B)ND=CTOD([10/01/98]) C)STORE DATE() TO ND D)STORE 10/01/98 TO ND 3.执行命令INPUT "请输入出生日期:" TO MDA TE时,如果通过键盘输入CTOD("01/01/88")则内存变量MDATE的值应当是: A)CTOD("01/01/88") B)"01/01/88" C)日期值01/01/88 D)拒绝接收,MDATE不赋值 4.在DO WHILE .T.的循环中,退出循环应使用的命令是: A)LOOP B)EXIT C)CLOSE D)CLEAR 5.下列程序的运行结果是: A=10 IF A=10 S=0 ENDIF S=1 ?S A)0 B)1 C)程序出错D)结果无法确定 6.有如下的程序: SET TALK OFF M=0 N=0 DO WHILE N>M M=M+N N=N-10 ENDDO ?M RETURN 运行此程序后M的值为: A)0 B)10 C)100 D)99 7.有如下程序: SET TALK OFF STORE 2 TO S,K DO WHILE S<14 S=S+K

ENDDO ?S,K SET TALK ON RETURN 此程序运行后的输出结果是: A)22 10 B)22 8 C)14 8 D)14 10 8.执行如下程序: SET TALK OFF S=0 I=1 INPUT "N=?" TO N DO WHILE S<=N S=S+1 I=I+1 ENDDO ?S SET TALK ON 如果输入N的值为5,则最后S的显示值是: A)1 B)3 C)5 D)6 9.有如下的程序: SET TALK OFF M=0 N=100 DO WHILE N>M M=M+N N=N-10 ENDDO ?M,N RETURN 运行此程序的显示结果为: A)0 10 B)10 90 C)90 100 D)100 90 10.运行下列程序后,语句?"123"被执行的次数是: I=0 DO WHILE I<10 IF INT(I/2)=I/2 ?"123" ENDIF ?"ABC"

第八讲:顺序结构程序设计举例

第八讲:顺序结构程序设计举例 所谓的顺序结构就是从头到尾一步步按部就班的执行下去,不会中途出现放弃或者跳转的情况。利用这样的思想实现的程序我们称之为顺序结构程序。在前面学习了许多知识点之后我们就可以开始最基本的顺序结构程序的设计了。 8.1 顺序结构 所谓的顺序结构可以用一个成语形容叫“按部就班”。任何事情都遵循着先做什么,再做什么的思想进行。这样的结构是我们日常生活中最常见的结构。在顺序结构中当一件事情开始后就再也不会停下,直到最后一步完成,整件事情做完为止,中途不会有放弃或者选择性放弃的过程。 8.2 经典算法—数据交换 很多语言的程序设计大多数都是从数据交换这个最经典的算法开始的,所谓的数据交换是将两个同等性质的物质进行对换,例如有两个整数a和b,a = 1,b = 2,在交换之后,使得a = 2,b = 1。 交换的算法是由于变量的性质所决定的,由于变量在同一时刻只能够存储一个数据,因此我们不能直接使用 a = b,b = a的方式对数据进行交换。此时我们就需要想出一些方法,帮助程序实现最正确的交换。 对于任何的数据我们都可以采用“第三变量法”进行交换。所谓的“第三变量法”即借助第三个变量实现对数据的交换,例如对a和b的数据交换,就有: 接下来我们将通过如下示意图对“第三变量法”进行简单的介绍: b

在程序未执行交换前,a = 1,b = 2。在执行交换算法的过程中,首先执行“t = a;”一句,将a中的值1转移到t中暂存,接下来执行“a = b;”一句,将b之中的值2存放到变量a中,a中原先的1被覆盖;最后执行“b = t;”一句,将t中所暂存的原先a的值1存放到变量b中,b中原有的2被覆盖。此时 a = 2,b = 1,t = 1。 当然,读者也可以使用先暂存b的方式对a和b之中的数据进行交换。下面给出该案例的完整代码: [例] 使用“第三变量法”交换a和b之中的数据。 当然对于一些数值型的数据(所谓的数值型数据是指单纯的数字或者ASCII 码),我们也可以直接采用“算数交换法”进行交换。所谓的算数交换法是指利用数值型数据可进行算术运算的特性进行交换。以上例a与b的值交换为例,则有: 假设a = 1,b = 2。首先执行“a = a + b;”,此时a = a + b = 1 +2 = 3,而b = 2;

C语言程序设计(结构化程序设计)

在程序设计发展过程中,特别是在70年代初期,各种大型、复杂的软件系统陆续问世,随着软件系统规模的扩大和复杂性的增加,软件的开销(编写程序耗费的大量的人力、财力)惊人地增加,而产品的可靠性和可维护性却明显地降低了,人们把程序设计的这种困境叫做"软件危机"。 上述问题促使人们开始对程序设计方法进行研究,1969年Dijkstra首先提出了结构化程序设计的思想与概念,强调从程序结构上来研究与改变传统的设计方法,经计算机科学工作者的实践,结构化程序设计得到了普遍应用,程序设计也逐步走向规范化和工程化。面向对象程序设计是在结构化程序设计基础上发展起来的一种新的程序设计方法。在本章中主要介绍结构化程序设计方法,面向对象程序设计将在第9-12章进行讲解。 1.2.1结构化程序设计基本思想 结构化程序设计(面向过程程序设计)支持自顶向下、逐步细化和模块化的结构化分析方法。 在求解一个问题时一般不能立即写出详细的算法或程序,但可以很容易写出一级算法,即求问题解的轮廓,然后对一级算法逐步求精,把它的某些步骤扩展成更详细的步骤。细化过程中,一方面加入详细算法,一方面明确数据,直到根据这个算法可以写出程序为止。自顶向下、逐步求精的方法符合人类解决复杂问题的思维方式,用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序层次结构清晰,容易阅读、理解和测试。 程序设计中还常采用模块化的设计方法,当任务比较复杂,往往按问题的需要,将其分解为若干个子任务,这些子任务还可以划分为更小、更简单的子任务。这样,对于大程序将其化整为零编写,由多个人共同进行程序的开发,或者是对那些重复使用的程序段,将其进行独立设计,使其达到计算机可以重复执行,而设计人员又不必重复去编写的目的,避免重复设计,消除因交叉设计而产生的错误。这样划分的程序段落被称为程序模块。这种程序设计的方式被称为模块化程序设计。以这种方式设计的程序,可以使其达到层次分明、结构简洁而又严谨的目的,从而提高程序设计的速度和质量。 程序中的子模块在C语言中通常用函数来实现。一个子模块用一个函数实现,完成一个功能。每个子模块的大小要适度。 1.2.2三种基本结构 结构化程序设计用三种基本结构,通过组合和嵌套就能实现任何单入口单出口的程序。这三种基本结构是顺序结构、选择结构和循环结构。 1. 顺序结构 按照顺序依次执行A,B程序块。顺序结构是最简单的一种基本结构。见图1-1。 2. 选择结构 又称分支结构,见图1-2,根据给定的条件P进行判断,由判断的结果决定执行两个分支中的一个分支。当P为真时执行A程序块,否则执行B程序块。无论条件P是否成立,A和B程序块只能有一个被执行到,执行之后就离开了该选择结构。当B为空时,条件P为假时不执行任何操作。 3. 循环结构 又称为重复结构,给定条件成立时反复执行某一程序段。在图1-3中,当P为真时反复执行A程序块,每执行一次测试一次P,直到P为假,跳出循环结构。 虽然从理论上讲只用上述三种基本控制结构就可以实现任何单入口、单出口的程序,但是为了实际使用方便起见,常常还允许使用"直到型"循环和多分支结构:

相关文档
相关文档 最新文档