Excel2Mysql制作ing..(1)
好懒 = = ……边红心大战边校内边找茬做了许久,才做了一个界面……至于事件什么时候写……再说了……
放截图出来自己陶醉下……
win下的输入流结束符
在《C++ Primer》里看到说,win下的输入流结束符是Ctrl+Z,于是写了段代码来实验,发现要输入两次CTRL+Z才会退出:
using namespace std;
int main(){
char a;
while(cin>>a)cout<<a<<endl;
return 0;
}
将数据库中的内容导出为Excel
原来只需要将内容按table布局,然后再加上
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "content-disposition", "inline; filename = 选课列表.xls"
即可。
刚给CA做他们公司的课程报名平台时要用到的功能,将报名名单数据导出成excel。
百度了下还有其他三种方法,因为这种比较简单就用这种咯:)
好久没写asp了,十分生疏 = = ……
【模板】Prim - 最小生成树
我最常用的最小生成树算法 = 3=
-
#define N 505
-
#define MAX 65540
-
-
int n;
-
int edge[N][N];
-
int sum;
-
-
void prim(){
-
int i,j,k;
-
int lowcost[N];
-
bool visit[N]={false};
-
sum = 0;
-
for (i=0;i<n;i++){
-
lowcost[i]=edge[0][i];
-
}
-
visit[0]=true;
-
for (i=1;i<n;i++){
-
j=0;
-
while(visit[j]) j++;
-
for (k=0;k<n;k++)
-
if((!visit[k])&&(lowcost[k]<lowcost[j])) j=k;
-
sum = lowcost[j]>sum?lowcost[j]:sum;
-
visit[j]=true;
-
for (k=0;k<n;k++)
-
if (!visit[k]&&(edge[j][k]<lowcost[k])){
-
lowcost[k]=edge[j][k];
-
}
-
}
-
}
没连通的边长应为MAX。
求最大生成树时为0,修改两个小于号即可。
结点是从0到N。
【模板】SPFA - 单源最短路径
看了wekooo给的某论文,从里面pascal翻过来 = =
-
void SPFA(int s){
-
for(int i=1;i<=n;i++){
-
d[i] = MAX;
-
}
-
int queue[N*N] = {0};
-
bool visit[N] = {false};
-
int front = 0, rear = 1;
-
//int path[N];
-
queue[front] = s; visit[s] = true; d[s] = 0;
-
while(front<rear){
-
int u = queue[front];
-
visit[u] = false;
-
for(int i=1; i<=n; i++){
-
if (d[i]>d[u]+ edges[u][i]){
-
d[i]= d[u]+edges[u][i];
-
//path[i] = u;
-
if( !visit[i] ){
-
visit[i] = true;
-
queue[rear++] = i;
-
}
-
}
-
}
-
front++;
-
}
-
}
调用时,初始结点s,目标结点e,则
SPFA(s);
cout<<d[e]<<endl;
即可。
注意结点是从1存储到N。
不能连通时值为MAX。
【模板】Dijkstra - 单源最短路径
当年整理得 - -
-
#define N 1002
-
#define MAX 99999
-
int edges[N][N],d[N],n;
-
-
void dijkstra(int v)
-
{
-
int i,j;
-
bool s[N]={false};
-
for(i=1;i<=n;i++)
-
d[i]=edges[v][i];
-
d[v]=0;s[v]=true;
-
for(i=1;i<n;i++)
-
{
-
int temp=MAX;
-
int u=v;
-
for(j=1;j<=n;j++)
-
if((!s[j])&&(d[j]<temp))
-
{
-
u=j;
-
temp=d[j];
-
}
-
s[u]=true;
-
for(j=1;j<=n;j++)
-
if((!s[j])&&(edges[u][j]<MAX)&&(d[u]+edges[u][j])<d[j])
-
d[j]=d[u]+edges[u][j];
-
}
-
-
}
调用时,初始结点s,目标结点e,则
dijkstra(s);
cout<<d[e]<<endl;
即可。
注意结点是从1存储到N。
不能连通时值为MAX。
宏指令设计实验
1、下面是按要求实现的源程序,现要求将源程序中的重复部分指令改用宏指令实现。
从键盘输入一字符,判断该字符是小写字母、大写字母、数字还是其它字符。若输入为小写字母,则显示“You Input a Lowercase Letter!”; 若输入为大写字母,则显示“You Input a Uppercase Letter!”; 若输入为数字,则显示“You Input a Digit!”; 若输入为其它字符,则显示“You Input Other Letter!”。
-
data SEGMENT
-
INfor1 DB 0ah,0dh,'please press any key to input a letter:$'
-
INfor2 DB 0ah,0dh,'you input a lowetcase letter!$'
-
INfor3 DB 0ah,0dh,'you input a uppercase letter!$'
-
INfor4 DB 0ah,0dh,'you input a digit!$'
-
INfor5 DB 0ah,0dh,'you input a other letter!$'
-
data ENDS
-
code SEGMENT
-
ASSUME CS:code,DS:data
-
start: MOV AX,data
-
MOV DS,AX
-
MOV DX,OFFSET INfor1
-
MOV AH,09
-
INT 21h
-
MOV AH,01h
-
INT 21h
-
CMP AL,'0'
-
JB other
-
CMP AL,'9'
-
JBE DIgit
-
CMP AL,'A'
-
JB other
-
CMP AL,'Z'
-
JBE upper
-
CMP AL,'a'
-
JB other
-
CMP AL,'z'
-
JBE LOWer
-
JMP pend
-
LOWer: MOV DX,OFFSET INfor2
-
MOV AH,09h
-
INT 21h
-
JMP pend
-
upper: MOV DX,OFFSET INfor3
-
MOV AH,09h
-
INT 21h
-
JMP pend
-
DIgit: MOV DX,OFFSET INfor4
-
MOV AH,09h
-
INT 21h
-
JMP pend
-
other: MOV DX,OFFSET INfor5
-
MOV AH,09h
-
INT 21h
-
-
pend: ;MOV AH,01
-
;INT 21h
-
-
MOV AH,4cH
-
INT 21h
-
code ENDS
-
END START
改用宏指令实现:
-
INPUT MACRO
-
MOV AH,01H
-
INT 21H
-
ENDM
-
OUTPUT MACRO XX
-
MOV DX,OFFSET INFOR&XX
-
MOV AH,09H
-
INT 21H
-
ENDM
-
DATAS SEGMENT
-
INFOR1 DB 0AH,0DH,'please press any key to input a letter:$'
-
INFOR2 DB 0AH,0DH,'you input a lowercase letter!$'
-
INFOR3 DB 0AH,0DH,'you input a uppercase letter!$'
-
INFOR4 DB 0AH,0DH,'you input a digit!$'
-
INFOR5 DB 0AH,0DH,'you input a other letter!$'
-
DATAS ENDS
-
-
CODES SEGMENT
-
ASSUME CS:CODES,DS:DATAS
-
START:
-
MOV AX,DATAS
-
MOV DS,AX
-
-
OUTPUT 1
-
-
INPUT
-
-
CMP AL,'0'
-
JB OTHER
-
-
CMP AL,'9'
-
JBE DIGIT
-
-
CMP AL,'A'
-
JB OTHER
-
-
CMP AL,'Z'
-
JBE UPPER
-
-
CMP AL,'a'
-
JB OTHER
-
-
CMP AL,'z'
-
JBE LOWER
-
-
JMP OTHER
-
-
LOWER:
-
OUTPUT 2
-
JMP RESULT
-
-
UPPER:
-
OUTPUT 3
-
JMP RESULT
-
-
DIGIT:
-
OUTPUT 4
-
JMP RESULT
-
-
OTHER:
-
OUTPUT 5
-
-
RESULT:
-
MOV AH,4CH
-
INT 21H
-
CODES ENDS
-
END START
2、编程实现:找出下面数据段所定义的20个数中的最大数,并将找到的最大数以十进制数的形式在屏幕上显示出来,能用宏指令的用宏指令。
-
DATAS SEGMENT
-
xx Db 73,59,61,45,81,107,37,25,14,64
-
db 3,17,9,23,55,97,115,78,121,67
-
db 215,137,99,241,36,58,87,100,74,62
-
yy db ?
-
BUF DB "THE MAX IS:$"
-
DATAS ENDS
感谢fansy同学的帮忙 TAT 终于写出来了:
-
;-------------------------------------------------------------------
-
; Title:
-
; 找出下面数据段所定义的20个数中的最大数,
-
; 并将找到的最大数以十进制数的形式在屏幕上显示出来。
-
;
-
; Code by linyq@2008-12-4
-
;-------------------------------------------------------------------
-
OUTPUT MACRO WW ; 输出指定的字符
-
MOV DL,WW
-
ADD DL,30H
-
MOV AH,02H
-
INT 21H
-
ENDM
-
;-------------------------------------------------------------------
-
DECDIV MACRO RESULT,XX ; 输出除法指令后的商
-
MOV AX,RESULT
-
MOV DX,0
-
DIV XX
-
MOV RESULT,DX
-
OUTPUT AL
-
ENDM
-
;-------------------------------------------------------------------
-
DATAS SEGMENT
-
XX DB 73,59,61,45,81,107,37,25,14,64
-
DB 3,17,9,23,55,97,115,78,121,67
-
DB 215,137,99,241,36,58,87,100,74,62
-
BUF DB 'The max is:$'
-
CNT EQU $-XX ; CNT为XX数组长度
-
DATAS ENDS
-
;-------------------------------------------------------------------
-
CODES SEGMENT
-
;-------------------------------------------------------------------
-
MAIN PROC FAR
-
ASSUME CS:CODES,DS:DATAS
-
START:
-
MOV AX,DATAS
-
MOV DS,AX
-
-
MOV DX,OFFSET BUF ; 输出提示信息
-
MOV AH,09H
-
INT 21H
-
-
CALL SEARCH ; 查找最大值并存储到BX
-
-
MOV BL,BH
-
MOV BH,00H
-
CALL BINIDEC ; 输出最大值
-
-
MOV AH,4CH
-
INT 21H
-
MAIN ENDP
-
;-------------------------------------------------------------------
-
SEARCH PROC NEAR ; 查找最大值
-
-
MOV SI,OFFSET XX ; SI指向XX数组首地址
-
MOV BX,[SI] ; BX初始化为SI内容
-
-
MOV CX,CNT-1 ; 循环变量CX
-
COMPARE:
-
INC SI ; SI向后移一位
-
CMP BX,[SI] ; 比较BX与SI当前内容
-
JA LITTLE ; 若小于则跳到LITTLE
-
-
MOV BX,[SI] ; 不小于则将BX更新为SI当前内容
-
LITTLE:
-
DEC CX ; CX--
-
JNZ COMPARE ; 继续循环
-
-
RET
-
SEARCH ENDP
-
;-------------------------------------------------------------------
-
BINIDEC PROC NEAR ; 输出四位十进制数
-
MOV CX,1000D
-
DECDIV BX,CX
-
MOV CX,100D
-
DECDIV BX,CX
-
MOV CX,10D
-
DECDIV BX,CX
-
MOV CX,1D
-
DECDIV BX,CX
-
RET
-
BINIDEC ENDP
-
;-------------------------------------------------------------------
-
CODES ENDS
-
END START
循环结构、选择结构练习
试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。
-
DATAS SEGMENT
-
INFOR DB 'please input the number(0~9):$'
-
RING DB 0AH,0DH,'RING~$'
-
DATAS ENDS
-
-
CODES SEGMENT
-
MAIN PROC FAR
-
ASSUME CS:CODES,DS:DATAS
-
START:
-
PUSH DS
-
SUB AX,AX
-
PUSH AX
-
MOV AX,DATAS
-
MOV DS,AX
-
-
MOV DX,OFFSET INFOR
-
MOV AH,09H
-
INT 21H
-
-
MOV AH,01H
-
INT 21H
-
SUB AL,30H
-
MOV BL,AL
-
-
CMP BL,0
-
JLE EXIT
-
-
CMP BL,9
-
JG EXIT
-
-
RINGUP:
-
CALL WAITTIME
-
-
MOV AH,02H
-
MOV DL,07H
-
INT 21H
-
-
MOV DX,OFFSET RING
-
MOV AH,09H
-
INT 21H
-
-
DEC BL
-
JNZ RINGUP
-
-
EXIT:
-
MOV AH,4CH
-
INT 21H
-
MAIN ENDP
-
-
WAITTIME PROC
-
PUSH CX
-
MOV CX,2000H
-
-
WAITFOR:
-
CALL WAITTIME2
-
LOOP WAITFOR
-
POP CX
-
RET
-
-
WAITTIME ENDP
-
-
WAITTIME2 PROC
-
PUSH CX
-
MOV CX,3600H
-
-
WAITFOR2:
-
LOOP WAITFOR2
-
POP CX
-
RET
-
-
WAITTIME2 ENDP
-
-
CODES ENDS
-
END START