
代码给你了,有不懂的可以追问
#include<stdioh>
void fun(chart,charp)
{
int i,j=0;
static int n=0;
for(i=0;i<5;i++)
{
if(t=='\0')
break;
if(t[i]==p[j])
j++;
else
{
t++;
n++;
j=0;
i=-1;
}
}
if(i>=5)
{
printf("%d\n",n);
t=t+5;n=n+6;j=0;
fun(t,p);
}
}
void main()
{
char t="ababcabcacbabcacbbaaccabccaa";
char p="abcac";
fun(t,p);
};完整程序
;编译,链接通过
;运行正确
DATA SEGMENT
STR DB 'a bb ccc !'
RE DB 3 DUP(0)
DATA ENDS
STACK SEGMENT STACK
SKTOP DB 40H DUP()
SKSIZE EQU $-OFFSET SKTOP
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,SKSIZE
LEA SI,STR
LEA DI,RE
CALL STAT
MOV AH,2
MOV CX,3
XOR BX,BX
DSP: MOV DL,[BX+DI]
ADD DL,'0'
INT 21H
ADD BL,'a'
MOV DL,BL
INT 21H
MOV DL,' '
INT 21H
SUB BL,'a'-1
LOOP DSP
MOV AX,4C00H
INT 21H
;参数: SI=欲统计的字串的有效地址
; DI=保存统计结果的有效地址
;返回: NONE
STAT PROC
PUSH AX
PUSH BX
PUSH CX
PUSH SI
MOV AL,0
MOV CX,'c'-'a'+1
XOR BX,BX
FILL0: MOV [BX+DI],AL
INC BX
LOOP FILL0
XOR BX,BX
XOR AH,AH
STATS: MOV AL,[SI]
CMP AL,'!'
JE STATRE
SUB AL,'c'
JA CONTN
ADD AL,'c'-'a'
JS CONTN
MOV BX,AX
INC BYTE PTR [BX+DI]
CONTN: INC SI
JMP STATS
STATRE: POP SI
POP CX
POP BX
POP AX
RET
STAT ENDP
CODE ENDS
END BEGIN第1次循环,i=0,a[i]='a',所以执行i1++,此时i1=1;
第2次循环,i=1,a[i]='b',所以执行i2++,此时i2=1;第3次循环,i=2,a[i]='c',不执行i1++或者
i2++;
第4次循环,i=3,a[i]='d',不执行i1++或者i2++;
第5次循环,i=4,a[i]='A',不执行i1++或者i2++;
第6次循环,i=5,a[i]='b',所以执行i2++,此时i2=2;
第7次循环,i=6,a[i]='c',不执行i1++或者i2++;
第8次循环,i=7,a[i]='A',不执行i1++或者i2++;
第9次循环,i=8,a[i]='B',不执行i1++或者i2++;
第10次循环,i=9,a[i]='f',不执行i1++或者i2++;
第11次循环,i=10,a[i]='g',不执行i1++或者i2++;
第12次循环,i=11,a[i]='a',所以执行i1++,此时i1=2;
第13次循环,i=12,a[i]='c',不执行i1++或者i2++;
第14次循环,i=13,a[i]='d',不执行i1++或者i2++;
之后i=14,a[i]='\0',结束循环。i1=2,i2=2。
版本 2
程序集 窗口程序集1
子程序 __启动窗口_创建完毕
局部变量 A, 整数型
局部变量 B, 整数型
局部变量 C, 整数型
局部变量 D, 整数型局部变量 数组
, 文本型, , "4"
数组 = { “A”, “B”, “C”, “D” }
编辑框1是否允许多行 = 真
编辑框1内容 = “”
计次循环首 (4, A)
计次循环首 (4, B)
如果真 (B = A)
到循环尾 ()
如果真结束
计次循环首 (4, C)
如果真 (C = B 或 C = A)
到循环尾 ()
如果真结束
计次循环首 (4, D)
如果真 (取反 (D = C 或 D = B 或 D = A))
编辑框1内容 = 编辑框1内容 + 数组 [A] + 数组 [B] + 数组 [C] + 数组 [D] + “ ”
如果真结束
计次循环尾 ()
计次循环尾 ()
计次循环尾 ()
计次循环尾 ()
----------------------------------------
运行结果:
ABCD ABDC ACBD ACDB ADBC ADCB BACD BADC BCAD BCDA BDAC BDCA CABD CADB CBAD CBDA CDAB CDBA DABC DACB DBAC DBCA DCAB DCBA
#include <stdioh>
#include<windowsh>
void main()
{
int i,j,k;
for (i=0;i<4;i++)
{
for(j=0;j<i+1;j++)
printf(" ");
for(k=1;k<=7-2i;k++)
printf("%d",k); //这一行改成 printf("%c",k-1+'A');
Sleep(1000);
printf("\n");
}
}
1、先打开DEV C++软件,并点击“新建源代码”。
2、在编辑页面输入源代码:
#include<stdioh>
int main()
{
void exchange(int q1,int q2,int q3);
int a,b,c,p1,p2,p3;
printf("please input three numbers:");
scanf("%d %d %d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("The order is:%d %d %d\n",a,b,c);
return 0;
}
void exchange(int q1,int q2,int q3)
{
void swap(int pt1,int pt2);3、因为此次的编程要求自定义函数
swap() 用于交换两个变量的值,并且函数的原型为: void swap(int p1,int p2),并在main函数中用指针变量作实参,调用swap函数,最后输出排序后的结果,所以要先进行函数的定义,给其进行分配空间。
4、首先需要对这三个数分别进行比较,然后再在这个函数中镶嵌另一个函数来进行第二次的大小比较。
5、在使用指针函数时,要注意其指向,必须明确指向目标,指向要规范,否则计算机无法识别,编程将会运行不出来。
6、最后点击“运行”,然后向计算机输入我们的三个不同数值,计算机就会按其从大到小进行顺序的输出了。


评论列表(0条)