for (i=2;i==0;)
printf("%d",i--)
因为i=2一开始就进行条件判断,i==0是否成立,显然不成立,故跳出循环,故循环0次。没有i输出
0次
全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道 *** 作题(60分)。
单选题中1~10题为二级公共基础知识,考试内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。单选题的11~40题是C语言的内容。
*** 作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。
程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生具体抽到的题目不同,程序填空有2到3个空要填。程序填空题以实际填写的内容为评分依据,填写正确一个空,给一个空的分。如果是2个空,每个空就是9分;如果是3个空每个空是6分。
程序改错也是一个完整的程序,其中有2~3处错误要求考生将他们改正。与程序填空类似,2处错误的话,每处9分,3处错误的话,每处6分。程序改错题的题目会提示每一处错误所在的行,在那一行的上一行有found标识。
编程题是要求考生编写一个程序,然后运行出题干要求的结果。题目中主函数main()会完整给出,在主函数中将调用fun()函数,fun函数由考生自己编写。编程题以运行结果给分,所编写完成后必须运行,否则没分。因此,大多数情况下,编程题要么就是得24分满分,要么就是0分。
题目好像出错了,for循环后面加分号,就实现不了。
#include <stdioh>
void main()
{int data,temp,k;
static int a[9]={1,3,5,10,12,25,45,50};
printf("\nEnter a data:");
scanf("%d",&data);
a[8]=data;
for(k=8;k>=0;k--)
{
if(a[k]<a[k-1]){temp=a[k];
a[k]=a[k-1];
a[k-1]=temp;
}else break;
}
for(k=0;k<9;k++)
printf("%7d",a[k]); }
在联赛初赛卷中,填空题的内容通常有1、变量方面的填空定义变量的数据类型;设定变量的初值;对变量的赋值;根据变量的辖域确定其是全局变量还是某个子程序的局部变量。2、循环方面的填空 定义循环变量;设定循环变量的初值和终值;在循环体中怎样引用循环变量;如何保证循环体无论在一般情况下还是在特殊情况(第一次循环或最后一次循环)下都是对的。3、分支转移方面的填空定义布尔表达式;根据布尔值确定程序的走向;4、主程序和子程序关系方面的填空 子程序说明中的形式参数表设定了哪些参数,其中哪些是值参,哪些是变量参数;主程序什么时候调用子程序;调用的实际参数表怎样和形式参数表“匹配”。 5、输入输出方面的填空按照变量的定义和输入输出格式的要求,哪些变量的初值应该通过输入得到,哪些变量的计算结果应该输出。如果说程序所要解决的问题是主目标,则计算模型明确了到达这个主目标的方向。程序样例给出了大致的路径方案。“填空”就是要求你在这张路径图上补全“空格”所代表的“边”,使得该程序能够达到预期目的。6、核心算法的理解完善程序题解题步骤:1、仔细阅读文字解释,理解题意和提供的解题思路2、根据问题的求解要求,了解输入、输出内容和问题处理方法3、先阅读主程序,了解输出变量和输出要求以及主程序中需要调用的过程或函数是哪些。4、阅读过程或函数,了解其完成的功能5、填空方法:可以从程序的两端进行:(1)从程序(或主程序)最后输出变量、结果要求,可以完成部分填空,同时可以反推所涉及到的或相关的变量、表达式、语句的填写;(2)从程序(或主程序)初始化程序段开始填写,完成初始化程序的填写任务;(3)观察整个程序中主要变量、控制变量的变化,并能根据程序结构、模块划分出相应功能;(4)根据算法提示完成部分填空。6、根据主程序参数与子程序参数传递关系,填写子程序的变量,根据子程序需要完成的功能,完成子程序填空7、填写完大多数空白后,再将程序整个阅读一遍,完成全部填空。8、将填写后的程序阅读一遍,检查其能否完成问题的求解,直到完成任务。
读程序解题步骤做阅读程序题,首先要想方设法弄清楚程序的功能,每个题目总有一点“写作目的”。抓住了它,不仅答案变得容易了,而且对自己的结果也比较有信心。
1、从总体上通读程序,大致把握程序的目的和算法。
2、猜测变量的作用,跟踪主要变量值的变化(列表),找出规律。
3、将程序分段,理清每一小段程序的作用和目的。
4、看清输入,按照输出格式,写出结果。
5、带着到的结果回到程序进行检查。
几种方法a 直接模拟
b 先模拟几次循环后找规律
c 直接看程序了解算法功能
d 了解程序本质后换一个方法解决
e 有时不知道算法可以通过观察猜出来
第一题,写了一点代码,但是结果很离谱,误差挺大的,仅供参考
#include <stdioh>
#include <mathh>
double _cos(double x);
int main(int argc, char argv[])
{
float x;
printf("plesae input x: \n");
scanf("%g", &x);
printf("cos(%g) = %g\n", x, _cos(x));
}
int factorial(int n)
{
if(n <= 1)
return 1;
n = factorial(n - 1);
return n;
}
double _pow(double x, int n)
{
int i;
double tmp, result;
tmp = x;
result = 10;
for(i = 0; i < n; i++)
{
result = x;
if(fabs(result- tmp) < 1e-10)
break;
tmp = result;
}
return result;
}
double _cos(double x)
{
int i;
double result, tmp, forhead;
i = 1;
result = 10;
forhead = 00;
while(fabs(forhead - result) > 1e-6)
{
forhead = result;
tmp = _pow(x, 2i) / (double) factorial(2i);
if(i % 2 == 0)
result += tmp;
else
result -= tmp;
if(tmp < 1e-10)
break;
i++;
}
return result;
}
汇编语言程序设计模拟题
一、填空:
1、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
2、若要将所有数据及代码都放在一个段内,应建立 存储模型。
3、 *** 作数:ES:TABLE[DI]、FEES[EBX2]、MSAK[EAX][EBX]分别采用 、
、 寻址方式。
4、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。
5、通常用CPU的 寄存器间接寻址端口地址。
6、如果在宏定义体设置局部标号,应使用 伪 *** 作以避免在宏展开时出现标号的多重定义。
7、设(CS)=2A31H,(DS)=9300H,(SS)=25F0H,(BP)=0131H,(SI)=0110H,(DI)=0102H,则指令MOV AX,[BP+SI+8]的源 *** 作数有效地址为________________,物理地址为_________________。
8、设(AX)=1000H,(BX)=2340H,则在执行了指令CMP AX,BX后,CF标志值为___________,ZF标志值为______________。
9、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。
10、显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是 。
11、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。
12、n位二进制补码数的表数范围为: 。
13、将两个不同模块中的同名段重叠成两个段中较大的一个段,在定义段时应采用 组合属性。
14、 *** 作数:ES:STRING[SI]、COUNT[ESI4]、MSAK[EBX][ECX]分别采用 、 、 寻址方式。
15、设置光标位置可使用BIOS INT 10H的 号功能调用,作为入口参数,光标的行号及列号应存入 寄存器。
16、通常用CPU的 寄存器间接寻址端口地址。
17、若在模块1中引用模块2中定义的外部符号,则在模块1和模块2中的开头分别使用
、 伪指令。
18、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,则指令MOV AX,[BP+SI+2]的源 *** 作数有效地址为_________________,物理地址为____ __________。
19、有数据定义如下:
V1 DB 4 DUP(2),2
COUNT EQU 10
V2 DD COUNT DUP(8,5 DUP())
则:为变量V1分配____________个字节存贮空间;V2分配____________个字节存贮空间
20、外设的发出中断请求若被CPU响应,有两个条件必不可少,即 和 。
21、子程序之间传递参数可使用 、 和 三种方式。
22、若中断类型为4AH,则中断向量的地址为 。
23、CPU的指令指针寄存器为: ,它与 寄存器联用确定下一条指令的物理地址。
24、当端口号≥256时,使用IN或OUT指令,必须先将端口号放到 寄存器。
25、 *** 作数:ARY[EAX2]、ES:[TABLE+SI]、SUM[EBX][EDX]分别采用 、
、 寻址方式。
26、变量有三属性,分别为: 、 、 。
27、如果在宏定义体设置局部标号,应使用 伪 *** 作以避免在宏展开时出现标号的多重定义。
28、宏定义必须由伪指令 开始,伪指令 结束。
29、设(CS)=9896H,(DS)=9100H,(SS)=25F0H,(BX)=0111H,(SI)=0810H,(DI)=0102H,则指令MOV [BX+SI+8],CX的目的 *** 作数有效地址为___ ________,物理地址为____ _________。
30、读取当前光标位置可使用BIOS INT 10H的 号功能调用,作为出口参数,光标的行号及列号将从 寄存器中获得。
31、中断发生时,保存现场将 、 、 寄存器的内容存入堆栈。
32、若:FEES DW 10 DUP(10,5 DUP()),则指令:MOV CX,LENGTH FEES执行后,(CX)=
二、选择题
1、 下列寄存器中,( )可作为基址寄存器。
A、AX B、BX C、CX D、DX
2、 下列指令序列中,清除当前中断请求(EOI)命令为:( )
A、MOV AL,20H B、MOV AL,20H C、MOV AL,21H D、MOV AL,21H
OUT 20H,AL IN AL,20H OUT AL,21H IN AL,21H
3、 段定义时,使用( )定位类型,则该段必须从小段的边界开始。
A、BYTE B、WORD C、DWORD D、PARA
4、 若:(BX)=4336H,(CX)=0136H指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为( )
A、0,0,0,0 B、0,1,0,0 C、1,0,0,0 D、0,0,0,1
5、 若:FEES DW 10 DUP(100,)
指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )
A、1000 B、1 C、10 D、2000
6、 在循环指令中作为计数器的是( )寄存器。
A、AX B、BX C、CX D、DX
7、 在执行除法指令时,若除数为零则产生一个类型号为( )的中断。
A、0 B、1 C、3 D、4
8、 段定义时,使用( )定位类型,则该段必须从字的边界开始。
A、PARA B、WORD C、DWORD D、BYTE
9、 若:(BX)=4336H,(CX)=0136指令:SUB BX,CX 执行后,SF、ZF、OF、CF标志分别为:( )
A、0,0,0,1 B、0,1,0,0 C、1,0,0,0 D、0,0,0,0
10、若:FEES DW 100 DUP(),
则指令:MOV CX,LENGTH FEES执行后,CX的内容为:( )
A、100 B、1 C、10 D、0
11、下列寄存器中,( )不能作为变址寄存器。
A、EAX B、EBP C、ECX D、ESP
12、 下列指令序列中,哪条指令与SUB AX,AX效果相同:( )
A、AND AX,AX B、OR AX,AX C、XOR AX,AX D、NOT AX
13、 将两个不同模块中的同名段重叠成两个段中较大的一个段,应采用( )组合属性。
A、PUBLIC B、COMMON C、PRIVATE D、MEMORY
14、 若:(AX)=0F365H,(CX)=0E024H指令:ADD AX,CX 执行后,SF、ZF、CF、OF标志分别为:( )
A、1,0,1,0 B、0,1,0,0 C、0,0,0,0 D、0,0,0,1
15、 显示字符串可使用DOS 9号功能,它要求被显示的字符串最后一个字符必须是( )
A、& B、$ C、% D、@
三、判断下列指令及伪指令是否正确(在括号中打“√”或“×”):
1、DIV 20H ( )
2、XCHG BX,ES ( )
3、CMP [BX],TABLE[SI] ( )
4、IN AL,DX ( )
5、MOV BYTE PTR[BX],25H ( )
6、MOV CS,0200H ( )
7、RET 8 ( )
8、LEA TABLE,BX ( )
9、ACL1 MACRO A,B,C ( )
┆
ACL1 ENDM
10、NEWP PROC ( )
┆
NEWP ENDP
11、MUL 20H ( )
12、MOV BX,[SI][DI] ( )
13、CMP [BX],TABLE[SI] ( )
14、OUT DX,AL ( )
15、MOV [DX],25H ( )
16、POP CS ( )
17、RET 8 ( )
18、LEA TABLE,BX ( )
19、MOVE EQU MOV ( )
20、FEED MACRO X,Y,Z ( )
┆
FEED ENDM
21、ADD ES:BX,20H ( )
22、XCHG DX,DS ( )
23、CMP [BX],TABLE[SI] ( )
24、OUT DX,AL ( )
25、RET 8 ( )
26、DATA1 DB DATA0 ( )
27、MOVE EQU MOV ( )
四、完成下列指令序列:
1、将数据段中字串STRING1(长度为N),传送到附加段中以BUFF为首地址的缓冲区:
┆
MOV SI,
MOV DI,
MOV CX, N
CLD
REP
2、分别用一条语句实现下述指明的功能
(1)变量AYD存放的地址指针送ES和SI
(2)AX的内容加1,要求不影响CF
CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX1、设置中断向量(中断例行程序为INTERHAND,中段类型号为N)
┆
MOV AX,SEG INTERHAND
MOV DS,AX
MOV DX,
MOV AL,N
INT 21H
┆
INTERHAND:
┆
IRET
3、清除全屏幕
┆
MOV AX,
MOV BH,7
MOV CX,
MOV DX,
INT 10H
┆
4、分别用一条语句实现下述指明的功能
(1)字变量LIST存放的地址指针送ES和DI
(2)将AX的内容加1,要求不影响CF
(3)将BX的高4位置1,其余位不变
(4)将SI指向的字单元内容存入堆栈
(5)比较两个带符号数,若前者≥后者,则转向NEXT
5、清除屏幕右半区域:
┆
MOV AX,
MOV BH,7
MOV CX,0
MOV DX,
INT 10H
┆
6、 MOV CL,8
SHL AX,CL
SHR BX,CL
ADD AX,BX
MOV WORD PTR DATA1,AX
问:上述指令序列的功能是什么?
7、 ┆
MOV AL,N
MOV AH,35H
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV AX,SEG INTERHAND
MOV DS,OFFSET INTERHAND
MOV AL,N
MOV AH,25H
INT 21H
POP DS
┆
问:上述指令序列的功能是什么?
8、分别用一条语句实现下述指明的功能:
① 栈顶内容d出送字变量MG1
② 变量MG2类型属性送AH
③ AX的内容加1,要求不影响CF
④ 将EBX的低4位取反
⑤ 若(CX)=0则转移至NEXT
五、分析计算题:
1. 设(AX)=201BH,(BX)=110CH,(DI)=0001H,(DS)=4000H,(4110CH)=0AH,(4110DH)=81H,(4110EH)=70H;
则:① MOV AX,[BX]指令执行后,(AX)= ;
② MOV BH,BYTE PTR[BX+DI+1],指令执行后,(BX)=
2.
MOV AX,6540H
MOV DX,3210H
MOV CL,04
SHL AX,CL
MOV BL,AH
OR DL,BL
试问上述程序段运行后,
(AX)=
(BL)=
(DX)=
3、
DATA1 DW 1000H
DATA2 DW 2000H
┆
PUSH DATA1
PUSH DATA2
POP DATA1
POP DATA2
问:①上述程序段执行后,(DATA1)= ,(DATA2)=
②设执行前(SP)=200H,执行后(SP)=
4、 BUFF DB 7 , 6 , '56' ,
ARRAY DW 0 , 67H , 7
BASUB EQU ARRAY-BUFF
问:BASUB的值是多少?它表示什么意义?
5、
MOV CL,3
MOV BX,0B7H
ROL BX,1
ROR BX,CL
问:上述程序执行完毕,BX寄存器的内容是什么?
6、
┆
DATA
STRING1 DB 50,,50 DUP()
NEXT:
LEA DX,STRING1
MOV AX,0AH
INT 21H
CMP STRING1+2,0DH
JE EXIT
JMP SHORT PTR NEXT
EXIT:
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
说明上述指令序列的功能。
7.设(AX)=9A6CH,(BX)=710BH,(DI)=0002H,(DS)=6000H,(6710BH)=09H,(6710CH)=87H
(6710EH)=5EH;
则:① MOV AX,[BX]指令执行后,(AX)= ;
② MOV BL,BYTE PTR[BX+DI+1],指令执行后,(BX)=
8. OPER1 DB 1,2
OPER2 DW 1234H,5678H
则: 指令 ① MOV AX,WORD PTR OPER1+1执行后,(AX)=
② MOV AL,BYTE PTR OPER2执行后,(AL)=
③ MOV AH,SIZE OPER2执行后,(AH)=
六:叙述题:
调用程序和子程序之间参数传递有哪几种主要方式 各自的特点是什么
简述8086CPU的中断响应过程。
简述子程序调用与宏调用工作方式的区别。
七:程序设计:
1、设X、Y、Z、W均为16位带符号数单元地址,写出执行下述计算的子程序。
Z=│X+Y-W│
2、编写汇编语言源程序:测试ALPHA字节变量单元中的ASCII码字符串,进行如下 *** 作:
(1)若为数字字符,送入NUM字节单元中,置标记FLAG为0;
(2)若为大写字母字符,送入BICCHR字节单元中,置标记FLAG为0;
(3)若为小写字母字符,送入SMLCHR字节单元中,置标记FLAG为0;
(4)否则,置标记FLAG为1.
(字符0,9,A,Z,a,z的ASCII分别为30H,39H,41H,5AH,61H,7AH)
3、设X、Y、Z均为16位带符号数单元地址,写出执行下述计算的子程序。
X+Z ,X≥Z
Y=
X-Z ,X<Z
4、已知有256个字节整数a1,a2,a3,,a256存放在以NUMBER为首地址的数据区中。编一程序将其中的负数去除后将剩下的正数重新顺序存放在以PLUS开始的数据区中。
5、 编写程序段。用串处理指令,比较两个有10个字符的字符串变量CHR1和CHR2,如果两者全不相同则执行子程序OTHER,否则,顺序执行。
6、编写汇编语言源程序: 设在字单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入字单元D中,若有一个为0,则将其他两个单元也清零。
第1个选C
第2个选A
简单的说明:
几个变量中,d就是等差数列的级差,它最大不可能超过5,因为前四项和为26。而s则是和,f是积,x是数列的每一个数。
后面就是一个循环输出的过程了。
以上就是关于以下程序段循环次数是()for (i=2;i==0;)printf("%d",i--);A无限次B0次C1次D2次麻烦大家帮我解答哈全部的内容,包括:以下程序段循环次数是()for (i=2;i==0;)printf("%d",i--);A无限次B0次C1次D2次麻烦大家帮我解答哈、计算机二级c语言考试的题型是什么我知道有40道选择题一个一分,请问后、c语言,程序填空,从键盘输入一个数,将其插入一个升序数组中,保持数组仍按升序输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)