C语言程序设计习题集

C语言程序设计习题集
C语言程序设计习题集

目录

第一章C语言基础知识 (1)

第二章C语言程序设计的初步知识 (3)

第三章顺序结构程序设计 (5)

第四章选择结构程序设计 (9)

第五章循环结构程序设计 (12)

第六章数组 (16)

第七章函数 (19)

第八章指针 (23)

第九章结构体与共用体 (27)

第十章文件 (30)

模拟试题一 (33)

第一章答案 (39)

第二章答案 (40)

第三章答案 (40)

第四章答案 (41)

第五章答案 (42)

第六章答案 (44)

第七章答案 (45)

第八章答案 (47)

第九章答案 (48)

第十章答案 (49)

模拟试题一答案 (52)

第一章C语言基础知识

一、选择题

1.C语言规定,必须用作为主函数名。

A)Function B)include C)main D)stdio 2.是C程序的基本构成单位。

A)函数B) 函数和过程C) 超文本过程D) 子程序3.下列说法正确的是。

A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可

B)一个函数的函数体必须要有执行部分,可以没有变量定义

C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数

D)以上都不对

4.下列说法正确的是。

A)main函数必须放在C程序的开头

B)main函数必须放在C程序的最后

C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执

行的

D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数

开始的

5.下列说法正确的是。

A)在执行C程序时不是从mian函数开始的

B)C程序书写格式严格限制,一行内必须写一个语句

C)C程序书写格式自由,一个语句可以分写在多行上

D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号

6.在C语言中,每个语句和数据定义是用结束。

A)句号B)逗号C)分号D)括号

7.下列字符串是标识符的是。

A)_HJ B)9_student C)long D)LINE 1

8.以下说法正确的是。

A)C语言程序总是从第一个定义的函数开始执行

B)在C语言程序中,要调用的函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

9.不是C语言提供的合法关键字。

A)switch B)print C)case D)default

10.C语言提供的合法关键字是。

A)breack B)print C)funiton D)end

11. 一个C语言程序是由。

A)一个主程序和若干个子程序组成;

B)函数组成, 并且每一个C程序必须且只能由一个主函数;

C)若干过程组成;

D)若干子程序组成.

12.以下叙述中错误的是()

A.C语言是一种结构化程序设计语言。

B.结构化程序有顺序、分支、循环三种基本结构组成。

C.使用三种基本结构构成的程序只能解决简单问题。

D.结构化程序设计提倡模块化的设计方法。

13.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的()

A. 正当性

B. 可行性

C. 确定性

D. 有穷性

14.下列叙述中错误的是()

A.计算机不能直接执行用C语言编写的源程序。

B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件。

C.后缀为.obj的文件,经链接程序生成后缀为.exe的文件是一个二进制文件。

D.后缀为.obj和.exe的二进制文件都可以直接运行。

15.以下叙述中错误的是()

A.C语言是一种结构化程序设计语言。

B.结构化程序有顺序、分支、循环三种基本结构组成。

C.使用三种基本结构构成的程序只能解决简单问题。

D.结构化程序设计提倡模块化的设计方法。

16.对于一个正常运行的C程序,以下叙述中正确的是()

A.程序的执行总是从main函数开始,在main函数结束。

B.程序的执行总是从程序的第一个函数开始,在main函数结束。

C.程序的执行总是从main函数开始,在程序的最后一个函数中结束。

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。

17.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的()

A. 正当性

B. 可行性

C. 确定性

D. 有穷性

二、填空题

1.一个C程序至少包含一个,即。

2.一个函数由两部分组成,它们是和。

3.函数体的范围是。

4.函数体一般包括和。

5.C语言是通过来进行输入输出的。

6.在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个。

7.主函数名后面的一对圆括号中间可以为空,但一对圆括号不能。

第二章C语言程序设计的初步知识

一、选择题

1.在C 语言中,下列类型属于构造类型的是。

A)整型B)字符型C)实型D)数组类型

2.在C 语言中,下列类型属于基本类型的是。

A)整型、实型、字符型B)空类型、枚举型

C)结构体类型、实型D)数组类型、实型

3.下列字符串属于标识符的是。

A)INT B)5_student C)2ong D)!DF

4.C语言中不能用来表示整常数的进制是。

A)十进制B)十六进制C)八进制D)二进制

5.C语言中能用来表示整常数的进制是。

A)十进制、八进制、十六进制B)十二进制、十进制

C)六进制、八进制D)二进制、十进制

6.在C语言中,回车换行符是。

A)\n B)\t C)\v D)\b

7.设d为字符变量,下列表达式不正确的是。

A)d=97 B)d=?a?C)d=”a”D)d=?g?

8.设d为字符变量,下列表达式正确的是。

A)d=678 B)d=?a?C)d=”d”D)d=?gjkl?

9.10+?a?+1.5-567.345/?b?的结果是型数据。

A)long B)double C)int D)unsigned float

10.语句int i=3;k=(i++)+(i++)+(i++);执行过后k的值为 A ,i的值为。

A)9,6 B)12,5 C)18,6 D)15,5

11.如果int i=3,int j=4,则k=i+++j执行之后k,i和j的值分别为。

A)7,3,4 B)8,3,5 C)7,4,4 D)8,4,5 12.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为。

main()

{char x,y;

x=?0?;y=?9?;

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

}

A)因输出格式不合法,输出错误信息B)48,57

C)0,9 D)48,58

13.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为。main()

{char c=?A?;int i=10;

c=c+10;

i=c%i;

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

}

A)75,7 B)75,5

C)K,5 D)因存在非图形字符,无法直接显示出来

14.C语言中,运算对象必须是整型数的运算符是。

A)% B)\ C)% 和\ D)**

15.下列常数中,不合法的C 常量是。

A)-0x3bl B)123e+2.3 C)?}?D)6e+7

16.下列符号中,可以作为变量名的是。

A)+a B)12345e C)a3B D)5e+0

17.下面程序的输出结果是。

main()

{int x=4,y=0,z;

x*=3+2; printf(“%d”,x);

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

}

A)14 40 B)20 0 C)20 4 D)14 4

18.下面程序的输出结果是。

main()

{int i,j;

i=16;j=(i++)+i;printf(“%d”,j);

i=15;printf(“%d %d”,++i,i);

}

A)32 16 15 B)33 15 15

C)34 15 16 D)34 16 15

19..下列程序的执行结果是。

#include

#define sum(10+20)

mian()

{

int a=0,b=0,c=0;

a=sum;

b=5;

c=sum*b;

printf("%d",c);

}

A)100 B)110 C)70 D)150

20. 以下说法正确的是。

A)在C程序中, 每行只能写一条语句.

B)在C程序中, 无论是整数还是实数, 其存放形式都一致.

C)在C程序中, %是只能用于整数运算的运算符.

D)在C程序中, 变量可以不必先定义就可使用.

二、填空题

1.C语言基本数据类型包括、、、。

2.在C语言中,常量有不同的类型,包括、、和等。

3.符号常量是指。

4.在C语言中,变量是。

5.变量也有不同类型,如、和等。

6.在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列称为。

7.可以用来表示C的整常数的进制是、、。

8.在C语言中,实数有两种表现形式,是和。

9.实型变量分为和,即float和double型。

10.在一个变量定义语句中可以同时定义多个变量,变量之间用隔开。

11. x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4的值为 ___。

12. 设a=2,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y的值为__ __。

13. 设a=12,n=5,则计算了表达式a%=(n%=2)后,a的值为_ __,计算了表达式a+=a-=a*=a后,a的值为_ 。

第三章顺序结构程序设计

一、选择题

1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。

A)不予输出B)输出空格

C)照样输出D)输出不定值或0

2.在scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统。

A)不予接收

B)并不给出出错信息,但不可能得出正确信息数据

C)能接受正确输入

D)给出出错信息,不予接收输入

3.下列说法正确的是。

A)输入项可以是一个实型常量,如scanf("%f",4.8);

B)只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d");

C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%5.3f",&f);

D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);

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

main()

{int x=10,y=10;

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

}

A)10 10 B)9 9 C)9 10 D)10 9

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

5.设有如下定义

int x=10,y=3,z;

则语句

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

的输出结果是。

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

6.若已知a=10,b=20,则表达式!a

A)10 B)20 C)1 D)0

7.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为。

A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出

C)右对齐输出该字符,左补空格D)输出错误信息

8. C程序的基本编译单位是。

A)函数B)文件C)源文件D)子程序

9.设有如下定义和执行语句,其输出结果为:。

int a=3,b=3;

a = --

b + 1; printf(“%d %d”,a,b);

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

二.填空题

1.C语言中的语句可分为5类,即、、、、。

2.由一次函数调用加一个分号构成一个语句。

3.putchar函数的作用是。

4.printf函数的“格式控制”包括两部分,他们是和。

5.对不同类型的语句有不同的格式字符。例如:格式字符是用来输出十进制整数,格式字符是用来输出一个字符,格式字符是用来输出一个字符串。

6.%-ms表示如果串长m,则在m列范围内,字符串向靠,补空格。

7.如果要输出字符“&”,则应该在“格式控制”字符串中用表示。

8.getchar函数的作用是。

9.符号“&”是运算符,&a是指。

10.scanf函数中的“格式控制”后面应当是,而不是。

11.复合语句是由一对括起来的若干语句组成。

12.假设变量a和b为整形,以下语句可以不借助任何变量把a,b中的值进行交换。请填空a+=____;b=a-____;a-=____;

13.已有定义int a;float b,x;char c1,c2;为使a=3,b=6.5,x=12.6,c1=?a?,c2=?A?正确的函数调用语句是______________,输入数据的方式是_________________。

14若有以下定义的语句,为使变量c1得到字符?A?,变量c2得到字符?B?,正确的格式输入形式是__________。

char c1,c2;

scanf("%4c%4c",&c1,&c2);

三、完善程序题:

1.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。

#include

void main()

{

int x ,a ,b, c ;

printf("请输入一个三位数:");

scanf("%d", &x);

a=x/100;

;

;

printf("反序为:%d%d%d", a ,b, c ); }

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

#include

void main()

{

char c1, c2;

printf("请输入两个字符给c1和c2:\n");

printf("用putchar函数输出结果为:\n") ;

printf("\n用printf函数输出结果为:\n") ;

}

四、程序阅读与分析题:

25.以下程序的执行结果是____。

#include

void main()

{

char c='A'+10;

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

}

[解答]:c=K。

19.以下程序的输出结果为:____________。

main( )

{ float a=3.14, b=3.14159;

printf(“%f, %5.3f\n”,a,b); }

五、编程题

1.从键盘上输入一个大写字母,要求改用小写字母输出。

2.请编写一个程序,能显示出以下两行文字。

I am a student.

I love China.

第四章选择结构程序设计

一、选择题

1.下列运算符中优先级最高的是。

A)> B)+ C)&& D)!= 2.以下关于运算符优先级的描述中,正确的是。

A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算B)&&(逻辑与)>算术运算>关系运算>赋值运算

C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算

D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)

3.逻辑运算符的运算对象的数据类型。

A)只能是0或1 B)只能是.T.或.F.

C)只能是整型或字符型D)任何类型的数据4.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是。

A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)

B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)

C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)

D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)

5.判断字符型变量ch为大写字母的表达式是。

A)?A?<=ch<=?Z?B)(ch>=?A?)&(ch<=?Z?)

C)(ch>=?A?)&&(ch<=?Z?)D)(ch>=?A?)AND(ch<=?Z?)6.以下if语句书写正确的是。

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

printf(”%f”,x); {x=x+1; printf(”%f”,x);}

else printf(”%f”,-x); else printf(”%f”,-x);

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

{x=x+1; printf(”%f”,x);} {x=x+1; printf(”%f”,x) }

else printf(”%f”,-x); else printf(”%f”,-x);

7.分析以下程序:

main( )

{ int x=5,a=0,b=0;

if(x=a+b) printf(“** **\n”);

else printf(“## ##\n”);

以上程序。

A)有语法错,不能通过编译B)通过编译,但不能连接

C)输出** ** D)输出## ##

8.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。

main( )

{ int x;

scanf(“%d”,&x);

if(x++>5) printf(“%d”,x);

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

}

A)7和5 B)6和3 C)7和4 D)6和4 9.假定所有变量均已正确说明,下列程序段运行后x的值是。

a=b=c=0;x=35;

if(!a) x=-1;

else if(b);

if(c) x=3;

else x=4;

A)34 B)4 C)35 D)3

10. 以下关于运算符优先顺序的描述正确的是。

A)关系运算符<算术运算符<赋值运算符<逻辑运算符

B)逻辑运算符<关系运算符<算术运算符<赋值运算符

C)赋值运算符<逻辑运算符<关系运算符<算术运算符

D)算术运算符<关系运算符<赋值运算符<逻辑运算符

11. 能正确表示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

12. 以下不正确的if 语句形式是。

A)if ( x > y && x != y ) ;

B)if ( x = = y ) x + = y ;

C)if ( x != y ) scanf ( “%d”, &x) else scanf ( “%d”, &y);

D)if ( x < y ) { x++; y++;}

13. 以下if语句中语法错误的是。

A)if (a>b)printf(“%f”,a); B)if(a>b)printf(“%f”,a);

else printf(“%f”,b);

C)if(a>b)printf(“%f”,a) D)if(a>b)printf(“%f”,b);

else printf(“%f”,b); else printf(“%f”,a);

二、填空题

1.在C语言中,对于if语句,else子句与if子句的配对约定是。

3.以下两条if语句可合并成一条if语句为。

if(a<=b) x=1;

else y=2;

if(a>b) printf("* * * * y=%d\n",y);

else printf("# # # # x=%d\n",x);

三、完善程序题:

1.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’变成‘b’。请在内填入正确的内容。

#include

void main()

{char c;

c=getchar();

if (c>=?a?&&c<=?u?) ;

else if (c>=?v?&&c<=?z?) ;

putchar(c);

}

2.以下程序对输入两个整数,按从大到小的顺序输出。请在_ ___内填入正确的内容。

#include

void main()

{int x,y,z;

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

if( )

{z=x; }

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

}

四、程序阅读与分析:

1.分析下面的程序,写出程序实现的功能:

main( )

{ float a,b,c,t;

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

if (a

{t=a; a=b; b=t;}

if(a

{t=a; a=c; c=t;}

if(b

{t=c; b=c; c=t;}

printf(“%f,%f,%f”,a,b,c);

}

2.分析下面的程序,写出程序的运行结果:

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

}

五、编程题

4.有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。

x2(x<0)

y = -0.5x+10 (0≤x<10)

x-x(x≥10)

5.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为…A?;80~89分为…B?;70~79分为…C?;60~69分为…D?;60分以下为…E?。

第五章循环结构程序设计

一、选择题

1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。

A)0 B)1 C)成立D)2 2.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while 表达式后面的不能丢,它表示do-while语句的结束。

A)0 B)1 C);D),3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。

A)0 B)1 C);D),4.程序段如下

int k=-20;

while(k=0) k=k+1;

则以下说法中正确的是。

A)while循环执行20次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下

int k=1;

while(!k==0) {k=k+1;printf("%d\n",k);}

说法正确的是。

A)while循环执行2次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

6.以下for循环是。

for(a=0,b=0;(b!=123)&&(a<=4);a++)

A)无限循环B)循环次数不定C)执行4次D)执行5次7.程序段如下

int k=0;

while(k++<=2); printf("last=%d\n",k);

则执行结果是last= 。

A)2 B)3 C)4 D)无结果

8.以下程序的输出结果。

main()

{int n=0;

while(n++<=1)

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

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

}

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

9.当输入为"quert?"时,下面程序的执行结果是。

#include

main()

{char c;

c=getchar();

while((c=getchar())!='?') putchar(++c);

}

A)Quert B)vfsu C)quert? D)rvfsu? 10.当输入为"quert?"时,下面程序的执行结果是。

#include

main()

{while(putchar(getchar())!='?');}

A)quert B)Rvfsu C)quert? D)rvfsu? 11.在C语言的循环语句for,while,do-while中,用于直接中断最内层循环的语句是。

A)swich B)continue C)break D)if 12.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是。

for(i=5;i;i--)

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

{ }

A)20 B)24 C)25 D)30

13. 有如下程序段, 其执行结果为。

for ( n = 10; n > 7; n-- )

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

A)10 B)9 C)10 D)9

9 8 9 8

8 7 8 7

7 6

14. 循环语句中的for语句,其一般形式如下:

for(表达式1;表达式2;表达式3) 语句

其中表示循环条件的是。

A)表达式1 B)表达式2 C)表达式3 D)语句

二、填空题

1.while语句的特点是(1),do-while语句的特点是(2)。

2.将for(表达式1;表达式2;表达式3)语句改写为while语句是。

3.break语句的功能是。

4.break语句只能用于(1)语句和(2)语句中。

5.continue语句的作用是,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

6.在循环中,continue语句与break语句的区别是:continue语句只是(1),break语句是(2)。

7.循环的嵌套是指。

8.要使以下程序段输出10个整数,请填入一个整数:

for(i=0;i<= ;printf("%d\n",i+=2));

9.goto语句的用途是和。

10.while语句的特点是,do_while语句的特点是。

11.把for(表达式1;表达式2;表达式3);改写为等价的while语句为。

12.语句标号由标识符表示,由,和组成。第一个字符必须是字母或下划线。

三、完善程序题:

1.下面程序的功能是把316表示为两个加数分别能被13和11整除。请在内填入正确内容。

#include

void main()

{

int i=0,j,k;

do{i++;k=316-13*i;}

while( );

j=k/11;

printf(“316=13*%d+11*%d”,i,j);

}

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

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

}

四、程序阅读与分析题:

1. 分析下面的程序,写出程序运行的结果并说明for语句的循环次数。

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

}

2.分析下面的程序,写出程序运行的结果。

main()

{int s,i;

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

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

}

五、编程题

1.编程实现用“辗转相除法”求两个正整数的最大公约数。

2.一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6就是完全数,请编写一程序,求出1000以内的整数中的所有完全数。其中1000由用户输入。

第六章数组

一、选择题

1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量B)整型常量或整型表达式

C)整型表达式D)任何类型的表达式

2.以下对一维整型数组a的正确说明是。

A)int a(10); B)int n=10,a[n];

C)int n; scanf(“%d”,&n); int a[n];

D ) #define SIZ

E 10 int a[SIZE];

3、以下能对一维数组a进行正确初始化的语句是。

A)int a[10]=(0,0,0,0,0);

B)int a[10]={ };

C)int a[ ]={0};

D)int a[10]={10*1};

4.不是给数组的第一个元素赋值的语句是。

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

C)int a[2];scanf (“%d”,a);D)a[1]=1;

5.下列定义正确的是。

A)static int a[]={1,2,3,4,5} B) int b[1]={2,5}

C) int a(10) D) int 4e[4]

6.若有说明int a[][4]={0,0};则下列叙述不正确的是。

A) 数组a的每个元素都可以得到初值0

B) 二维数组a的第一维的大小为1

C) 因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a

的行数为1

D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值

7.设有char str[10],下列语句正确的是。

A) scanf("%s",&str); B) printf("%c",str);

C) printf("%s",str[0]); D) printf("%s",str);

8.下列说法正确的是。

A) 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B) 在C语言中,数组元素的个数可以不确定,允许随机变动

C) 在C语言中,数组元素的数据类型可以不一致

D) 在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类

型元素的个数

9.假设array是一个有10个元素的整型数组,则下列写法中正确的是。

A) array[0]=10 B) array=0

C) array[10]=0 D) array[-1]=0

10.下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个是:。

A)strcat(str1,str2) ; B)strcat(str2,str1);

C)strcpy(str1,str2) ; D)strcmp(str1,str2);

11.设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为:。

A)strcpy(str1,str2); B)strcpy(str1, “China”);

C)strcat(str1,“China”);D)strcat(“Beijing”,str2);

12.若有二维数组a[m][n],则数组中a[I][j]之前的元素的个数为。

A)j*m+I B)I*n+j

C)I*m+j+1 D)I*n+j+1

13. 判断字符串a和b是否相等,应当使用。

A)if (a= =b) B)if (a=b)

C)if (strcpy(a,b)) D)if(strcmp(a,b))

14.若有如下定义和语句:

char s[12]= “a book!”;

printf(“%d”,strlen(s) );

则输出结果是:。

A)12 B)10 C)7 D)6

15.若有说明:int a[3][4] = {0};则下面正确的叙述是:。

A)只有元素a[0][0]可以得到初值0

B)此说明语句不正确

C)数组a中每个元素均可得到初值0

D)数组a每个元素均可得到初值,但值不一定为0

二、填空题

1.数组名定名规则和变量名相同,遵循定名规则。

2.对于一维数组的定义“类型说明符数组名[常量表达式]”,其中常量表达式可以包括和,不能包含。

3.在C语言中,引用数组只能通过数组元素来实现,而不能通过整体引用来实现。

4.如果要使一个内部数组在定义时每个元素初始化值为0,但不进行逐个赋值,将其说明成存储类型即可。

5.在C语言中,二维数组中元素排列的顺序是。

6.对与数组a[m][n]来说,使用数组的某个元素时,行下标的最大值是,列下标的最大值是。

7.在C语言中,将字符串作为处理。

8.在C语言中,数组的首地址是。

三、完善程序题:

1.以下程序是求矩阵a , b的和,结果存入矩阵c中并按矩阵形式输出。请填空:

main( )

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

int b[3][4] = { { 5, -1, 7, 6 },{ -2, 0, 1, 4 },{ 2, 0, 8, 6 } };

int i, j, c[3][4];

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

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

c[i][j] = (1);

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

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

printf ( “%3d”, c[i][j] ) ;

(2); }

}

2. 打印以下杨辉三角形.(要求打印出10行)

main( )

{ int a[10][10],i, j ; 1

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

{ (1)(2)} 1 2 1

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

for(j=1; j

a[i][j] = (3); … … …

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

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

printf(“%5d”,a[i][j]);

printf(“\n”); }

}

四、程序阅读与分析题:

1、分析下面程序,写出程序运行结果。

main()

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

j=1;

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

{s=s+a[i]*j;

j=j*10;

}

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

}

2. 分析下面程序,写出程序运行结果。

main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}, b[4][3];

int i, j;

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

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

b[j][i]=a[i][j];

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

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

printf( “%5d”,b[i][j] );

printf( “\n” ); }

}

五、编程题

1.用起泡法对10个数排序。

7.求Fibonacci数列中前20个数,Fibonacci数列的前两个数为1,1,以后每一个数都是前两个数之和。Fibonacci数列的前n个数为1,1,2,3,5,8,13,用数组存放数列的前20个数,并输出之(按一行5个输出)。

第七章函数

一、选择题

1.以下函数定义正确的是:。

A) double fun(int x, int y) B) double fun(int x; int y)

C) double fun(int x, int y) ; D) double fun(int x ,y)

2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式

是:。

A)地址传递;B)单向值传递;

C)双向值传递;D)由用户指定传递方式

3.以下关于C语言程序中函数的说法正确的是:。

c语言程序设计教程第二版课后习题答案

c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 ,

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

C语言程序设计(第二版)课后答案 丁亚涛

习题二 一、选择题 二、填空题 1.18 2.int float double 3.10 11 4.8 16 10 5.% 三、阅读题 1. 10,10,9,10 2. j=1, i=2 k=3,i=3 i=3,i=2 k=1,i=1 习题三 一、选择题 二、填空题 1. 从键盘上读入一个字符在屏幕上输出一个字符 #include 2. 按十进制整数形式输出,有符号 按16进制整数形式输出,没有符号 按十进制小数形式输出,输出的数据长度为7位,有2位小数 按字符形式输出一个字符 3. 按十进制整数形式输入数据 按十进制整数形式输入三位数据 跳过3位十进制数据 按字符形式输入一个字符 4. 分程序;; 5. 大写字母L 6. -1 三、阅读题 1. 6 6 6.00 6.00

2. x=127,x= 127,x=177,x=7f y=123.4567,y= 123.46,y=123,45670 3. 2,1 4. 1234 5. 4,3 6. -6,-6 习题四一、选择题 二、填空题 1. 非0 0 、 2. k==0 3. n%7==0&&n%==0 else 三、阅读题 1. a=1,b=0 2. c=1 习题五一、选择题 二、填空题 1. for语句 do-while 语句 while 语句 2. a=14,y=26 3. k=14,n=-1 4. 39 5. s=19 6. 22222 7. 10 8. 7 9. 8 10. 5,5 三、改错题

1. for( i=0;i<5;i++);for控制部分用分号分隔 2. int j=0;while(j<10){j++;i=j} 分号是多余的,否则会造成死循环 3. int s=1,i=1; while(i<5) {s*=i; i++; } 两条语句需要加上花括号 4. while(j<10);(分号不能少) 5. continue改为break 习题六 一、选择题 二、填空题 1. 20 0 19 2. 数组名 3. 越界 4. 6 5. j==k a[j][k]=1; a[j][k]=0; 三、阅读题 1. 6 5 4 3 2 1 2. aaa bbb ccc ddd 3. 2,2,1 习题七 一、选择题 二、填空题 1. 整个函数体内局部 2. 整型 3. k<=b return y;

完整word版单片机C语言应用程序设计第五版马忠梅课后习题答案

第一章单片机由哪几部分组成?、80511可P2P0和个8位并行I/O口(其中8位中央处理器CPU、片内振荡电器及其时钟电路,4,个中断优先级)个中断源(具有2位定时器/计数器,5 用于外部存储器的扩展),2个16 全双工串行口,布尔处理器。单片机有多少个特殊功能寄存器?它们可以分为几组,各完成什么主要功能?、80512 表P7 1-3个特殊功能寄存器,在物理 上是分散在片内各功能部件中,在数218051单片机内部有答:中,以便能使用统一的直接寻址方式80H~FFH学上把它们组织在内部数据存储器地址空间来访问。这些特殊功能寄存器颁 在以下各个功能部件中:主要完;DPH两个8位寄存器组成)PSW、SP、DPTR(由DPL和(1)CPU:ACC、B、成运算和逻辑判断功能;完成中断管理IP、IE;(2)中断系统:完成 定时或者计数功能、TH1;TCOM、TL0、TH0、TL1(3)定时器/计数器:TMOD、口带有可选的纵向拓展I/O完成I/O口功能,其中部分P1P0、、P2、P3(4)并行I/O口:功能。主要完成数据的串行发送和接收SBUF、PCON5)串行口:SCON、(、决定程序执行顺序的寄存器是哪几个?它是几位寄存器?是否为特殊功能寄存器?它的3 内容是什么信息?它的内容是下一条 将要执行的不是特殊功能寄存器,它是16位寄存器,是程序计数器PC,程序的地址的用途是什么?它由哪几个特殊功能寄存器组DPTRDPTR是什么特殊功能寄存器?4、成?位)和8DPL (数据指针低是16位数据指针寄存器,它由两个8位特殊功能寄存器DPTR位地址,作地址寄存器用,可寻址外部16DPTR用于保存DPH(数据指针高8位)组成,数据存储器,也可寻址程序存储器。线?它们和单片机对外的地址总线和数据总线有什么关系?地址的引脚有多少I/O5、8051 总线和数据总线各是多少位?线可以在外扩存储器时分时复根I/OP0口8I/O8051单片机的40个引脚中有32根口线,和P3.6位地址总线,P2口作为高8用作为外部存储器的低8位地址 总线和8位数据总线,位。16位,数据总线为8P3.7分别作为外部存储器的写和读控制线。地址总线单片机堆栈的最大容量不能超过多少字8051、什么是堆栈?堆栈指针SP的作用是什么? 6 节?堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启 用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作 数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051 的堆栈区是比较小的,使用时要注意到这个限制。 8、8051内部RAM低128字节可分为几个区域?其中通用寄存器区的字节地址范围为多少?如何实现寄存器组的切换?可位寻址区的字节地址和位地址范围分别为多少? 8051内部RAM的低128字节可以分为通用寄存器区、位寻址区、便签(工作或者堆栈RAM)1 中的个字节。设置PSW区和特殊功能寄存器区。通用寄存器区的地址从00H到1FH共3212816个字节RS1可以切换当前通用寄存器组。位寻址区地址从20H到2FH共位RSO和127. 0到位,占用地址8051单片机对外有几条专用控制线?其功能是什么?9、,高电位有效,当有条专用控制线。它们是复位信号线RST一般的说法是8051单片机有4,低电平有效,当此复位信号从此线输入时,使单片机复位。访问外部存贮器控制信号EA先使用片单片机全部使用外部指令存贮器,而当此控制线为高电平时,控制线为低电平时,1000H(地址为,在4KB范围之外,才使用指令存贮器FFFFH内的4KB指令存贮器(0000H-)和外部地址锁存器允PSEN-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号。前者是低电平有效,在读外部程 序存贮器时使用。后者是高电平有效,在锁存ALE许信号P0口输出的低8位地址时使用。端必须怎样处理?为什么?10、8031的/EA为有效时,/EA访问内部ROM,当端是访问外部程序

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6 #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; }

3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5方案得到的本息和 return 0; } 3-2-2 #include #include int main() {double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次

第5章-C语言程序设计(第2版)教材习题答案

【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。2011年10月第二版。ISBN:978-7-302-26972-4。售价:35元。 【答案版本】本习题答案为2012年2月修订版本。 一、选择题 1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。 A. while循环执行10次 B. 循环是无限循环 C. 循环体语句执行一次 D. 循环体语句一次也不执行 2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。 A. 运行程序段后输出1 B. 程序段执行无限次 C. 运行程序段后输出0 D. 程序段中的控制表达式是非法的 3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。 A. int a=1,b=2; while(b--); B. int a=1,b=2; do a++; while(a==b); C. int a=1,b=2; while(a=3); D. int a=1,b=2; do b-- while(b==0); 4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。 do{ printf(“%d\n”,i--); } while(i!=0); A. 0 B. 1 C. 5 D. 无限 5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。 A. 0 B. 5 C. 10 D. 无限 6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。 A. break语句用于循环体内,它将结束该循环 B. break语句用于开关语句,它结束该开关语句 C. break语句用于if语句的内嵌语句内,它结束该if语句 D. break语句在一个循环体内可使用多次 7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。 A. 循环体内可以包含有循环语句 B. 循环体内必须同时出现break语句和continue语句 C. 循环体内可以出现选择语句 D. 循环体可以是空语句 8. 以下不是死循环的是D)for(;(c=getchar()!=’\n’);)printf(“%c”,c);。 A. for(; ; x+=i); B. while(1) { x++; } C. for( i=10; ; i--) sum+=i; D. for( ; (c=getchar() )!=’\n’ ; ) printf( “%c”,c); 9. 执行语句”for(i=0;i++<3;);”后,变量i的值为C) 4。 A.2 B. 3 C. 4 D. 5 10.语句”for(x=0,y=0;y!=1&&x<4;x++);”是C)循环4次。 A. 无限循环 B. 循环次数不定 C. 循环4次 D. 循环3次

c语言程序设计第五版习题答案()

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100;

a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include <> main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** *

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } 1-6#include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } 3-2-1 #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;

《C语言程序设计教程(第二版)》习题答案

2 第1章程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分 三、应用题(第24页) 2.源程序: main() {int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */ printf("cock hen chick\n"); for(i=1;i<=20;i++) for(j=1;j<=33;j++) for(k=1;k<=33;k++) if (i+j+k*3==100&&i*5+j*3+k==100) printf(" %d %d %d\n",i,j,k*3);} 执行结果: cock hen chick 4 18 78 8 11 81 12 4 84 3.现计算斐波那契数列的前20项。 递推法源程序: main() {long a,b;int i; a=b=1; for(i=1;i<=10;i++) /*要计算前30项,把10改为15。*/ {printf("%8ld%8ld",a,b); a=a+b;b=b+a;}} 递归法源程序: main() {int i; for(i=0;i<=19;i++) printf("%8d",fib(i));} fib(int i) {return(i<=1?1:fib(i-1)+fib(i-2));} 执行结果: 1 1 2 3 5 8 13 21 3 4 55 89 144 233 377 610 987 1597 2584 4181 6765

C语言程序设计第四版第七章答案-谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C语言程序的设计习题参考答案(第二版_杜友福)

C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 4. 求1×2×3×…×10的值。

5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1

C语言程序设计(第二版)习题参考答案

C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

大学生C语言程序设计(第四版 谭洪强)实验5答案

实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j,sum=0; for(i=0;i<3;i++) sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素 //a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum); return 0; } 运行结果: (2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。 算法分析: 首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。 参考答案: #include #include int main() { int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}}; int i,j,row,colum,min; printf("数组a:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%5d",a[i][j]);

printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include #include int main() { int a[3][3]; int i,j,n; printf("原来a的值:"); for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出 { for(j=0;j<3;j++) {a[i][j]=rand()%20; //rand()参看教材385页 //rand()%20 产生一个20以内的整数

相关文档
最新文档