C语言作业:4. 设计身份z号合法性验证程序

C语言作业:4. 设计身份z号合法性验证程序,第1张

#include

"stdio.h"

void

main()

{

int

i

/*身份z的第i位*/

int

s[17]

/*定义一个数组用来存放身份z的前17位*/

int

t[17]

/*各位相乘后的数组*/

int

m

/*余数*/

int

t18

/*身份z的第18位0--9*/

char

t18c

/*身份z的第18位X*/

long

int

sum=0

for(i=0i<17i++)

{

printf("请输入身份z的第%d位:",i+1)

scanf("%d",&s[i])

switch(i+1)

{

/*身份z的1到17位要乘的数一次是7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

*/

case

1:t[i]=s[i]*7break

case

2:t[i]=s[i]*9break

case

3:t[i]=s[i]*10break

case

4:t[i]=s[i]*5break

case

5:t[i]=s[i]*8break

case

6:t[i]=s[i]*4break

case

7:t[i]=s[i]*2break

case

8:t[i]=s[i]*1break

case

9:t[i]=s[i]*6break

case

10:t[i]=s[i]*3break

case

11:t[i]=s[i]*7break

case

12:t[i]=s[i]*9break

case

13:t[i]=s[i]*10break

case

14:t[i]=s[i]*5break

case

15:t[i]=s[i]*8break

case

16:t[i]=s[i]*4break

case

17:t[i]=s[i]*2break

}

sum=sum+t[i]

}

printf("前17位相乘后的和为%ld\n",sum)

m=sum%17

printf("对17取余后的值位:",m)

switch(m)

{

/*各个余数所对应第18位身份z号1

0

X

9

8

7

6

5

4

3

2*/

case

0:t18=1

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

1:t18=0

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

2:t18c='X'printf("这是一个合法的身份z号码,第18位是%c",t18c)break

case

3:t18=9

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

4:t18=8

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

5:t18=7

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

6:t18=6

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

7:t18=5

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

8:t18=4

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

9:t18=3

printf("这是一个合法的身份z号码,第18位是%d",t18)break

case

10:t18=2

printf("这是一个合法的身份z号码,第18位是%d",t18)break

default:printf("这不是一个合法的身份z号码")

}

printf("\n")

}

第一题:

void main()

{

int n,sum

n=20

sum=0

sum=fun(n)

printf("%ld\n",sum)

return

}

long fun(int n)

{

int i

long tmp

i=1

while(i<=n){

tmp+=i*i

i++

}

return tmp

}

第二题:

void main()

{

int n

n=1000

fun(n)

return

}

void fun(int n)

{

int i,sum,tmp

for(int i=1i<ni++){ //这里是找1到n之间的水仙数。当然你可以找任意区间的水仙数,只要改变下i的循环数即可。

tmp=i

sum=0

while(tmp>0){

sum = sum + (tmp%10)*(tmp%10)

tmp=tmp/10

}

if(sum==i){

printf("%d\n",i)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11309722.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存