#include "stdioh"
int main(void){
char s[100],ns[100];
int i,j;
printf("Please intput a string\ns=");
gets(s);
for(j=i=0;ns[j]=s[i];i++)
if(s[i]<'0' ||s[i]>'9')
j++;
puts(ns);
return 0;
}
扩展资料:
ascall码第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;
通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
参考资料:
百度百科-ascall码
奇偶校验用在数据传送里。数据传送时,最后一位为奇偶校验位。收发上方事先已经约定好进行奇校验还是偶校验。
比如传送0101这个二进制数,约定为奇校验。0101里面1的个数是偶数个,所以奇偶校验位为1,变成01011,这样1的个数就为奇数个。收到方就根据奇偶校验位判断数据有没有发送错误。
但是就跟你所说的,这个方法有缺陷,如果数据一下子错了两位,比如刚才的0101,发成了1001,错误就查不出来了。
#include "stdioh"
#include "stringh"
#define N 300
void main(){
char a[N],sum='\0';
int i=0,k;
printf("input the number:");
scanf("%s",a);
k=strlen(a);
printf("%d",sum);
}
注:程序的思想不错,但是具体实现上有些问题,我的调试环境是VC++60,当和大于127时,由于奇偶校验码等原因,会超出上限,128会表示成-128,129表示成-127所以算法在独立性上不是很好,楼主不妨试下将字符性的“5”换成整型的5这种办法,反而简单些
#include<stdioh>
void main()
{
int n = 0;
scanf("%d", &n); //让用户输入数字
printf("%d", n%2 == 0 2 : 1); //判断数字是否能被2整除
}
请参考上面的代码。
c语言的字符类型是以整数的形式存储在内存中的,这个整数就是这个字符的ascii码,所以只需要将字符以整数的形式输出即可。
代码如下:
#include
int main()
{
char c;
c = getchar();
printf("%d\n", c);
return 0;
}
以上就是关于C语言程序设计 从键盘输入一个字符串,将其中所有的数字字符抽出,按原顺序组成一个新串并输出。全部的内容,包括:C语言程序设计 从键盘输入一个字符串,将其中所有的数字字符抽出,按原顺序组成一个新串并输出。、什么是奇偶校验怎么实现、编写一个简单的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)