语言程序设计练习题 2

时间:2019-05-14 10:52:57下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《语言程序设计练习题 2》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《语言程序设计练习题 2》。

第一篇:语言程序设计练习题 2

汇编语言程序设计练习题

一、单项选择题:在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

1.CPU要访问的某一存储单元的实际地址称()C

A.段地址

B.偏移地址

C.物理地址

D.逻辑地址

2.某存储单元的物理地址是12345H,可以作为它的段地址有()D

A.2345H

B.12345H

C.12340H

D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是()A

A.XOR BX,BX

B.OR BX,BX

C.AND BX,BX

D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是()B

A.CX≠0且ZF=1

B.CX≠0且ZF=0

C.CX≠0或ZF=1

D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是()C

A.DAA校正指令的功能已自动加在AH中

B.进位值在AF中,校正后根据AF内容再加在AH中

C.进位值在CF中,校正后根据CF内容再加在AH中

D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中

6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是()C

A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位

B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0

C.指令AND AL,OFH执行后,分离出AL低四位

D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是()D

A.STOSW

B.ADD AL,CL

C.NEG BX

D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是()B

A.ADD BH,01H

B.OR BH,01H

C.XOR BH,01H

D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是()C

A.ROL CL,1

B.MUL 4

ROL CL,1

C.SHL CL,1

D.MOV CL,2

SHL CL,1

SHL CL,CL 10.下面各传送指令中,正确的是()C

A.MOV [DI],[SI]

B.MOV[DX+DI],AL

C.MOV WORD PTR [BX],0100H

D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()BD

A.名字的第一个字符可以是大写英文字母及小写英文字母

B.名字的第一个字符可以是字母、数字及、@、_

C.名字的有效长度≤31个字符

D.在名字中不允许出现$ 12.要实现使BETA的值为56,应采用语句为()C

A.BETA DB 56

B.BETA DB 56H

C.BETA EQU 56

D.BETA EQU 56H 13.REPZ CMPSW指令,重复执行的终止条件是()A

A.CX=0或ZF=0

B.CX=0且ZF=0

C.CX=0或ZF=1

D.CX=0且ZF=1 14.下面程序段执行后,AL中的内容是()B

MOV AX,8833H

ADD AL,AH

DAA

A.21

B.21H

C.0C1H

D.0DDH 15.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为()A

A.ZF=1

B.ZF=0

C.SF=1

D.SF=0 16.检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是()A

A.JNC LOP1

B.JA LOP1

C.JC LOP1

D.JGE LOP1 17.在下列串操作指令中,同时使用源串和目的串地址指针的指令是()D

A.STOSW

B.LODSW

C.SCASW

D.CMPSW 18.设AL=0AH,下列指令执行后能使AL=05H的是()C

A.NOT AL

B.AND AL,0FH

C.XOR AL,0FH

D.OR AL,0FH 19.DA1 DW‘AB’,‘CD’,‘EF’,‘GH’()D ┇

MOV AX,DA1+3 指令执行后AX中的内容是

A.‘EF’

B.‘CD’

C.‘BC’

D.‘FC’

20.使用DOS系统功能调用时,使用的软中断指令是()

A.INT 21

B.INT 10H

C.INT 16H

D.INT 21H

二、填空题请在每小题的空格中填上正确答案。错填、不填均无分。

1.十六进制数0FFF8H表示的十进制正数为________,表示的十进制负数为________。

2.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,[SI+COUNT]中,源操作数的有效地址EA为________,其物理地址为________。

3.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。

4.当标志位________=1时表示无符号数运算产生溢出,而当标志位________=1是表示带符号数运算产生溢出。

5.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是________,而后两个字节存放的是________。

6.在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是________或________才有实际意义。

三、简答题

1.已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。(1)MOV AL,[BX](2)MOV CS:[BX+DI],AH

2.0P1 DB 1,2 0P2 DW 3412H,5678H ┇

MOV AX,OP1+1;字单元(OP1+1)AX MOV BL,OP2+1;字节单元(OP2+1)BL 上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。

3.下列语句在存储器中分别为变量分配多少字节?

(1)AD2 DW 10 DUP(?),10(2)AD3 DD 100 DUP(?)

4.简述下面两条指令分别是什么语法错误? MOV [BX],[SI] MOV AX,DL

四、程序分析题 1. MOV DL,AL NOT DL TEST DL,04H JE NEXT ┇ NEXT:„

若上述程序段执行时产生分支,说明AL中的数第几位一定为1?程序段执行后CF是多少?

2.DA1 DB‘ABCDEFGHI’ DA2 DB 9 DUP(0)

LEA SI,DA1 LEA DI,DA2 MOV CX,9 CLD LOP: LODSB SUB AL,10H STOSB LOOP LOP...试问:①写出程序执行后DA2各字节中的数据。

②保持程序功能情况下,程序中 可否改写为

3.已知:BX=4567H NEG BX INC BX NEG BX DEC BX 程序段执行后,BX=________,CF=________。

4. MOV BL,64H MOV CL,03H XOR AX,AX AGAIN:ADD AL,BL ADC AH,0 DEC CL JNZ AGAIN 问:(1)该程序段完成的功能是:

(2)AX=________。

5.已知数据段中定义

DAT1 DB 12H,34H,56H,78H MOV CX,0 MOV AX,WORD PTR DAT1 MOV CL,DAT1+3 当程序段执行完后AX=________,CX=________。

6.DA1 DB 83H,72H,61H,94H,5AH ┇

MOV CX,WORD PTR DA1 AND CX,0FH MOV AL,DA1+3 SHL AL,CL 上述指令序列执行后,AL=_______,CL=_______。

五、程序填空题(本大题共2小题,每小题6分,共12分)

1.在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。

MOV AX,NUMW _____________ XOR DX,DX DIV BX MOV QUI,AX _____________ 2.某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。STRING DB‘COMPUTER’,‘$’

MOV BX,0FFSET STRING LOP:MOV DL,[BX] MOV AH,02H INT 21H ____________________ ____________________ JNE LOP

六、编程序题

1.试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。

2.试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。DATA SEGMENT DA1 DW XXXX DATA ENDS

汇编语言程序设计练习题答案

一、1、C;

2、D;

3、A;

4、B;

5、C;

6、C;

7、D;

8、B;

9、C;

10、C;

11、B;

12、C;

13、A;

14、B;

15、A

16、C;

17、D;

18、C;

19、D;20、B

二、1、+65528;-32760 2、20A8H;11488H

3、状态;控制

4、CF;OF

5、IP;CS

6、STOS;CMP

三、1、(1)21357H;(2)43357H

2、MOV AX,WORD PTR(OP1+1)MOV BL,BYTE PTR(OP2+1)

3、(1)22;(2)400

4、MOV指令不能在两个存储器操作数之间进行;

操作数类型不匹配

四、1、第2位;CF=0 2、123456789;不能更改

3、BX=4565H;CF=1

4、AX=012CH,将AX内容乘3送BX中

5、AX=3412H,CX=0078H

6、AL=0A0H,CL=03H

五、1、MOV BX,500 MOV REM,DX

2、INC BX CMP byte ptr [BX],24H

六、1、LEA DI,DA_BY MOV CX,32 MOV AL,‘Y’ CLD REP STOSB

2、CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL AGAIN: MOV AL,[SI] HL AL,1 JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE L1 CLC JMP DONE L1: STC DONE: MOV AH,4CH INT 21H CODE ENDS END START

第二篇:C语言程序设计

1.Problem A: Hello world!Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。

Input 无

Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!

Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!

HINT 请注意换行符

Append Code #include int main(){

printf(“Hello Da_min,n”);

printf(“Hello Er_min,n”);

printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。

Input 输入一个浮点型数据,有效数字不会超过十进制的6位。

Output 输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。

Sample Input 3

Sample Output Area: 28.260000 Perimeter: 18.840000

HINT 了解浮点类型的输入、输出和算术运算符

Append Code 法一

#include int main(){ double r,p,s;scanf(“%lf”,&r);p=2*3.14*r;s=3.14*r*r;printf(“Area: %lfn”,s);printf(“Perimeter: %lfn”,p);} 法二

#include #define pi 3.14 int main(){

double r;

scanf(“%d”,&r);

printf(“Area: %lfn”,pi*r*r);

printf(“Perimeter: %lfn”,2*pi*r);

}

3.Problem C:平均值 Description 求3个数的平均值。

Input 输入只有一行,为3个较小的整数。

Output 输出为这3个整数的平均值,保留3位小数。

Sample Input 1 2 3 Sample Output 2.000

HINT 注意除法运算对整型数据和浮点型数据是不一样的。

Append Code #include int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%.3lf”,(a+b+c)/3.0);}

4.Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。

Input 输入为3个字符。

Output 输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。

Sample Input 0 A

Sample Output 048 060 030 032 040 020 065 101 041

HINT 了解字符值的存储和整型的关系。

Append Code #include int main(){ char a,b,c;scanf(“%c%c%c”,&a,&b,&c);printf(“%.3d %.3o %.3xn”,a,a,a);printf(“%.3d %.3o %.3xn”,b,b,b);printf(“%.3d %.3o %.3xn”,c,c,c);}

5.Problem A: 最简单的程序 Description 输出一行“Hello world!”。

Input 无

Output Hello world!

Sample Input Sample Output Hello world!

HINT Append Code #include int main(){

printf(“Hello world!”);}

6.Problem B: 算术基本运算 Description 计算两整数x和y(0

Input 输入只有一行,格式见sample。

Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample

Sample Input x = 11, y = 3

Sample Output x + y : 14 xy : %dn“,x-y);

printf(”x * y : %dn“,x*y);

printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y);

printf(”x ^ 2 : %dn“,x*x);

printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。

编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。

Input 一个整数a,a是很小的整数。

Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。

5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。

Sample Input 0

Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1

HINT Append Code #include int main(){ int a,x;scanf(”%dn“,&x);a=x;printf(” a

: %dn“,a);printf(”--a

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

: %dn“,++a);}

8.Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。

Input 输入两个数,第一个是整数,第二个是浮点数。

Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。

Sample Input-1 1

Sample Output 1 1

HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!

Append Code #include //#include int main(){

int n;

float m;

scanf(”%d%f“,&n,&m);

//n=abs(n);

//m=fabs(m);

if(n<0)

{

n=-n;

}

if(m<0)

{

m=-m;

}

printf(”%dn“,n);

printf(”%g“,m);

return 0;}

9.Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。

Input 输入只有一行,为一个100以内的正整数。

Output 输出为一行。

若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30

Sample Output even

HINT 用整数运算可以解决,练习“?:”表达式。

Append Code #include int main(){

int n;

scanf(”%d“,&n);

if(n>=0&&n<=100){

if(n%2==0)printf(”evenn“);

else printf(”oddn“);

}

return 0;}

10.Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。

Input 输入只有一行,三个整数m、n和x,且0

Sample Input 95 300 4

Sample Output 334.40

HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。

Append Code #include int main(){

int m,x,n,a;

float b;

scanf(”%d%d%d“,&m,&n,&x);

0

x

m

a=m*x;

if(a>n)

b=0.88*a;

else

b=a;

printf(”%.2fn“,b);

}

11.Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。

Input 输入只有一行,为一个10000以内的正整数。

Output 输出为一行。

若输入为闰年偶数则输出“Yes”,否则输出“No”。

Sample Input 2010

Sample Output No

HINT 了解逻辑运算符和关系运算符。

Append Code #include int main(){

int x;

scanf(”%d“,&x);

if(x>0&&x<10000)

{

if(x%4==0&&x%100!=0)

printf(”Yesn“);

else if(x%400==0)

printf(”Yesn“);

else

printf(”Non“);

}

else

printf(”error“);}

12.Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。

Input 一个整数x,100<=x<=999。

Output x是水仙花数,则输出“YES”,否则为“NO”。

Sample Input 153

Sample Output YES

HINT Append Code #include int main(){

int a,b,c,x;

scanf(”%d“,&x);

a=x/100;

b=x/10%10;

c=x%10;

if(x==a*a*a+b*b*b+c*c*c)

printf(”Yes“);

else

printf(”No“);}

13.Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。

Input 输入只有一行,为三个整数。

Output 按从小到大输出这三个数。

Sample Input 15 10 20

Sample Output 10 15 20

HINT 用if语句判断各种情况可以解决这个问题。

Append Code #include int main(){

int a,b,c;

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

if(a>=b)

{

if(b>=c)

printf(”%d %d %dn“,c,b,a);

else if(c>=a)

printf(”%d %d %dn“,b,a,c);

else

printf(”%d %d %dn“,b,c,a);

}

else

{

if(a>=c)

printf(”%d %d %dn“,c,a,b);

else if(b>=c)

printf(”%d %d %dn“,a,c,b);

else

printf(”%d %d %dn“,a,b,c);

} }

14.Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;

如果这个数字是奇数,则将大于该数的最小偶数累加到和中。

Input 三个正整数,均在100以内。

Output 一个和。

Sample Input 2 3 5

Sample Output 12

HINT 如果不会使用分支语句,可使用条件运算符判断到底将哪个数累积到和中。

Append Code #include int main(){

int a,b,c;

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

if(a%2!=0)a++;

if(b%2!=0)b++;

if(c%2!=0)c++;

printf(”%dn“,a+b+c);

}

15.Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。

Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。

Sample Input 70 80 70 240 80 80 82

Sample Output congratulations

HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

Append Code #include int main(){

int a,b,c,d,e,f,g,h;

scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g);

h=e+f+g;

if(e>=a&&f>=b&&g>=c&&h>=d)

printf(”congratulations“);

else

printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的和,顺序与输入对应。

Sample Input 2 1 2 10 20

Sample Output 3 30

HINT N给出了测试样例数,用for循环处理方便。

Append Code #include int main(){

int n,a,b,i;Scanf(“%d”,&n);For(i=0;i

17.Problem H: A+B Problem Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20

Sample Output 3 30

HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。Append Code #include int main(){

int a,b;

while(scanf(”%d%d“,&a,&b)!=EOF){

printf(”%dn“,a+b);

}

return 0;}

18.Problem A: 判断是否是元音字母 Description 输入一个英文字母,判断是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U

Input 输入一个英文字母

Output 是元音字母,输出“yes”,否则输出“no”,行尾没有回车。

Sample Input A

Sample Output yes

HINT Append Code #include void main(){

char ch;

scanf(”%c“,&ch);

if(ch>='A'&&ch<='Z')

ch=ch+32;

if(ch=='a')

printf(”yes“);

else if(ch=='e')

printf(”yes“);

else if(ch=='i')

printf(”yes“);

else if(ch=='o')

printf(”yes“);

else if(ch=='u')

printf(”yes“);

else

printf(”no“);

}

19.Problem B: 按顺序输出三个数 Description 对于输入的3个整数,按照从小到大的顺序输出。

Input 输入3个int类型内的整数,两两之间用一个空格隔开。

Output 按照从小到大的顺序输出上述三个数,两两之间用一个空格隔开。

Sample Input 2 1 3 Sample Output 1 2 3

HINT Append Code #include void main(){

int a,b,c,temp;

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

if(a

{

temp=a;

a=b;

b=temp;

}

if(a

{

temp=a;

a=c;

c=temp;

}

if(b

{

temp=b;

b=c;

c=temp;

}

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

20.Problem E: Description 判断输入整数的奇偶性。

判断奇偶数 Input 输入为一个整数。

Output 输出只有一行,代表判断结果。如果输入的整数n是一个偶数,输出: n is an even number.否则输出:

n is an odd number.见样例。

Sample Input 12

Sample Output 12 is an even number.HINT Append Code #include int main(){

int a;

scanf(”%d“,&a);

if(a%2==0)

printf(”%d is an even number.“,a);

else

printf(”%d is an odd number.“,a);}

21.Problem A: 判断两个整数的大小关系 Description 输入2个整数a和b,如果a>b,则输出1,否则输出0。

Input 两个整数a和b,均不超过int类型的表示范围。

Output 表示a>b的结果:如果a>b,则输出1,否则输出0。

Sample Input 3 4

Sample Output 0

HINT

Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);if(a>b)

printf(”1“);

else

printf(”0“);return 0;} 22.Problem D: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing

不在0~100之间的输入是非法数据,输出“Error”。

Input 输入多行,每行一个整数。

Output 输入所对应的成绩等级。

Sample Input-1 81 92 35 68 72 100

Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch语句解决这个问题比较方便。

Append Code #include int main(){

int score;

while(scanf(”%d“,&score)!=EOF)

{

if(score<0||score>100)

printf(”Errorn“);

else

{

switch(score/10)

{

case 0:

case 1:

case 2:

case 3:

case 4:

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

case 6:printf(”Passn“);break;

case 7:printf(”Averagen“);break;

case 8:printf(”Goodn“);break;

case 9:

case 10:printf(”Excellentn“);break;

}

}

}

return 0;}

23.Problem E: 输出是m的倍数或n的倍数、但不是

m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n

Input 输入三个整数,依次为k、m、n。

Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。

Sample Input 15 2 3

Sample Output 2 3 4 8 9 10 14 15

HINT 难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。

Append Code #include int main(){ int k,m,n,a,i=1;scanf(”%d %d %d“,&k,&m,&n);if(m

a=m;else

a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){

}

if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0))

printf(” %d“,i);} return 0;

24.Problem B: 两整数相加减 Description 计算a+b和a-b。

Input 输入为一对整数a和b。a,b用空格分开。

Output 输出a+b和a-b的计算结果,各占一行。

Sample Input 1 2

Sample Output 3-1

HINT Append Code #include int main(){ int a,b;scanf(”%d %d“,&a,&b);

printf(”%dn“,a+b);

printf(”%dn“,a-b);} 25 Problem C: 它满足条件吗? Description 需要判断给定的一个整数是否同时满足如下三个条件: 1.它是一个完全平方数。2.它是一个偶数。3.它是一个正数。

注:若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数。例如:

0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一个int范围内的整数。

Output 如果输入的数字满足条件,则输出yes,否则输出no。

Sample Input 100

Sample Output yes

HINT 注意逻辑表达式判断三个条件的顺序。如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

库函数sqrt()可以用于求一个数的平方根。

Append Code #include #include int main(){ int a;scanf(”%d“,&a);

if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0)

printf(”yes“);

else

printf(”no“);}

26.Problem F: 多路分支 Description 编写一个完整的程序,运行时向用户提问”你考试考了多少分?(0-100)“接受输入后判断其等级并显示出来等级: 优:90<=分数<=100 良:80<=分数<90 中:60<=分数<80 差:0<=分数<60

Input 输入任意一个整数分数值,显示等级;再输入任意一个整数分数值,显示等级;....直到测试数据较充分,可输入-1止。

Output 对任意输入的分数值,输出对应的等级,直到输入的数为-1时才退出运行.Sample Input 102 100 90 80 70 60 50 0-80-1

Sample Output grad must between 0 and 100 优

grad must between 0 and 100 grad must between 0 and 100

HINT Append Code #include int main(){

int x;

while(scanf(”%d“,&x)!=EOF)

{

if(x<0||x>100)

printf(”grad must between 0 and 100n“);

else if(x>=90)

printf(”优n“);

else if(x>=80)

printf(”良n“);

else if(x>=60)

printf(”中n“);

else if(x>=0)

printf(”差n“);

}

return 0;} Problem D: 有多少人? Description 学校举行运动会,如果全体学生按照3人一队列队,则多了1个人;如果按照4人一队列队,则多了2个人;如果按照5人一队排队,则多了3个人。请问这个学校有多少学生?

Input 一个int类型的正整数N,是学生人数的上界,即:该校学生数不超过N。

Output 所有可能的学生数,每个数占一行。

Sample Input 200

Sample Output 58 118 178

HINT Append Code #include #include int main(){

int n,i;

scanf(”%d“,&n);

for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3)

printf(”%dn“,i);}

return 0;} Problem C: 正负数各有几个? Description 输入若干个整数,求其中正数、负数的个数。

Input 输入分为2行:第一行是一个数字N>0,表示下面有N个整数。第2行是N个整数,都是int类型的。

Output 输出所输入的N个整数的正数个数和负数个数,并用空格分开2个输出。Sample Input 10 2 3 4 5-1-2-3-4-5

Sample Output 5 5

HINT 貌似还有一种叫做0的数。

Append Code #include int main(){

int n,a,i,num1=0,num2=0;

scanf(”%d“,&n);for(i=0;i

{

scanf(”%d“,&a);

if(a>0)

num1++;

else if(a<0)

num2++;

}

printf(”%d %dn“,num1,num2);

return 0;} Problem A: A+B Problem(III): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20 0 0

Sample Output 3 30

HINT 练习break的使用。

Append Code #include int main(){ int a,b;while(scanf(”%d %d“,&a,&b)!=EOF)

{

if(a!=0||b!=0)

}

printf(”%dn“,a+b);

else

break;

return 0;} 30 Problem B: A+B Problem(IV): Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。

Sample Input 1 2 10 20 15 35

Sample Output 3 30 50

HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。

Append Code #include int main(){ int a,b,n=0;while(scanf(”%d %d“,&a,&b)!=EOF){

n++;

if(n==1)

printf(”%dn“,a+b);

else

printf(”n%dn“,a+b);

}

return 0;}

Problem C: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。

Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。

Output 输出为两行,格式见sample。

Sample Input 3 0 1-1

Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格还是回车都是空白符,对scanf(”%d“)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。

Append Code #include int main(){

int n,i,max,min;

scanf(”%d“,&n);

int a[n];

for(i=0;i

scanf(”%d“,&a[i]);

max=a[0];

min=a[0];

for(i=0;i

{

if(max

max=a[i];

if(min>a[i])

min=a[i];

}

printf(”The maximum number is %d.n“,max);

printf(”The minimum number is %d.“,min);

return 0;} 32.Problem D: 求100以内的素数 Description 素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。

Input 输入为两个整数m和n,满足0<=m<=n<=100。

Output 从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。

输出的所有数在两行“=====”之间。

Sample Input 2 12

Sample Output ===== 11 7 5 3 2 =====

HINT 利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。

Append Code #include #include int main(){ int m,n,i,j,k,t;scanf(”%d %d“,&m,&n);printf(”=====n“);for(i=n;i>=m;i--){

t=0;

for(j=2;j<=sqrt(i);j++)

if(i%j==0)

t=1;

if(t==0&&i>1)

printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否构成三角形? Description 给出三个整数,代表三条边的长度,判断这三条边的长度是否能构成一个三角形?

Input 第一行是n(1<=n<=100),表示有n组测试数据

接下来有n行,每一行包含三个整数,表示三个边长(1<=边长<=100)

Output 如果三条边能构成三角形,输出YES,否则输出NO

Sample Input 3 1 2 3 2 8 7 20 20 1

Sample Output NO YES YES

HINT Append Code #include int main(){ int a,b,c,n,i;scanf(”%d“,&n);for(i=0;i

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

if(a+b>c&&a+c>b&&b+c>a)

printf(”YESn“);else printf(”NOn“);}

return 0;} 34.Problem C: 简单的整数排序 Description 对给出的若干整数按从小到大排序。

Input 输入的第一个数为n(n<=1000),后接n个整数。

Output 按从小到大的顺序输出这些整数,每两个整数之间用一个空格分隔开,最后一个整数后面没有空格。

Sample Input 10 3 9 1 5 2 8 5 6 7 3

Sample Output 1 2 3 3 5 5 6 7 8 9

HINT 排序前必须把所有的整数都存储下来。因为只有最多1000个数,1秒的时间足够任何排序算法运行处结果来。

Append Code #include int main(){

int c,i,n,j;

int a[1000];

scanf(”%d“,&n);

for(i=0;i

scanf(”%d“,&a[i]);

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

{

for(j=0;j

{

if(a[j]>a[j+1])

{

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

}

}

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

for(i=1;i

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

return 0;}

35.Problem A: Description

购物的路程 Saya和Kudo一起去购物。假定她们逛的街是一条直线,而商铺是这条直线上的一些点。她们将车停在该直线最左端的店铺处,然后从左向右开始逛每一个店铺,然后从最右边的店铺再返回到停车处。你的任务是计算她们走了多少路。

Input 输入有多组。每一组的第一行是N(0

Output 对每组输入,输出她们走的路长。

Sample Input 4 13 89 37 6 7 30 41 14 39 42 0

Sample Output 152 70

HINT Append Code #include int main(){

int n,i,max,min,a[100001];

while(scanf(”%d“,&n)&&n!=0)

{

scanf(”%d“,&a[0]);

min=max=a[0];

for(i=1;i

{

scanf(”%d“,&a[i]);

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];

}

printf(”%dn“,(max-min)*2);

}

return 0;} 36.Problem B: 求累加和 Description 编程求min~max的累加和(含min和max),其中max>=min>0。部分程序已经给出,请填充其中的空白语句,并提交填充后的完整程序。

Input 输入为多行。第一行是一个整数N>0,表示后面有N个测试用例。后面有N行,每行包含2个整数,分别是min和max。

Output 输出为N行,每个测试用例的计算结果占据一行。每行的格式为: case i:sum=s.其中i表示测试用例的编号(从1开始),s是该测试用例对应的累加和(设不超过int的表示范围)。

Sample Input 3 1 10 1 100 1 1

Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int main(){

int n,i,j,max,min,sum;

scanf(”%d“,&n);

for(i=0;i

{ sum=0;

scanf(”%d%d“,&min,&max);

if(max==min)

printf(”case %d:sum=%d.n“,i+1,min);

else

{

for(j=min;j<=max;j++)

sum=sum+j;

printf(”case %d:sum=%d.n“,i+1,sum);

}

} return 0;} 37.Problem G: 顺序输出字母 Description 按字母顺序输出两个字母st和ed之间的所有字母,但不包括st和ed。不输出逆序。

Input 两个字母st和ed,都是大写字母,用一个空格分开。

Output 在一行内按顺序输出st和ed之间的所有字母,但不包括st和ed。例如:

输入为A和E,则输出为BCD;

输入为A和B,则什么字母也不输出,只有一个空行; 输入为E和A,也是什么字母也不输出,只有一个空行。最后要输出一行(行尾不回车): ***END***

Sample Input A C

Sample Output B

***END***

HINT Append Code #include int main(){

char st,ed,a;

int i;

scanf(”%c%c%c“,&st,&a,&ed);

{

for(i=st+1;i

printf(”%c“,i);

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

}

return 0;} 38.Problem F: 单字母变换 Description Tom和Jack是密码学爱好者,他们在聊天时经常使用一些暗语。他们使用的一种最简单的暗语是:将要说的每句话里面的英文字母变成这个字母之后的某个字母。现在要求你写一个程序,将一个字母变成它之后的某个字母。

Input 输入有2个:一个大写字母c和一个正整数d(0

Output 输出字母c之后的第d个字母。大小写与c一致。如果c之后的某个字母已经超出'Z',则再从字母'A'开始计数。

如:c='A',d=3,则输出应为:D。若:c='Y',d=3,则输出应为:B。

Sample Input A 3

Sample Output D

HINT Append Code #include int main(){

char c;

int d;

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

if(c+d<='Z')

printf(”%c“,c+d);

else

printf(”%c“,c+d-26);

return 0;}

39.Problem B: 登录密码验证 Description 编写一个程序,模拟用户登录系统的密码验证过程。系统提供给用户的密码长度最长为20个字符,若密码输入错误可以再次输入。但为了保证用户密码安全,若连续输入密码错误超过5次就会锁定账号一段时间。

Input 输入为若干个串,至EOF结束。输入的第一个串是用户的正确密码,后面的串为模拟用户登录时的输入的密码。

Output 每次输入错误的密码,输出一个“Wrong!”,若输入的密码为正确的,输出一个“Welcome!”,并结束密码测试。若前5次输入的密码都是错误的,则后面的输入中不管是否有正确的密码都输出“Out of limited!”。

Sample Input abcdefg

123456 kkkkkkkk abcdefg

Sample Output Wrong!Wrong!Welcome!

HINT 输入可以用scanf(”%s“)处理,密码比较用字符串的比较可以完成。

Append Code #include #include int main(){

char a[20],b[20];

int i,j=1;

scanf(”%s“,a);

while(scanf(”%s“,b)!=EOF)

{

if(j<=5)

{

if((strcmp(a,b)==0))

{

printf(”Welcome!n“);

break;

}

else

printf(”Wrong!n“);

j++;

}

else printf(”Out of limited!n");

} } 40.Problem C: 兔子的繁殖问题 Description 假设一对兔子每月能生一对小兔(一雌一雄),每对小兔出生后的下一个月是没有繁殖能力的,至出生后的第三个月开始又可以每月生一队小兔,问从一对刚出生的小兔开始,经过若干个月后一共有多少兔子(假设在此过程中兔子没有死亡)?

这个问题是意大利数学家菲波那契(Fibonacci)在他1202年出版的《算盘全书》中提出来的,从第一对刚出生的小兔开始每月的兔子数被乘坐菲波那契序列。

Input 输入的第一个数为n,接下来有n个数字。每个数字为一个月份m(m<=45)。

Output 输出为n行,每行为第m个月后的兔子总数。

第三篇:C 语言程序设计

《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。

第四篇:C语言程序设计教程第五章练习题题目

单选题

1、关于数组的定义与初始化,下列哪一项是错误的()A.int arr[5] = {1,2,3,4,5};B.int arr[] = {1,2,3,4,5};C.int arr[5] = {1,2,3};D.int arr[5] = {1,2,3,4,5,6};

2、在定义数组intarr[10]后,下列选项中对arr的引用正确的是()A.arr[10] B.arr[6.3] C.arr(6)D.arr[0]

3、在C语言中,引用数组元素时,其数组下标的数据类型允许是()A.整型常量 B.整型表达式

C.整型常量或整型表达式 D.任何类型的表达式

4、若intarr[5] = {1,2,3};则arr[2]的值为()A.1 B.2 C.3 D.null

5、在执行intarr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为()A.4 B.1 C.2 D.5

6、关于二维数组,下列选项能正确定义并赋初值的是()A.int n = 5,b[n][n];B.int a[1][2] = {{1},{3}};C.int c[2][] = {{1,2},{3,4}};D.int a[3][2] = {{1,2},{3,4}};

7、阅读下列程序段: char s[18] = “a book!”;printf(“%.4sn”, s);其输出结果为()A.a book!B.a book C.abo D.a

8、阅读下列程序:

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

printf(“%d%d%d%dn”, a[0][0], a[1][1], a[2][2], a[3][3]);正确的输出结果为()A.0650 B.1470 C.5430 D.输出值不定

9、阅读下面程序: int i;

int x[4][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };for(i = 0;i<4;i++)

printf(“%3d”, x[i][3-i]);下列选项中哪一项是正确的输出结果()A.1 5 9 13 B.1 6 11 16 C.4 7 10 13 D.4 8 12 16

10、下列描述中不正确的是()。A.字符型数组中可以存放字符串

B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出

D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

11、以下定义语句中,错误的是()。A.int a[]={1,2};B.char *a[3];C.chars[10]=“test”;D.int n=5,a[n];

12、下列选项中,合法的数组定义是()。A.int a[]=“string”;B.int a[5]={0,1,2,3,4,5};C.char s=“string”;D.chara[]={0,1,2,3,4,5};

13、int类型变量在内存中占用四个字节,其有定义:int x[10]={0,2,4};那么数组x在内存中所占字节数是()。A.3 B.10 C.12 D.40

14、C语言中数组下标的下限是()。A.1 B.0 C.视具体情况 D.无固定下限

15、以下程序的输出结果是()。void 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

16、若有以下说明:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;那么数值为4的表达式是()。A.a[g-c] B.a[4] C.a['d'-'c'] D.a['d'-c]

17、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为()。A.该数组的长度 B.该数组的元素个数 C.该数组中各元素的值 D.该数组的首地址

18、当调用函数时,实参是一个数组名,则向函数传送的是()。A.数组的长度 B.数组的首地址

C.数组每一个元素的地址 D.数组每个元素中的值

19、以下程序的输出结果是()。void 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.输出值不定

多选题

1、关于数组类型的定义,下列描述中正确的是()A.数组的大小一旦定义就是固定的 B.一个数组中的各元素类型可以不一样 C.数组的下标类型为整型 D.数组元素的下标从1开始

2、下面对数组描述正确的是()A.数组的长度是不可变的

B.数组不能先声明长度再不赋值 C.数组只能存储相同数据类型的元素 D.数组没有初始值

判断题

1、在C语言中,只有一维数组和二维数组()。

2、数组的索引是从1开始的()。

3、数组属于构造类型的数据()。

4、数组名的命名较为特别,它不符合标识符的命名规范()。

5、数组在初始化时不可以只赋值一部分,必须全部赋值初始化()。

6、对于一维数组,例如intarr[3];则arr[2]表示数组的第2个元素()。

7、数组的下标范围是0-[数组长度-1]()。

8、二维数组进行定义与初始化时,行下标与列下标均不能省略()。

9、在程序设计中,一组具有相同数据类型的变量集合称为数组()。

10、数组元素的下标用于表示元素在数组中的位置序号,该下标是从1开始的()。

11、数组元素下标的个数也称为维数,根据维数的不同,可将数组分为一维数组、二维数组、三维数组、四维数组等()。

12、一维数组指的是只有一个下标的数组,用来表示一组具有相同类型的数据()。

13、数组初始化的常见方式有三种:直接对数组中的所有元素赋值、只对数组中的一部分元素赋值、对数组全部元素赋值但不指定长度()。

14、数组中的元素可以通过数组名和下标来引用()。

15、数组的下标都有一个范围,即“0 ~ 数组长度”()。

16、初始化二维数组时,如果对全部数组元素置初值,则二维数组的第一个下标可省略,但第二个下标不能省略()。

填空题

1、C语言中数组名代表数组的()地址。

2、数组是一组具有()类型的数据的集合。

3、对于二维数组intarr[3][4],其中3为()下标,4为()下标。

4、若定义二维数组intarr[5][6];则数组的列下标的取值范围为()。

5、二维数组是通过数组名和()来引用其元素的。

6、C语言中数组必须先()再使用。

7、二维数组的定义格式为()。

8、一维数组指的是只有一个()的数组,用来表示一组具有相同类型的数据。

9、数组的下标是用()括起来的,而不是圆括号。

10、假设定义一个3行4列的二维数组,那么共包含()个元素。

11、二维数组同一维数组一样,也是通过()和下标的方式来引用数组元素。

12、假设定义数组int a[3][4],数组a可用的行下标范围是(),列下标范围是()。简答题

1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void main(){ int i;chararr[5] = { 'h', 'e', 'l', 'l', 'o' };for(i = 0;i < 5;i++)

printf(“%c”, arr[i]);}

2、请阅读下面的程序,在空白处填写正确的代码,只打印出数组偶数位上的元素。int main(){ int i;intarr[8] = { 1, 0, 1, 0, 1, 0, 1, 0 };for(i = 0;i < 8;i++){

;

printf(“%dn”, arr[i]);} return 0;}

3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void main(){ floatarr[6] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6 };inti,t;t = arr[0];for(i = 0;i < 5;i++)

arr[i] = arr[i + 1];

arr[5] = t;for(i = 0;i < 6;i++)

printf(“%-6.2f”, arr[i]);}

4、请阅读下面的程序,在空白处填写正确的代码,输出数组中最大元素的下标。int main(){ int i, p;intarr[] = { 1,-3, 0,-9, 8, 5, 20, 3 };for(i = 0, p = 0;i < 8;i++){

if()

;} printf(“p = %dn”, p);return 0;}

5、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:删除字符串s中的所有数字字符。void dele(char *s){ int n=0,i;for(i=0;s[i];i++)

if(_______)

s[n++]=s[i];s[n]=_______ }

6、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:在一个初始化数组中查找与x相同的元素,如果找到就将该元素置为-x。void main(){ int a[]={8,4,2,7,3,9},i,x;scanf(“%d”,&x);for(i=0;_______;i++)

if(a[i]==x)

_______ for(i=0;i<6;i++)

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

7、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:计算str所指字符串的长度,并作为函数值返回。intmystrlen(char *str){ int i;for(i=0;_______!='';i++);

return _______;}

8、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:在5个数中,找出最大的元素及位置。#define size 5 void main(){ int a[size]={4,6,3,9,23};intmax,p,i;_______

} p=0;for(i=1;imax){

max=a[i];

_______ }

9、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:对N个数用直接插入排序法进行由小到大排序。

#define N 10 //待排序元素的个数

void insertsort(int R[N+1])//直接插入排序 { inti,j;for(i=2;i<=N;i++){

R[0]=R[i];//设置监视哨

j=i-1;

while(_______)

{

R[j+1]=R[j];

_______

}

R[j+1]=R[0];} }

10、定义一个大小为10的char类型数组,从键盘输入其元素,然后将其倒序输出。

11、定义一个大小为10的int类型数组,从键盘输入其元素,然后将其从小到大排序后输出。

12、定义一个大小为10的int类型数组,从键盘输入其元素,然后输出其中最大值。

13、定义一个二维数组intarr[3][4] = {12,2,45,36,2,10,86,0,54,666,58,400};将数组中的元素按每一行每一列输出;

14、有一个二维整型数组,每一行都有一个最大值,编程求出每一行的最大值;

15、请简要说明如何定义一个一维数组并为之赋值。16请简要说明一维数组与二维数组的区别。17简要描述数组有哪些特点。18请简述什么是数组。

19请简述什么是多维数组的维数。

第五篇:C语言程序设计教程第一章练习题题目

单选题

1、下列语言中不属于计算机语言的三大类的是(C)。A.机器语言 B.汇编语言 C.脚本语言 D.高级语言

2、下列说法中不正确的是(C)

A.计算机语言大致可分为三大类,即机器语言、汇编语言和高级语言

B.C语言是一种通用的、过程式的编程语言,具有高效、灵活、可移植等优点 C.C语言属于汇编语言

D.高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用

3、以下开发工具中不属于主流的开发工具的是(B)A.Visual Studio B.Xcode C.Code::Block D.Eclipse

4、下列选项是对主流开发工具的介绍,其中错误的是(B)

A.Visual Studio支持C/C++、C#、F#、VB等多种程序语言的开发和测试 B.Code::Block是一个免费的跨平台IDE,支持C、C++和Fortan程序的开发 C.Eclipse是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发 D.Vim是一款功能非常强大的IDE(和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。)

5、下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是(A)A.启动开发工具 B.添加源文件 C.编写代码 D.运行程序

6、下列选项中,关于main()函数叙述不正确的是(C)

A.一个完整的C语言程序中,有且只能有一个main()函数

B.main()函数是程序的主入口,程序总是从main()函数开始执行 C.如果没有声明main()函数,程序将从第1行开始执行 D.main()函数可以有返回值,也可以没有返回值

7、下面程序中,合法的选项是(D)

A.#includeint main(){ printf(“hello worldn”);return 0;} B.#includeint man(){ printf(“hello worldn”);return 0;} C.#includeint main(){ printf(“hello worldn”)return 0;} D.#includeint main(){ print(“hello worldn”);return 0;}

8、下面程序中,运行结果为“1,2”的是(A)

A.#includeint main(){ int a = 1;int b = 2;printf(“%d %dn”,a,b);return 0;} B.#includeint main(){ int a = 1;int b = 2;printf(“%d,”a);printf(“%dn”,b);return 0;} C.#includeint main(){ int a = 1, b = 2;printf(“%d,%dn”,a,b);return 0;} D.#includeint main(){ int a = 1,a= b = 2;printf(“%d,%dn”,a,b);return 0;}

9、下列关于注释的描述中,错误的是(B)

A.C语言中的注释有两种类型:单行注释和多行注释 B.所有的注释都可以嵌套使用

C.单行注释用“//”符号表示,“//”后面为被注释的内容 D.多行注释以符号“/*”开头,以符号“*/”结尾

解析:在C语言中,有的注释可以嵌套使用,有的则不可以,例如:

多行注释“/*„*/”中可以嵌套单行注释“//”; 多行注释“/*„*/”中不能嵌套多行注释“/*„*/”。

10、下列关于注释的描述中,正确的是(C)

A.注释只在C语言源文件中有效,在编译时会被编译器忽略 B.注释只能对程序中的某一行代码进行解释 C.注释不可以嵌套使用

D.单行注释以符号“/*”开头,以符号“*/”结尾

11、C语言可执行程序的开始执行点是

(D)A.程序中第一条可执行语句 B.程序中第一个函数 C.程序中的main函数 D.包含文件的第一个函数

12、一个完整的C语言程序是

(B)A.要由一个主函数或一个以上的非主函数构成

B.由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C.要由一个主函数和一个以上的非主函数构成 D.由一个且只有一个主函数或多个非主函数构成

13、以下说法正确的是(A)

A.c语言程序总是从第一个函数开始执行

B.在c语言程序中,要调用的函数必须在main()函数中定义 C.c语言程序总是从main()函数开始执行

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

14、在c语言程序中,注释部分从哪开始,到哪结束?(D)A.从“(”开始到“)”结束 B.从REM开始无结束标志 C.无起始标志

D.从“/*”开始,“*/”结束

15、关于#include这句代码,下列描述中错误的是(A)A.“#”是预处理标志,用来对文本进行预处理操作 B.include是预处理指令 C.一对尖括号可以去掉

D.stdio.h是标准输入输出头文件

16、关于printf(“hello worldn”);,下列描述中错误的是(C)A.printf()是格式化输出函数,用于输出信息 B.printf()括号中的内容为函数的参数

C.printf()括号中的内容会全部输出到控制台 D.n表示换行

17、关于注释,下列描述中错误的是(C)

A.注释只是对代码的解释说明,只在源文件中有效 B.注释可分为单选注释与多行注释 C.单选注释的符号为// D.多行注释间可以嵌套使用

18、下列是多行注释的符号是(D)A.// B./ C./* D./**/ 判断题

1、计算机不需要翻译就能直接识别的语言被称为汇编语言。()

2、C语言只适用于系统软件的开发。()

3、根据功能和实现方式的不同,C语言属于高级语言。()

4、Visual Studio仅支持C/C++语言的开发和测试。()

5、Visual Studio系列的IDE是跨平台的。()

6、在C语言程序中,以分号“;”作为结束标记的代码都可称为语句。()

7、注释在编译时也会被编译到程序中。()

8、/printf(“hello worldn”);*/ 是合法的注释。()

9、机器语言是由二进制数0和1组成的一串指令。()

10、汇编语言的可移植性较好。()

11、计算机语言可分为四大类:机器语言、汇编语言、脚本语言和高级语言。()

12、C语言属于机器语言。()

13、C语言的主流开发工具包括:Visual Studio、Code::Block、Eclipse、Vim。()

14、编写C语言程序的流程是:新建项目、添加源文件、编写代码、运行程序。()

15、C语言中的注释有两种类型:单行注释和多行注释。()

16、Visual Studio只支持C/C++程序语言的开发和测试。()

17、在C语言程序中,一个语句的结束用”;“来标记。()

18、注释会影响程序的运行。()

19、多行注释之间不能嵌套调用。()

填空题

1、根据功能和实现方式编程语言可分为三大类,分别是:(),(),()。

2、计算机语言主要由一些指令组成,这些指令包括()、符号和语法等内容。

3、计算机语言可分为三大类,即机器语言、汇编语言和()。

4、C语言中的注释有两种类型,分别单行注释和()。

5、单行注释用()符号表示。

6、注释在编绎时会被编绎器忽略,它只在C语言()文件中有效。简答题

1、简单介绍C语言的特点。

2、为了使下面的程序能够正常运行,请在空格处填写相应的代码。

3、请编写一个helloworld程序,要求如下:

4、请编写一个程序,实现两个变量a和b的求和操作,要求如下:

5、请阅读下面的程序,在空白处填写正确的代码,实现换行。

6、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。

7、请编写一个程序,在控制台输出一句话:中国欢迎你!

8、请编写一个程序,实现从键盘输入两个数据,然后将两个数据相加,结果输出到控制台上。

9、请简述C语言的特点。

10、请简述机器语言、汇编语言和高级语言。

下载语言程序设计练习题 2word格式文档
下载语言程序设计练习题 2.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    经典C语言程序设计例题

    经典C语言程序设计例题 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......

    第一章 C语言程序设计

    第一章 C语言程序设计 考试形式:试卷(全国统一 4月第二个星期六9月倒数第二个星期六) 笔试: 满分100分60分及格 时间:90分钟内容: 70分 C语言知识30分 公共基础 选择题:60分 前......

    C语言程序设计心得体会

    C语言程序设计心得体会在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生信息管理系统的程序设计,更值得高兴的是我们的程序得到了大家的喜爱,在......

    C语言程序设计策划书

    信息工程学院学生会科技部 关于举办信息工程学院C语言程序设计大赛的策划书 一、活动背景: 随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言......

    《C语言程序设计》教学方法探讨

    《C语言程序设计》教学方法探讨 【摘要】针对目前《C语言程序设计》教学效果不理想的问题,结合教学实际,分析教学过程中存在的问题,针对计算机专业新生的教学方法进行探讨,提出......

    C语言程序设计教案

    C语言程序设计教案 C语言程序设计教案 C 语言程序设计教案 C 语言概述 【教学目的】 1)了解 C 的发展 教学目的】 2)熟悉 C 的特点 教学重点】 【教学重点】 C 语言的特点......

    语言程序设计课程设计指导书

    汇编语言程序设计课程设计指导书 一、 课程设计的目的 本课程设计是《汇编语言程序设计》课程的后继教学环节,其宗旨是使学生通过对一个较大型的、综合性的应用程序进行阅读......

    C语言程序设计--大作业

    C语言程序设计大作业 编写程序,实现单链表的插入、删除、输出、查找、统计以及销毁功能。 单链表的每个结点存储一名学生的信息,包括:学号、姓名、性别、年龄、三门课程(高数、......