刘德聪 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 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?