文档库 最新最全的文档下载
当前位置:文档库 › C语言基本语法规则练习题

C语言基本语法规则练习题

C语言基本语法规则练习题
C语言基本语法规则练习题

第二章基本语法规则

2.1数据类型、运算符、表达式

一、选择题

1.C语言中确定数据存储的格式、范围与有效位数的依据是

A.数据正负B.数据范围C.数据类型D.数据大小

2.一般说在C语言中字符型数据、整型数据、单精度浮点型及双精度浮点型数据的存储长度分别为

A.2、4、8、1 B.4、2、1、8

C.1、2、4、8 D.1、4、2、8

3.转义字符“\t”表示

A.横向跳格,即跳到下一个输出区B.竖向跳格

C.退格D.换行

4.以下叙述不正确的是

A.C语言中的常量分别为整型常量、浮点常量、字符常量、符号常量

B.整型常量在C语言中有十进制、八进制和十六进制等3种不同形式

C.C语言中,变量必须先定义后使用

D.变量被定义后,变量名是固定的,变量的值在程序运行过程中是不可以随时被改变的

5.以下叙述不正确的是

A.C语言中的字符常量是用一对单引号(' ')括起来的单个字符

B.字符串常量是用一对双引号(““)括起来的字符序列

C.字符型数据与整型数据之间不可以通用。

D.为了便于判断字符串是否结束,系统会自动在最后一个字符后面加上一个转义字符(…\0?)

6.在赋值语句中用来将运算表达式的值赋给变量的“=”称为

A.等号B.赋值运算符

C.关系运算符D.逻辑运算符

7.设a=12,n=3,则执行表达式a%=n+3后a的值为

A.3 B.0 C.6 D.12

8.设,A=0,B=1表达式!A&&B的值是

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

9.在16位PC机环境下,字符串“A”应占的字节数为

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

10.采用十进制数为表示方法,则077是

A.77 B.112 C.63 D.119

11.设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char 型变量,则表达式x+y*a/x+b/y+c计算结果的类型为

A.int B.long C.double D.char

12.设a,c为int型变量,进行a=(c=5,c+5,c/2)运算后的结果为

A.2 B.5 C.2.5 D.0

13.在C语言中,表示逻辑“真”和“假”的值分别是

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

14.C语言中表示a小于b或小于c的表达式为

A.a

C.a

15.C语言中表示a和b都大于c的表达式为

A.a>c&&b>c B.a>c||b>c

C.a>b||b>c D.a>b&&b>c

16.a和b中有一个小于c的表达式为

A.a

C.a

17.若有a=2,b=3,c=4,则表达式a= =3和a=3的值分别为

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

18.表达式!(1<3)||(2>5)和!(4<=8)&&(7>=3)的值分别为

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

*19.设a=4,计算表达式a=1,a+5,a++的值为

A.1 B.5 C.10 D.2

20.设x=4,y=8,计算表达式y=(x++)*(--y)的值为

A.28 B.32 C.40 D.35

23.下列叙述正确的是

A.赋值语句中的“=”是表示左边变量等于右边表达式

B.赋值语句中左边的变量值不一定等于右边表达式的值

C.赋值语句是由赋值表达式加上分号构成的

D.x+=y;不是赋值语句

24.下列选项中,可以作为C语言标识符的是

A.3stu B.#stu C.stu3 D.stu.3

25.下列选项中,不可以作为C语言标识符的是

A.num B.turbo_c C.print D.student3

26.下列选项中,不可以作为C语言常量的是

A.”abc”B.1/2 C.…M?D.13.8e

27.下列选项中,正确的一组语句是

A.char a; B.char b; C.char c; D.char d;

a=?M?; b=?55?; c=”M”; d=”55”;

28.已知字母?b?的ASCII码值为98,如ch为字符型变量,则表达式ch=?b?+?5?-…2?的值为A.e B.d C.102 D.100

29.下列不是字符串常量的是

A.“1818"B.“aads”C._abdc D.“a”

30.在C语言中,int、char和short三种类型数据所占用的内存是

A.均为2个字节B.由用户定义

C.是任意的D.由所用机器的机器字长决定

31.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是A.0至255 B.0至65535

C.-32768至32767 D.-256至255

36.设x和y均为int型变量,则执行以下语句后的输出为

x=15;y=5;printf(“%d\n”,x%=(y%2));

A.0 B.1 C.6 D.12

37.设i=5;执行i*=i++;后,i的值为。

A.25 B.26 C.5 D.6

38.设a的值为12,则执行表达式a+=a-=a后a的值为

A.0 B.12 C.10 D.24

39.若x为int型变量,则执行x=6; x+=x-=x*x; 语句后,x的值为

A.36 B.-60 C.60 D.-24

40.若有说明语句int i,j;且i的值为6,则执行语句j=(++i)+(i++);后j的值是A.4 B.14 C.13 D.15

41.关系运算中用来表示等于、不等于、小于的符号分别为

A.=,=< B.==,=< C.=,<>,< D.= =,!=,<

42.设a=2, b=7.5, c=-3.6,以下哪两个逻辑表达式的值相同

A.1) …a?>…c?||…x?<…y?2) b-a<=c/2&&c=-3.6

B.1) …a?>…c?&&…x?<…y?2) a-7

C.1) …a?>…c?||…x?>…y?2)…a?<…c?&&a>b

D.1) …a?>…c?&&…x?>…y?2)…a?<…c?||a>c

43.逻辑运算中的非、与、或的运算次序是

A.&&,||,! B.&&,!,|| C.!,||,&& D.!,&&,||

44.若w=1,x=2,y=3,z=4,则条件表达式w

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

*45.表达式0x08>>2的值为

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

*46.定义:int x=5,y=1;表达式x&y==y?x|y:x∧y的值为。

A.1 B.0 C.4 D.5

47.若有定义:int a=10,b=9,c=8;执行下面两条语句c=(a-=(b-5));c=(a%11)+(b=3);

后,变量b的值为

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

48.设x,y,z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为A.52 B.32 C.16 D.4

49.使条件表达式(year%4==0&&year%100!=0)||(year%400==0)结果为假的值是A.1950 B.2000 C.1996 D.2004

50.已知int i=1,j;执行语句j=-i++;后,i 和j的值分别为

A.1,1 B.1,-1 C.2,-1 D.2,-2

二、阅读程序,写出程序的运行结果。

1.main( )

{ char c1=?6?,c2=?0?;

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

}

A.因程序格式不合法,提示出错信息。B.6,0,6

C.6,0,7 D.6,0,5

2.main( )

{ int x=010,y=10,z=0x10;

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

}

A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 3. main()

{ int a,b,c;

a=b=c=1;

b=b+c;

a=a+b;

printf(“%d\n”,(c

}

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

4.#include

main()

{ int x=1,y=1,z=1;

y=y+z;

x=x+y;

z=x

printf (“%d\n”,z>=y&&y>=x);

}

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

5.#include

#include

main()

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

float x=5.5, y=9.0, z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

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

}

A.9.300000 B.9.800000 C.12.900000 D.8.500000 6.main()

{ int x=3; y=z=4;

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

}

A.3 B.4 C.1 D.0 7.main()

{ int p=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

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

8.#include"stdio.h"

main( )

{ int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

}

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

9.#include"stdio.h"

main( )

{ int a,b,c;

a=(b=(c=3)*5)*2-3;

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

}

A.a=27,b=30,c=3 B.a=27,b=15,c=3 C.a=27,b=15,c=15 D.a=30,b=30,c=3

10.已知字符A的ACSII码值为65,以下程序的输出结果是

main()

{ char ch=?B? +32;;

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

}

A.B98 B.b98 C.9898 D.bb

2.2基本输入输出函数

一、选择题

1.scanf函数中的“格式控制字符串”后面必须是

A.变量地址B.变量名C.常量D.表达式2.printf函数中格式控制部分

A.是加上双引号(“”)的一个字符串

B.包括需要原样输出的普通字符,但不包括转义字符

C.包括格式说明符,且其必须与输出表列中的输出项的类型相符、个数相同D.A和C是正确的。

3.下列语句正确的是

A.printf(%d%dm10,15);

B.printf(“%s”,?a?);

C.printf(“%c”,?hello?);

D.为变量real输入一个double类型的数据:scanf(“%f”,&real);

4.分析下列程序的运行结果。

main()

{ int x=12;

printf(“%d,%o,%x,%u,”,x,x,x,x);

}

A.12,14,c,12 B.12,12,12,12

C.12,41,c,12 D.12,012,0x12,12

5.main()

{ int x=235;

double y=3.1415926;

printf(“x=%-6d,y=%14.5f\n”,x,y);

}

A.x=235 ,y= 3.14159 B.x= 235,y= 3.14159

C.x=235 ,y=3.141593 D.x=235,y=3.14159

6.已定义x为float型变量,x = 213.82631;printf(“%-4.2f\n”,x);则输出为A.输出格式描述符的域宽不够,不能输出B.213.82

C.213.83 D.-213.82

7.若有int a=123; float b=345.678; 函数printf(“a=%5d\tb=%7.4f\n”,a,b); 的输出结果是A.a= 123 b=345.6780 B.a=123 b=345.6780

C.a= 123 b=345.678 D.123 345.678

8.若有char ch=?#?; float b=345.678; 函数printf(“%c\t%-8.2f\n”,ch,a); 的输出结果是A.# 345.678 B.#345.68

C.# 345.68 D.#345.678

9.若有float a,b,c;a=b=c=1.389; 则执行以下语句后的输出结果是

printf(“a=%f\tb=%f\tc=%f\n”,a*2,b+2.3,c);

A.a=2.788 b=3.589 c=1.389 B.a=2.788 b=3.589 c=1.389

C.a=1.389 b=1.389 c=1.389 D.a=1.389 b=1.389 c=1.389

10 .对语句scanf(“%d,%c*%d”,&x,&y,&z) ;正确的输入是。

A.1 A 4 B.1,A,4 C.1,A*4 D.1,…A?*4

11.#include

main()

{ float r1=10.0, r2=20.0, r3=30.0;

float i,r,u;

u=120.0;

r=r1*r2*r3/(r2*r3+r1*r3+r1*r2);

i=u/r;

printf("u=%7.2e\n",u);

printf("i=%5.2f",i);

}

可选运行结果:

A.u=120.00 B.u=1.2e+02 C.1.2e+02 D.u=120.00

i=2.2e+01 i=22.00 i=2.2e+01 i=22.00

12.定义变量如下:int x;float y; 则以下正确的输入语句是。

A.scanf(“%f%f”,&x,&y); B.scanf(“%f%d”,&x,&y);

C.scanf(“%f%d”,&y,&x);D.scanf(“%5.2f%2d”,&x,&y);

13.putchar函数可以向终端输出一个

A.字符或字符变量的值B.字符串

C.实型变量D.整型变量的值

14.若有定义:int a,b;使用语句scanf("%d,%d",&a,&b);给变量a,b分别赋值10和20,则正确的输入格式为

A.10,20 B.10 20

C.10<回车>20 D.a=10,b=10

2.3分支语句

一、选择题

1.对C语言的if语句,当条件表达式为真时执行的语句是

A.else后的语句B.if后的语句

C.不执行语句D.以上都不对

2.若分支结构的某个分支需要多个语句时,可以使用复合语句,所谓复合语句是指A.一个语句B.用“{}”括起来的多个语句

C.两个语句D.多个语句

3.判断char型变量cl是否为小写字母的最简单且正确的表达式为

A.…a?<=cl<=…z? B.(cl>=a)&&(cl<=z)

C.(…a?cl)D.(cl>=…a?)&&(cl<=…z?)

4.判断int型变量x是否为数字0~9的最简单且正确的表达式为

A.…0?<=x<=…9? B.(x>=0)&&(x<=9)

C.(…0?x)D.(x>=…0?)&&(x<=…9?)

5.以下不正确的if语句为

A.if(x>y); B.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);

C.if(x==y) x+=y; D.if(x

6.若m、x、y、z均为int型变量,则执行下面语句后的m值是。

m=1;x=2;y=3;z=4;

m=(m

m=(m

m=(m

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

7.以下关于switch语句和break语句的描述中,正确的是。

A.在switch语句中必须使用break语句。

B.break语句只能用于switch语句中。

C.在switch语句中,可以根据需要使用或不使用break语句。

D.break语句是switch语句的一部分。

8.能正确表示a和b同时为正或同时为负的逻辑表达式是

A.(a>0||b>0)&&(a<0||b<0) B.a>0&&b>0

C.a+b>0 D.a*b>0

9.设int x=1,y=1;表达式(!x||y--)的值是

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

10.以下关于if语句的错误描述是()

A.条件表达式可以是任意的表达式

B.条件表达式只能是关系表达式或逻辑表达式

C.条件表达式的括号不可以省略

D.与else配对的if语句是其之前最近的未配对的if语句

二、阅读程序,写出程序的运行结果。

1.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=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 2.设有说明语句:int a=1,b=0;则执行以下语句后的输出为。

switch(a)

{ case 1:

switch(b)

{ case 0:printf(“**0**\n"); break;

case 1:printf(“**1**\n"); break;

}

case 2:printf(“**2**\n"); break;

}

A.**0** B.**0** C.**0** D.有语法错误

**2** **1**

**2**

3.#include

main()

{ float g;

int i;

printf(“score?”);

scanf(“%f”,&g);

i=g/10;

switch(i)

{ case 0:

case 1:

case 2:

case 3:

case 4:

case 5: printf(“fail”);break;

case 6:

case 7: printf(“pass\n”);break;

case 8: printf(“good\n”);break;

case 9:

case 10: printf(“very good”);break;

default: printf(“input error”);break;

}

}

运行两次,输入数据分别89.5和79.5,可选运行结果:

A.very good B.good C.very good D.good

pass pass good pass 4.main()

{ int a=1,b=3,c=5;

if( c=a+b ) printf("yes\n");

else printf("no\n");

}

A.yes B.no C.yes<回车〉no D.无输出5.#include

main()

{ int a,b,m,n;

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

m=1; n=1;

if (a>0) m=m+n;

if (a

else if (a= =b) n=5;

else m=m+n;

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

}

输入为:-1 -2《回车》,输出结果为

A.m=2, n=1 B.m=2 n=1 C.2 1 D.m=2 n=4 6.main()

{ float x=2.0,y;

if(x<0.0)y=0.0;

else if(x<10.0)y=1.0/x;

else y=1.0;

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

}

A.0.000000 B.0.250000 C.0.500000 D.1.000000 7.main()

{ int a=2,b=-1,c=2;

if(b<0); c=0;

else c++ ;

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

}

A.0 B.1 C.2 D.有语法错误8.main()

{ int a=100;

if(a>0) printf(“%d\n”,a>100);

else printf(“%d\n”,a<=100);;

}

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

9. main( )

{ int n=0,m=1,x=2;

if(!n) x - =1;

if(m) x - =2;

if(x) x - =3;

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

}

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

10.main( )

{ int m=5;

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

else printf("%d\n",m- -);

}

A.7 B.6 C.5D.4

三、完善程序,在下列程序的处填入适当的内容后,使其完整正确。

1.10000元和10000元以上的货物,征税5%;5000元到10000元以下的货物,征税4%;

1000元到5000元以下的货物,征税3%;1000元以下的货物免税,输入货款,求税金。

#include

main()

{ int x,i;

float percent, tax;

printf(“money?");

scanf(“%d",&x);

( 1 )

switch(i)

{ case 0: percent=0; break;

case 1:

case 2:

case 3:

case 4: percent=0.03; break;

case 5:

case 6:

case 7:

case 8:

case 9: percent=0.04; break;

( 2 ) : percent=0.05; break;

}

tax=x*percent;

printf("money=%d tax=%f",x,tax);

}

(1) A.i=x B.i=x/1000 C.i=x\1000 D.i=x/10000

(2) A.else B.case C.case 10 D.default

2.判断整数N能否同时被3和7整除,如是则打印“YES!”,否则打印“NO!”。

#include

main()

{

int n;

scanf( 1 );

if( 2 )

printf(“YES!");

else

printf(“NO!");

}

(1) A.“%d”,&n B.“%f”,&n

C.“%f”,n D.“%d”, n

(2) A.n%3=0&&n%7=0 B.!(n%3)&&!(n%7)

C.n%3==0&&n%7==0 D.B、C答案均正确

2.4循环语句

一、选择题

1.以下描述正确的是:

A.循环语句有4种类型,即for、while、do while和goto结构类型。

B.break语句的功能是退出循环体,程序转至循环体下面的语句,一般用于switch、for、do while和while语句的中止。

C.continue语句的功能是结束本次循环,跳过循环体中尚未执行的部分,进行下一次是否执行循环的判断,只能用于循环体中。其作用是把程序控制转到当前循环体结尾处,接着开始下一次循环。

D.上述三项均正确。

2.在C语言中与语句while(1);等价的for语句是

A.for( 1 ) B.for(; ; ) C.for(; 0 ; ) D.for( )

3.设a和b均为int型变量,则循环for(a=0,b=0;b!=123&&a<3;a++) scanf(“%d,”&b);中的scanf语句将最多执行的次数为

A.3 B.0 C.无限次D.4

4.设i, j, k,均为int型变量,则执行完成以下for语句后,k的值是

for(i=0,j=10;i<=j;i++,j--) k=i+j;

A.20 B.5 C.10 D.15

5.设有说明int y=10; 则执行完以下语句后,y的值为

do{

y--;

}while(--y);

printf(“%d\n”,y--);

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

6.设n为整型变量,则循环语句for(n=0;n<=10;n++);的循环次数为

A.9 B.10 C.11 D.12

7.下列程序段不能造成死循环的是。

A.for (;;) B.i=0;

{ while(1)

printf(“*”);{ if(i>99) break;

} i++;}

C.for(i=0;i<9;i--) D.while(1)

printf(“*”);printf(“”);

8.以下不正确的描述是

A.使用while和do~while循环时,循环变量初始化应在循环语句之前。

B.while循环是先判断表达式,后执行循环语句。

C.do...while和for循环均是先执行循环体语句,后判断表达式。

D.for,while和do...while循环中的循环体均可以由空语句构成。9.与while(!x)中的(!x)等价的条件是

A.x==0 B.x==1 C.x!=1 D.x!=0

10.若x、y是int型变量,则执行以下语句后x的值是。

for(y=1,x=1;y<=50;y++)

{ if(x>=10) break;

if(x%2==1)

{

x+=5;continue;

}

x-=3;

}

A.1 B.6 C.7 D.10

11.若a、b为int型变量,则执行以下语句后b的值为。

a=1;b=10;

do{

b-=a;a++;

}while(b--<0);

A.9 B.-2 C.-1 D.8

12.若x、y均是int型变量,则执行以下语句后的结果是。

for(x=1;x<5;x+=2)

{

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

printf(“%2d”,x*y);

if(y==5)printf(“\n”);

}

A.2 3 4 B.2 3 4 5 C.2 3 4 5 6 9 12 D.1 2 3 4

6 9 12 6 9 12 15 3 6 9 12 13.设已定义k为int型变量,则下面while循环体执行次数是

k = 10; while( k=0 ) k=k-1;

A.10次B.无限次C.0次D.1次

14.C语言中循环语句有while,do-while,还有一个是

A.if B.for C.switch D.break

二、阅读程序,写出程序的运行结果。

1.#include"stdio.h"

main( )

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

若输入1259,则输出结果为:

A.1259 B.9521 C.1 D.12 2.main( )

{ int j=0,k=0,a=0;

while(j<2)

{ j++;

a++;

k=0;

}

while(k<=3)

{ k++;

if(k%2!=0)

continue;

a++;

}

a++;

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

}

A.4 B.5 C.6 D.7 3.main( )

{ int i;

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

{

if(i==3)

{

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

break;

}

printf("%d",++i);

}

}

A.24 B.45 C.4 D.5 4.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("a=%d\n",a);

}

A.19 B.22 C.16 D.17 5.main( )

{ int i,a=0;

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

{ do

{ i++;

a++;

}while(i<3);

}

i++;

printf("a=%d,i=%d",a,i);

}

A.a=3,i=6 B.a=3,i=7 C.a=3,i=4 D.a=4,i=7 6.main()

{ int i,n;

scanf(“%d”,&n);

for (i=2;i<=n/2;i++)

if(n%i==0)

printf (“%3d”,i);}

输入数据10,运行结果为:

A.1 2 5 10 B.1 2 C.2 5 D.2

5 10 5

7.main( )

{ int x=3;

do

{ printf("%3d",x-=2);

}while(!(--x));

}

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

8.main()

{ int i=1, sum=0;

while (i<=10)

{ sum+=i;

i++;

}

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

}

A.45 B.10 C.55 D.11 9.main()

{ int i,n,sl,s;

printf(“input n:\n”);

scanf(“%d”,&n);

s1=0;s=0;

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

{ s1=s1+i;

s=s+s1;}

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

}

输入数据:5

A.35 B.s=20 C.s=10 D.s=35 10.main()

{ int even,odd ,i,n;

printf(“input n:\n");

scanf(“%d",&n);

even=odd=0;

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

{ if(!(i%2)) even=even+i;

else odd=odd+i;

}

printf(“even=%d\todd=%d\n”,even,odd);

}

输入数据:10

A.even=25 odd=30 B.even=30 odd=25

C.even=30 odd=25 D.even=20 odd=25

11.#include

main()

{ int a,b,m,k,i,n=0;

printf(“input a and b:\n”);

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

for(m=a;m<=b;m++)

{ if(!(n%5)) printf(“\n");

k=sqrt(m);

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

if(!(m%i)) break;

if(i>=k+1)

{printf(“%-5d",m); n++;}

}

}

输入数据:100 110<回车>,结果为

A.100 102 104 106 108 110 B.100102104106108110

C.101 103 107 109 D.101103107109

*12.#include

main()

{ int s;

while ((s=getchar())!=…\n?)

{ switch (s-…2?)

{ case 0:

case 1: putchar (s+4);

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

case 3: putchar (s+3);

default: putchar (s+2); break;

}

printf (“\t”);

}

}

输入数据是2473《回车》。

A.4 6 7 B.48 6 8 10

C.6 8 9 7 D.66 8 9 77

13.main()

{ int i=1;

while (i<=15)

if (++i%3!=2) continue;

else printf (“%d”,i);

printf (“\n”);

}

A.2 5 8 11 14 B.2,5,8,11,14

C.2581114 D.以上均不对

14.main( )

{ int j;

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

{ if (j%2==0) continue;

printf("%d",j);

}

}

A.02468 B.13579 C.0123456789 D.无输出15.main()

{ int i,j,k;

char space=… ?;

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

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

printf ("%c", space);

for(k=0;k<=5;k++)

printf(“%c”,…*?);

****** ****** ****** ****** ******

******

******

******

***** ***** ***** *****

*****

*****

*****

***** printf(“\n”);

}

}

A.B.

C.D.

三、完善程序,在下列程序的处填入适当的内容后,使其完整正确。

1.已知有计算公式:π≈4*(1/1-1/3+1/5-1/7+……),下列程序就是根据这一公式计算圆周率的。其中,精度控制在0.00001;变量s表示当前符号项,item表示当前项,n表示当前项的序号。

#include "math.h"

main( )

{ float pai=0.0,item=1.0,s=1.0;

int n=1;

while( (1) )

{ pai+=item;

s=-s;

item=s/(2*n+1);

(2)

}

pai=4*pai;

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

}

(1) A.(fabs(item)>1e-6) B.(item>1e-6)

C.(fabs(item)<1e-6) D.(item<1e-6)

(2) A.n+=2; B.n-=2

C.n++; D.n--;

2.打印乘法九九表。

main()

{ int i, j;

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

printf(“%4d”,i);

printf(“\n”);

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

printf(“%c",…-');

printf(“\n");

for ( (1))

{ for(j=1;j<=9;j++)

(2);

printf(“\n");

}

}

(1) A.i=1; i<9; i++ B.i=1; i<=9; i++

C.i=0; i<=9; i++ D.i=1; i<=9; i+=2

(2) A.printf(“4d”,i*j) B.printf(“%4d”,i*j)

C.printf(“%4d”i*j) D.printf(“%4d”,j)

3.从0到360度,打印SIN(X)的值,间隔为0.1度。

#include

main()

{ int i;

float x;

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

{ x= (1);

printf("sin(%6.1f)=%10.4f\n",x, (2));

}

}

(1) A.i/10 B.float(i)/10 C.i D.(float)i/10

(2) A.SIN(X) B.SIN(x)

C.sin(x) D.以上答案都不对

4.显示由1、2、3、4组成的全部四位数,并统计这种数的个数。

main()

{ int i,j,k,l,num,count;

count=0;

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

for(j=1;j<=4;j++)

for(k=1;k<=4;k++)

for(l=1;l<=4;l++)

{ num=1000*i+100*j+10*k+l;

(2);

printf(“%6d",num);

if(!(count%5))

printf(“\n");

}

printf(“the total number is :%d\n",count);

}

(1) A.i<4 B.i<=4

C.i=4 D.i==4

(2) A.count=0 B.count++

C.count+=1 D.B、C均正确

5.判断闰年的方法是:年数不能被4整除的不是闰年;年数能被4整除的而不能被100整除的是闰年;能被100整除的而不能被400整除的不是闰年;能被400整除的是闰年,

给出年号,判断是否是闰年。

main()

{ int year,rem_4,rem_100,rem_400;

printf(“Enter the year to be tested.");

scanf(“%d",&year);

rem_4= ;

rem_100=year%100;

rem_400=year%400;

if(rem_4==0&&rem_100!=0|| )

printf(“It is a leap year.\n");

else

printf(“It is not a leap year.\n");

}

(1) A.year/4 B.year%4

C.year =year/4 D.year ==4

(2) A.rem_400=0 B.rem_400!=0

C.rem_400 D.rem_400= =0

6.在1到N的自然数中,求3的倍数及5的倍数各数之总和。

main()

{ (1) ;

printf(“input n:\n");

scanf(“%d",&n);

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

(2) ;

s=s+i;

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

}

(1) A.int n,i,s=0 B.intn,i,s=0

C.int n,i,s D.int n,,s=0

(2) A.if(i%3==0||i%5==0) B. if(i%3==0&&i%5==0)

C.if(!(i%3)||!(i%5)) D.答案A、C均正确7.求N个任意整数中奇数和与偶数和。

main()

{ int even,odd,data,i,n;

printf(“input n:\n");

scanf(“%d",&n);

even=odd=0;

printf(“inpput data\n");

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

{ (1) ;

(2) ;

even=even+data;

else

odd=odd+data;

}

printf(“even=%d\nodd=%d\n",even,odd);

}

(1) A.scanf(“%d",data)B.scanf(“%d",&data)

C.data=5 D.scanf(“%f",&data)

(2) A.if(data%2==0) B.if(data/2==0)

C.if(!(data%2)) D.答案A、C均正确

8.已知三角形的三条边为A,B,C,判断能构成三角形的条件是A+B>C且|A-B|

#include

main()

{ float a,b,c,p,area;

printf(“please input a: b: c:\n");

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

(1) ;

{ (2) ;

area=sqrt(p*(p-a)*(p-b)*(p-c));

printf(“area=%f\n",area);

}

else printf(“input error!\n");

}

(1) A.if(a+b>c)&&fabs(a-b)c)&&(a-b)

C.if((a+b>c)&&fabs(a-b)c)||fabs(a-b)

(2) A.p= =(a+b+c)/2 B.p=a+b+c/2

C.p=(a+b+c)/2 D.p= =a+b+c/2

9.求FIBONACCI数列1,1,2,3,5,8……的前N项。

main()

{ long int f1,f2;

int i,n;

scanf(“%d",&n);

f1=f2=1;

(1) ;

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

{ printf(“%121d%121d\n",f1,f2);

if(!(i%2))

printf(“\n");

(2) ;

f2=f2+f1;

}

}

(1) A.n=n%2 B.n=n/2 C.n\=2 D.不缺少语句

(2) A.f1=f2 B.f2=f1 C.f2=f2+f1 D.f1=f1+f2

四.程序改错

c语言:流程控制语句

流程控制 ======= 知识点: if-else语句使用 switch语句使用 break使用 正常情况下,程序从main函数开始,一句一句,自上而下执行每一条语句。 一些语句可以控制,修改程序的运行流程,称为流程控制语句。 一、条件判断语句if if(表达式){ 语句 } 如果……就…… 【逻辑】当程序执行到if语句,首先计算表达式的值,如果为真,执行语句。如果为假,不执行、跳过语句。 【逻辑假设】 if(表达式){ 语句1 }else{ 语句2 } 如果……就……否则…… 【逻辑】当程序执行到if else语句,首先计算表达式的值,如果为真,执行语句1,不执行语句2。 如果为假,执行语句2,不执行语句1。 【逻辑二择】 例,明天考试,80分以下把代码抄写五遍,80分以上奖励棒棒糖一枚。 if(表达式1){ 语句1 }else if(表达式2){ 语句2 }else if(表达式3){ 语句3 } else{ 语句4 } 如果(表达式1成立),那么执行语句1 否则如果(表达式2成立),那么执行语句2 …… 否则,执行语句4。

【逻辑】当程序执行到该结构,计算机表达式1,如果成立,执行语句1,跳出整个结构。如果表达式2为假,计算表达式2,如果为真,执行语句2,跳出结构体。直到表达式2为假,计算表达式3,依次类推,如果表达式都不成立,执行else下的语句。 如果不需要(即所有表达式都不成立,什么都不做),可以不写else。else if的数量根据需求,任意增减,没有限制。 【注】在if else if结构中,每个else都是对前面每个表达式的否定。 【逻辑多择】 嵌套的if-else语句 我们可以在if语句内嵌套if语句,同样,我们也可以在if语句内嵌套if-else语句,在if-else 语句内嵌套if语句,以及在if-else语句内嵌套if-else语句。 int x; scanf(“%d”,&x); if(x<0){ printf(“error!\n”); }else{ if(x%2) printf(“jishu\n”); else printf(“oushu\n”); } 练习 1、使用if else if,模拟下述分段函数。 x^2+1(x<0) y= 2*x+6 (0<=x<=5) 3*x-1 (x>5) 2、输入一个字符,如果是大写字母,转成小写字母。如果是小写字母,转成大写字母,如果不是字母,不变输出。 3、输入一个字符,判断这个字符是表示大写字母,小写字母,数字字符,还是其他。A a 9 % 二、逻辑跳转语句goto switch 1、goto语句 无条件跳转到指定标号的位置,向下执行。 goto 语句标号 printf(“————————1\n”); printf(“————————2\n”); goto A; //跳转到标号的位置 printf(“————————3\n”); printf(“————————4\n”); //标号的名字是标识符,这里使用大写是为了和变量相回避。 A: //这是一个标号,是一个位置的标记,本身是什么都不做。 printf(“————————5\n”); B:

C语言中流程控制语句

C语言中流程控制语句(在Turbo C2.0中) (if, while,do-while,continue,break, for, switch,return) _1981/blog/item/528c122dcca9f335359bf73e.html 条件语句的一般形式为: if(表达式) 语句1; else 语句2; 上述结构表示: 如果表达式的值为非0(TURE)即真, 则执行语句1, 执行完语句1从语句2后开始继续向下执行; 如果表达式的值为0(FALSE)即假, 则跳过语句1而执行语句2。 注意: 1. 条件执行语句中"else 语句2;"部分是选择项, 可以缺省, 此时条件语句变成: if(表达式) 语句1; 表示若表达式的值为非0则执行语句1 , 否则跳过语句1继续执行。 2. 如果语句1或语句2有多于一条语句要执行时, 必须使用"{"和"}" 把这些语句包括在其中, 此时条件语句形式为: if(表达式) { 语句体1; } else { 语句体2; } 3. 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易出错, 其原因主要是不知道哪个if对应哪else。 例如: if(x>20||x<-10) if(y<=100&&y>x) printf("Good"); else printf("Bad"); 对于上述情况, Turbo C2.0规定: else语句与最近的一个if语句匹配, 上例中的else与if(y<=100&&y>x)相匹配。为了使else与if(x>20||x<-10)相匹配, 必须用花括号。如下所示: if(x>20||x<-10) { if(y<=100&&y>x) printf("Good"); } else printf("Bad"); 4. 可用阶梯式if-else-if结构。 阶梯式结构的一般形式为: if(表达式1)

C语言源程序

C语言程序设计 <一> 1、程序运行从main()函数开始,也从main()函数结束。 2、函数是C程序的基本单位,由函数头和函数体组成。 3、C语言源程序是由函数组成,它们的数目可以有多个。 4、在C语言源程序中,是必须有一个函数名为main的函数。main()后的小括号()没有任何内容,它不可以省略。 5、C程序中的语句用分号结束,在一个程序行上可以有多个语句,一个C 语句能写在多个程序行上。 6、函数体是由一对大括号围起来语句序列组成。小括号是函数的标志。 二、C语言的组成元素 1、命令、函数和变量等是组成程序的基本对象,每一个程序对象都需要一个名字来标识,程序对象的名称就是标识符。 2、在C语言中,标识符分为用户标识符和系统标识符。 3、用户标识符是指在程序中由程序员为变量、函数、数组等程序对象自行命名的标识符。 4、系统标识符是指C语言编译系统内部预定义的用于表示命令数据内型的标识符,又称保留字符。 5、基本字符集 英文字母:a~z和A~Z。 阿拉伯数字:0~9。其他字符:()、[]、+、-、*、/、%、<、>、<=、>=、==、!=、!、&&、‖、++、--、+=、-=、*=、/=、%=。它们是由1~2个字符组成。用作C语言的运算符;还包括:空格、换行符,回车符,单双引号,大括号,逗号,分号,反斜线,它们在程序中起到分隔和定界作用。 6、标识符:是用于标识命令;变量、函数,数组,数据类型等程序对象名称的字符序列。 7、组成标识符的合法字符有:字母,数字,下划线,三种,数字不能作首字符。 三、执行C语言程序 1、单击“开始”——“程序”——“附件”——“命令提示符”。 2、按功能键<10>激活菜单,执行“File”——“NEW”(ALT+回车)全屏。 3、为保存,输入程序文件名。 4、+运行 有输入:等待输入→回车 通过 无输入:返回到编辑 未通过:回车→F6→修改 F3(打开)

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言程序的流程控制

第3章C语言程序的流程控制 利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。 3.1程序设计的基本知识 3.1.1程序流程图 在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。 1.传统程序流程图 传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。美国国家标准化协会ANSI规定了一些常用的流程图符号,现已为世界各国普遍采用。我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照

ANSI标准做具体介绍。标准中各种图示如图所示。 起止框输入输出框判断框处理框 或 流程线连接点注释框 图传统流程图表示法 下面对其中一些主要符号作简要说明: (1)起止框是用来标识程序的开始和结束位置的。规定流程图以起止框开始,以起止框结束。 (2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。 (3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。 (4)处理框用矩形表示各种处理功能。例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。另外在矩形框内可注明特定处理名称或其简要功能。 (5)流程线用带箭头的直线表示程序

的执行顺序。当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。 (6)连接点用小圆圈表示将画在不同地方的流程线连接起来。下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。这种连接通常用在图形画不下而需要分开画时。 ① ① (7)注释框不是流程图的必要部分,其不反映流程操作,只是为了流程图中某些操作做解释补充的,以帮助阅读流程图的人更好的理解流程图的作用。 2.N-S流程图 灵活的流程线在程序设计中有它自己的优点,但也隐藏着许多导致错误的祸根。因为它允许用流程线使流程任意转移,这对程序设计是一个隐患,它使程序流程看起来很乱,使程序难以理解和维护。针对这一弊病,1973年美国学者I . Nassi和B . Shneiderman 提出了一种无流程线的流程图,称为N-S图。

C语言程序设计(第3章程序控制语句)4

C语言程序设计(第3章程序控制语句)4 3.4 循环控制语句 3.4.1 while语句 3.4.2 do... while 语句 3.4.3 for 语句 3.4.4 break与continue语句 3.4.5 程序应用举例 3.4 循环控制语句 循环控制结构(又称重复结构)是程序中的另一个基本结构。在实际问题中,常常需要进行大量的重复处理,循环结构可以使我们只写很少的语句,而让计算机反复执行,从而完成大量类同的计算。 C语言提供了while语句、do . . . while语句和for语句实现循环结构。 3.4.1 while语句 while语句是当型循环控制语句,一般形式为: while 语句; 语句部分称为循环体,当需要执行多条语句时,应使用复合语句。 while语句的流程图见图3 - 8,其特点是先判断,后执行,若条件不成立,有可能一次也不执行。 [例3 - 11] 求n! 分析: n!= n* (n - 1)*(n - 2)* .. 2*1, 0 ! = 1。即S0= 1,Sn= Sn - 1* n。可以从S0开始,依次 求出S1、S2、. . . Sn。 统一令S等于阶乘值, S的初值为0!= 1;变量i为计数器, i从1变到n,每一步令S = S * i,则最终S中的值就是n!。 程序如下: main( )

{ int n,i; long int s; printf(" please input n (n>=0) :"); scanf("%d" , &n); if (n>=0) { s = 1 ; if (n>0) { i = 1 ; while (i<=n) { s * = i ; i = i + 1 ; } } printf("%d! = %ld \n",n,s); } else printf("Invalid input! \n"); } 运行结果如下: please input n(n>=0): 0 0!= 1 please input n(n>=0): 6 6!= 720 please input n(n>=0): - 2 Invalid input! 考察图3- 9中循环部分的流程图可以看出,在循环前各变量应有合适的值( s = 1 ),

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲 一、课程教学目的 本课程系统学习 C语言的基本知识和基本语法,较好地训练学生解决问题的逻辑思维能力以及编程思路和技巧,使学生具有较强的利用 C 语言编写软件的能力,为培养学生有较强软件开发能力打下良好基础。 二、课程教学要求 通过本课程的学习,应熟练掌握 C 语言中的基本知识、各种语句及程序控制结构,熟练掌握 C 语言的函数、数组、指针、结构体、链表等数据结构的基本算法;并能熟练地运用 C 语言进行结构化程序设计;具有较强的程序修改调试能力;具备较强的逻辑思维能力和独立思考能力。 三、课时分配 本学科计划学时为246学时,其中理论与实训课时比例为7:3。 四、课程教学重、难点 课程教学重点:掌握C语言变量类型及不同类型常量的表示;标准的输入输出函数的使用;运算符及常用数学函数的使用;控制流程、数组和指针的使用;结构体、链表的构造使用;函数结构、函数参数传递及递归等方面的知识;基本的文件操作。 难点:指针的使用、结构体链表的构造和使用及函数的参数传递。 五、课程教学方法(或手段) 本课程实践性较强,故采用讲授和上机操作相结合的方式进行教学。 六、课程教学内容 第一章 C语言概述 1.教学内容 (1) 编程历史的回顾、程序设计介绍(过程式,面向对象,函数式,逻辑式); (2) C语言的历史背景、特点; (3) C语言源程序的格式和程序结构; (4) C程序的上机步骤。 2.重、难点提示 (1)重点:掌握简单的 C程序格式,包括main()函数、数据说明、函数开始和结束标志等;

(2)难点:编程入门以及对语言的理解。 第二章算法 1.教学内容 (1) 算法的概念及特性;评价算法优劣的方法(时间和空间); (2) 简单算法举例; (3) 算法的表示(自然语言、流程图、N-S流程图); (4) 结构化程序设计的基本思想及基本步骤。 2.重、难点提示 (1)重点:算法流程图三种基本结构(以后各章学习中利用流程图强化对程序的理解); (2)难点:算法概念以及对结构化程序设计思想的理解。 第三章数据类型、运算符与表达式 1.教学内容 (1) 基本数据类型及其常量的表示法(字符和字符串常量),各种数制(八、十、十六进制)的整型数和长整型数,实型数( float和double); (2) 变量的类型说明、初始化及引用; (3) 运算符与表达式: 2.重、难点提示 (1)重点:掌握 C的几种基本数据类型,不同类型数据间的混合运算规则;不同运算符的使用特点,清楚每种运算符的优先级与结合性;各种表达式的含义与使用要点。 (1)难点:不同类型数据间的混合运算;运算符的优先级与结合性。 第四章最简单的 C 程序设计—顺序程序设计 1.教学内容 (1) C程序结构和语句的构成; (2) 顺序结构程序的设计:赋值语句的使用要点; (3) 数据的输入与输出: 2.重、难点提示 (1)重点:顺序结构程序的表达式语句形式;输入/输出函数的表示与调用方法;利用流程图加深对顺序结构程序的理解。 (2)难点:格式输入与输出表示中各种格式字符的表示含义。

C语言程序的流程控制

C语言程序的流程控制 Prepared on 24 November 2020

第3章C语言程序的流程控制 利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。3.1程序设计的基本知识 3.1.1程序流程图 在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。 1.传统程序流程图 传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。美国国家标准化协会ANSI 规定了一些常用的流程图符号,现已为世界各国普遍采用。我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就

参照ANSI标准做具体介绍。标准中各种图示如图所示。 起止框输入输出框判断框处理框 或 流程线连接点注释框 图传统流程图表示法 下面对其中一些主要符号作简要说明: (1)起止框是用来标识程序的开始和结束位置的。规定流程图以起止框开始,以起止框结束。 (2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。 (3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。 (4)处理框用矩形表示各种处理功能。例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。另外在矩形框内可注明特定处理名称或其简要功能。

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