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]={"