计算机上机题Word下载.docx
《计算机上机题Word下载.docx》由会员分享,可在线阅读,更多相关《计算机上机题Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
%4d"
b[i]);
fun(b,N);
\nThedataaftermoving:
#include<
longfun(intg)
{
switch(g);
{case0:
return0;
case1;
case2:
return1;
return(fun(g-1)+fun(g-2));
{longfib;
intn;
Inputn:
"
scanf("
%d"
&
n);
n=%d\n"
n);
fib=fun(n);
fib=%d\n\n"
fib);
#defineN8
typedefstruct
{charnum[10];
doubles[N];
doubleave;
}STREC;
voidfun(STREC*a)
{STRECs={"
GA005"
85.5,76,69.5,85,91,72,64.5,87.5};
inti;
voidNONO();
fun(&
s);
The%s'
sstudentdata:
s.num);
for(i=0;
i<
i++)
%4.1f\n"
s.s[i]);
\nave=%7.3f\n"
s.ave);
NONO();
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*out;
inti,j;
STRECs[10]={
{"
85.5,76,69.5,85,91,72,64.5,87.5},
GA001"
82.5,66,76.5,76,89,76,46.5,78.5},
GA002"
72.5,56,66.5,66,79,68,46.5,58.5},
GA003"
92.5,76,86.5,86,99,86,56.5,88.5},
GA004"
82,66.5,46.5,56,76,75,76.5,63.5},
GA006"
75.5,74,71.5,85,81,79,64.5,71.5},
GA007"
92.5,61,72.5,84,79,75,66.5,72.5},
GA008"
72.5,86,73.5,80,69,63,76.5,53.5},
GA009"
66.5,71,74.5,70,61,82,86.5,58.5},
GA010"
76,66.5,75.5,60,76,71,96.5,93.5},
};
out=fopen("
out.dat"
"
w"
);
for(i=0;
i<
10;
i++){
fun(&
s[i]);
fprintf(out,"
%7.3f\n"
s[i].ave);
fclose(out);
【参考答案】
(1)a[i]
(2)a[j] (3)a[j]
【考点分析】
本题考查:
数组的引用;
if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,则不执行下面的语句。
【解题思路】
填空1:
for循环语句循环体中将数组元素a[i]赋值给变量max和变量min。
填空2:
通过一次for循环,找到数组中的最大值,if语句的条件表达式是max<
a[j]。
填空3:
同理,此处if语句的条件表达式是min>
【解题宝典】
求最大值或者最小值的题目,一般都是假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。
2
___1___fun(charch)
if(ch>
='
0'
&
&
___2___)
return'
9'
-(ch-___3___);
returnch;
{charc1,c2;
\nTheresult:
c1='
2'
;
c2=fun(c1);
c1=%cc2=%c\n"
c1,c2);
8'
a'
voidfun(char*p,char*b)
{inti,k=0;
while(*p)
{i=1;
while(i<
=3&
*p){
b[k]=p;
k++;
p++;
i++;
if(*p)
b[k++]="
b[k]='
\0'
{chara[80],b[80];
Enterastring:
gets(a);
Theoriginalstring:
puts(a);
fun(a,b);
\nThestringafterinsertspace:
puts(b);
\n\n"
stdlib.h>
structslist
{doubles;
structslist*next;
typedefstructslistSTREC;
doublefun(STREC*h)
STREC*creat(double*s)
{STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->
s=0;
while(i<
N)
{q=(STREC*)malloc(sizeof(STREC));
q->
s=s[i];
p->
next=q;
p=q;
next=0;
returnh;
outlist(STREC*h)
{STREC*p;
p=h->
next;
head"
do
{printf("
->
%4.1f"
p->
s);
p=p->
while(p!
=0);
{doubles[N]={85,76,69,85,91,72,64,87},ave;
STREC*h;
h=creat(s);
outlist(h);
ave=fun(h);
ave=%6.3f\n"
ave);
FILE*in,*out;
doubles[N],ave;
STREC*h;
in=fopen("
in.dat"
r"
for(j=0;
j<
N;
j++)fscanf(in,"
%lf,"
&
s[j]);
%6.3lf\n"
ave);
fclose(in);
(1)char
(2)ch<
(3)'
函数定义,注意函数定义的一般形式以及有参函数和无参函数的区别;
if语句条件表达式,本题的条件表达式是判断数字字符;
函数返回值,其一般形式为"
return表达式;
"
。
函数定义时,类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型,所以此处应该填入char。
通过if条件语句判断字符串中字符是否是数字字符,既大于等于字符'
,同时小于等于字符'
return语句完成函数返回操作,要实现字符转换,应填入return′9′-(ch-′0′)。
有参函数定义,其一般形式为:
类型标识符 函数名(形式参数表列)
{声明部分
语句
在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。
在进行函数调用时,主调函数将赋予这些形式参数实际的值。
形参既然是变量,必须在形参列表中给出类型说明。
3
string.h>
#defineM5
#defineN20
intfun(char(*ss)[N],int*n)
{inti,k=0,len=N;
___1___;
{len=strlen(ss[i]);
if(i==0)*n=len;
if(len___2___*n)
{*n=len;
k=i;
return(___3___);
{charss[M][N]={"
shanghai"
guangzhou"
beijing"
tianjing"
chongqing"
intn,k,i;
\nTheoriginalstringsare:
M;
i++)puts(ss[i]);
k=fun(ss,&
\nThelengthofshorteststringis:
%d\n"
\nTheshorteststringis:
%s\n"
ss[k]);
char*fun(chartt[])
for(i=0;
tt[i];
i++)
/**********found***********/
if(('
<
=tt[i])||(tt[i]<
='
z'
))
tt[i]+=32;
return(tt);
main()
chartt[81];
printf("
\nPleaseenterastring:
);
gets(tt);
\nTheresultstringis:
\n%s"
fun(tt));
voidfun(intm,int*k,intxx[])
intm,n,zz[100];
\nPleaseenteranintegernumberbetween10and100:
scanf("
n);
fun(n,&
m,zz);
\n\nThereare%dnon-primenumberslessthan%d:
m,n);
for(n=0;
n<
m;
n++)
\n%4d"
zz[n]);
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
FILE*rf,*wf;
rf=fopen("
wf=fopen("
fscanf(rf,"
fprintf(wf,"
%d\n%d\n"
%d\n"
fclose(rf);
fclose(wf);
(1)M
(2)<
(3)k
for循环语句的循环条件;
if语句条件表达式;
return语句完成函数值的返回。
题目指出ss所指字符串数组中共有M个字符串,所以for循环语句循环条件是i<
M。
要求求长度最短的字符串,*n中存放的是已知字符串中长度最短的字符串的长度,这里将当前字符串长度与*n比较,若小于*n,则将该长度值赋给*n,因此if语句的条件表达式为len<
*n。
将最短字符串的行下标作为函数值返回,变量k储存行下标的值。
4
voidfun(char*s)
{inti,j=0,k=0;
chart1[80],t2[80];
s[i]!
if(s[i]>
s[i]<
)
t2[j]=s[i];
___1___;
elset1[k++]=s[i];
t2[j]=0;
t1[k]=0;
k;
i++)___2___;
___3___;
i++)s[k+i]=t2[i];
{chars[80]="
ba3a54j7sd567sdffs"
\nTheoriginalstringis:
s);
fun(s);
\nTheresultis:
#defineMAXLINE20
fun(char*pstr[6])
{inti,j;
char*p;
for(i=0;
5;
i++){
/**************found**************/
for(j=i+1,j<
6,j++)
if(strcmp(*(pstr+i),*(pstr+j))>
0)
p=*(pstr+i);
*(pstr+i)=pstr+j;
*(pstr+j)=p;
{inti;
char*pstr[6],str[6][MAXLINE];
for(i=0;
6;
i++)pstr[i]=str[i];
\nEnter6string(1stringateachline):
\n"
);
i++)scanf("
%s"
pstr[i]);
fun(pstr);
Thestringsaftersorting:
%s\n"
#defineM81
intfun(char*ss,charc)
{chara[M],ch;
\nPleaseenterachar:
ch=getchar();
\nThenumberofthecharis:
fun(a,ch));
NONO();
voidNONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti;
chara[M],b[M],ch;
fscanf(rf,"
a);
b);
ch=*b;
%c=%d\n"
ch,fun(a,ch));
(1)j++或j+=1或++或j=j+1
(2)s[i]=t1[i] (3)j
指针型变量;
数组变量赋值;
for循环语句。
根据函数fun中的内容可知,数组t1存储了s中的非数字字符,数组t2存储了s中的数字字符,为了存储下一个数字字符,下标j要进行加1操作。
将s串中的数字与非数字字符分开后,要先将非数字字符放入字符串s中,因此填入s[i]=t1[i]。
最后将数字字符加到s串之后,并且i要小于数字的个数j。
5
typedefstructlist
{intdata;
structlist*next;
}SLIST;
voidfun(SLIST*h,intx)
{SLIST*p,*q,*s;
s=(SLIST*)malloc(sizeof(SLIST));
s->
data=___1___;
q=h;
=NULL&
x>
data){
q=___2___;
p=p->
next=p;
next=___3___;
SLIST*creatlist(int*a)
{SLIST*h,*p,*q;
h=p=(SLIST*)malloc(sizeof(SLIST));
{q=(SLIST*)malloc(sizeof(SLIST));
data=a[i];
voidoutlist(SLIST*h)
{SLIST*p;
if(p==NULL)printf("
\nThelistisNULL!
else
\nHead"
do{printf("
data);
}while(p!
=NULL);
End\n"
{SLIST*head;
intx;
inta[N]={11,12,15,18,19,22,25,29};
head=creatlist(a);
\nThelistbeforeinserting: