这是一道普通的习题,但是我仍然有问题,希望有人能为我解答。如果能说明原理就更好了,感谢感谢。
解释看代码注释
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
char s[N] = {'\0'}; //定义字符数组
gets(s); //输入字符串
int len = strlen(s); //len为字符长度
for (int i = 0; i < len; i++) //采用for循环依次对每个字符进行操作
{
int temp = (s[i] + 6) % 10; //将每个字符加6,对10取余,结果为int
s[i] = (char)(temp+'0'); //将求得的新密码转换为字符型
}
puts(s); //输出新字符串,即加密后字符
}
#include <stdio.h>
int main()
{
char s[10];
int i=0, r=0, x;
scanf("%8s", s); //最大接收8个字符
while(s[i])
{
x = (s[i] + 6) % 10;
s[i] = x + '0'; //%10的结果为数字0-9,+'0'转换为字符
r = r * 10 + x; //转换成数字,r*10升位
i++;
}
printf("%s\n", s);
printf("%d\n", r);
return 0;
}
解答如下
#include <stdio.h>
int main()
{
char t;
while((t=getchar())!='\n')
{
t+=6;
t=t%10;
putchar(t+48);
}
return 0;
}