刘德聪 2015-03-11 08:13 采纳率: 47.6%
浏览 1783
已采纳

C语言小问题求大神帮帮忙

字符加密问题。
#include"stdio.h"
#define N 100
int main()
{
char k,a[N],
int n,i,j=1;
while(j)
{
printf("请输入要加密的单词有几个字母:");
scanf("%d",&n);
printf("请输入要加密的英文单词:");
for(i=0;i<n;i++)
{
scanf("%c",&a[i]);
a[i]=a[i]+4;
}
printf("加密后的英文单词为:");
for(i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
//scanf("%c",&k);
}
return 0;
}
图片说明
图片说明
我的程序问题出在哪里?
一:就是字符加密出错,class加密后应该是gpeww。我的结果头个字符变成了,最后 一个不见了。怎么回事??
二:还有while循环的最后一句吸收空格回车符的,我理解的还是有点模糊。
就是没有那一句的话,我输完class后按回车建,就出现图一情况,我想说的是第 二次次循环,两句文字中间不是有个输入语句,怎么就直接被忽略了呢。
三:第二个图就是while循环最后一句没有注释掉的。 来个大神给我讲讲,感激不尽

顺便弱弱问一句,怎么现在用int main() {....不用returned 0;}也行

  • 写回答

10条回答 默认 最新

  • Sin骑士 2015-03-11 13:08
    关注

    全部都是scanf()语句带来的错误
    在用scanf()语句输入字符按下回车键之后,回车键没有处理。
    代码中a[0]不是'c',而是回车符。因为你在输入单词字母个数之后按下了回车,系统把回车符赋给了a[0],所以字符串a应该是“\nclas”。
    程序运行过程中多余的字符如果不处理是不会消失的,scanf函数回车后产生的回车字符也是不会消失的只会在下一句scanf语句的时候把回车字符赋值给相应变量。

    解决方法:在scanf函数后加上getchar()语句,吸收掉回车字符。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题