第一种取巧 scanf("%1d%1d%1d%1d", a,b, c, d) ;就是用abcd分别储存它的位数。
成都创新互联公司是一家专业的成都网站建设公司,我们专注网站设计制作、成都网站制作、网络营销、企业网站建设,买链接,广告投放为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
'\0'
。
例:
定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实
际长度,C
语言规定了一个“字符串结束标志”,以字符'\0’代表。如果有一个字
符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到
第一个字符'\0'时,表示字符串结束,由它前面的字符组成字符串。
系统对字符串常量也自动加一个'\0'作为结束符。例如"C
Program”共有9个字
符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的。(通过sizeof()
函数可验证)
//搞定了,错误标志在后面
#include
stdio.h
int
main(void)
{
int
id[18];//这里初始化时不应为空,要么char
id[18]={0};或者直接char
id[18];
//还有,身份证号码是数字,所以应该是int不是char
int
i,sum=0;
printf("Please
input
indentity
card
number\n");
for
(i=0;i=16;i++)
//for
(i=0;i16;i++)后面有
id[16]*=2;,所以这里要输入id[16];
{
scanf("%d,",id[i]);
}
//输入是每个数字用逗号隔开
id[0]*=7;
id[1]*=9;
id[2]*=10;
id[3]*=5;
id[4]*=8;
id[5]*=4;
id[6]*=2;
id[7]*=1;
id[8]*=6;
id[9]*=3;
id[10]*=7;
id[11]*=9;
id[12]*=10;
id[13]*=5;
id[14]*=8;
id[15]*=4;
id[16]*=2;
for
(i=0;i=16;i++)
{
sum+=id[i];
}
sum%=11;
switch(sum)
{
case
0:id[17]=1;break;
case
1:id[17]=0;break;
case
2:id[17]='x';break;
case
3:id[17]=9;break;
case
4:id[17]=8;break;
case
5:id[17]=7;break;
case
6:id[17]=6;break;
case
7:id[17]=5;break;
case
8:id[17]=4;break;
case
9:id[17]=3;break;
case
10:id[17]=2;break;
}
printf("%d",id[17]);//求的是最后一位
return
0;
}
求最后数组最后一位可以用sizeof函数
如果是a[10]的就是:
解释就是直接用sizeof检查数组a的内存大小(以字节为单位),减去1(因为数组是从0开始)就可以得到数组最后一个值。
所以,i=sizeof(数组名)/sizeof(数组类型) -1;
可以以字符串的形式将小数存储起来,然后输出,源代码如下,不知道能不能解决你的问题:
#include stdio.h
#include malloc.h
void main()
{
char *a;//用以存储输入的小数
char ch;
int i=0;
int j=0;
a=(char*)malloc(sizeof(char));
printf("请输入一个小数,以回车换行结尾:\n");
while ((ch=getchar())!='\n')//将小数存储起来,可以用a寻址
{
a[i]=(char)malloc(sizeof(char));
a[i++]=ch;
}
a[i]='\0';//小数结束标志
i=0;
while (a[i++]!='.')
{
if(a[i]=='\0')
{
printf("输入为非小数\n");
getchar();
return;
}
continue;//可以不要这条语句
}
while (a[i++]!='\0')//统计共有多少位小数
{
j++;
}
printf("小数最后一位数字为:%d\t共有小数[%d]位\n",a[i-2]-'0',j);//其实可以%c与a[i-2]对应的
getchar();
}
char str[]="Lloyd2";
int l = strlen(str);
//这里是获得这个字符串的长度,长度为6
//通过长度,我们可以获取到他的最后一个字符
//由于数组下标是从0开始的,所以数组下标的最大值始终要比长度小1
//那这个字符串的最后一个字符就是
char c = str[l-1];