蓝桥杯 密码发生器
程序任务就是把遗传拼音字母转换为6位数字,我们可以使用任何好记的拼音串,变换过程如下,第一步,把字符串六个一组折叠起来,比如wangximing变为:
Wangxi
Ming
第二步,把所有垂直在同一个位置的字符ascii码值想加,得出6个数字,如上面的例子,则得出228 202 220 206 120 105
再把每个数字缩位处理,就是把每个位的数字相加,得出的数字如果不是一位数字,就在缩位,最后变为344836
#include<stdio.h> #include<string.h> int check(int n){ int sum=0; if(n<10) return n; //当n是个位数的时候直接返回 while(n>0){ //加上n的各个位上的数字 sum+=n%10; n=n/10; } check(sum); //检查和是否为个位数,重复上面的操作 } //wangxi //ming void f(char a[]){ int b[6]={0}; //创建一个新的数组,存入字符数组的和 for(int i=0;i<strlen(a);i++){ b[i%6]+=a[i]; //新的数组循环加入新的字符 } for(int i=0;i<6;i++){ printf("%d ",b[i]); } printf("\n"); for(int i=0;i<6;i++){ printf("%d ",check(b[i])); } } int main(){ char a[]={"wangximing"}; f(a); return 0; }