C语言作业8文档格式.docx
《C语言作业8文档格式.docx》由会员分享,可在线阅读,更多相关《C语言作业8文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
1秒
64M
0
测试用例2
1.[Max]12
344
25
65
76
0
23↵
2.[Mean]178
349
32
567
23
322↵
3.[Mean]31
85
435
23432
27
999↵
4.[Max]87686
1199
12332
12344
12
3292↵
5.[Min]9
9128
53
766↵
6.[Median]84
43
145
3↵
7.[Median]99999
35
2266↵
8.[Min]4342
3255↵
9.[Median]0↵
10.*↵
1.{87686}12
3292
87686↵
2.{50017}35
2266
99999↵
3.{3576}23
31
999
23432↵
4.{3255}3255
4342↵
5.{344}0
344↵
6.{188}1
178
322
567↵
7.{74}3
84
145↵
8.{3}3
766
9128↵
9.{0}0↵
测试用例3
1.[Mean]88888↵
2.*↵
1.{88888}88888↵
#include<
stdio.h>
string.h>
math.h>
typedefstructline
{
chartype[8];
inttypeValue;
intdata[100];
intn_data;
}line;
intstringToInt(charstr[])
intreturnValue=0;
intn=strlen(str);
for(inti=0;
i<
strlen(str);
i++)
{
returnValue=returnValue+((int)str[i]-48)*pow(10.0,--n);
}
returnreturnValue;
}
voidinputToLineData(line*l,charinput[])
intn,i;
//linelength
n=strlen(input);
for(i=0;
n;
if(input[i+1]=='
]'
)break;
l->
type[i]=input[i+1];
type[i]='
\0'
;
n_data=0;
intnumStart=i+2;
charstr[100][10];
intm=0,j=0;
for(i=numStart;
if(input[i]=='
'
)
str[j][m]='
j++;
m=0;
n_data++;
else
str[j][m++]=input[i];
data[0]=0;
l->
n_data;
i++)
data[i]=stringToInt(str[i]);
voidsort(intdata[],intn)
inti,j,k;
for(j=0;
j<
n-1;
j++)
if(data[j]>
data[j+1])
k=data[j];
data[j]=data[j+1];
data[j+1]=k;
}}}
intgetTypevalue(linel)
if(strcmp(l.type,"
Max"
)==0)
intMax;
Max=l.data[0];
l.n_data;
if(l.data[i]>
Max)Max=l.data[i];
returnMax;
Min"
intMin;
Min=l.data[0];
if(l.data[i]<
Min)Min=l.data[i];
returnMin;
Median"
return(Max+Min)/2;
Mean"
intsum=0;
sum=sum+l.data[i];
returnsum/l.n_data;
}}
voidmain()
lineLine[100];
i=0;
charinput[100];
do
gets(input);
if(strlen(input)>
1)
inputToLineData(&
Line[i],input);
i++;
}while(strcmp(input,"
*"
)!
=0);
intamount=i;
amount;
sort(Line[i].data,Line[i].n_data);
Line[i].typeValue=getTypevalue(Line[i]);
linetemp;
for(j=0;
amount-1;
if(Line[j].typeValue<
Line[j+1].typeValue)
temp=Line[j];
Line[j]=Line[j+1];
Line[j+1]=temp;
printf("
{%d}"
Line[i].typeValue);
Line[i].n_data;
if(j<
Line[i].n_data-1)
%d"
Line[i].data[j]);
%d"
\n"
);
3.二叉排序树(选做)
撰写一个程序,能够构建字符串型的二叉排序树并在二叉排序树中查找节点。
所谓二叉排序树,简而言之,是一个每个节点可指向0、1或2个节点的递归的数据结构。
最上层的一个节点称为树根。
二叉排序树服从凡是比当前节点小的值都在其左下方,比当前节点大的值都在其右下方的规律。
该规律不仅适用于树的局部,也适用于整棵二叉排序树。
例如,在给定Kiwi,Banana,Apple,Melon,Berry的输入字符串的顺序下,以此构建二叉排序树的过程为:
建树后,请根据给定的字符串,查找树中是否有该节点。
若有,返回其节点在所在的层次数(根节点Kiwi的层次定义为0);
若无,返回“NotFound”。
每行一个字符串,作为要插入二叉排序树的值。
若单独一个*字符占一行,则表明用于建树的字符串输入数据结束。
随后以[Search]开始的若干行,代表要在树中查找某个字符串值,用于查找的字符串紧跟其后。
若输入行的第一个字符为“#”,则表示输入数据结束。
输出每个要查找的值所在的层次数。
1.Kiwi↵
2.Banana↵
3.Apple↵
4.Melon↵
5.Berry↵
6.*↵
7.[Search]Berry↵
8.[Search]Strawberry↵
9.#↵
1.Berry-2↵
2.Strawberry-Not
Found↵
1.test↵
2.*↵
3.[Search]test↵
4.[Search]text↵
5.#↵
1.test-0↵
2.text-Not
stdlib.h>
structnode
{chardate[20];
structnode*left;
structnode*right;
intfloor;
};
intflag=0;
intf(structnode*p,chart[])
{
if(p==NULL)
return0;
elseif(strcmp(p->
date,t)==0)
{
printf("
%s-%d\n"
t,p->
floor);
flag=1;
}else
f(p->
left,t);
right,t);
}
}
intmain()
structnode*p0,*pnew,*ptemp;
p0=(structnode*)malloc(sizeof(structnode));
p0->
left=NULL;
right=NULL;
chartemp[40];
gets(temp);
strcpy(p0->
date,temp);
floor=0;
while(temp[0]!
='
*'
)
pnew=(structnode*)malloc(sizeof(structnode));
pnew->
strcpy(pnew->
ptemp=p0;
for(inti=1;
{
if(strcmp(temp,ptemp->
date)>
0)
{
if(ptemp->
right==NULL)
{
ptemp->
right=pnew;
pnew->
floor=i;
break;
}else
ptemp=ptemp->
right;
}else
left==NULL)
left=pnew;
}
else
left;
}
}//for
gets(temp);
}//while
#'
chart[40];
strcpy(t,&
temp[8]);
flag=0;
f(p0,t);
if(flag==0)
printf("
%s-NotFound\n"
t);
}}
1.配料员(选做)
背景:
你是一名室内装潢工程队的配料员。
你的伙伴们在铺大理石地砖的时候,习惯于按照以下两种之字形的遍历顺序之一:
学了C语言以后,你决定编写一个程序。
无论你的伙伴们想要以何种遍历顺序铺设任何图案的任何大小的地砖方阵,你的程序都能正确地生成一个线性遍历序列,指示你每次该递给他们什么图案的地砖。
首行为需要遍历的地砖矩阵的个数。
第二行为第一个矩阵的维数(其中的x是小写字母x,前后各有一个空格)。
如果是一个N维的矩阵,则接下来的N行每一行为矩阵该行各列的元素,整型,以空格分隔,每一个整数代表一种基本图案的地砖。
随后的一行为该矩阵遍历的模式,只能为TL-BR或者TR-BL两者之一。
若有多个矩阵,则从下一行起重复上述的输入模式。
按顺序输出所需原料的编号。
1.1↵
2.4
x
3.1
4.5
6
8↵
5.1
6.5
7.TL-BR↵
1.1,2,5,1,6,3,4,7,2,5,6,3,8,4,7,8↵
1.2↵
1↵
3.1↵
4.2↵
5.3↵
6.4↵
7.TL-BR↵
8.4
9.1↵
10.2↵
11.3↵
12.4↵
13.TR-BL↵
1.1,2,3,4↵
2.1,2,3,4↵
2.1
3.0↵
4.TL-BR↵
6.5↵
7.TR-BL↵
1.0↵
2.5↵
intx[50][50];
voidchange(int*a,int*b)
inttemp;
temp=*a;
*a=*b;
*b=temp;
voidfun(inta,intb)
a;
for(intj=0;
b/2;
j++)
inttemp;
temp=x[i][j];
x[i][j]=x[i][b-j-1];
x[i][b-j-1]=temp;
}
intn;
scanf("
&
n);
while(n--!
=0)
for(inti=0;
50;
for(intj=0;
x[i][j]=-1;
inta,b;
chartempchar[6];
scanf("
%d%c%d"
a,&
tempchar[0],&
b);
//input
b;
scanf("
x[i][j]);
%s"
tempchar);
if(tempchar[4]=='
L'
fun(a,b);
change(&
//output
intmax=a>
b?
a:
inti,j;
max=max/2*2+1;
x[0][0]);
for(intp=1;
p<
max-1;
p+=2)
for(i=0,j=p;
j>
=0;
i++,j--)
if(x[i][j]!
=-1)
printf("
%d"
x[i][j]);
for(i=p+1,j=0;
i>
i--,j++)
for(i=p,j=max-1;
max;
for(i=max-1,j=p+1;
50猜猜我是谁
在指定的文本文件中包含了我需要的信息,请从指定文件中读取指定的行。
如果文件中没有指定的行,则显示“LineNoError.”。
如果文件不存在,则显示“FileNameError.”。
第一行为要以只读方式打开的文本文件名
第二行要读取的行号(从1开始)
文件中指定行号的内容(完整一行的内容)
数据文件
∙data1.txt
1.data1.txt↵
2.2↵
1.This
is
Line
2.↵
无限制
2.1↵
1.↵
2.10↵
1.Line
No
Error.↵
测试用例4
1.data.txt↵
1.File
Name
FILE*pf;
charname[20];
name);
pf=fopen(name,"
r"
if(pf==NULL)
FileNameError.\n"
exit(0);
chars[20];
while(n--)
if(fgets(s,20,pf)==NULL)
pf=NULL;
break;
LineNoError.\n"
else
s);
H18恭喜发财利是窦来(选做)
在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗。
最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能。
钱币正面一般铸有“万岁千秋”、“去殃除凶”等吉祥话和龙凤、龟蛇、双鱼等吉祥图案。
据说嘉兴府有一户姓管的人家,夫妻老年得子,十分珍爱。
在年三十晚上,为防止“祟”来侵扰一直逗孩子玩,小孩用红纸包了八枚铜钱,包了又拆,拆了又包,睡下以后,包着的八枚铜钱就放在枕边。
半夜里,一阵阴风吹过,黑矮的小人正要用他的白手摸孩子的头,突然孩子枕边迸出一道金光,祟尖叫着逃跑了。
于是这件事传扬开来,大家纷纷效仿,在大年夜用红纸包上钱给孩子,祟就不敢再来侵扰了。
因而人们把这种钱叫“压祟钱”,“祟”与“岁”发音相同,日久天长,就被称为“压岁钱”了。
现在有N个人,他们都有小孩,春节来了,他们要发压岁钱给朋友的小孩,而他们自己的小孩也会收到压岁钱。
为了简单,他们在发压岁钱的时候,使用以下的计算方法,譬如某甲有100块,它要给另外三个人的小孩发压岁钱,则每个小孩会分到100/3=33块,剩余的1块就不发了。
给你这N个人的信息,以及他们把压岁钱发给了谁的小孩,请你计算他们每个人的小孩收到的压岁钱和他们发出去的压岁钱的差额是多少。
输入
第1行:
一个整数N(2<
=N<
=10)
第2..