admin 管理员组

文章数量: 1087139


2024年3月29日发(作者:抖店后台登录入口)

第一部分 C语言理论基础

(11)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件

表达式a

(4) 结构化程序由三种基本结构组成,三种基本结构组成的算法

A) 可以完成任何复杂的任务

B) 只能完成部分复杂的任务

C) 只能完成符合结构化的任务

D) 只能完成一些简单的任务

(7) 以下叙述中正确的是

A) C语言比其他语言高级

B) C语言可以不用编译就能被计算机识别执行

C) C语言以接近英语国家的自然语言和数学语言作为语言的

表达形式

D) C语言出现的最晚,具有其他语言的一切优点

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

(15) 以下4组用户定义标识符中,全部合法的一组是

A) _main B) If C) txt D) int

enclude -max REAL k_2

sin turbo 3COM _001

(24)下列关于单目运算符++、--的叙述中正确的是

A) 它们的运算对象可以是任何变量和常量

B) 它们的运算对象可以是char型变量和int型变量,但不

能是float型变量

C) 它们的运算对象可以是int型变量,但不能是double型

变量和float型变量

D) 它们的运算对象可以是char型变量、int型变量和float

型变量

(2)以下叙述中错误的是

A)C语句必须以分号结束

B)复合语句在语法上被看作一条语句

C)空语句出现在任何位置都不会影响程序运行

D)赋值表达式末尾加分号就构成赋值语句

(4)以下能正确定义且赋初值的语句是

A)int n1=n2=10;

B)char c=32;

C)float f=f+1.1;

D)double x=12.3E2.5;

(5)设有定义:int k=1,m=2; float f=7;,则以下选项中错误

的表达式是

A)k=k>=k B)-k++ C)k%int(f) D)

k>=f>=m

(6)有以下程序段

int k=0,a=1,b=2,c=3;

k=ac ? c:k;

执行该程序段后,k的值是

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

(8).以下不能定义为用户标识符的是

A)Main

B)_0

C)_int

D)sizeof

(27) 以下非法的赋值语句是

A) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;

(33) 以下选项中不属于C语言的类型的是

A) signed short int

B) unsigned long int

C) unsigned int

D) long short

(34) 以下叙述正确的是

A) 可以把define和if定义为用户标识符

B) 可以把define定义为用户标识符,但不能把if定义为用

户标识符

C) 可以把if定义为用户标识符,但不能把define定义为用

户标识符

D) define和if都不能定义为用户标识符

(35) 在C语言中,合法的长整型常数是

A) 0L

B) 4962710

C) 324562&

D) 216D

(38) 以下合法的赋值语句是

第二部分 C语言基本语法知识

A) x=y=100

B) d--;

C) x+y;

D) c=int(a+b);

(40) 以下程序的输出结果是

main()

{ int a=3;

printf(“%dn”,(a+a-=a*a) );

}

A) –6

B)12

C) 0

D) –12

(41) 以下所列的C语言常量中,错误的是

A) 0xFF

B) 1.2e0.5

C) 2L

D) ‘72’

(42) 下列选项中,合法的C语言关键字是

A) VAR

B) cher

C) integer

D) default

(47) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的

值是

A) 1 B) 2 C) 2.0 D) 2.5

(48) 若变量a、iI已正确定义,且i已正确赋值,合法的语句是

A) a==1 B) ++i; C) a=a++=5; D) a=int(i);

(49) 若有以下程序段,

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是

A) 0 B) 0.5 C) 1 D) 2

(50) 设有 int x=11; 则表达式 (x++ * 1/3) 的值是

A) 3 B) 4 C) 11 D) 12

(51) 下列程序的输出结果是

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

main()

{ double d=3.2; int x,y;

x=1.2; y=(x+3.8)/5.0;

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

}

(52) 下列变量定义中合法的是

A) short _a=1-.le-1;

B) double b=1+5e2.5;

C) long do=0xfdaL;

D) float 2_and=1-e-3;

(53) 以下选项中属于C语言的数据类型是

A) 复数型

B) 逻辑型

C) 双精度型

D) 集合型

(62) C语言提供的合法的数据类型关键字是

A) Double B) short C) integer D)

Char

(73) C语言程序的基本单位是

A) 程序行 B) 语句 C) 函数 D) 字符

(5) 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下

语句:

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

后,a的值是 【5】 。

第三部分 顺序结构:输入与输出

(1)有以下程序

main()

{ int m,n,p;

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

printf("%d%d%dn",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p

中的值为789,则正确的输入是

A)m=123n=456p=789

B)m=123 n=456 p=789

C)m=123,n=456,p=789

D)123 456 789

(2) 有以下程序

main()

{ int m=0256,n=256;

printf("%o %on",m,n);

}

程序运行后的输出结果是

A) 0256 0400

B) 0256 256

C) 256 400

D) 400 400

(5) 有以下程序

main()

{ int a; char c=10;

float f=100.0; double x;

a=f/=c*=(x=6.5);

printf("%d %d %3.1f %3.1fn",a,c,f,x);

}

程序运行后的输出结果是

A) 1 65 1 6.5

B) 1 65 1.5 6.5

C) 1 65 1.0 6.5

D) 2 65 1.5 6.5

(6) 有定义语句:int x,y;, 若要通过scanf("%d,%d",&x,&y);

语句使变量x得到数值11,变量y得到数值12,下面四组输入

形式中,错误的是

A) 11 12<回车>

B) 11,12<回车>

C= 11,12<回车>

D= 11,<回车>

12<回车>

(8)若有以下程序段(n所赋的是八进制数)

int m=32767,n=032767

printf("%d,%o/n",m,n);

执行后输出结果是

A) 32767,32767 B) 32767,032767

C) 32767,77777 D) 32767,077777

(9)若有以下程序段

int m=0xabc,n=0xabc;

m-=n;

printf("%Xn",m);

执行后输出结果是

A) 0X0

B) 0x0

C) 0

D) 0XABC

(11) 设有定义:long x=-123456L;,则以下能够正确输出变量

x值的语句是

A)printf(“x=%dn”,x);

B) printf(“x=%ldn”,x);

C)printf(“x=%8dLn”,x);

D)printf(“x=%LDn”,x);

(12) 以下程序段的输出结果是

int a=1234;

printf("%2dn",a);

A) 12

B) 34

C) 1234

D) 提示出错、无结果

(18) 以下程序的输出结果是

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

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

main( )

{ int k=17;

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

}

(25)以下程序的输出结果是 【25】 。

# include

main()

{ int a=2,c=5;

printf("a=%%d,b=%%dn",a,c); }

A) a=%2,b=%5

B) a=2,b=5

C) a=%%d,b=%%d

D) a=%d,b=%d

(8)若有程序

main()

{ int i,j;

scanf("i=%d,j=%d";&i,&j);

printf("i=%d,j=%dn",i,j);

}

要求给i赋10,给j赋20,则应该从键盘输入 【8】 。

(14) 若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的

形式应该是 【14】 。

int b,c; float a;

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

(15) 若想通过以下输入语句给a赋于1,给b赋于2,则输入数

据的形式应该是 【15】 。

int a,b;

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

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

else

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

printf("%dn",d);

}

程序运行后的输出结果是

A) 2

B) 3

C) 43

D) 44

(10)以下4个选项中,不能看作一条语句的是

A) {;}

B) a=0,b=0,c=0;

C) if(a>0);

D) if(b==0) m=1;n=2;

(11)以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是

A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1

else k=0;

C) if(a<=B) k=0; D) if(a>B) k=1;

else if(b<=C) k=1; else if(b>C) k=1;

else k=0;

(12) 有以下程序

main()

{int a=1,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a

printf("%d,%dn",k,m);

}

程序运行后的输出结果是

A) 0,0

B) 0,1

C) 1,0

D) 1,1

(15)有以下程序

main()

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

if(a>b>c)

printf("%dn",d);

else if((c-1>=d)==1)

printf("%dn",d+1);

else

printf("%dn",d+2)

}

执行后输出结果是

A) 2 B) 3 C) 4 D) 编译时有错,无结果

(16) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2

第四部分 选择结构

(3)设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达

式是

A)(!a==1)&&(!b==0)

B)(a

C)a && b

D)a||(b+b)&&(c-a)

(4)设变量a、b、c、d和y都已正确定义并赋值。若有以下if

语句

if (a

if(c==d) y=0;

else y=1;

该语句所表示的含义是

(6)有以下程序

main()

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d %d %dn",i,j,k);

}

程序运行后的输出结果是

A)1 2 3

B)2 3 4

C)2 2 3

D)2 3 3

(8)有以下程序

main()

{

int a=3,b=4,c=5,d=2;

if(a>b)

if(b>c)

的值是

A) 6 B) 0 C) 2 D) 1

(17) 有一函数, ,以下程序段中不能根据x值正确计算出y值的

A) if(x>0) y=1; B) y=0;

else if(x==0) y=0; if(x>0) y=1;

else y=-1; else if(x<0) y=-1;

C)y=0; D)if(x>=0)

if(x>=0); if(x>0) y=1;

if(x>0) y=1 ; else y=0;

else y=-1; else y=-1;

(18) 有以下程序

main()

{ int a=15,b=21,m=0;

switch(a%3)

{ case 0:m++;break;

case 1:m++;

switch(b%2)

{ default:m++;

case 0:m++;break;

}

}

printf(“%dn”,m);

}

程序运行后的输出结果是

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

(24) 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;

后,y的值为

A) 不定值 B) 4 C) 3 D) 1

(46) 在下列选项中,不正确的赋值语句是

A) ++t;

B) n1=(n2=(n3=0));

C) k=i==j;

D) a=b+c=1;

(47) 能正确表示a≥10或a≤0的关系表达式是

A)a>=10 or a<=0

B)a>=10│a<=0

C)a>=10││a<=0

D)a>=10 ││a<=0

(2)以下程序运行后的输出结果是

main()

{

int a=3,b=4,c=5,t=99;

if(b

if(a

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

}

(3)以下程序运行后的输出结果是

main()

{

int a,b,c

a=10;b=20;c=(a%b<1)||(a/b>1);

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

}

(5)有以下程序

main( )

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

if(!n) x-=1;

if(m) x-=2;

if(x) x-=3;

printf(“%dn”,x);

}

执行后输出结果是【5】 。

(6) 以下程序运行后的输出结果是 【6】 。

main()

{ int p=30;

printf (“%dn”,(p/3>0 ? p/10 : p%3));

}

(9)若有以下程序

main()

{ int a=4,b=3,c=5,t=0;

if(a

if(a

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

}

执行后输出结果是 【9】 。

(10)以下程序运行后的输出结果是 [10] 。

main()

{ int x=10,y=20,t=0;

if(x==y)t=x;x=y;y=t;

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

}

(15) 若x为int类型,请以最简单的形式写出与逻辑表达式!x等价

的C语言关系表达式 [15] 。

第五部分:循环结构

(3)有以下程序

main()

{ int k=5,n=0;

while(k>0)

{ switch(k)

{ default : break;

case 1 : n+=k;

case 2 :

case 3 : n+=k;

}

k--;

}

printf("%dn",n);

}

程序运行后的输出结果是

A)0

B)4

C)6

D)7

(4)有以下程序

main()

{

int a=1,b;

for(b=1;b<=10;b++)

{

if(a>=8) break;

if(a%2==1) { a+=5; continue;}

a-=3;

}

printf("%dn",b);

}

程序运行后的输出结果是

A)3

B)4

C)5

D)6

(12) 有以下程序段

int n=0,p;

do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);

此处do—while循环的结束条件是

A) P的值不等于12345并且n的值小于3

B) P的值等于12345并且n的值大于等于3

C) P的值不等于12345或者n的值小于3

D) P的值等于12345或者n的值大于等于3

(17) 以下程序的输出结果是

main()

{ int num= 0;

while(num<=2)

{ num++; printf(“%dn”,num);

}

A} 1 B} 1 C}1 D} l

2 2 2

3 3

4

(18) 以下程序的输出结果是

main()

{ int a, b;

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

{ if(b>=10) break;

if (b%3= =1)

{ b+=3; continue; }

}

printf(“%dn”,a);

}

A) 101

B) 6

C) 5

D) 4

(19) 有以下程序段

int k=0;

while(k=1)k++;

while 循环执行的次数是

A) 无限次

B) 有语法错,不能执行

C) 一次也不执行

D) 执行1次

(28) 以下程序的输出结果是

A) 10 1 9 2

B) 9 8 7 6

C) 10 9 9 0

D) 10 10 9 1

main( )

{ int x=10,y=10,I;

for(i=0;x>8;y=++i)

printf("%d,%d ",x--,y);

}

(29) 以下程序的输出结果是

A) 2 0

B) 3 1

C) 3 2 1

D) 2 1 0

main( )

{ int n=4;

while(n--)printf("%d ",--n);

}

(32) 执行以下程序后,输出的结果是

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

main ()

{ int y=10;

do { y - -;} while(- - y);

printf("%dn",y - -);

}

(34) 执行语句: for(i=l:i++<4:);后,变量i的值是

A) 3

B) 4

C) 5

D) 不定

(38) 假定a和b为int型变量,则执行以下语句后b的值为

a=1; b=10;

do

{ b-=a; a++; }

while (b--<0) ;

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

(47) 请读程序片段:

#include

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("%dn",a);

}

上面程序的输出结果是

A) 7

B) 8

C) 9

D) 10

(49) 请读程序:

#include

#include

main()

{ float x,y,z;

scan("%f%f",&x,&y);

z=x/y;

while(1)

{ if(fabs(z)>1.0)

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

}

else break

}

printf("%fn",y);

}

若运行时从键盘上输入3.6 2.4(表示回车),则输出的

结果是

A) 1.500000

B) 1.600000

C) 2.000000

D) 2.400000

(51) 语句while(!E);中的条件!E等价于 。

A)E = = 0

B)E!=1

C)E!=0

D)~E

(6) 以下程序的输出结果是【7】 。

main()

{int s,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%dn",s);

}

(7)以下程序运行后的输出结果是 【8】 。

main()

{ int i=10, j=0;

do

{ j=j+i; i-;

while(i>2);

printf(“%dn”,j);

}

(9) 下面程序的功能是:计算1到10之间奇数之和及偶数之和,请

填空。

#include

main()

{ int a, b, c, i;

a=c=0;

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

{ a+=i;

[10] ;

c+=b;

}

printf("偶数之和=%dn",a);

printf("奇数之和=%dn",c-11);

}

(10) 下面程序的功能是:输出100以内能被3整除且个位数为6

的所有整数,请填空。

#include

main()

{ int i, j;

for(i=0; [11] ; i++)

{ j=i*10+6;

if( [12] ) continue;

printf("%d",j);

}

}

(11) 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为

【13】 。

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

k=i+j;

(13) 下面程序的输出是 【16】 。

main()

{ int x=2;

while(x--);

printf("%dn", x);}

第六部分:字符型数据

(1)以下叙述中正确的是

A)调用printf函数时,必须要有输出项

B)使用putchar函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制

的形式输出

D)调用getchar函数读入字符时,可以从键盘上输入字符

所对应的ASCII码

(3)有以下程序

#include

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中将无确定值

(4)数字字符0的ASCII值为48,若有以下程序

main()

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

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

printf("%dn",b-a);

}

程序运行后的输出结果是

A)3,2

B)50,2

C)2,2

D)2,50

(8) 已定义ch为字符型变量,以下赋值语句中错误的是

A) ch="";

B) ch=62+3;

C) ch=NULL;

D) ch="xaa";

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

A) c=‘97’;

B) c="97";

C) c=97;

D) c="a";

(11) 已知大写字母A的ASCII码值是65,小写字母a的ASCII

码是97,则用八进制表示的字符常量‘101’是

A) 字符A

B)字符a

C)字符e

D)非法的常量

(23) 在C语言中,合法的字符常量是

A) ‘084'

B) ‘x43'

C) ‘ab'

D) “0”

(25) 已知字母A的ASCII码为十进制的65,下面程序的输出是

A) 67,D

B) B,C

C) C,D

D) 不确定的值

main()

{ char ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%cn",ch1,ch2);}

(28) 有以下程序:

# include

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);

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

printf("n"); }

从第一列开始输入以下数据,代表一个回车符。

2743

程序的输出结果是 【28】 。

A) 66877

B) 668966

C) 6677877

D) 668876

(3)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输

入:B33<回车>.输出结果是

#include "stdio.h"

main()

{

char a,b;

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

a=a-'A'+'0';

b=b*2;

printf("%c %cn",a,b);

}

(5)有以下程序

#include

main( )

{ char ch1,ch2; int n1,n2;

ch1=getchar(); ch2=getchar();

n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);

printf(“%dn”,n2);

}

程序运行时输入:12<回车>,执行后输出结果是【5】 。

(7) 执行以下程序后,输出‘#’号的个数是 【7】 。

#include

main()

{ int i,j;

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

for(j=2; j<=i; j++) putchar('#');

}

(10) 下列程序段的输出结果是 【10】 。

int n=’c’;

switch(n++)

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

case ‘a’:case ‘A’:case ‘b’:case ‘B’:printf(“good”);break;

case ‘c’:case ‘C’:printf(“pass”);

case ‘d’:case ‘D’:printf(“warn”);

}

(11) 若输入字符串:abcde<回车>,则以下while循环体将执行 [11]

次。

While((ch=getchar())==’e’) printf(“*”);

(1)以下关于函数的叙述中正确的是

A)每个函数都可以被其它函数调用(包括main函数)

B)每个函数都可以被单独编译

C)每个函数都可以单独运行

D)在一个函数内部可以定义另一个函数

(2)设函数fun的定义形式为

void fun(char ch, float x ) { … }

则以下对函数fun的调用语句中,正确的是

A)fun("abc",3.0);

B)t=fun('D',16.5);

C)fun('65',2.8);

D)fun(32,32);

(3)有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{ int a=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d%dn",e,f,g);

}

程序运行后的输出结果是

A)4,3,7

B)3,4,7

C)5,2,7

D)2,5,7

(4)有以下程序

#define P 3

#define F(int x) { return (P*x*x);}

main()

{

printf("%dn",F(3+5));

}

程序运行后的输出结果是

A)192

B)29

C)25

D)编译出错

(5) 若程序中定义了以下函数

double myadd(double a,double B)

{ return (a+B) ;}

并将其放在调用语句之后,则在调用之前应该对该函数进行说

明,以下选项中错误的说明是

A) double myadd(double a,B) ;

B) double myadd(double,double);

C) double myadd(double b,double A) ;

D) double myadd(double x,double y);

(9) 有以下函数定义:

void fun( int n, double x) { …… }

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确

调用语句是

A) fun(int y,double m);

B) k=fun(10,12.5);

C) fun(x,n);

D) vold fun(n,x);

(17) 以下函数值的类型是

fun ( float x )

{ float y;

y= 3*x-4;

return y;

}

A) int

B) 不确定

C) void

D) float

(20) 有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是

A) 3

B) 4

C) 5

D) 有语法错

(26) 请读程序:

#include

func( int a, int b)

{ int c;

c=a+b;

return c;

}

main()

{ int x=6, y=7, z=8, r;

r=func( x--,y==,x+y),z--);

printf("%dn",r);

}

上面程序的输出结果是

A) 11

B) 20

C) 21

D) 31

二、填空题

(1)有以下程序

int sub(int n) { return (n/10+n%10); }

main()

{ int x,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

printf("%dn",y);

}

若运行时输入:1234<回车>,程序的输出结果是 【1】 。

(5) 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,

并输出结果。请填空。

int fun(int n)

{ int n=0,f=1, i;

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

{ m+=i*f;

f= 【6】 ;

}

return m;

}

main()

{ printf("m=%dn", 【7】 );}

(6) 请在以下程序第一行的下划线处填写适当内容,使程序能正

确运行。

【8】(double,double);

main()

{ double x,y;

scanf("%1f%1f",&x,&y);

printf("%1fn",max(x,y));

}

double max(double a,double b)

{ return (a>b ? a:b) :}

(9) 函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include “math.h”

double pi(long n)

{ double s=0.0; long i;

for(i=1;i<=n;i++)s=s+ [11] ;

return(sqrt(6*s));

}

(10) 下面程序的输出是 【12】 。

unsigned fun6( unsigned num)

{ unsigned k=1;

do {

k*=num%10;

num/=10;

} while(num);

return(k);}

main()

{ unsigned n=26;

printf("%dn", fun6(n));

}

第九部分(一) :一维数组与指针

(6)有以下程序

main()

{

int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7) if(p[i]%2) j+=p[i];

printf("%dn",j);

}

程序运行后的输出结果是

A)42

B)45

C)56

D)60

(9)有以下程序

#define N 20

fun(int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

main()

{

int i,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

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

printf("%d",a[i]);

}

程序运行后的输出结果是

A)10234

B)12344

C)12334

D)12234

(16) 有以下程序

main()

{ int x[]={1,3,5,7,2,4,6,0},i,j,k;

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

for (j=2;j>=i;j--)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

for(j=4;j<7-i;j++)

if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

for (i=0;i<8;i++) printf("%d",x[i]);

printf("n");

}

程序运行后的输出结果是:

A) 75310246

B) 01234567

C) 76310462

D) 13570246

(18) 有以下程序

void swap1(int c[])

{ int t;

t=c[0];c[0]=c[1];c[1]=t;

}

void swap2(int c0,int c1)

{ int t;

t=c0;c0=c1;c1=t;

}

main( )

{ int a[2]={3,5},b[2]={3,5};

swap1(A) ; swap2(b[0],b[1]);

printf(“%d %d %d %dn”,a[0],a[1],b[0],b[1]);

}

其输出结果是

A) 5 3 5 3

B) 5 3 3 5

C) 3 5 3 5

D) 3 5 5 3

(20) 有以下程序

void sort(int a[],int n)

{ int i,j,t;

for(i=0;i

for(j=i+2;j

if(a[i]

}

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(aa,10);

for(i=0;i<10;i++) printf(“%d”,aa[i]);

printf(“n”);

}

其输出结果是

A) 1,2,3,4,5,6,7,8,9,10,

B) 10,9,8,7,6,5,4,3,2,1,

C) 9,2,7,4,5,6,3,8,1,10,

D) 1,10,3,8,5,6,7,4,9,2,

(29) 以下程序的输出结果是

f(int b[],int m,int n)

{ int i,s=0;

for(i=m;i

return s;

}

main()

{int x,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

printf("%dn",x);

}

A) 10

B) 18

C) 8

D) 15

(31) 以下程序的输出结果是

main()

{ int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf(“%d%d%d”,a[2],a[5],a[8]);

}

A) 258

B) 741

C) 852

D) 369

(35) 以下程序的输出结果是

A) 20

B) 21

C) 22

D)23

main()

{ int i, k, a[10], p[3];

k=5;

for (i=0;i<10;i++) a[i ]=i;

for (i=0;i<3;i++) p[i ]=a[i *(i+1)];

for (i=0;i<3;i++) k+=p[i] *2;

printf(“%dn”,k);

}

(38) 有如下程序

main()

{ int n[5]={0,0,0},i,k=2;

for(i=0;i

printf(“%dn”,n[k]);

}

该程序的输出结果是

A) 不确定的值

B) 2

C) 1

D) 0

(48) 以下程序的输出结果是

main()

{ int i,k,a[10],p[3]:

K=5;

for (i=0;i<10;i++) a[i]=i;

for (i=0;i<3;i++) p[i]=a[i*(i+1)];

for (i=0;i<3;i++) k+=p[i]*2;

printf("%dn",k);

}

A) 20

B) 21

C) 22

D)23

(55) 阅读下列程序:

main( )

{ int n[3],i,j,k;

for(i=0;I<3;i++) n[i]=0;

k=2;

for (i=0;I

for (j=0;j

printf("%dn",n[1]); )

下述程序运行后输出结果是

A) 2

B) 1

C) 0

D} 3

(4) 若已定义:int a[10], i;,以下fun函数的功能是:在第一个

循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、

10;在第二个循环中使a数组前10个元素中的值对称折叠,变

成1、2、3、4、5、5、4、3、2、1。请填空。

fun( int a[ ])

{ int i;

for(i=1; i<=10; i++) 【5】=i;

for(i=0; i<5; i++) 【6】=a[i];

}

(7) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计

计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结

束输入。请填空。

main( )

{ float x[1000], sum=0.0, ave, a;

int n=0, i;

printf("Enter mark:n");scanf("%f",&a);

while(a>=0.0&& n<1000)

{ sum+ 【9】 ; x[n]= 【10】 ;

n++; scanf("%f",&a);

}

ave= 【11】 ;

printf("Output:n");

printf("ave=%fn",ave);

for (I=0;I

if 【12】 printf (“%fn”,x[I]);

}

(15) 下面程序的输出是 【23】 。

main()

{ int arr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]=i;

printf( '%dn", k);}

(17) 以下程序统计从终端输入的字符中每个大写字母的个数。用

#号作为输入结束标志,请填空。

#include

#include

main( )

{ int num[26],i; char c;

for(i=0; i<26; i++) num[i]=0;

while( 【25】 !='#') /*统计从终端输入的大写字母

个数*/

if( isupper(c)) num[c-65]+=1;

for(i=0; i<26; i++) /*输出大写字母和该字母的个数

*/

if(num[i]) printf("%c:%dn,i 【26】 , num[i]);

}

第九部分:二维数组与指针

(4) 以下能正确定义二维数组的是

A) int a[][3];

B) int a[][3]= {2*3};

C) int a[][3]={};

D) int a[2][3]={{1},{2},{3,4}};

(7) 有以下程序

int f(int b[][4])

{ int i,j,s=0;

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

{ i=j;

if(i>2) i=3-j;

s+=b[i][j];

}

return s;

}

main( )

{ int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

printf(“%dn”,f(A) );

}

执行后的输出结果是

A) 12

B) 11

C) 18

D) 16

(11) 以下能正确定义数组并正确赋初值的语句是

A) int N=5,b[N][N];

B) int a[1][2]={{1},{3}};

C) int c[2][]={{1,2},{3,4}};

D) int d[3][2]={{1,2},{34}};

(12) 有以下程序

main()

{ int m[][3]={1,4,7,2,5,8,3,6,9};

int i,j,k=2;

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

{ printf("%d",m[k][i]); }

}

执行后输出结果是

A) 4 5 6

B) 2 5 8

C) 3 6 9

D) 7 8 9

(14) 有以下程序

main()

{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};

int i,s=0

for(i=0;i<4;i++) s+=aa[i][1];

printf(“%dn”,s);

}

程序运行后的输出结果是

A) 11

B) 19

C) 13

D) 20

(16) 以下程序的输出结果是

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

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

for(j=i;j<=i;j++) t=t+b[i][b[j][j]];

printf("%dn",t);

}

A) 3

B) 4

C) 1

D) 9

(18) 以下程序的输出结果是

main()

{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf(“%d%d%d%dn”,a[0][3],a[1][2],a[2][1],a[3][0]);

}

A) 0650

B) 1470

C) 5430

D) 输出值不定

(19) 以下程序的输出结果是

A) 1,5,9

B) 1,4,7

C) 3,5,7

D)3,6,9

main()

{ int i, x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf(“%d,”,x[i][2-i]);

}

(20) 以下程序的输出结果是

A) 18

B) 19

C) 20

D)21

main()

{ int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

printf(“%dn”,s);

}

(22) 有如下程序

main0

{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

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

for(j=0;j

printf(“%dn”,s);

}

该程序的输出结果是

A) 18

B) 19

C) 14

D) 21

(26) 以下程序的输出结果是

A)14

B)0

C)6

D)值不确定

main()

{ int n[3][3] , i, j;

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

for ( j=0; j<3; j++ ) n[i][j]=i+j;

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

for ( j=0; j<2; j++ ) n[i+1][j+1]+= n[i][j];

printf(“%dn”,n[i][j]);

}

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是

for(i=0;i<3;i++) printf("%d",x[i][2-i]);

A) 1 5 9

B) 1 4 7

C) 3 5 7

D) 3 6 9

(5) 以下程序运行后的输出结果是 【9】

main()

{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++) a[j][i]=0;

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

{ for(j=0;j<3;j++) printf("&d ", a[i][j]);

printf("n");

}

}

(6) 若有以下程序

main()

{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}

};

int i,j,s=0;

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

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

{ if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

printf("%dn",s);

}

执行后输出的结果是 【10】 。

(10) 以下程序中,主函数调用了LineMax函数,实现在N行M

列的二维数组中,找出每一行上的最大值。请填空。

#define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p;

for(i=0; i

{ p=0;

for(j=1; j

if(x[i][p]

printf(“The max value in line %d is %dn”, i, 【18】 );

}

}

main()

{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【19】

}

(13) 阅读下列程序:

#include

main()

{ int i, j, row, column,m;

static int array[3][3]={{100,200,300},

{28,72,-30},

{-850,2,6}

};

m=array[0][0];

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

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

if (array[i][j]

{ m=array[i][j]; row=i; column=j;}

printf("%d,%d,%dn",m,row,column);

}

上述程序的输出结果是 【22】 。

《程序设计基础》教案

第一章 程序设计和C语言

课 题

教 学

目 的

教 材

分 析

课时安排

C语言概述

1、了解C语言出现的历史背景

2、掌握C语言程序的结构、书写格式和上机步骤

教案号 1

教学重点

C语言程序的结构

教学难点

上机步骤

2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一 新课引入

从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。

二 讲授新课

一、

C语言出现的背景

二、

C语言的特点

1.

语言简洁、紧凑,使用方便、灵活;

2.

运算符丰富

3.

数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、

共用体类等)

4.

具有结构化的控制语句

5.

语法不太严格,自由度大

6. 既是高级语言,又具有低级语言的功能

7. 成目标代码质量高,程序执行效率

8. 可移植性好

三、C语言程序构成(采用程序实例加以说明,并提倡良好的程序设计书写风

格)

1.

C语言是由函数构成的,至少有一个main()函数;

2.

每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成;

3.

每个C程序从main()函数开始执行,并在main()中结束;

4.

每个语句和数据定义的最后必须加分号;

5.

C程序无输入、输出语句:输入功能由scanf()函数完成;输出功能由

printf()函数完成;

6. 可加注释/*……*/

四、上机步骤(上机环境:Turbo C 2.0)

1.

进入环境 2.

编辑源程序 3.

保存源程序 4.

编译源程序

5.

执行程序,查看结果 6. 退出C环境

三 课堂小结

1、

C语言的构成要素,main函数在程序中的作用

2、 上机操作的过程

备注

安排上机实验,熟悉TC环境及简单的C语言程序构成

页码 1

第二章 算法——程序的灵魂

课 题

教 学

目 的

教 材

分 析

课时安排

算法

1、了解算法的概念

2、掌握结构化程序的三种基本结构,及算法的表示方法

教案号 2

教学重点

算法的表示方法

教学难点

结构化程序的三种基本结构

2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一 复习引导

从C程序的构成到C程序的设计过程

二 讲授新课

一个程序包括以下两方面内容:

1.

对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结

构;

2.

对操作的描述。即算法,为解决一个问题而采取的方法和步骤。

著名计算机科学家Wirth提出一个公式:数据结构+算法=程序

一、简单的算法举例

例1:设有两个杯子A和B,分别盛放酒和醋,要求将它们互换。

S1:C ← A S2:A ← B S3:B ← C

例2:求1~100的和

S1:sum←0,t←1; S2:sum←sum+t

S3:t←t+1 S4:若t <= 100,则转到S2,否则转到S5;

S5:输出sum,结束。

二、算法的特征

1、有穷性; 2、确定性; 3、

有零个或多个输入;

4、

有一个或多个输出; 5、

有效性;

三、算法的表示

1、 用自然语言表示算法–通俗易懂,但有“歧义”。

2、 用传统流程图表示算法–直观、易懂。

程序的三种基本结构:顺序结构、选择结构、循环结构

A

P

P P

A

A B A

B

A

P

备注

页码 2

第二章 算法——程序的灵魂

课 题

算法

教案号

2

教 学 1

、了解算法的概念

2、掌握结构化程序的三种基本结构,及算法的表示方法

目 的

教 材 教学重点

算法的表示方法

分 析

教学难点

结构化程序的三种基本结构

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

3、N-S流程图表示算法

A

P

A

当P成立

T F

B

当P成立

A

B

A

4、 用伪代码表示算法

5、 用计算机语言表示算法(即实现算法)

四、结构化程序设计方法结构化程序设计方法强调:

程序设计风格和程序结构的规范化,提倡清晰的结构:

①自顶向下 ②逐步细化

③模块化设计 ④结构化编码

三、课堂小结

1、

程序的三种基本结构:顺序、选择、循环

2、

5种描述算法的方法,关键是N-S图

3、 灵活运用三种基本结构,学会结构化的程序设计方法

四、布置作业

用N-S图表示求解以下问题的算法:

1、求10!

2、将100~200之间的素数打印出来

3、求两个数m ,n的最大公约数

备注

安排上机实验

页码 3

第三章 最简单的C程序设计---顺序程序设计

课 题

数据类型

教案号

3

1、掌握C的数据类型

教 学

2、掌握整型、实型、字符型数据的常量及变量

目 的

教 材 教学重点

各种基本数据类型的常量和变量

分 析

教学难点

不同类型的数据在内存中的物理存储形式

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一 复习引导

上次课我们已经学习了程序的一个方面算法,现在来学习另一方面数据结

构。

二 讲授新课

C有四种基本数据类型,分别是整型、字符型、实型、枚举型

一、常量与变量

1、

常量:在程序运行过程中,其值不能被改变的量。

两种形式:一般常量和符号常量

1. 直接常量(字面常量):

整型常量:如12、0、-3等

实型常量:如、等

字符常量:如‘a’、‘1’等,用单引号表示;

字符串常量:如“a”、“abc”、“1”,用双引号表示。

2. 符号常量:

符号常量即是用一个标识符来代替一个常量;符号常借助于预处理命

令#define来实现;

定义形式:#define 标识符 字符串

如:

说明:

① 习惯上,符号常量用大写字母表示;

② 定义符号常量时,不能以“;”结束;

③ 一个#define占一行,且要从第一列开始书写;

④ 一个源程序文件中可含有若干个define命令,不同的

define命令中指定的“标识符”不能相同;

2、变量:在程序运行过程中,其值会发生变化。

备注

页码 4

第三章 最简单的C程序设计---顺序程序设计

课 题

数据类型

教案号

3

1、掌握C的数据类型

教 学

2、掌握整型、实型、字符型数据的常量及变量

目 的

教 材 教学重点

各种基本数据类型的常量和变量

分 析

教学难点

不同类型的数据在内存中的物理存储形式

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

二、整型数据

1、整型常量的表示方法

1)

十进制 如:123,-456,0

2)

八进制数 如:0123,-011 (以0开头的数)

3)

十六进制数 如:0x123,-0x12,0xABC (以0x开头的)

2、整型变量

1)

整型数据在内存中以二进制形式存放,每一个整型变量在内存中占2

个字节。

例:定义整型变量i=10 和j= -10的存放形式。

2) 整型变量的分类:基本型int、短整型short、长整型long、无符号型

unsigned

3)

整型变量的定义

对变量的定义,一般放在函数体开头部分的声明部分(也可放在函数中

某一分程序内)

例:#include

main( )

{ int a, b, c, d; unsigned u;

a=12; b=-24; u=10;

c=a+u; d=b+u;

printf(“a+u=%d, b+u=%dn”,c,d); }

4)

整型数据的溢出

一个int 型变量的最大允许值为32767,如果再加1,其结果不是32768,

而是-32768。即“溢出”。

三、实型数据

1、实型常量的表示方法

(1) 十进制浮点数

如:,.456,,123.,

整数部分和小数部分都可省,但不能同时省

(2) 指数形式

如:123e3,123E3代表123×10

3

指数部分为整常数; 尾数部分可以是整常数,也可以是实常数;尾

数部分和指数部分均不可省。E10, 100.e15.2, .e5均为不合法的浮点

数。

备注

页码 5

第三章 最简单的C程序设计---顺序程序设计

课 题

数据类型

教案号

3

1、掌握C的数据类型

教 学

2、掌握整型、实型、字符型数据的常量及变量

目 的

教 材 教学重点

各种基本数据类型的常量和变量

分 析

教学难点

不同类型的数据在内存中的物理存储形式

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

2、实型变量

(1)实型数据在内存中的存放形式

一个实型数据一般在内存中占4个字节(32位)。实型数据是按照指数形

式存储的。

(2)实型变量的分类:单精度float、双精度double、长双精度long double

四、字符型数据

1、字符常量

1)

括在一对单引号中的一个字符(单引号仅作界限符),如:‘a’ 、‘X’

2

一个字符常量占1个字节,存放的是字符的ASCII码值。

3)

转义字符:

以‘ ’开头,后跟一个约定的字符或所要表示字符的十六进制(或者八

进制)的编码;

2、字符变量: 字符变量用来存放字符常量,只能放一个字符。例:char

c1=‘a’, c2=‘A’; 一个字符变量在内存中占一个字节。

五、字符串常量

1. 括在一对双引号中的0个或多个字符组成的序列;双引号仅作界限符;如:

“C language programming”、“an”、“#123”、“ ”等为字符串常量;

2.字符串常量的实际存储:在存储完字符串中的有效字符后还应存储字符

串结束标志‘0’。

六、变量赋初值

在定义变量时对变量进行赋值称为变量的初始化;

格式:类型说明符 变量1=值1,变量2=值2,……;

如: int a=3, b=4, c=5;

float x=3.4, y=0.75;

char ch1=‘K’, ch2=‘P’;

三 课堂小结

1、C的基本数据类型int、float、double、char

2、

基本数据类型的常量表示、变量定义,及不同类型的数据在内存中的存储

形式

四、布置作业

练习P82:课后习题

备注

页码 6

第三章 最简单的C程序设计---顺序程序设计

课 题

运算符与表达式

教案号 4

1、掌握C语言中的各种运算符

教 学

2、掌握运算符的优先级与结合性

目 的

教 材 教学重点

C语言中各种运算符的使用

分 析

教学难点

混合表达式中运算符的运算顺序

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、讲授新课

用运算符和括号将运算对象(数据)连接起来的、符合C语法规则的句子称为

表达式。

优先级是指表达式中包含多个运算符时,先进行优先级高的运算符操作,然后

在进行优先级低的运算符操作;

当表达式中包含的几个运算符的优先级全相同时,由运算符的结合性来决定他

们的运算顺序。1)

从左至右 2)

从右至左

一、算术运算符与算术表达式

1、基本的算术运算符: + – * / %

优先级: * / % 高于 + –

结合性:左结合性

2、算术表达式:用算术运算符和括号将运算对象(操作数)连接起来的、符

合C语法规则的式子称为算术表达式。

3、强制类型转换运算符:(类型名)(表达式)

4、自增、自减运算符:+ + – –

作用是使变量的值增一或减一。

二、赋值运算符与赋值表达式

1、 简单的赋值运算符:= 除逗号表达式外,优先级最低

2、 复合赋值运算符: += *= %=等

3、 赋值表达式: <变量><赋值运算符>< 表达式/值>

4、 嵌套的赋值表达式

三、逗号运算符与逗号表达式

1、 逗号运算符: , 所有运算符中优先级最低

2、 逗号表达式: 表达式1,表达式2,……,表达式n

求解过程:先求表达式1,再求表达式2,依次求下去,直到求出表达式n,

整个逗号表达式的值就是表达式n的值

四、各类数值型数据间的混合运算(P54)

二、 课堂小结

1、

++、--运算

2、

各种运算符的优先级 3、表达式值的求解

三、 布置作业

练习:P83 习题

备注

安排上机实验

页码 7

第三章 最简单的C程序设计---顺序程序设计

教案号 5

1、了解C语句的概念及种类、掌握C语言常用的输入/出方式

教 学

2、学会简单的顺序程序设计

目 的

教 材 教学重点

C语言常用的输入/出方式

分 析

教学难点

格式输入输出

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

顺序程序设计

课 题

一、复习引导

上一章介绍的常量、变量、运算符、表达式等都是构成程序的基本成分。本

章将介绍为编写简单程序所必需的一些内容。

二、讲授新课

一、C语句概述

1、C语句分类:

①控制语句:二个分支语句(if-else、switch),三个循环语句(for、while、

do-while),四个转移语句(continue、break、goto、return)

②函数调用语句 如:printf(“Hello, world!”);

③表达式语句 如: x+y; i++; a=2; a=3*5, 40 ;

④空语句 ;

⑤复合语句 { 语句序列 }

二、赋值语句:赋值语句是由赋值表达式加上一个分号构成,如:b=3;

三、 数据输入输出的概念及在C语言中的实现

1、

所谓输入输出是以计算机主机为主体而言的。

2、

C语言本身不提供输入输出语句,输入输出操作是通过函数调用实现

的。

3、

要使用C语言库函数,应用“#include”将有关头文件包括到用户源

程序中。

四、字符数据的输入输出

1、字符输出函数——putchar

语法:putchar(c)

语义:(向stdout终端)输出一个字符;

2、字符输入函数——getchar

语法:getchar ( ),是一个无参函数;

语义:(从stdin终端上) 输入一个字符,函数的值就是从输入设备得到

的字符。

五、格式输入输出

1、格式输出函数——printf

语法:printf (“格式控制”, 输出表列);

格式控制:是用双引号括起来的字符串,包含两种信息:⑴ 普通字符和

转义字符(这类字符总是原样输出)⑵格式说明:由%和格式控制符组成。

如:%d, %f等;(P77)如:printf(“a=%d, b=%d”,a,b); 若a、b的值

分别为2和3,则输出结果为: a=2, b=3

备注

页码 8

第三章 最简单的C程序设计---顺序程序设计

教案号 5

1、了解C语句的概念及种类、掌握C语言常用的输入/出方式

教 学

2、学会简单的顺序程序设计

目 的

教 材 教学重点

C语言常用的输入/出方式

分 析

教学难点

格式输入输出

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

顺序程序设计

课 题

2、格式输入函数 scanf

语法:scanf(“格式控制”,地址表列);

格式控制:包含三类符号

⑴ 空白字符:(空格、Tab或t、n),输入时不必一一对应;

⑵ 普通字符:(非格式转换说明符、非空白符、非%),输入时

必须一一对应;

格式转换说明符:

注意:scanf函数规定,组成输入项表的输入对象须是地址量;如:

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

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

①第一个输入语句,正确的输入数据流为:123,456,789

处理的结果为: 123→a,456→b,789→c

②同理对第二个输入语句,正确的输入数据流应是:

a=123,b=456,c=789 该输入数据流中除123,456,789被

赋给相应变量外,其余都被丢弃

六、顺序结构程序设计举例

例1:输入三角形的三边长,求三角形面积。

分析:三边为a,b,c,面积area

2

=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2

程序:

#include

main()

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

sacnf(%f,%f,%f”,&a,&b,&c);

s=1.0/2*(a+b+c);

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

printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);

printf(“area=%7.2fn”,area);

}

备注

上机实验,学习简单的C程序设计。

页码 9

第四章 选择结构程序设计

课 题

选择结构程序设计

教案号 6

1、掌握实现选择结构的两种语句、两个运算符

教 学

2、学会编写选择结构的程序

目 的

教 材 教学重点

关系运算符、if-else语句

分 析

教学难点

嵌套if-else语句中的if与else匹配问题

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、复习引导

上一次课已经介绍了程序基本结构之一,但在大多数情况下都要用到选择结构。

二、讲授新课

一、关系运算符与关系表达式

1、关系运算符:< <= > >= = = ! =

优先级:< <= > >= 高于 = = !=

关系运算符低于算术运算符,高于赋值运算符

2、关系表达式:用关系运算符将两个表达式连接起来的式子。

关系表达式求值:关系成立,值为1;关系不成立,值为0

二、双分支选择语句

1、if语句的三种形式

语法1:if (表达式)语句;

语法2:if (表达式) 语句1;else 语句2;

语法3:if (表达式1) 语句1;

else if (表达式2) 语句2;

else if (表达式3) 语句3;

……

else 语句n+1;

说明:

1.

if 关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等);

如:if (a=5) 语句; if (b) 语句;

2.

条件表达式必须用括号括起来,在语句后必须加分号;

3.

满足条件需执行一组语句时,该组语句必须用{ }括起来;

4.

if 语句嵌套时,else 总是与它最靠近的未配对的if 匹配;

5.因为if 语句执行时总是简单地测试其中作为条件的“表达式”的值是0还

是非0,便可利用这种特性来简化程序设计。如对于:

if (expression!=0) 完全可用 if (expression) 来代替;

同理: if(!exp)语句;等价于:if(exp= =0) 语句;

三、课堂小结

1、关系运算符与关系表达式

2、if-else语句的应用。

备注

页码 10

第四章 选择结构程序设计

课 题

选择结构程序设计

教案号 7

1、掌握实现选择结构的两种语句、两个运算符

教 学

2、学会编写选择结构的程序

目 的

教 材 教学重点

switch语句、条件运算符

分 析

教学难点

嵌套if-else语句中的if与else匹配问题

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、教授新课

一、三目条件运算符及其表达式

1、条件运算符:?:

2、格式:e1?e2:e3

3、语义:判e1的值,为1时计算e2,否则计算e3;

如:max=(a>b)?a:b 等价于 if (a>b) max=a;

else max=b;

4、说明:

1)

条件运算符的结合方向自右至左

如:a>b?a:c>d?c:d 等价于 a>b?a:(c>d?c:d)

若int a=1,b=2,c=3,d=4;则表达式的值为________

2)

条件运算符的优先级仅高于逗号运算符与赋值运算符;

3) 只有当if语句的真假均只执行一个赋值语句且给同一变量赋值时,才能

用条件表达式取代;如:if (a>b) max=a; else max=b;

二、switch 语句

语法1: switch (表达式)

{ case C

1

:语句序列1;

case C

2

:语句序列2;

……

case C

n

:语句序列n;

default:语句序列n+1;

}

语法2:switch (表达式)

{ case C

1

:语句序列1;break;

case C

2

:语句序列2;break;

……

备注

页码 11

第四章 选择结构程序设计

课 题

选择结构程序设计

教案号 7

1、掌握实现选择结构的两种语句、两个运算符

教 学

2、学会编写选择结构的程序

目 的

教 材 教学重点

switch语句、条件运算符

分 析

教学难点

嵌套if-else语句中的if与else匹配问题

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

(5) 每个case后面的常量表达式的值必须互不相同。

(6) 各个case与default出现次序不影响结果。

(7) break的使用(P99)

(8) 多个case可以共用一组语句

三、选择结构程序举例

例:求ax

2

+bx+c=0方程的根。

分析:

(1)a=0,不是二次方程。

(2)b

2

-4ac=0,有两个相等的实根。

(3)b

2

-4ac>0,有两个不等的实根。

(4)b

2

-4ac<0,有两个共轭的复根。

N-S图:P102

二、课堂小结

1、

switch语句

2、

在编写程序过程中,注意分支的作用范围,及复合语句的运用。

三、布置作业

1、上机作业(P112):6、8

2、书面作业(P111)3、7

备注

上机实验,学习选择结构的程序设计

页码 12

第五章 循环结构程序设计

课 题

循环结构程序设计

教案号 8

1、掌握三种循环语句的语法结构

教 学

2、灵活运用循环语句

目 的

教 材 教学重点

三种循环语句while、do-while、for

分 析

教学难点

三种循环语句的区别

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、引入新课

问题1:假如全班41人,欲从键盘上输入每人的数学成绩,然后计算出平均成

绩;

问题2: 编程计算n!。

重复执行一组语句是程序设计要求的基本功能之一。在C语言中可以用以下语

句来实现循环:(1)if 和 goto (2)while (3)do-while (4)for

二、讲授新课

一、goto语句及用goto构成循环

语法:goto label;

其中:label是语句标号,它命名的规则同变量名;

语义:使程序无条件地转向标号为label的语句去执行;

二、while语句

语法:while (exp)

循环体语句;

语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句;

如:用while语句构成循环,求sum=1+2+…+100

程序如下:main()

{ int i=1, sum=0;

while (i<=100)

{ sum+=i;

i++; }

printf(“%d”,sum);

}

说明:1) 循环体可以用复合语句;

2) 在while语句前应有为测试表达式(exp)中的循环控制变量赋初值的语

句,以确保循环的正常开始;

3)循环体内应有改变循环控制变量的语句,以确保循环进行有限次后正常

结束; 如:i=1;while (i<=100)

sum=sum+1; (死循环)

4) while 循环的特点是先判断后执行,故循环有可能一次都不被执

行;

如: i=3;

while (i<3)

printf(“i=%dn”,i);

备注

页码 13

第五章 循环结构程序设计

课 题

循环结构程序设计

教案号 8

教 学

目 的

教 材

分 析

课时安排

1、掌握三种循环语句的语法结构

2、灵活运用循环语句

教学重点

三种循环语句while、do-while、for

教学难点

三种循环语句的区别

2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

三、do-while语句

语法:do

循环体语句;

while (exp);

语义:当exp为真时,执行循环体;为假时,执行循环语句的后续语句;

如:用do-while语句构成循环,求 sum=1+2+…+100 程序如下:main()

{ int i=1,sum=0;

do

{ sum+=i;

i++; }

while (i<=100);

printf(“%d”,sum);

}

说明:

1)

循环体可以用复合语句;

2)

循环控制变量在执行do前必须赋初值;循环体内应有改变循环控制变

量的语句;

3)

do-while 循环的特点是先执行后判断,故循环至少被执行一次;

如:i=3;

do

{ sum+= i;

i++;

} while (i>10);

三、课堂小结

1、

while、do-whilr语句的语法结构

2、

whie与do-while区别

3、

注意循环控制的范围

备注

页码 14

第五章 循环结构程序设计

课 题

循环结构程序设计

教案号 9

1、掌握三种循环语句的语法结构

教 学

2、灵活运用循环语句

目 的

教 材 教学重点

三种循环语句while、do-while、for

分 析

教学难点

三种循环语句的区别

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、复习引导

从while和do-while语句中引入新的循环语句:for 语句

二、讲授新课

一、for 语句

语法:for(表达式1;表达式2;表达式3)

循环体语句;

语义:

1、先求表达式1;

2、求解表达式2,若其值为真,则执行第三步;若为假,则结束循环;

3、执行循环体中的语句;

4、求解表达式3;

5、转回第二步继续执行

如: for( i=1; i<=100; i++) sum=sum+i;可看成:

for(循环变量赋初值;循环条件;循环变量增值)语句;

说明:

(1)显然for循环更简洁,更灵活;

(2)循环体可以是复合语句;

(3)for语句中的三个表达式均可以是逗号表达式,故可同时对多个变量

赋初值及修改。如:for(i=0, j=1; j

(4)for语句中三个表达式可省:

二、几种循环的比较

(1)可以相互代替使用

(2)while, do-while循环,在while后面指定循环条件,在循环体中应包

含使循环趋向于结束的语句

(3)凡是在while中能完成的,在for 语句中也能完成。

三、break和continue语句

1、 break语句:可以用于switch语句中,也可以用于循环语句中,当用于循

环语句中时,用于在满足条件情况下,跳出本层循环。

2、 continue语句:用于循环语句中,在满足条件情况下,跳出本次循环。即

跳过本次循环体中下面尚未执行的语句,接着进行下一次的循环判断。

备注

页码 15

第五章 循环结构程序设计

课 题

教 学

目 的

教 材

分 析

课时安排

循环结构程序设计

1、掌握三种循环语句的语法结构

2、灵活运用循环语句

教案号 9

教学重点

三种循环语句while、do-while、for

教学难点

三种循环语句的区别

2 教学方法

讲授与演示法相结合

教具

四、循环结构程序设计

计算机、投影仪

例1:用公式求π的近似值,直到最后一项的绝对值小于10

-6

为止。π/4≈

1-1/3+1/5-1/7+……

# include

main( )

{ int s=1; float n=1.0, t=1, pi=0;

while((fabs(t))>1e-6)

{ pi=pi+t; n+=2;

s=-s; t=s/n;

}

pi=pi*4;

printf(“pi=%10.6fn”,pi);

}

三、课堂小结

1、

for语句的语法结构,特别是for语句中三个表达式的作用

2、

注意循环控制的范围

四、布置作业

上机练习:(P141)12、16

书面练习:(P140)3、5

备注

上机实验,学习循环结构程序设计

页码 16

第六章 利用数组处理批量数据

课 题

数组

教案号 10

1、掌握一维数组的定义和引用

教 学

2、掌握二维数组的定义和引用

目 的

教 材 教学重点

一维、二维数组的定义、引用、初始化

分 析

教学难点

数组的存储形式,数组的首地址

课时安排 2 教学方法

讲授与演示法相结合

教具

计算机、投影仪

一、 引入新课

数组是有序数据的集合,数组中每一个元素都属于同一个数据类型。

二、讲授新课

一、一维数组的定义和引用

定义数组,就是要:

(1)规定数组的名称,其取名规则与变量名相同;

(2)规定数组的类型,包括其数据类型和存储类型;

(3)规定数组的大小,即数组的维数及包含的数组元素的个数。数组元素就

是包含在数组中的变量。

1

、一维数组的定义:

类型说明符 数组名[常量表达式] 例如:int data[10], number[5];

2、一维数组元素的引用

数组名[下标] 例如:a[0]=a[5]+a[7]-a[2*3]

3、 一维数组在内存中占一段连续的存储空间,其首地址:a或&a[0]

4、 一维数组的初始化

1.

在定义数组时对数组元素赋以初值;int a[10]={0, 1, 2, 3, 4, 5, 6, 7, 8,

9};

2.

可以只给一部分元素赋值; int a[10]={0, 1, 2, 3, 4};

3.

如果想使一个数组中全部元素值为0,可简便实现;

int a[10]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

其实,对static数组不赋初值,系统会对所有数组元素自动赋以0值,

即上句等价于: static int a[10];

4.

C允许通过所赋初值的个数来隐含定义一维数组的大小;int

a[]={0,1,2,3,4,5,0}; 相当于 int a[7]={0,1,2,3,4,5,0};

二、二维数组的定义和引用

1、二维数组的定义

类型说明符 数组名[常量表达式1][常量表达式2];

如:int number[5][4];

数组的存储结构:以行为主序的连续空间


本文标签: 语句 程序 循环 输出 表达式