谁帮我写一个50行的C语言代码啊~
C 语言里面,也有随机函数的,,,,,,,
#include
#include
#include
.............
srand(time(NULL));
...........
index=(double)(rand()/(RAND_MAX+1))*4;
........
这是一个玩五子棋的例子:
#include
#include
#include
class five
{
int x;
int y;
int m;
int n;
int num_xy;
int num_mn;
char qipan[20][20];
public:
five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0)
{
x = X;
y = Y;
m = M;
n = N;
num_xy = Num_xy;
num_mn = Num_mn;
for(int i = 0 ; i < 20 ; i ++)
{
for(int j = 0 ;j < 20 ; j ++)
qipan[i][j] = '.';
}
}
int getm()
{
return m;
}
int getn()
{
return n;
}
void getpointxy();
void getpointmn();
void machinemn();
void showqipan();
void print();
bool IsxyWin();
bool IsmnWin();
int dangerlevel(int a,int b);
void attack();
};
void five::getpointxy()
{
cout<<"请分别输入第"<<num_xy+1<<"步白棋('o')的横坐标和纵坐标:";
cin >> x >> y;
if(x 20 || y > 20 )
{
cout << "出界,请重新输入:"<<endl ;
getpointxy();
}
else if(qipan[y-1][x-1] != '.' )
{
cout << "请所下的位置已经有棋子,请重新输入:" <<endl;
getpointxy();
}
else if(num_xy+num_mn >= 400)
{
cout << "棋盘已满,平局!" << endl;
exit(0);
}
else
{
qipan[y-1][x-1] = 'o';
num_xy++;
}
}
void five::getpointmn()
{
cout<<"请分别输入第"<<num_mn+1<<"步黑棋('x')的横坐标和纵坐标:";
cin >> m >> n;
if(m 20 || n > 20 )
{
cout << "出界,请重新输入:"<<endl ;
getpointmn();
}
else if(qipan[n-1][m-1]!='.')
{
cout << "请所下的位置已经有棋子,请重新输入:" <<endl;
getpointmn();
}
else if(num_xy+num_mn >= 400)
{
cout << "棋盘已满,平局!" << endl;
exit(0);
}
else
{
qipan[n-1][m-1] = 'x';
num_mn++;
}
}
int five::dangerlevel(int a, int b)
{
int level = 0;
for(int i = 1 ; a+i<=19; i ++)
{
if(qipan[a+i][b] == '.' && a + i <= 19)
{
i = i+1;
break;
}
if(qipan[a +i][b] == 'x' && a + i <= 19)
break;
}
level += (i-1);
for(i = 1 ; a-i>=0; i ++)
{
if(qipan[a-i][b] == '.' && (a-i) >= 0)
{
i = i+1;
break;
}
if(qipan[a-i][b] == 'x' && (a-i) >= 0)
break;
}
level += (i-1);
for(i = 1 ; b+i<=19 ; i ++)
{
if(qipan[a][b + i] == '.' && b + i <= 19)
{
i = i+1;
break;
}
if(qipan[a][b + i] == 'x' && b + i <= 19)
break;
}
level += (i-1);
for( i = 1 ; b-i>=0 ; i ++)
{
if(qipan[a][b - i] == '.' && (b-i) >= 0)
{
i = i+1;
break;
}
if(qipan[a][b - i] == 'x' && (b-i) >= 0)
break;
}
for( i = 1 ; a+i<=19&& b+i<=19; i ++)
{
if(qipan[a + i][b + i] == '.' && b+i <= 19 && a+i <= 19)
{
i = i+1;
break;
}
if(qipan[a + i][b + i] == 'x' && b+i <= 19 && a+i <= 19)
break;
}
level += (i-1);
for( i = 1 ; a-i>= 0 && b-i >= 0; i ++)
{
if(qipan[a - i][b - i] == '.' && a-i>= 0 && b-i >= 0)
{
i = i+1;
break;
}
if(qipan[a - i][b - i] == 'x' && a-i>= 0 && b-i >= 0)
break;
}
level += (i-1);
for( i = 1 ; a-i>= 0 && b+i <= 19 ; i ++)
{
if(qipan[a - i][b + i] == '.' && a-i>= 0 && b+i <= 19)
{
i = i+1;
break;
}
if(qipan[a - i][b + i] == 'x' && a-i>= 0 && b+i <= 19)
break;
}
level += (i-1);
for( i = 1 ; a + i= 0 ; i ++)
{
if(qipan[a + i][b - i] == '.' && a + i= 0)
{
i = i+1;
break;
}
if(qipan[a + i][b - i] == 'x' && a + i= 0)
break;
}
level += (i-1);
return level;
}
void five::attack()
{
int num1=1,num2=1,num3=1,num4=1;
int A = 20 , B = 20 ,max = 0;
for(int a = 0 ; a < 19 ; a ++)
{
for(int b = 0 ; b < 19 ; b ++)
{
if(qipan[a][b] == '.')
{
int level = 0;
for(int i = 1 ; a+i<=19; i ++)
{
if(qipan[a+i][b] == '.' && a + i <= 19)
{
i = i+1;
break;
}
if(qipan[a +i][b] == 'o' && a + i <= 19)
break;
}
level += (i-1);
for(i = 1 ; a-i>=0; i ++)
{
if(qipan[a-i][b] == '.' && (a-i) >= 0)
{
i = i+1;
break;
}
if(qipan[a-i][b] == 'o' && (a-i) >= 0)
break;
}
level += (i-1);
for(i = 1 ; b+i<=19 ; i ++)
{
if(qipan[a][b + i] == '.' && b + i <= 19)
{
i = i+1;
break;
}
if(qipan[a][b + i] == 'o' && b + i <= 19)
break;
}
level += (i-1);
for( i = 1 ; b-i>=0 ; i ++)
{
if(qipan[a][b - i] == '.' && (b-i) >= 0)
{
i = i+1;
break;
}
if(qipan[a][b - i] == 'o' && (b-i) >= 0)
break;
}
for( i = 1 ; a+i<=19&& b+i<=19; i ++)
{
if(qipan[a + i][b + i] == '.' && b+i <= 19 && a+i <= 19)
{
i = i+1;
break;
}
if(qipan[a + i][b + i] == 'o' && b+i <= 19 && a+i <= 19)
break;
}
level += (i-1);
for( i = 1 ; a-i>= 0 && b-i >= 0; i ++)
{
if(qipan[a - i][b - i] == '.' && a-i>= 0 && b-i >= 0)
{
i = i+1;
break;
}
if(qipan[a - i][b - i] == 'o' && a-i>= 0 && b-i >= 0)
break;
}
level += (i-1);
for( i = 1 ; a-i>= 0 && b+i <= 19 ; i ++)
{
if(qipan[a - i][b + i] == '.' && a-i>= 0 && b+i <= 19)
{
i = i+1;
break;
}
if(qipan[a - i][b + i] == 'o' && a-i>= 0 && b+i <= 19)
break;
}
level += (i-1);
for( i = 1 ; a + i= 0 ; i ++)
{
if(qipan[a + i][b - i] == '.' && a + i= 0)
{
i = i+1;
break;
}
if(qipan[a + i][b - i] == 'o' && a + i= 0)
break;
}
level += (i-1);
if(level >= max)
{
n = a + 1;
m = b + 1;
max = level;
}
}
else
continue;
}
}
qipan[n-1][m-1] = 'x';
}
void five::machinemn()
{
int Num1=1,Num2=1,Num3=1,Num4=1,A11 = 21,A12 = 21,A21 = 21,A22 = 21,A31 = 21,A32 = 21,A41 = 21,A42 = 21;
for(int i = x ; i < x+5&& x+5<20 ; i ++)
{
if(qipan[y-1][i] == '.')
{
A11=i;
break;
}
if(qipan[y-1][i] == 'x')
break;
if(qipan[y-1][i] == 'o')
Num1++;
}
for(i = x-2; i >= 0 ; i --)
{
if(qipan[y-1][i] == '.')
{
A12 = i;
break;
}
if(qipan[y-1][i] == 'x')
{
break;
}
if(qipan[y-1][i] == 'o')
Num1++;
}
////
for( i = y ; i < y+5 && y+5 < 20 ; i ++)
{
if(qipan[i][x-1] == '.')
{
A21 = i;
break;
}
if(qipan[i][x-1] == 'x')
{
break;
}
if(qipan[i][x-1] == 'o')
Num2++;
}
for(i = y-2; i >= 0 ; i --)
{
if(qipan[i][x-1] == '.')
{
A22 = i;
break;
}
if(qipan[i][x-1] == 'x')
{
break;
}
if(qipan[i][x-1] == 'o')
Num2++;
}
////
for(i = 0 ; i < 5 && x+i<20 && y+i<20; i++ )
{
if(qipan[y+i][x+i] == '.')
{
A31 = i;
break;
}
if(qipan[y+i][x+i] == 'x')
{
break;
}
if(qipan[y+i][x+i] =='o')
Num3++;
}
for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i++ )
{
if(qipan[y-i-2][x-i-2] == '.')
{
A32 = i;
break;
}
if(qipan[y-i-2][x-i-2] == 'x')
break;
if(qipan[y-i-2][x-i-2] == 'o')
Num3++;
}
////
for(i = 0 ; x + i = 0 && i < 5;i ++)
{
if(qipan[y-i-2][x+i] == '.')
{
A41 = i;
break;
}
if(qipan[y-i-2][x+i] == 'x')
{
break;
}
if(qipan[y-i-2][x+i] == 'o')
Num4++;
}
for(i = 0 ; y + i = 0 && i < 5;i ++)
{
if(qipan[y+i][x-i-2] == '.')
{
A42 = i;
break;
}
if(qipan[y+i][x-i-2] == 'x')
{
break;
}
if(qipan[y+i][x-i-2] == 'o')
Num4++;
}
////
if(num_xy == 0 && num_xy == 0)
{
m = n = 10;
qipan[m-1][n-1] = 'x';
}
else if(num_xy == 1)
attack();
else if(num_xy == 1)
{
m = x+1;
n = x+1;
qipan[m-1][n-1] = 'x';
}
else if(Num1 == 4 && A11 == 21 && A12 != 21) //一排四个右边一头堵住
{
n =1 + y-1;
m = 1 + A12;
qipan[y-1][A12] = 'x';
}
else if(Num1 == 4 && A12 == 21 && A11 != 21) //一排四个左边边一头堵住
{
n =1 + y-1;
m = 1 + A11;
qipan[y-1][A11] = 'x';
}
else if(Num2 == 4 && A21 == 21 && A22 != 21) //一列四个下边一头堵住
{
n =1 + A22;
m = 1 + x-1;
qipan[A22][x-1] = 'x';
}
else if(Num2 == 4 && A22 == 21 && A21 != 21) //一列四个上边一头堵住
{
n =1 + A21;
m = 1 + x-1;
qipan[A21][x-1] = 'x';
}
else if(Num3 == 4 && A31 == 21 && A32 != 21) //一左上右下斜列四个右边一头堵住
{
n =1 + y - A32 - 2;
m = 1 + x - A32 - 2;
qipan[y-A32-2][x-A32-2] = 'x';
}
else if(Num3 == 4 && A32 == 21 && A31 != 21) //一左上右下斜列四个左边一头堵住
{
n =1 + y + A31;
m = 1 + x + A31;
qipan[y+A31][x+A31] = 'x';
}
else if(Num4 == 4 && A41 == 21 && A42 != 21) //一左下右上斜列四个右边一头堵住
{
n =1 + y + A42;
m = 1 + x - A42 - 2;
qipan[y+A42][x-A42-2] = 'x';
}
else if(Num4 == 4 && A42 == 21 && A41 != 21) //一左下右上斜列四个左边一头堵住
{
n =1 + y - A41 - 2;
m = 1 + x + A41;
qipan[y-A41-2][x+A41] = 'x';
}
else if(Num1==3 && A11 != 21 && A12 != 21) //一排3 个两头没堵
{
n =1 + y-1;
m = 1 + A11;
if(dangerlevel(y-1,A11) >= dangerlevel(y-1,A12))
qipan[y-1][A11] = 'x';
else
qipan[y-1][A12] = 'x';
}
else if(Num2==3&& A21 != 21 && A22 != 21) //一列 3 个两头没堵
{
n =1 + A21;
m = 1 + x-1;
if(dangerlevel(A21,x-1) >= dangerlevel(A22,x-1))
qipan[A21][x-1] = 'x';
else
qipan[A22][x-1] = 'x';
}
else if(Num3 == 3&& A31 != 21 && A32 != 21) //一左上右下斜列3 个两头没堵
{
n =1 + y + A31;
m = 1 + x + A31;
if(dangerlevel(y+A31,x+A31) >= dangerlevel(y-A32 - 2,y - A32 -2))
qipan[y+A31][x+A31] = 'x';
else
qipan[y-A32-2][x-A32 -2] = 'x';
}
else if(Num4==3 && A41 != 21 && A42 != 21) //一左下右上斜列3 个两头没堵
{
n =1 + y - A41 - 2;
m = 1 + x + A41;
if(dangerlevel(y-A41-2,x+A41) >= dangerlevel(y-A42-2,x+A42))
qipan[y-A41-2][x+A41] = 'x';
else
qipan[y-A42-2][x+A42] = 'x';
}
else if(Num1 == 2&& A11 != 21 && A12 != 21) //一排2个两头没堵
{
n =1 + y-1;
m = 1 + A11;
qipan[y-1][A11] = 'x';
}
else if( Num2 == 2&& A21 != 21 && A22 != 21) //一列2个两头没堵
{
n =1 + A21;
m = 1 + x-1;
qipan[A21][x-1] = 'x';
}
else if(Num3 == 2&& A31 != 21 && A32 != 21) //一左上右下斜列2 个两头没堵
{
n =1 + y + A31;
m = 1 + x + A31;
qipan[y+A31][x+A31] = 'x';
}
else if(Num4==2 && A41 != 21 && A42 != 21) //一左下右上斜列2个两头没堵
{
n =1 + y - A41 - 2;
m = 1 + x + A41;
qipan[y-A41-2][x+A41] = 'x';
}
else
attack();
}
void five::showqipan()
{
int p=0,q=0;
for(int i = 0 ; i <= 20 ; i++)
{
if(p<10)
{
cout << p <<' ';
}
else
cout << p ;
p++;
}
cout << endl;
for(i = 0 ; i < 20 ; i++)
{
if(i>=0)
{
q++;
if(q<10)
cout << q <<' ';
else
cout << q;
}
for(int j = 0 ; j < 20 ; j ++)
cout << qipan[i][j]<<' ' ;
cout << endl;
}
}
void five::print()
{
int p=0,q=0;
for(int i = 0 ; i <= 20 ; i++)
{
if(p<10)
{
cout << p <<' ';
}
else
cout << p ;
p++;
}
cout << endl;
for(i = 0 ; i < 20 ; i++)
{
if(i>=0)
{
q++;
if(q<10)
cout << q <<' ';
else
cout << q;
}
for(int j = 0 ; j < 20 ; j ++)
{
cout << qipan[i][j]<<' ' ;
}
cout << endl;
}
}
bool five::IsxyWin()
{
int num1=1,num2=1,num3=1,num4=1;
for(int i = x ; i < x+5&& x+5<20 ; i ++)
{
if(qipan[y-1][i] != 'o')
break;
if(qipan[y-1][i] == 'o')
num1++;
}
for(i = x-2; i >= 0 ; i --)
{
if(qipan[y-1][i] != 'o')
break;
if(qipan[y-1][i] == 'o')
num1++;
}
for( i = y ; i < y+5 ; i ++)
{
if(qipan[i][x-1] != 'o')
break;
if(qipan[i][x-1] == 'o')
num2++;
}
for(i = y-2; i >= 0 ; i --)
{
if(qipan[i][x-1] != 'o')
break;
if(qipan[i][x-1] == 'o')
num2++;
}
for(i = 0 ; i < 5 && x+i<20 && y+i<20; i++ )
{
if(qipan[y+i][x+i] != 'o')
break;
if(qipan[y+i][x+i] =='o')
num3++;
}
for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i++ )
{
if(qipan[y-i-2][x-i-2] != 'o')
break;
if(qipan[y-i-2][x-i-2] == 'o')
num3++;
}
for(i = 0 ; x + i = 0 && i < 5;i ++)
{
if(qipan[y-i-2][x+i] != 'o')
break;
if(qipan[y-i-2][x+i] == 'o')
num4++;
}
for(i = 0 ; y + i = 0 && i < 5;i ++)
{
if(qipan[y+i][x-i-2] != 'o')
break;
if(qipan[y+i][x-i-2] == 'o')
num4++;
}
if(num1>=5||num2>=5||num3>=5||num4>=5)
return 1;
else
return 0;
}
bool five::IsmnWin()
{
int num1=1,num2=1,num3=1,num4=1;
for(int i = m ; i < m+5&& m+5<20 ; i ++)
{
if(qipan[n-1][i] != 'x')
break;
if(qipan[n-1][i] == 'x')
num1++;
}
for(i = m-2; i >= 0 ; i --)
{
if(qipan[n-1][i] != 'x')
break;
if(qipan[n-1][i] == 'x')
num1++;
}
for( i = n ; i < n+5 ; i ++)
{
if(qipan[i][m-1] != 'x')
break;
if(qipan[i][m-1] == 'x')
num2++;
}
for(i = n-2; i >= 0 ; i --)
{
if(qipan[i][m-1] != 'x')
break;
if(qipan[i][m-1] == 'x')
num2++;
}
for(i = 0 ; i < 5 && m+i<20 && n+i<20; i++ )
{
if(qipan[n+i][m+i] != 'x')
break;
if(qipan[n+i][m+i] =='x')
num3++;
}
for(i = 0 ; m - i -2>=0 && n-i-2>=0 && i < 5;i++ )
{
if(qipan[n-i-2][m-i-2] != 'x')
break;
if(qipan[n-i-2][m-i-2] == 'x')
num3++;
}
for(i = 0 ; m + i = 0 && i < 5;i ++)
{
if(qipan[n-i-2][m+i] != 'x')
break;
if(qipan[n-i-2][m+i] == 'x')
num4++;
}
for(i = 0 ; n + i = 0 && i < 5;i ++)
{
if(qipan[n+i][m-i-2] != 'x')
break;
if(qipan[n+i][m-i-2] == 'x')
num4++;
}
if(num1>=5||num2>=5||num3>=5||num4>=5)
return 1;
else
return 0;
}
void main()
{
five a;
int temp;
cout << "欢迎体验本游戏!这是本游戏的棋盘:" << endl;
a.showqipan();
cout << "双人游戏请按1,人机游戏请按2,退出请按3:";
cin >> temp;
if(temp == 3)
exit(1);
if(temp == 1)
{
cout << "您选择了双人游戏,下面游戏开始:" << endl;
for(int i = 0 ; ; i ++)
{
a.getpointxy();
a.print();
if(a.IsxyWin())
{
cout << "白棋胜!" << endl;
break;
}
a.getpointmn();
a.print();
if(a.IsmnWin())
{
cout << "黑棋胜!" << endl;
break;
}
}
}
if(temp == 2)
{
int temp1=0;
cout << "您选择了人机游戏,您是白棋('o'),电脑是黑棋('x'),下面游戏开始:" << endl;
cout << "您先下请按1,电脑先下请按2:";
cin >> temp1;
if(temp1 == 1)
{
for(int i = 0 ; ; i ++)
{
a.getpointxy();
a.print();
if(a.IsxyWin())
{
cout << "你赢了!恭喜!" << endl;
break;
}
a.machinemn();
a.print();
cout << "电脑走(" << a.getm() << ',' << a.getn() << ')' << endl;
if(a.IsmnWin())
{
cout << "哈哈,你输了!" << endl;
break;
}
}
}
if(temp1 == 2)
{
for(int i = 0 ; ; i ++)
{
a.machinemn();
a.print();
if(a.IsmnWin())
{
cout << "哈哈,你输了!" << endl;
break;
}
a.getpointxy();
a.print();
if(a.IsxyWin())
{
cout << "你赢了!恭喜!" << endl;
break;
}
}
}
}
cout << "Press any key to EXIT
";
getch();
}
#include<stdlib.h>
int next[50]; //存储next值的数组
int nextval[50];
typedef struct
{
char *ch;
int length; //串长度
}HString;
void StrAssign(HString *T,char *chars) //生成一个值等于串常量chars的串T
{
int i,j;
char *c;
if(T->ch)
free(T->ch); //释放T原有空间
for(i=0,c=chars; *c; ++i,++c) //求chars长度
;
if(!i)
{
T->ch = NULL;
T->length = 0;
}
else
{
if(!(T->ch=(char*)malloc((i+1)*sizeof(char))))
exit(1);
for(j=0;j<i;++j)
T->ch[j] = chars[j];
T->ch[i] = '\0';
T->length = i;
}
}
int StrLength(HString s) //返回S的元素个数,称串的长度
{
return s.length;
}
int StrCompare(HString S,HString T) //串比较
{
//若S>T,则返回值>0;若S=T,则返回值=0,若S<T,则返回值<0;
int i;
for(i=0; i<S.length && i<T.length; ++i)
if(S.ch[i]!=T.ch[i])
return S.ch[i] - T.ch[i];
return S.length - T.length;
}
void ClearString(HString *S) //将S清为空串
{
if(S->ch)
{
free(S->ch);
S->ch = NULL;
}
S->length = 0;
}
void Concat(HString *T,HString s1,HString s2)
{
//用T返回由s1,s2联接而成的新串
int i,j;
if(T->ch) free(T->ch); //释放旧空间
if(!(T->ch=(char*)malloc((s1.length+s2.length)*sizeof(char))))
exit(1);
T->length = s1.length + s2.length;
for(i=0;i<s1.length;++i)
T->ch[i] = s1.ch[i];
for(j=0;j<s2.length;++j,++i)
T->ch[i] = s2.ch[j];
}
void SubString(HString *sub,HString s,int pos,int len)
{
//用sub返回串s的第pos个字符起长度为len的子串
//其中,1<=pos<=strlenth(s)且0<=len<=strlength(s)-pos + 1.
int i,j;
if(pos<1 || pos>s.length || len<0 || len>s.length-pos+1)
{
printf("SubString's Location error!\n");
exit(1);
}
if(sub->ch) free(sub->ch); //释放旧空间
if(!len)
{
sub->ch = NULL; sub->length = 0;
}
else
{
sub->ch = (char*)malloc((len+1)*sizeof(char));
for(i=0,j=pos-1;j<=pos+len-2;++i,++j)
sub->ch[i] = s.ch[j];
sub->length = len;
sub->ch[sub->length] = '\0';
}
}
void get_next(char *chars,int next[]) //生成next值的函数
{
int i,j,temp;
i = 1;
j = 0;
next[1] = 0;
while(chars[i])
{
if(j==0 && i==1) //第二位的next应该都为1
{
++i;++j;
next[i] = j;
}
else if(chars[i-1]!=chars[next[i]-1])//当测试next值上的数据与当前数据不等时进行
{
j = next[i]; //取得next值
while(chars[j-1]!=chars[i-1]) //如当前的值,与下一next值也不同,j值继续后退
{
temp = j; //取得前一next值
j = next[j]; //前一next值
if(j<=0)
{
next[i+1] = 1;
++i;
break;
}
else if(chars[j-1]==chars[i-1])
{
next[i+1] = next[temp] + 1;//这里temp与J总是相隔一个位,所以是next[temp]
++i;
break;
}
}
}
else if(chars[i-1]==chars[next[i]-1]) //当测试next值上的数据与当前数据相等时进行
{
next[i+1] = next[i] + 1;
++i;
}
printf("next[%d]=%d\n",i,next[i]);
}
}
void next_change(char *chars,int nextval[])
{
int i,j,temp;
i = 1;
nextval[1] = 0;
for(j=1;chars[j];++j)
{
temp = next[j+1]; //取得当前的next[X]值
if(chars[j]==chars[temp-1]) //比较J位置上与相对于J位置的NEXT位上的元素值是否相等
{
nextval[j+1] = nextval[temp]; //如相等则将前面的nextval值赋给当前nextval的值
}
else nextval[j+1] = temp; //不相等则保留原next[]中的值
}
}
int Index(HString S,HString T,int pos)
{
int i,j;
i = pos-1;
j = 0;
get_next(T.ch,next);
next_change(T.ch,nextval);
while(i<=S.length && T.ch[j]) //字符串没到结尾不结束查找
{
if(S.ch[i]==T.ch[j])//相等则一起后移
{
i++;j++;
}
else if(S.ch[i]!=T.ch[j])
{
j = nextval[j+1]-1;//不相等时取得next值-1因为
//next是按1,2,3...算所以要-1
if(j<=0 && S.ch[i]!=T.ch[j])
{
i++;//J移到next值上如值是<0则i向前移
j = 0;//因为j可以变成小于0
}
}
}
if(j>=T.length) return i-T.length+1;
else return 0;
}
void StrInsert(HString *s,int pos,HString T) //在pos位置插入字符串T
{
int i,j;
if(pos<1 || pos>(s->length+1))
{
printf("strInsert's Location error!\n");
exit(1);
}
if(T.length)
s->ch = (char*)realloc(s->ch,(s->length+T.length+1)*sizeof(char)); //增加S的空间
for(j=s->length;j>=pos-1;--j) //POS位置到最后的字符往后移
s->ch[j+T.length] = s->ch[j];
for(i=0;i<T.length;++i) //T复制到S
{
s->ch[i+pos-1] = T.ch[i];
}
s->length = s->length + T.length;
}
void StrDelete(HString *s,int pos,int len)//S存在,从S中删除第POS个字符起长度为LEN的子串
{
int i,j;
if(pos<1 || pos>s->length-len) //判断删除位置是否合理
printf("delete Location error!\n");
else
{
for(i=pos+len-1,j=0;i<s->length;++i,++j) //删除中间元素,后面的元素往前移
s->ch[pos-1+j] = s->ch[i];
s->length = s->length - len;
s->ch[s->length] = '\0';
}
}
void Replace(HString *s,HString t,HString v) //将V替换掉S中的T
{
int i;
i = Index(*s,t,1);
while(i>0)
{
StrDelete(s,i,t.length);
StrInsert(s,i,v);
i = Index(*s,t,1);
}
}
void display(HString s)
{
printf("the string is :%s\n",s.ch);
}
int main(void)
{
HString obj,obj2,obj3,obj4;
obj.ch = NULL;//(char*)malloc(sizeof(char));
obj2.ch = NULL;
obj3.ch = NULL;
obj4.ch = NULL;
StrAssign(&obj,"august");
StrAssign(&obj2,"yx");
StrAssign(&obj4,"ax");
display(obj);
display(obj2);
SubString(&obj3,obj,3,3);
display(obj3);
StrInsert(&obj3,1,obj2);
display(obj3);
Replace(&obj3,obj2,obj4);
display(obj3);
StrDelete(&obj3,1,3);
display(obj3);
return 0;
}
// 希望能够帮到你
// workzoom.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<string.h>
#include<ctype.h>
#include<conio.h>//为了调用getch()
int m_course1,m_course2,m_course3,m_course4,whole;//每个工作室的当前人数和总人数
int max_cs1,max_cs2,max_cs3,max_cs4;//每个工作室的最大人数
int teacher,admin;//标志符
int show_menu();//显示菜单
int checkid();
int checkpassword(int id);
void do_stu();
void do_teacher();
int do_admin(int n);
void choose();
void readmax();
void readcurrent();
void writemax();
void writecurrent();
void printzooms();
void setmax();
void printmax();
int main(int argc, char* argv[])
{
/*int a;
a=getch();
if(a==13)
cout<< "再见!"<<endl;
exit(-1);*/
int id;
int n=0;
int choosed;
if(show_menu())
id=checkid();//获得登入者身份
else exit(1);
while(0==checkpassword(id))//检查登入者密码是不是正确
{
id=checkid();
}
readmax();
readcurrent();
whole=m_course1+m_course2+m_course3+m_course4;//初始化总人数
switch(id)
{
case 1: //学生登入
printf("\n你的身份是:学生!\n");
printf("当前总人数是:%d\n\n",whole);
do_stu();
break;
case 2: //老师登入
printf("\n你的身份是:老师!\n");
printf("当前总人数是:%d\n\n",whole);
do_teacher();
break;
case 3: //管理员登入
printf("\n你的身份是:管理员!\n");
printf("当前总人数是:%d\n\n",whole);
while(choosed=do_admin(n))
{
if(choosed==1)
n=1;
}
break;
default:
exit(-1);
}
return 0;
}
void printzooms()
{
printf("各工作室人数如下:\n\n");
printf("动漫工作室人数:%d\n",m_course1);
printf("vc++工作室人数:%d\n",m_course2);
printf("J2EE工作室人数:%d\n",m_course3);
printf("dotNet工作室人数:%d\n\n\n",m_course4);
}
void printmax()
{
printf("各工作室人数最大值如下:\n\n");
printf("动漫工作室人数:%d\n",max_cs1);
printf("vc++工作室人数:%d\n",max_cs2);
printf("J2EE工作室人数:%d\n",max_cs3);
printf("dotNet工作室人数:%d\n\n",max_cs4);
}
void writemax()
{
//把各工作室的最大人数写入文件中
CString str;
CStdioFile fFibo;
fFibo.Open("max.DAT", CFile::modeWrite |
CFile::modeCreate | CFile::typeText);
str.Format("%d\n", max_cs1);
fFibo.WriteString(str);
str.Format("%d\n", max_cs2);
fFibo.WriteString(str);
str.Format("%d\n", max_cs3);
fFibo.WriteString(str);
str.Format("%d\n", max_cs4);
fFibo.WriteString(str);
fFibo.Close();
}
void writecurrent()
{
//把各工作室的人数写入文件中
CString str;
CStdioFile fFibo;
fFibo.Open("stu.DAT", CFile::modeWrite |
CFile::modeCreate | CFile::typeText);
str.Format("%d\n", m_course1);
fFibo.WriteString(str);
str.Format("%d\n", m_course2);
fFibo.WriteString(str);
str.Format("%d\n", m_course3);
fFibo.WriteString(str);
str.Format("%d\n", m_course4);
fFibo.WriteString(str);
fFibo.Close();
}
void readmax()
{
CString strText = "";
CString szLine =""; //打开文件
CStdioFile file;
file.Open("max.DAT",CFile::modeRead); //逐行读取字符串
file.ReadString(szLine);
max_cs1 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
max_cs2 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
max_cs3 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
max_cs4 = atoi(szLine.GetBuffer(0));
file.Close(); //关闭文件
}
void readcurrent()
{
CString strText = "";
CString szLine =""; //打开文件
CStdioFile file;
file.Open("stu.DAT",CFile::modeRead); //逐行读取字符串
file.ReadString(szLine);
m_course1 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
m_course2 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
m_course3 = atoi(szLine.GetBuffer(0));
file.ReadString(szLine);
m_course4 = atoi(szLine.GetBuffer(0));
file.Close(); //关闭文件
}
void do_teacher()
{
//打印各工作室的人数
printzooms();
teacher=1;
do_stu();
}
int do_admin(int n)
{
//打印各工作室的人数
printzooms();
//打印各工作室人数的最大值
printmax();
admin=1;
int choice;
int pass=1;
printf("1.选工作室方向\n");
printf("2.设置各工作室人数上限\n");
printf("3.退出\n");
printf("\n请选择你的操作1-3\n");
while(pass==1)
{
scanf("%d",&choice);
if(choice==1)
{
if(n==1)
printf("你已经选择过了,请选择其它操作!\n");
else
{
choose();//选择
pass=0;
}
}
else if(choice==2)
{
setmax();//设置工作室人数最大值
pass=0;
}
else if(choice==3)
{
printf("\n你已成功退出,欢迎下次使用!\n");
exit(-1);
}
else
{
fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
printf("\n请输入正确的选择!\n");
}
}
if(choice==1)
{
fflush(stdin);
return 1;
}
else
{
fflush(stdin);
return 2;
}
}
void setmax()
{
int choice;
int max;
int pass=1;
int pass1=1;
printf("\n1.动漫\n");
printf("2.vc++\n");
printf("3.J2EE\n");
printf("4.dotNet\n");
printf("5.退出\n");
printf("\n请选择你要设置的工作室或退出1-5\n");
while(pass==1)
{
scanf("%d",&choice);
switch(choice)
{
case 1:
while(pass1==1)
{
printf("\n请输入你要设置的最大值:\n");
scanf("%d",&max);
if(max==int(max) && max<6954320 )
{
max_cs1=max;
pass1=0;
fflush(stdin);
}
else
{
printf("\n请输入正确的数值!\n");
fflush(stdin);
}
}
pass=0;
break;
case 2:
while(pass1==1)
{
printf("\n请输入你要设置的最大值:\n");
scanf("%d",&max);
if(max==int(max) && max<6954320 )
{
max_cs2=max;
pass1=0;
fflush(stdin);
}
else
{
printf("\n请输入正确的数值!\n");
fflush(stdin);
}
}
pass=0;
break;
case 3:
while(pass1==1)
{
printf("\n请输入你要设置的最大值:\n");
scanf("%d",&max);
if(max==int(max) && max<6954320 )
{
max_cs3=max;
pass1=0;
fflush(stdin);
}
else
{
printf("\n请输入正确的数值!\n");
fflush(stdin);
}
}
pass=0;
break;
case 4:
while(pass1==1)
{
printf("\n请输入你要设置的最大值:\n");
scanf("%d",&max);
if(max==int(max) && max<6954320 )
{
max_cs4=max;
pass1=0;
fflush(stdin);
}
else
{
printf("\n请输入正确的数值!\n");
fflush(stdin);
}
}
pass=0;
break;
case 5:
printf("\n你已成功退出,欢迎下次使用!\n");
exit(-1);
default:
fflush(stdin);
printf("\n请输入正确的选择!\n");
break;
}
}
printf("\n设置成功!\n");
writemax();//写入文件中保存
}
void do_stu()
{
int choice;
int pass=1;
printf("1.选工作室方向\n");
printf("2.退出\n");
printf("\n请选择你的操作1-2\n");
while(pass==1)
{
scanf("%d",&choice);
if(choice==1)
{
pass=0;
fflush(stdin);
}
else if(choice==2)
exit(-1);
else
{
fflush(stdin);
printf("\n请输入正确的选择\n");
}
}
choose();//选择
}
void choose()
{
int choice;
int pass=1;
printf("\n1.动漫\n");
printf("2.vc++\n");
printf("3.J2EE\n");
printf("4.dotNet\n");
printf("5.退出\n");
printf("\n请选择工作室或退出1-5\n");
while(pass==1)
{
scanf("%d",&choice);
switch(choice)
{
case 1:
if(m_course1>=max_cs1)
{
printf("\n工作室已满,请选择其它方向!\n");
fflush(stdin);
}
else
{
m_course1++;
pass=0;
}
break;
case 2:
if(m_course2>=max_cs2)
{
printf("\n工作室已满,请选择其它方向!\n");
fflush(stdin);
}
else
{
m_course2++;
pass=0;
}
break;
case 3:
if(m_course3>=max_cs3)
{
printf("\n工作室已满,请选择其它方向!\n");
fflush(stdin);
}
else
{
m_course3++;
pass=0;
}
break;
case 4:
if(m_course4>=max_cs4)
{
printf("\n工作室已满,请选择其它方向!\n");
fflush(stdin);
}
else
{
m_course4++;
pass=0;
}
break;
case 5:
exit(-1);
default:
fflush(stdin);
printf("\n请输入正确的选择!\n");
break;
}
}
printf("\n选择成功!");
writecurrent();
if(teacher==1)
{
printf("\n你的身份是:老师!\n");
whole=m_course1+m_course2+m_course3+m_course4;//更新总人数
printf("当前总人数是:%d\n\n",whole);
printzooms(); //打印各工作室的人数
printf("\n欢迎下次使用!\n");
}
else if(admin==1)
{
printf("\n你的身份是:管理员!\n");
whole=m_course1+m_course2+m_course3+m_course4;//更新总人数
printf("当前总人数是:%d\n\n",whole);
}
else
{
printf("\n你的身份是:学生!\n");
whole=m_course1+m_course2+m_course3+m_course4;//更新总人数
printf("当前总人数是:%d\n\n",whole);
printf("\n欢迎下次使用!\n");
}
}
int checkpassword(int id)
{
int pass=1;
int password;
int n=0;
printf("\n请输入密码\npassword:\n");
while(pass==1)
{
if(n>=3)//密码错误3次
{
pass=0;
return 0;//返回0
}
scanf("%d",&password);
switch(id)
{
case 1:
if (password!=111)
{
printf("\n密码错误3次后将返回\n");
fflush(stdin); //刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
n++;
break;
}
else
{
fflush(stdin);
pass=0;
break;
}
case 2:
if (password!=222)
{
printf("\n密码错误3次后将返回\n");
fflush(stdin);
n++;
break;
}
else
{
fflush(stdin);
pass=0;
break;
}
case 3:
if (password!=333)
{
printf("\n密码错误3次后将返回\n");
fflush(stdin); //刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
n++;
break;
}
else
{
fflush(stdin);
pass=0;
break;
}
}
}
return 1;
}
int checkid()
{
int choice;
int n;
int pass=1;
printf("\n1.学生\n");
printf("2.老师\n");
printf("3.管理员\n");
printf("4.退出\n");
printf("\n请选择你的身份或退出1-4\n");
while(pass==1)
{
scanf("%d",&choice);
choice=int(choice);
if(choice==4 )
exit(1);
else if(choice==1)
{
n=1;
pass=0;
fflush(stdin);
}
else if(choice==2)
{
n=2;
pass=0;
fflush(stdin);
}
else if(choice==3)
{
n=3;
pass=0;
fflush(stdin);
}
else
{
printf("\n请输入正确的选择!\n");
fflush(stdin);
}
}
return n;//返回登入者身份
}
//显示菜单
int show_menu()
{
int choice;
int pass=1;
printf("1.登陆\n");
printf("2.退出\n");
printf("\n请选择操作1-2\n");
while(pass==1)
{
scanf("%d",&choice);
if(choice==1)
{
pass=0;
fflush(stdin);
}
else if(choice==2)
exit(-1);
else
{
fflush(stdin); //刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
printf("\n请输入正确的选择!\n");
}
}
return 1;//返回登入选择
}
发到你邮箱了
发到你邮箱了
帮我写一段话 50个字
生命像下棋,每一步都要深思熟虑,方有胜算。生命像拼图,别让其中小块的部分掉了,或大块的地方弄乱了 生命就像一张白纸,越写越多,直到哪天写不下了,就换纸了 生命象什么? 我说,生命就象最后这瓶酒,不喝你也醉了,喝下,不过是更醉而已。生命就象一株小草,无论在多恶劣的环境下都有能生存...
我们要开运动会了,老师让我们写50字以下的投稿 比如:给运动员壮志的和...
同志们50篇写不完就又有一朵祖国的鲜花夭折了帮帮吧(2011年9.29之前)各位叔叔阿姨哥哥姐姐帅哥美女求你们了鼓励运动员的越多越好... 同志们 50篇 写不完 就又有一朵祖国的鲜花夭折了 帮帮吧(2011年9.29之前)各位叔叔 阿姨 哥哥 姐姐 帅哥 美女 求你们了鼓励运动员的 越多越好 展开 我来答 1...
50描写春天的词语
2.请帮我写50个代表春天的词语 春暖花开、 杏雨梨云、 春华秋实、 老马识途、 草长莺飞、 和风细雨、 柳暗花明、 姹紫嫣红、 春花秋月、 雨后春笋、 春色满园、 鸟语花香、 百花齐放、 繁花似锦、 风光旖旎、 春意盎然、 百感交集、 奋发图强、 郁郁寡欢、 寸草春晖、 春和景明、 春寒料峭、 枯木逢春、...
描写一个小朋友乱扔香蕉皮结果自己滑倒的作文,求500字的,请大家帮帮忙...
这时,一个妇女走过这里,不小心踩到香蕉皮,摔倒了,她大声说:“谁这么没公德,乱扔香蕉皮。”接着,一个老爷爷走过这里,也踩到地上的香蕉皮了,把脚摔伤了,他大声说:“是谁干的好事,让我看到他,一定要他好看。”小男孩在大树后面哈哈地笑着。还说:“他们真是瞎了眼,中了我的香蕉皮陷阱...
日记10篇50字
篇一:含羞草叶子 一个阳光明媚,空气清新,的早晨,我在写作业,写啊写,一直写到了中午。叮咚叮咚,是门铃声响了,我打开门一看呀!是叔叔来了,听说叔叔要拿一盆含羞草送给我呢!叔叔给我含羞草之后走了。篇二:三年级日记大全50字 星期天得早上,壹只可爱得小鸟壹不小心从树上掉了下来,摔伤了...
哥哥的外貌作文50字
很快,哥哥想出了一个好办法,他小声地说:“我可以先装睡,妈妈走了,我就在被窝里偷偷地写。 ”可是,还没来得及高兴,问题又来:被窝里黑黑的,怎么看得见呢?突然,他把头甩了甩,兴奋地说:“有办法了!有办法了!”这时,哥哥大声说:“妈妈,我去睡觉了 猜猜我是谁的作文50字 我既没有牡丹夫人那么尊贵,也没有...
帮我找50个五字俗语,给加分
二一添作五 风是雨的头 赶鸭子上架 赶早不赶晚 高灯照远亮 高低不答应 高 山出俊鸟 隔道不下雨 隔行不知艺 隔行如隔山 根不正苗歪 跟人过不去 功到自然成 功夫不过关 公 说公有理 狗不嫌家贫 狗肉不上桌 狗眼看人低 鼓破众人擂 顾头不顾尾 顾头不顾腚 官不差病人 官 差不由己 ...
英语作文,主要写一件事不少于50字,六年级水平
帮助的人:33.5万 我也去答题访问个人页 关注 展开全部 英语作文,主要写一件事不少于50字,六年级水平 My Birthday Party Today is my birthday,so I am very happy.My mother makes a big and nice cake for me.My father gives me a hairy doll as my birthday present.My brothers and sisters are ...
谁能帮我写点英语日记的50个单词左右就行要暑假的!!急急急急急急急...
My name is Jin Jiahong, and my English name is Kaci. I’m 14years old, 37kg. I like English, and books, red, orange, pink, blue, shuttlecock, waternmelon, apple, and bananas. Yesterday, I went to Zhejiang University to learn English. Oh, here is beautiful! I make a ...
帮我写一篇英语作文(网上找的也行)悬赏50,急急急
I like sports.But i best like playing basketball.because i think this kind of sport is good at people's healthy.I like playing basketball during the daytime .I think this is the best time to exercise.It makes me more healthy,and i think if i have a hard time,I"ll be a...
戢念雷米: //石头剪刀布 #include <stdio.h> #include <stdlib.h> #include <time.h> int putin = 0; int computer = 0; void check() { scanf("%d", &putin); if (putin == 4) { exit(1); } if (putin < 1 || putin > 3) { check(); } } void main() { srand(time(NULL)); while(1) { printf...
宜州市15252743014: 给几个50行左右简单的C语言程序设计 谢谢~~ - ?
戢念雷米: #include#define max 100 int helix(int a,int b,int e,int f,int s[max][max]) {int i; static int c=1; for(i=1;i s[a++][b]=c++; f--; a--; if(f!=0) { for(i=1;i s[a][++b]=c++; e--; if(e!=0) {for(i=1;i s[--a][b]=c++; f--; if(f!=0) for(i=1;i s[a][--b]=c++; } } } main() {int m,n,x,y,i=1,j,c,t,...
宜州市15252743014: 急求一份50行的, C语言程序.急求啊!!简单对的多就行啊!! - ?
戢念雷米: struct { char name[10]; }person[3]={{"Tom"},{"Li"},{"Marry"}}; main() { int i; int m=0,n=0,o=0; /* m->Tom,n->Li,m->Marry */ int c=1; for(i=0;i<3;i++) { L1:printf("please input the NO:%d tictick which person throws:\ninput:",c++); scanf("%s",...
宜州市15252743014: 50行左右的C语言代码,要简单点的?
戢念雷米: #include<stdio.h> int n,a[100000]={0},t,i,j,mid; FILE *in,*out; int sort(int left,int right) { if(left<right) { i=left; j=rand()%(right-left+1)+left; t=a[i]; a[i]=a[j]; a[j]=t; i=left; j=right; mid=a[i]; while(i<j) { while(i<j&&a[j]>mid) j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i]<mid...
宜州市15252743014: 谁提供一原创C语言完整程序,50行以上,有程序注释,急用 - ?
戢念雷米: #include<reg52.h>#define uchar unsigned char //宏定义#define uint unsigned int sbit rs=P2^6; //液晶引脚位定义 sbit rw=P2^5; sbit en=P2^7; sbit k5=P2^3; //独立键盘位定义 sbit k6=P2^2; sbit k7=P2^4; sbit sda=P2^1; //EEPROM位定义 sbit scl...
宜州市15252743014: 急!求一c语言程序,50 - 80行的,最好是原创,简易点的 - ?
戢念雷米: #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h> #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游...
宜州市15252743014: 寻找高手为小弟写50行C语言...要极其简单的?
戢念雷米: /*此程序的功能是将你输入的一组整数进行排序后,按从小到大的顺序输出来 */ #include"stdio.h" void compere(int *p); //定义比较函数 void main() { int a[10],i; printf("请输入10个数:"); for(i=0;i<10;i++) scanf("%d",&a[i]); compere(a); ...
宜州市15252743014: 大学c语言编程,高手帮帮忙,要求编写五十行以上 - ?
戢念雷米: #include#include void ReadDat(int a[]) { int i; printf("请输入100个四位数\n"); for(i=0;i<100;i++) scanf("%d",&a[i]); } int isprime(int x)//判断是否为素数的函数 { int i; int m=(int)sqrt(x); for(i=2;i<=m;i++) if(x%i==0) return 0; return 1; } int jsValue(...
宜州市15252743014: 求高手 C语言小程序 程序不要太长50行以内最好 要有新意,变态级别的可以 - ?
戢念雷米: /* * * KMP算法 * 算法思想详见数据结构,查找子串一节 * */ #include <stdio.h> #define MAXSIZE 128 /*定义next数组长度*/ int find_sub_string(const char *str, const char *substr); int main(void) { char *str = "hello world"; char *sub_str = "llo"; int ...
宜州市15252743014: 我想写个50行的简单C语言程序 - ?
戢念雷米: C 语言里面,也有随机函数的,,,,,,,#include<stdio.h>#include<time.h>#include<stdlib.h>............. srand(time(NULL));...........index=(double)(rand()/(RAND_MAX+1))*4;........