承接上文:上代码——
vigenere 维吉尼亚密码:
程序接受一个命令行参数:k(k是字母组成的字符串,其中A代表0,B代表1等等)
#include<stdio.h>
int encrypt(char *text, char *result, char *k)
{
int l, i, j = 0, z = 0;
for(l = 0; text[l]!='\0'; l++);
for(i = 0; i < l; i++)
{
result[z] = (text[i]-'a'+k[j]-'a') % 26 + 'a';
j++;
z++;
}
return 0;
}
int main()
{
char text[50] = "";
char result[50] = "";
char k[50]="";
int type;
printf("请填写明文\n");
scanf("%[^\n]",text);// 关于%[^\n]下有注释
printf("请输入密钥k\n");
scanf("%s",k);
encrypt(text,result,k);
printf("明文%s的密文为:%s\n", text, result);
return 0;
}
# include<stdio.h>
# include<string.h>
# include<cs50.h>
int main ()
{
string names[] = {"Emma", "dddd", "hhhh"};
for (int i = 0; i < 4; i++)
{
if(strcmp(names[i],"Emma")==0)//字符串比较
// if(!strcmp(names[i],"Emma"))//第二种
{
printf("Found\n");
return 0;
}
}
printf("Npt Found\n");
return 1;
}
//readabiility 判断阅读等级
# include<stdio.h>
# include<cs50.h>
# include<string.h>
# include<math.h>
int main()
{
string text = get_string("Text: ");
int letterscount = 0;
int wordcount = 1;
int sentencecount = 0;
//count words
for (int i = 0; i < strlen(text); i++)
{
if ((text[i] >= 'a' && text[i] <= 'z')||(text[i] >= 'A' && text[i] <= 'Z'))
{
letterscount++;
}
else if (text[i] == ' ')
{
wordcount++;
}
else if (text[i] >= '.' || text[i] <= '!'||text[i] >= '?' )
{
sentencecount++;
}
}
printf("letters: %i; words: %i; sentences: %i\n", letterscount, wordcount, sentencecount);
float grade = 0.0588 * (100 * (float) letterscount / (float)wordcount) - 0.296*(100*(float) sentencecount / (float)wordcount) - 15.8;
if (grade < 16 && grade >= 0)
{
printf("Grade %i\n", (int) round(grade));
}
else if (grade >= 16)
{
printf("Grade 16+\n");
}
else
{
printf("Before Grade 1\n");
}
}
#include<stdio.h>
#include<cs50.h>
bool judge(int i)
{
if(i%400==0||(i%100!=0&&i%4==0))
return true;
else
return false;
}
int main()
{
int t = 0;
for(int i = 1901; i <= 2000; i++)
{
if(judge(i))
t += 366;
else
t += 365;
}
int cunt = t/7;
//因为2000年12月31日恰好为星期日,从后往前数每七天的最后一天有一个星期一
//余数不够七天 肯定没有星期一,所以不考虑余数
printf("%d",cunt);
}
#include <stdio.h>
//日历
int main()
{
int again = 1;
while(again)
{
int i, j, k=0, kong=0, count=0, days, tian;//i年份,j月份,k是否闰年
printf("请输入年份:\n");
scanf("%d",&i);
tian = (i-1900+(i-1900)/4-(i-1900)/100)%7;
if((i%4==0&&i%100!=0)||i%400==0)
k=1;
else
k=0;
for(j=1;j<=12;j++)
{
printf(" %d月\n",j);
printf("一 二 三 四 五 六 日\n");
if(j==1)
{
for(int c=1;c<=tian;c++)
{
printf(" ");
count++;
}
}
for(int p=1;p<=kong;p++){
printf(" ");
count++;
}
//days
switch(j){
case 1:days=31;break;
case 2:days=28+k;break;
case 3:days=31;break;
case 4:days=30;break;
case 5:days=31;break;
case 6:days=30;break;
case 7:days=31;break;
case 8:days=31;break;
case 9:days=30;break;
case 10:days=31;break;
case 11:days=30;break;
case 12:days=31;break;
}
for(int x=1;x<=days;x++)
{
if(x<10)
printf(" %d ",x);
else
printf("%d ",x);
count++;
kong++;
if(count==7)
{
printf("\n");
count=0;
kong=0;
}
if(x==days)
{
printf("\n");
count=0;
}
tian++;
}
}
printf("\n\n\n是否继续查询?输入1继续查,输入0结束");
scanf("%d",&again);
}
}