上机103套Word格式.docx
- 文档编号:20957699
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:97
- 大小:66.19KB
上机103套Word格式.docx
《上机103套Word格式.docx》由会员分享,可在线阅读,更多相关《上机103套Word格式.docx(97页珍藏版)》请在冰豆网上搜索。
){b[j]=*h;
h++;
elseh++;
p++;
while(*p){b[j]=*p;
p++;
b[j]='
\0'
;
j=0;
while(b[j])
{a[i]=b[j];
i++;
a[i]='
2-1:
给定程序中,函数fun的功能是:
统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
内容为[(*n)=0;
内容为[p=p->
next;
内容为[fun(head,&
num);
2-2:
给定程序modi.c中,fun函数的功能是:
将n个无序整数从小到大排序。
请改正程序中的错误,使它能得出正确结果。
内容为[for(i=j+1;
i<
n;
i++)]
内容为[p=i;
2-3:
请编写一个函数fun,它的功能是:
根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
程序运行后,如果输入精度0.0005,则程序输出为3.140578。
doublefun(doubleeps)
{
doubles=1,t=1./3;
intn=1;
while(t>
=eps){s+=t;
n++;
t=t*n/(2.0*n+1);
}
return(s*2.0);
3-1:
给定程序中,函数fun的功能是:
计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。
内容为[s+=p->
data;
内容为[printf("
\nsum=%d\n"
fun(head));
3-2:
按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
内容为[sum=0.0;
内容为[if((i+1)%5==0)]
3-3:
请编写一个函数fun,它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
为回车键)
函数将返回shanghai。
char*fun(char*s,char*t)
inti;
char*p=s,*q=t;
for(i=0;
*p&
&
*q;
i++){
q++;
if(*p==0&
*q==0)returns;
if(*p)returns;
elsereturnt;
4-1:
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。
函数fun的功能是:
找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
内容为[STUfun(STU*std,char*num)]
内容为[if(strcmp(std[i].num,num)==0)]
内容为[return(std[i]);
4-2:
给定程序modi.c中,函数fun的功能是:
从s所指字符串中,找出t所指子串的个数作为函数值返回。
例如,当s所指字符串中的内容为:
"
abcdabfab"
,t所指字符串的内容为:
ab"
,则函数返回整数3。
内容为[if(*r==*p){r++;
}]
内容为[if(*r=='
)]
4-3:
规定输入的字符串中只包含字母和*号。
使字符串最前面连续的*号不得多于n个;
若多于n个,则删除多余的*号;
若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;
若n的值为8,则字符串中的内容仍为:
*******A*BC*DEF*G****。
n的值在主函数中输入。
voidfun(char*a,intn)
{charb[81];
inti=0,j=0,s=0,k;
while(a[i]=='
){s++;
if(s>
n)
{for(k=0;
k<
k++)
{b[j]='
while(a[i])
{b[j]=a[i];
i=0;
5-1:
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。
找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
内容为[if(std[i].year==year)]
内容为[k[n++]=std[i];
内容为[return(n);
5-2:
将十进制正整数m转换成k(2≤k≤9)进制数,并按位输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
内容为[aa[i]=m%k;
内容为[for(i=i-1;
i>
=0;
i--)]
5-3:
计算n门课程的平均分,计算结果作为函数值返回。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
floatfun(float*a,intn)
floatave=0.0;
i<
i++)ave=ave+a[i];
ave=ave/n;
returnave;
6-1:
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
第[1]处:
内容为[voidmodify(STU*ss,floata)]
第[2]处:
内容为[ss->
score[i]*=a;
第[3]处:
内容为[modify(&
std,a);
6-2:
读入一个字符串(长度<
20),将该字符串中的所有字符按ASCII码升序排序后输出。
例如:
若输入:
edcba,则应输出:
abcde。
内容为[for(i=strlen(t)-1;
i;
内容为[if(t[j]>
t[j+1])]
6-3:
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
求出该学生的平均分放在记录的ave成员中。
请自己定义正确的形参。
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:
78.875。
voidfun(STREC*p)
{inti;
doubleaver=0;
for(i=0;
N;
i++)
{aver=aver+(*p).s[i];
}
(*p).ave=aver/N;
7-1:
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
第[1]处:
内容为[voidfun(PERSONstd[3])]
内容为[PERSONtemp;
内容为[fun(std);
7-2:
通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。
内容为[t=*x;
*x=y;
内容为[returnt;
7-3:
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。
doublefun(STREC*a,STREC*b,int*n)
{inti,j;
doubleaver=0;
*n=0;
for(i=0;
i++)
aver=aver+a[i].s;
/*求和*/
aver=aver/N;
/*计算平均分*/
if(a[i].s>
=aver)
{b[*n].s=a[i].s;
/*将高于等于平均分的学生数据放在另一数组b中*/
for(j=0;
j<
10;
j++)
b[*n].num[j]=a[i].num[j];
*n=*n+1;
/*统计高于等于平均分的学生人数*/
return(aver);
/*返回平均分*/
8-1:
将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。
内容为[max=*std;
内容为[if(max.age<
std[i].age)max=std[i];
\nName:
%s,Age:
%d\n"
max.name,max.age);
8-2:
计算正整数num的各位上的数字之积,例如,若输入:
252,则输出应该是:
20。
202,则输出应该是:
0。
内容为[longk=1;
内容为[num/=10;
8-3:
按分数的高低排列学生的记录,高分在前。
voidfun(STRECa[])
{inti,j,p,t,k;
charh;
{p=i;
for(j=i+1;
j++)
if(a[p].s<
a[j].s)p=j;
if(p!
=i)
{t=a[p].s;
a[p].s=a[i].s;
a[i].s=t;
for(k=0;
{h=a[p].num[k];
a[p].num[k]=a[i].num[k];
a[i].num[k]=h;
9-1:
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共有M个字符串,且串长<
N。
内容为[for(j=i+1;
j<
M;
j++)]
内容为[if(n[k]>
n[j])k=j;
内容为[strcpy(ss[k],t);
9-2:
将字符串中的内容按逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:
dcba。
正确内容为[fun(char*a)]
正确内容为[printf("
%c"
*a);
9-3:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12。
调用该函数后,c=2415。
*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;
10-1:
求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
字符串数组中共有M个字符串,且串长<
内容为[n=len;
k=i;
内容为[for(j=len;
j>
j--)]
内容为[ss[i][j]='
10-2:
计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。
其中x和y的值不等,z和y的值不等。
例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。
内容为[value=FU((a+b),(a-b))+FU((c+b),(c-b));
内容为[return(value);
10-3:
函数返回指定学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
{inti,f=0;
STRECp;
/*定义结构体变量*/
p=a[0];
if(strcmp(a[i].num,b)==0){p=a[i];
f=1;
}/*通过字符串比较函数将指定的学号与每一个学生的学号进行比较,若相同,则返回指定的学生数据*/
if(f==0)/*判断是否找到指定学号*/
{p.num[0]='
/*若没找到指定学号,在结构体变量中给学号置空串*/
p.s=-1;
/*若没找到指定学号,在结构体变量中给成绩置-1*/
returnp;
/*返回学号和成绩*/
11-1:
给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据从小到大顺序链接。
把形参x的值放入一个新结点并插入到链表中,插入后各结点仍保持从小到大顺序排列。
内容为[s->
data=x;
内容为[q=p;
内容为[q->
next=s;
11-2:
N个有序整数数列已放在一维数组中,给定程序modi.c中,函数fun的功能是:
利用折半查找算法查找整数m在数组中的位置。
若找到,返回其下标值;
反之,返回-1。
折半查找的基本算法是:
每次查找前先确定数组中待查的范围:
low和high(low<
high),然后把m与中间位置(mid)中元素的值进行比较。
如果m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;
反之,下一次的查找范围落在中间位置之前的元素中。
直到low>
high,查找结束。
内容为[fun(inta[],intm)]
内容为[elseif(m>
a[mid])]
11-3:
把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。
主函数中将把60放在low中,把69放在heigh中。
inti,j=0;
for(i=0;
i<
N;
i++)
if(a[i].s>
=l&
a[i].s<
=h)b[j++]=a[i];
returnj;
12-1:
给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。
在复制的过程中,把复制的内容输出到终端屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
内容为[if((fs=fopen(source,"
r"
))==NULL)]
内容为[while(!
feof(fs))]
内容为[fputc(ch,ft);
12-2:
给定程序modi.c中函数fun的功能是:
用递归算法计算斐波拉契数列中第n项的值,从第1项起,斐波拉契级数序列为:
1、1、2、3、5、8、13、21、……
例如,若给n输入7,该项的斐波拉契级数值为:
13。
内容为[switch(g)]
内容为[case1:
case2:
return1;
12-3:
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
求出平均分,由函数值返回。
例如,若学生的成绩是:
85,76,69,85,91,72,64,87;
则平均分应当是:
78.625。
typedefstructslistSTREC;
doublefun(STREC*h)
STREC*p=h->
/*由于头结点中没有存放数据*/
doubleav=0.0;
/*对计算成绩平均值的变量进行初始化*/
intn=0;
while(p!
=NULL){/*判断链表是否结束*/
av=av+p->
s;
/*对成绩进行累加*/
p=p->
/*到下一个结点位置*/
/*人数加1*/
av/=n;
/*计算成绩平均值*/
returnav;
/*返回成绩平均值*/
13-1:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
内容为[fprintf(fp,"
%d%f\n"
i,sqrt((double)i));
内容为[fclose(fp);
内容为[if((fp=fopen(fname,"
13-2:
统计子字符串substr在字符串str中出现的次数。
例如,若字符串为aaaslkaaas,子字符串为as,则应输出2。
内容为[for(i=0;
str[i];
i++)]
内容为[if(substr[k+1]=='
13-3:
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
w值为5923,则函数返回923;
w值为923,则函数返回23。
unsignedfun(unsignedw)
if(w>
10000)w%=10000;
elseif(w>
1000)w%=1000;
100)w%=100;
10)w%=10;
returnw;
14-1:
从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1(独立一行)作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
内容为[voidWriteText(FILE*fw)]
内容为[fputs(str,fw);
fputs("
\n"
fw);
%s"
str);
14-2:
从字符串s中删除所有小写字母c。
内容为[s[j++]=s[i];
内容为[s[j]='
14-3:
请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标,用k返回。
例如,输入如下整数:
876675896101301401980431451777
则输出结果为:
6,980
voidfun(int*s,intt,int*k)
inti,pos=0,max=*s;
for(i=1;
t;
if(max<
*(s+i)){
max=*(s+i);
pos=i;
*k=pos;
15-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 103