c语言初学者
编写一个程序
要求读取命令行所输入的一个数字
然后将输入的字母转换成原字母加上数字后在Asscii所对应的字母
符号不变
例子 :
./test 1
How are you?
Ipx bsf zpv?
这是我的代码 能帮我看看怎么修改吗
#include<stdio.h>
int encrypt(int character, int shift) {
char m=character;
if((m>='A' && m<='Z')||(m>='a' && m<='z'))
{
m=m+shift;
}
return 0;
}
int main(int argc,char *argv[]) {
int ch;
int i=1;
while((ch=getchar())!= EOF) {
ch=encrypt(ch,argv[i]);
putchar(ch);
}
}
#include <stdio.h>
#include <stdlib.h>
int encrypt(int c, int s)
{
s %= 26;
if (s < 0)
s += 26;
if (c >= 'A' && c <= 'Z')
return (c - 'A' + s) % 26 + 'A';
else if (c >= 'a' && c < 'z')
return (c - 'a' + s) % 26 + 'a';
else
return c;
}
int main(int argc, char *argv[])
{
int ch;
while ((ch = getchar()) != EOF)
putchar(encrypt(ch, atoi(argv[1])));
return 0;
}
$ gcc -Wall main.cpp
$ ./a.out 1
How are you?
Ipx bsf zpv?
$ ./a.out -27
How are you?
Gnv zqd xnt?
#include<stdio.h>
int encrypt(int character, int shift) {
char m=character;
if((m>='A' && m<='Z')||(m>='a' && m<='z'))
{
m=m+shift;
}
return m;//返回改过的值
}
int main(int argc,char *argv[]) {
int ch;
int i=1;
while((ch=getchar())!= EOF) {
ch=encrypt(ch,1);//例中是ascll码加1
putchar(ch);
}
}
char和int型要分开
#include<stdio.h>
char encrypt(char character, int shift) {
char m=character;
if((m>='A' && m<='Z')||(m>='a' && m<='z'))
{
m=m+shift;
}
return m;
}
int main() {
int ch;
int i=1;
while((ch=getchar())!= EOF) {
ch=encrypt(ch,i);
putchar(ch);
}
}
读取数字版本
#include<stdio.h>
char encrypt(char character, int shift) {
char m=character;
if((m>='A' && m<='Z')||(m>='a' && m<='z'))
{
m=m+shift;
}
return m;
}
int main() {
int ch;
int i;
scanf("%d",&i);
while((ch=getchar())!= EOF) {
ch=encrypt(ch,i);
putchar(ch);
}
}
修改如下,供参考:
#include<stdio.h>
int encrypt(int character, int n)
{
int m=character;
if((m>='A' && m<='Z')||(m>='a' && m<='z'))
m=m+n;
return m;
}
int main(int argc,char *argv[])
{
int ch,i;
if(argc < 1) return 1;
sscanf(argv[1],"%d",&i);
while((ch=getchar())!= EOF) {
ch=encrypt(ch,i);
putchar(ch);
}
return 0;
}