高分求一个c语言简单算法的实现

来源:百度知道 编辑:UC知道 时间:2024/07/08 15:19:53

用户名为x
z的初值为woainini
y为固定值333
注册码为a

算法如下
依次(从后向前取)取字符串x每一位的ASCII数值记作i
y = z - 333 % i(取余)
z = z + y(累加)

循环计算
算到最后的z的值即为注册码a的值

不知这个软件用c语言如何写出来,请大家指教。不知大家看明白没有,不明白我再补充
不好意思,z的初值取woainini行不通的,现在补充z的初值为8E5EB4E5,其他不变,下面我演示一下过程,希望大家能看明白一些。譬如,用户名x=12345678901234,先取4的ASCII值34,y = z - 333 % i=8E5EB4E5-(333 % 34)=8E5EB4BE,z=z+y=8E5EB4E5+8E5EB4BE=1CBD69A3 ;然后再来下一个,先取3的ASCII值33,y = z - 333 % i=1CBD69A3-(333%33)=1CBD69A0,z=z+y=1CBD69A3+1CBD69A0=397AD343 ……
依此类推,一值算到最后z的值就是注册码a的值。
还有说明一下,运算在十六进制下运算。

居然没有一个人回答,那我先把我写的贴出来,能运行,但是没有运算结果,请大家指教:
#include "stdio.h"

#include "conio.h"

main()
{
unsigned long sn=0x8E5EB4E5,temp;
char name[100];
int i;
printf("Please enter your name: \n");
scanf("%s",name);
for(i=strlen(name[i]);i>=0;i--)
{
temp=sn- 333 % name[

#include "stdio.h"

#include "conio.h"

main()
{
unsigned long sn=0x8E5EB4E5,temp;
char name[100];
int i;
printf("Please enter your name: \n");
scanf("%s",name);
for(i=strlen(name)-1;i>=0;i--) //初始值
{
temp=sn- 333 % (unsigned long)name[i]; //强制转换
sn+=temp;
}
printf("Your sn: %lX\n",sn);
getch();
return(0);
}

66

不明白Z是什么?

那个z到底是什么啊,是ASCII变数字?

y = z - 333 % i(取余)
z是数组取ASCII数值怎么取啊??

详细程序代码如下:()
保存代码时,以.C为后缀名.在VC6.0下编译(TC2.0也可,但不能显示汉字)
#include<stdio.h>
#include<string.h>
#include<conio.h>
/********************************
定义一个联合体Z,long double 是10字节,
故用c1,c2....c10与其对应,使结构体ch
与first共占同一内存区,这样就可以实现
题中的要求。
************************************/
union Z
{
long double first;/*这部分用于数学算术运算*/
struct ch/*这