C语言作业 2Word文件下载.docx
- 文档编号:167711
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:23
- 大小:25.28KB
C语言作业 2Word文件下载.docx
《C语言作业 2Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言作业 2Word文件下载.docx(23页珍藏版)》请在冰点文库上搜索。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
第一行龙头数n,勇士人数m(1<
=n,m<
=100)接下来n行,每行包含一个整数,表示龙头的直径接下来m行,每行包含一个整数,表示勇士的身高l
如果勇士们能完成任务,输出校长需要花的最小费用;
否则输出“bitisdoomed!
”
1.23
2.5
3.4
4.7
5.8
6.4
1.11
测试用例2
1.21
3.5
4.10
1.bitisdoomed!
intmain()
{
intdragon,hero;
%d%d"
&
dragon,&
hero);
intdragonhead[100]={0};
intherohight[100]={0};
1.
.
....
.*..
....
根据上面的地图,可以计算出应该提供给游戏者的数字如下所示:
*100
2210
1*10
1110
每个数字表示了该方格周围到底有几个地雷,当然,一个方格周围最多的时候只会有八个。
输入
输入中将包括一系列的地图,每个地图的第一行有两个整数n和m(0<
n,m<
=100),它们表示了地图的行数和列数。
下面的n行每行都有m个字符,其中"
."
表示安全而"
*"
表示地雷。
如果地图的n和m都为0,则表示输入结束。
输出
针对每一个地图,首先输出一行:
Field#x:
其中x是当前地图的编号(从1开始)。
下面的n行则将地图中的"
以数字表示,该数字表示该方格周围有多少颗地雷。
来源
1.44
2.*...
3.....
4..*..
5.....
6.35
7.**...
8......
9..*...
10.00
1.Field#1:
2.*100
3.2210
4.1*10
5.1110
6.
7.Field#2:
8.**100
9.33200
10.1*100
1.33
2....
3....
4....
5.33
6.***
7.***
8.***
9.00
2.000
3.000
4.000
5.
6.Field#2:
9.***
voidprint(char*a,char*b,char*c,intn)
intcount=0;
if(*b=='
*'
)printf("
else
{
if(*a=='
)count++;
if(*(a+1)=='
if(*(b+1)=='
if(*(c+1)=='
if(*c=='
count);
}
for(inti=1;
i++)
count=0;
if(*(b+i)=='
)
printf("
else
{
if(*(a+i-1)=='
if(*(a+i)=='
if(*(a+i+1)=='
if(*(b+i-1)=='
if(*(b+i+1)=='
if(*(c+i-1)=='
if(*(c+i+1)=='
if(*(c+i)=='
}
intflagn=0;
intn,r;
charempty[110];
110;
empty[i]='
.'
;
chara[110],b[110],c[110];
char*aa;
aa=&
a[0];
char*bb;
bb=&
b[0];
char*cc;
cc=&
c[0];
1;
j++);
Field#%d:
print(aa,bb,cc,n);
gets(b);
b[n]='
for(intj=0;
r-1;
j++)
{
gets(c);
c[n]='
print(aa,bb,cc,n);
.,16,先对前17位数字的权求和
Ai:
表示第i位置上的身份证号码数字值
Wi:
表示第i位置上的加权因子
7910584216379105842
(2)计算模
Y=mod(S,11)
(3)通过模得到对应的校验码
Y:
012345678910
校验码:
10X98765432
四、举例如下:
15位的身份证号升级办法:
15位的身份证号:
ddddddyymmddxxp
18位的身份证号:
ddddddyyyymmddxxpy
∙其中dddddd为地址码(省地县三级)
∙yyyymmddyymmdd为出生年月日
∙xx顺号类编码
∙p性别
15位的yy年升为18位后,变成19yy年,但对于百岁以上老人,则为18yy年,此时,他们的最后三位顺序码为996,997,998或999来标记。
输入n组身份证号码,第一行为个数,以后每行为身份证号码。
如果输入的身份证号码为15位,则将其升级为18位后显示输出;
否则判断其是否为合法身份证号,并逐行输出。
1.4
2.
3.
4.
5.
1.Invalid
2.Valid
4.
intmod(int*p)
intresult;
intsum;
sum=*p*7+*(p+1)*9+*(p+2)*10+*(p+3)*5+*(p+4)*8+*(p+5)*4+*(p+6)*2+*(p+7)*1+*(p+8)*6+*(p+9)*3+*(p+10)*7+*(p+11)*9+*(p+12)*10+*(p+13)*5+*(p+14)*8+*(p+15)*4+*(p+16)*2;
result=sum%11;
returnresult;
charinput[30];
intid[18]={0};
intchoice=0;
intn;
charbase[11]={'
1'
'
X'
9'
8'
7'
6'
5'
4'
3'
2'
};
intx[11]={1,0,10,9,8,7,6,5,4,3,2};
inttemp;
n);
temp=getchar();
gets(input);
if(strlen(input)==15)
choice=1;
elseif(strlen(input)==18)
choice=2;
Invalid\n"
continue;
switch(choice)
case1:
for(intk=0;
k<
6;
k++)
id[k]=input[k]-'
id[6]=1;
id[7]=9;
for(intk=8;
17;
id[k]=input[k-2]-'
if((id[14]==9)&
&
(id[15]==9)&
(id[16]>
5))
id[7]=8;
id[17]=mod(id);
printf("
id[k]);
printf("
%c"
base[id[17]]);
break;
}
case2:
intflag=0;
for(intq=0;
q<
q++)
if(id[q]>
9||id[q]<
0)
flag=1;
intyear,month,day;
year=id[6]*1000+id[7]*100+id[8]*10+id[9];
month=id[10]*10+id[11];
day=id[12]*10+id[13]*10;
if(month>
12)
flag=1;
if(year%4!
=0&
month==2&
day>
28)
if(year%4==0&
29)
if(id[8]==8)
if(input[17]=='
||input[17]=='
x'
id[17]=2;
elseif(input[17]-'
9||input[17]-'
<
id[17]=-1;
else
id[17]=x[input[17]-'
];
if(mod(id)==id[17]&
flag==0)
Valid\n"
H12:
安全的密码(选做)
5/折扣:
随着电子设备的广泛运用,密码也渐渐融入每个人的生活。
保护好密码,不仅关系到个人隐私,更关系到个人的财产和安全。
一个安全的密码,最好由大小写字母、数字或符号组成。
包含越多种类的字符,其安全性就越高。
同时密码还需要有一定的长度,通常至少要由六个以上的字符组成。
并不是每个人都喜欢这样复杂的密码,很多人在设置密码的时候,喜欢使用自己的名字或者生日,但这是很大的安全隐患。
任务
林晓炜正在设计一个网络交易系统,为了保证用户的密码安全,他需要一个程序,判断用户自己设置的密码是否安全,如果不安全,则给出提示。
现在他向你求助,请你帮忙设计一个程序来解决这个问题。
应当按照以下的规则来判断密码是否安全:
1.如果密码长度小于6位,则不安全
2.如果组成密码的字符只有一类,则不安全
3.如果组成密码的字符有两类,则为中度安全
4.如果组成密码的字符有三类或以上,则为安全
通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。
输入
输入的第一行是一个整数N,表明后面有多少组密码。
随后的N行输入包括N个密码,每个密码的长度均小于20个字符。
输出
针对每一个密码判断并输出它是否安全。
对于不安全的密码输出"
NotSafe"
,对于中度安全的密码输出"
MediumSafe"
,对于安全的密码输出"
Safe"
输入样例
4
1234
abcdef
ABC123
1#c3Gh
输出样例
NotSafe
Medium
SafeSafe
1.10
2.abcDEF
3.ABC
4.qw
5.`
6.ABCDEFGHIJKLMNOPQRST
7.
8.1aB
9.1B
10.aX
11.qwe123%^&
ABC
1.MediumSafe
2.NotSafe
3.NotSafe
4.NotSafe
5.NotSafe
6.NotSafe
7.Safe
8.NotSafe
9.Safe
10.Safe
intjudge(char*p,intn)
intresult=0;
if(n<
6)
result=1;
inta[4]={0,0,0,0};
for(inti=0;
if((*(p+i)>
='
)&
(*(p+i)<
))
a[0]=1;
elseif((*(p+i)>
a'
z'
a[1]=1;
A'
Z'
a[2]=1;
else
a[3]=1;
result=a[0]+a[1]+a[2]+a[3];
chartemp;
charwords[21];
intn=0;
21;
words[j]='
\0'
gets(words);
switch(judge(words,strlen(words)))
NotSafe\n"
MediumSafe\n"
case3:
case4:
Safe\n"
H13:
编码问题(选作)
设有一个整形数组A[0..N-1];
存放的元素为0~N-1(1<
N<
=10)之间的整数,且A[i]≠A[j](i≠j)。
例如,当N=6时,有:
A=(4,3,0,5,1,2)。
此时,数组A的编码定义如下:
A[0]编码为0;
A[i]编码为:
在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)
例如上面数组A的编码为:
B=(0,0,0,3,1,2)
若给出数组A,则可求出其编码。
同理,若给出数组A的编码,可求出A中的原数据。
推导方向(取值为1或2,如为1,则表示根据数组求数组编码;
如为2,则表示根据编码反求数组)
数组个数
数组或数组编码元素
数组编码、或数组本身(元素之间以空格分隔)
1.1
2.6
3.430512
1.000312
intchoice;
choice,&
intnum[10]={0};
intresult[10]={0};
{scanf("
num[i]);
switch(choice)
.,n,n+1,...,2n编号并在开始时保持着这种顺序。
一次洗牌就是将牌原来的次序变为n+1,1,n+2,2,...,2n,n,也就是将原来的前n张牌放到位置2,4,...,2n,并且将余下的n张牌按照他们原来的次序放到奇数位置1,3,...,2n-1。
已经证明对于任何一个自然数n,这2n张牌经过一定次数的洗牌就回到原来的次序。
但我们不知道对于一个特定的n,需要几次洗牌才能将牌洗回原来的次序。
牌张数的一半n,即初始情况下一共有2n张牌,n为int型整数
将牌洗回原来的次序所需要的洗牌次数
1.10
1.6
{intn,count=1;
scanf("
ints=2;
for(count=1;
s!
=1;
count++)
{if(s<
=n){s=2*s;
else{s=(s-n)*2-1;
}}
printf("
%d\n"
35科学记数法
对于非常大或者非常小的数据,我们通常用科学记数法来表示。
例如在科技文献和电脑中经常遇到的×
106(计算机中的科学记数法表示为:
),或者×
10-5(科学记树法表示:
)这种类型的数据。
用科学记数法表示的数据。
即为符合C语言表示的科学记数法表示。
该数据的双精度表示
说明:
输入数据的精度不高于小数点后50位。
输入数据时,在实数和幂之间有空格进行分隔,空格个数不定。
结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。
1.E3
1.e-3
intintpow(inta,intb)
intresult=1;
b;
result=result*a;
charline[100];
intpe=0;
intstart1=0,start2,end1,end2;
intflag1=1,flag2=1;
intlenth;
inty=0;
gets(line);
(int)strlen(line);
i++)
{
if((line[i]=='
'
)||(line[i]=='
))
{
for(intj=i;
(strlen(line)+1);
j++)
{
line[j]=line[j+1];
}
i=i-1;
lenth=strlen(line);
if(line[0]=='
-'
)
start1=1;
flag1=-1;
lenth;
i++)
e'
)||line[i]=='
E'
pe=i;
break
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言作业 语言 作业