第一種取巧 scanf("%1d%1d%1d%1d", a,b, c, d) ;就是用abcd分別儲(chǔ)存它的位數(shù)。
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,我們專(zhuān)注網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)絡(luò)營(yíng)銷(xiāo)、企業(yè)網(wǎng)站建設(shè),買(mǎi)鏈接,廣告投放為企業(yè)客戶(hù)提供一站式建站解決方案,能帶給客戶(hù)新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶(hù)體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
'\0'
。
例:
定義一個(gè)字符數(shù)組長(zhǎng)度為100,而實(shí)際有效字符只有40個(gè),為了測(cè)定字符串的實(shí)
際長(zhǎng)度,C
語(yǔ)言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”,以字符'\0’代表。如果有一個(gè)字
符串,其中第10個(gè)字符為'\0',則此字符串的有效字符為9個(gè)。也就是說(shuō),在遇到
第一個(gè)字符'\0'時(shí),表示字符串結(jié)束,由它前面的字符組成字符串。
系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)'\0'作為結(jié)束符。例如"C
Program”共有9個(gè)字
符,但在內(nèi)存中占10個(gè)字節(jié),最后一個(gè)字節(jié)'\0'是系統(tǒng)自動(dòng)加上的。(通過(guò)sizeof()
函數(shù)可驗(yàn)證)
//搞定了,錯(cuò)誤標(biāo)志在后面
#include
stdio.h
int
main(void)
{
int
id[18];//這里初始化時(shí)不應(yīng)為空,要么char
id[18]={0};或者直接char
id[18];
//還有,身份證號(hào)碼是數(shù)字,所以應(yīng)該是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]);
}
//輸入是每個(gè)數(shù)字用逗號(hào)隔開(kā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;
}
求最后數(shù)組最后一位可以用sizeof函數(shù)
如果是a[10]的就是:
解釋就是直接用sizeof檢查數(shù)組a的內(nèi)存大?。ㄒ宰止?jié)為單位),減去1(因?yàn)閿?shù)組是從0開(kāi)始)就可以得到數(shù)組最后一個(gè)值。
所以,i=sizeof(數(shù)組名)/sizeof(數(shù)組類(lèi)型) -1;
可以以字符串的形式將小數(shù)存儲(chǔ)起來(lái),然后輸出,源代碼如下,不知道能不能解決你的問(wèn)題:
#include stdio.h
#include malloc.h
void main()
{
char *a;//用以存儲(chǔ)輸入的小數(shù)
char ch;
int i=0;
int j=0;
a=(char*)malloc(sizeof(char));
printf("請(qǐng)輸入一個(gè)小數(shù),以回車(chē)換行結(jié)尾:\n");
while ((ch=getchar())!='\n')//將小數(shù)存儲(chǔ)起來(lái),可以用a尋址
{
a[i]=(char)malloc(sizeof(char));
a[i++]=ch;
}
a[i]='\0';//小數(shù)結(jié)束標(biāo)志
i=0;
while (a[i++]!='.')
{
if(a[i]=='\0')
{
printf("輸入為非小數(shù)\n");
getchar();
return;
}
continue;//可以不要這條語(yǔ)句
}
while (a[i++]!='\0')//統(tǒng)計(jì)共有多少位小數(shù)
{
j++;
}
printf("小數(shù)最后一位數(shù)字為:%d\t共有小數(shù)[%d]位\n",a[i-2]-'0',j);//其實(shí)可以%c與a[i-2]對(duì)應(yīng)的
getchar();
}
char str[]="Lloyd2";
int l = strlen(str);
//這里是獲得這個(gè)字符串的長(zhǎng)度,長(zhǎng)度為6
//通過(guò)長(zhǎng)度,我們可以獲取到他的最后一個(gè)字符
//由于數(shù)組下標(biāo)是從0開(kāi)始的,所以數(shù)組下標(biāo)的最大值始終要比長(zhǎng)度小1
//那這個(gè)字符串的最后一個(gè)字符就是
char c = str[l-1];