C语言关于[数组]问题!!
有个题是:输入一句英文,用“.”结束。输入的英文在输出的时候按1—a、2—b、……z—26、空格=*来进行输出。也就是将这句英文译成数字。我是个C的初学者。不懂什么高深的...
有个题是:输入一句英文,用“.”结束。输入的英文在输出的时候按 1—a 、2—b、……z—26 、空格=* 来进行输出。也就是将这句英文译成数字。我是个C的初学者。不懂什么高深的C函数。希望多多指教!
展开
2个回答
展开全部
具体程序你自己写吧。我给出转换的思想:
所谓的字母都是用ASSIC字符集来表示的。每个字符就代表了一个数字。比如a在字符集中的数字就是97。具体assic表请参考:
http://blog.csdn.net/lhong1001/archive/2007/05/21/1619918.aspx
也就是说我们可以先强制类型转换把一个字符转换成一个数字:
char c;
c = 'a'; /*这里可以换成你要的输入*/
int i = (int)c;
i = i - 96;/*96是对小写字母而言的*/
printf(i);
这样就能得到你想要的东西了。
我的C语言忘得差不多了,都在用C++所以就不写出全部程序了,这对你来说也是一种练习吧。
所谓的字母都是用ASSIC字符集来表示的。每个字符就代表了一个数字。比如a在字符集中的数字就是97。具体assic表请参考:
http://blog.csdn.net/lhong1001/archive/2007/05/21/1619918.aspx
也就是说我们可以先强制类型转换把一个字符转换成一个数字:
char c;
c = 'a'; /*这里可以换成你要的输入*/
int i = (int)c;
i = i - 96;/*96是对小写字母而言的*/
printf(i);
这样就能得到你想要的东西了。
我的C语言忘得差不多了,都在用C++所以就不写出全部程序了,这对你来说也是一种练习吧。
展开全部
#include <stdio.h>
#include <string.h>
void f1(char * s)
{
int i;
for(i=0;s[i]!='.'&& s[i]!='\0';i++)
{
if(s[i]>='a' && s[i]<='z')
{
s[i]-=96;
}
else if(s[i]>='A' && s[i]<='Z')
{
s[i]-=64;
}
else if(s[i]==' ')
{
printf("*");
continue;
}
else
{
printf("Error!");
return;
}
printf("%d",s[i]);
}
printf(".\n");
}
void main()
{
char a[41];
int n;
printf("Input a string (length<=40) :\n");
gets(a);
n=strlen(a);
if(a[n-1]!='.')
{
printf("The End of String must be a '.'\n");
return;
}
f1(a);
}
#include <string.h>
void f1(char * s)
{
int i;
for(i=0;s[i]!='.'&& s[i]!='\0';i++)
{
if(s[i]>='a' && s[i]<='z')
{
s[i]-=96;
}
else if(s[i]>='A' && s[i]<='Z')
{
s[i]-=64;
}
else if(s[i]==' ')
{
printf("*");
continue;
}
else
{
printf("Error!");
return;
}
printf("%d",s[i]);
}
printf(".\n");
}
void main()
{
char a[41];
int n;
printf("Input a string (length<=40) :\n");
gets(a);
n=strlen(a);
if(a[n-1]!='.')
{
printf("The End of String must be a '.'\n");
return;
}
f1(a);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询