这个代码哪里错了
这个代码哪里错了加密正整数(最大九位)num,在num的每一个数字上加一个数字k(k由键盘输入,在1~9之间),加了k后num的各数字仍然在[0,9]范围内。若k=3,则...
这个代码哪里错了加密正整数(最大九位) num,在num的每一个数字上加一个数字k(k由键盘输入,在1~9之间),加了k后num的各数字仍然在[0,9]范围内。若k=3,则0-->3,1-->4....8-->1,9-->2。原num为567890,新num为890123。
注:不考虑高位数字加密变成0后,造成整数位数变少的情况。 展开
注:不考虑高位数字加密变成0后,造成整数位数变少的情况。 展开
4个回答
展开全部
见有时间,直接给你写了一个!真的不愿看那些图片代码!!
见有点时间,直接给你写了一个。原谅我不想你的图片代码!!!
/*
(重要的事情说三遍!!!)
温馨提示:程序代码有问题的,提问题时请尽量把代码贴出来,贴个图真的很不方便调试查找问题!
温馨提示:程序代码有问题的,提问题时请尽量把代码贴出来,贴个图真的很不方便调试查找问题!
温馨提示:程序代码有问题的,提问题时请尽量把代码贴出来,贴个图真的很不方便调试查找问题!
*/
#include<stdio.h>
#define MAX 256
void encrypt(char *p,int n);
void decrypt(char *p,int n);
int main()
{
char num[MAX];
int k=0;
printf("输入被加密的整数:\n");
scanf("%s",&num);//将整数当字符输入并保存成字符数组
printf("输入加密因子:\n");
scanf("%d",&k);
encrypt(num,k);
printf("加密结果:%s\n",num);
decrypt(num,k);
printf("解密结果:%s\n",num);
return 0;
}
//-----------------------------------
void encrypt(char *p,int n)
{
while(*p!='\0')
{
*p=*p + n;//利用ascii码直接加减得出结果
if(*p>'9')
*p=*p-10; //满十处理
//printf("%c ",*p );//调试用
p++;
}
}
void decrypt(char *p,int n)
{
while(*p!='\0')
{
if(*p-'0'<n)
*p=*p+10; //满十处理
*p=*p-n;
//printf("%c ",*p );//调试用
p++;
}
}
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
输出部分错了。输入语句有逗号,输入数据时要有逗号。改了一下:
#include <stdio.h>
int main ( )
{
int num,a[10],b[10],i=0,j=0,k,m,d;
scanf("%d,%d",&num,&k);
while(num>0){
d = num%10+k;
if (d>=10) b[j]=(d-10);
else b[j]=d;
j++;
num/=10;
}
m=j;
for (i=0;i<m;i++) printf("%d",b[i]);
};
数值太大 会有问题,改用字符串,则不管多少位都没问题,例如100位:
#include <stdio.h>
int main ( )
{
char s[100],k;
int i,L;
printf("input num:\n");
scanf("%s",s); L=strlen(s);
printf("\ninput k between 1 and 9: \n");
scanf("%d",&k);
for (i=0;i<L;i++){
s[i]=(s[i]-'0'+k)%10 + '0';
}
printf("%s",s);
return 0;
}
#include <stdio.h>
int main ( )
{
int num,a[10],b[10],i=0,j=0,k,m,d;
scanf("%d,%d",&num,&k);
while(num>0){
d = num%10+k;
if (d>=10) b[j]=(d-10);
else b[j]=d;
j++;
num/=10;
}
m=j;
for (i=0;i<m;i++) printf("%d",b[i]);
};
数值太大 会有问题,改用字符串,则不管多少位都没问题,例如100位:
#include <stdio.h>
int main ( )
{
char s[100],k;
int i,L;
printf("input num:\n");
scanf("%s",s); L=strlen(s);
printf("\ninput k between 1 and 9: \n");
scanf("%d",&k);
for (i=0;i<L;i++){
s[i]=(s[i]-'0'+k)%10 + '0';
}
printf("%s",s);
return 0;
}
追问
这样是倒序输出啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你能不能发一下编译器的错误提示?
追问
没错,输出总是0
追答
你为什么要用手机写,建议用电脑上的devc++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个超出十不进位了?。。。你能解密么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询