字母和代码ascii

时间:2017-11-15 06:19:59

标签: c

我正在尝试用c语言创建一个获取数字和字符串的程序,例如数字是3,字符串是" Zig"。 输出应该是字母表的代码+数字。如果角色的数量超过" Z" (90)它应该从" A"再次。类似地,对于小写字符,当超越" z"从" a"重新开始。 输入:" Zig"
数量:3
输出:" Clj"
我有一个问题,它应该从A(对于大写)&再一次。 这是我的代码吧!旋转部件有问题如何从A或a再次开始:)

char a[50];

int n,i;
printf("enter your number:\t");

scanf("%d",&n);
printf("enter your string:\t");

fflush(stdin);

gets(a);

while('A'<= a[i] <= 'Z'){
    if(a[i]+n > 'Z'){

    }
    else{
    a[i]=a[i]+n;
}
i++;
}
while('a' <= a[i] <= 'z'){
    if(a[i]+n > 'z'){

}
    else{
        a[i]=a[i]+n;
    }
    i++;
}
printf("string:\n");
puts(a);

}

2 个答案:

答案 0 :(得分:0)

  

我有一个问题,它应该从A开始(对于大写字母)&amp;再次

当你到达Z(十进制90)时,你可以很容易地减去25(ASCII char&#34; EM&#34;)以回到A(十进制65)。类似地,当你到达z时你可以重复减去25并且它将循环回到

答案 1 :(得分:0)

修正了错误

#include <stdio.h>
#include <strings.h>


int main(){
  char str [80];
  int number;

  printf ("Enter your string: ");
  scanf ("%79s",str);  


  printf ("Enter your number: ");
  scanf ("%d",&number);

  for(int i= 0; i < strlen(str);i++){
    str[i]+=number;
    while(str[i]>'Z' && str[i] < 'a'){
        str[i] = 'A'+ str[i] - 'Z';
    }
    while(str[i]>'z'){
        str[i] = 'a'+ str[i] - 'z';
    }
  }

  printf("%s",str);

}