本文目录一览:
- 1、求古典密码学的c语言代码
- 2、C语言古典兔子问题的控制语句i
- 3、C语言题目:古典问题有关兔子的
- 4、C语言中古典数是什么
- 5、C语言解答古典问题:有一对兔子,从出生后第三个月起每个月哦与生一对兔子,小兔子长到第三个月后……
- 6、c语言编程(中国古典算术问题)
求古典密码学的c语言代码
给:
维吉尼亚密码的C语言源代码
设m表示明文序列,k表示密钥序列
#include ctype.h
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
void crypt(char m[],char k[],char r[])
{
int i,j,s=0;
j=strlen(k);
for(i=0;m[i];i++)
m[i]=tolower(m[i]);
for(i=0;m[i];i++)
if(isalpha(m[i]))
{
r[i]=(m[i]-'a'+k[s%j]-'a')%26+'a';
s++;/* s用来跳过明文中的空格字符 */
}
else
r[i]=m[i];
r[i]=0;/* 密文字符串结束符 */
for(i=0;r[i];i++)
r[i]=toupper(r[i]);
}
void decrypt(char c[],char k[],char m[])
{
int i,j,s=0;
j=strlen(k);
for(i=0;c[i];i++)
c[i]=tolower(c[i]);
for(i=0;c[i];i++)
if(isalpha(c[i]))
{
m[i]=(c[i]-k[s%j]+26)%26+'a';
s++;
}
else
m[i]=c[i];
m[i]=0;
}
void main()
{
char m[]="welcome to my blog.i am bugeyes.";//我这里是赋值了一个固定的字符串为明文序列,你也可以做成用户输入的
char k[]="bugeyeswuyan";//我这里是赋值了一个固定的字符串为密钥序列,你也可以做成用户输入的
char c[80];
char d[80];
system("cls");;
crypt(m,k,c);
decrypt(c,k,d);
puts(m);
puts(k);
puts(c);
puts(d);
}
C语言古典兔子问题的控制语句i
如果i小于等于20,返回真,否则返回假。
for(int i = 1; i=20; i = i + 1){}是这样的是吧,这是循环20次,每次循环后i加1
C语言题目:古典问题有关兔子的
可以考虑递归算法:
int Amount(int day)
{
if (day==10)
{
return 1;
}
else
{
return 2*(Amount(day-1)+1);
}
}
早说嘛。。。害的白写了个。。
这题可以多用几个递归函数解决,在这里我称不能生育的兔子为小兔,能生育的为大兔
int littleR(int month)
{
if (month==1)
return 0;
else
return bigR(month-1)+little(month-1);
}
int bigR(int month)
{
if (month==1)
{
return 1;
}
else if (month==2)
{
return 1;
}
else if (month==3)
{
return 1;
}
else
{
return bigR(month-1)+little(month-2);
}
}
int totalR(int month)
{
return littleR(month)+bigR(month);
}
注:这种增长速度的话很快兔子的数量就会增长到很大,所以如果month达到几十的话就会超过int范围,所以可以考虑用__int64代替int,另外到时候如果依然每次都递归的话运行速度也会变慢,可能要好几秒,好几分钟,甚至更长的时间才能算出结果,所以可以考虑用数组存每个递归函数算出的值,如:
littleR(int month)中else可写成
if (...)
{
...
}
else
{
if (a[month]!=0)
return month;
else
return a[month]=bigR(month-1)+little(month-1);
}
用这种方法可以适当提高运行速度。。。
C语言中古典数是什么
应该是浮点数float,小数型的。键盘上F与G相邻,打错是很正常的。
C语言解答古典问题:有一对兔子,从出生后第三个月起每个月哦与生一对兔子,小兔子长到第三个月后……
首先你审题不清,如果用i代表免子年纪月份,用f代表免子数,那么会有f=1十(i-3),也就是说每当兔子到3个月后f才能开始加1,必须有判断句来判断兔子年纪是否大于3,这里要求的是兔子,月份应该用一个等待键盘输入语句,要用循环语句。希望对你有帮助,20年不搞了也不一定对
c语言编程(中国古典算术问题)
#includestdio.h int main() {int i,j; for(i=0;i=15;i++) { for(j=0;j45-i;j++) if(3*i+2*j+(45-i-j)/2==45) printf("%d %d %d",i,j,45-i-j); printf("\n"); } }