刘德聪 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条)

报告相同问题?

悬赏问题

  • ¥500 高有偿提问!求优化设计微信小程序
  • ¥15 matlab在安装时报错 无法找到入口 无法定位程序输入点
  • ¥15 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据