1. 对字母进行加密,即输入4个字母,每个字母向后移4位,列如‘A’后移4位变成‘E’,下面c程序出错在哪,
#include <stdio.h>
int main()
{
int a[5];(这里错了,既然是字符,当然用char)
int i;
for (i = 0; i <= 4; i++)
scanf ("%c", a[i]);(这里错了,%c会读取回车字符(回车也算一个字符,区别于换行‘\n’)‘\r’假如你输入的是ABCD,那么存进去的就会变成A回车B回车,并且输入时的取址符号也漏了)
for (i = 0; i <= 4; i++)
a[i] = a[i] + 4;(这里错了,如果a[i]='Z'呢?那加完的字符不就不是大写英文字母了么?)
for (i = 0; i <= 4; i++)
printf ("%c", a[i]);
return 0;
}
修改后的代码
#include<stdio.h>
int main()
{
char a[5];
int i;
for(i = 0;i <= 4;i++)
{
scanf("%c",&a[i]);
getchar(); //读取一个字符,用于抵消上一句读取字母时产生的回车
}
for(i = 0;i <=4;i++)
{
if(a[i] + 4 > 'Z')
{
a[i] = 'A' + a[i] + 4 - 'Z' - 1; //如果大于Z,就循环从A开始
}
else a[i] = a[i] + 4;
}
for(i = 0;i <=4;i++)
{
printf("%c",a[i]);
}
return 0;
}
望采纳
2. c语言写一个程序,使八位数数组前四位后四位平移交换得到一个新的数列。
#include<stdio.h>
main()
{longlongn;
while(1){
scanf("%lld",&n);
if(n>=10000000&&n<=99999999)
printf("交换后=%lld
",n%10000*10000+n/10000);
else
printf("wrong!
");
}
}
如图所示,望采纳。。。。。。
3. “对整型变量a取反后右移4位”的C语言表达式怎么写
对整型变量a取反后右移4位”的C语言表达式:
a=(~a)>>4;
4. C语言字符串加密 后移四位 并最后输入Y持续上一个过程 输入N结束
#include<stdio.h>
#include<stdlib.h>
#include"string.h"
intmain(intargc,char*argv[])
{
chars[50]={"