上机考试题参考答案讲解.docx

上传人:b****5 文档编号:28003218 上传时间:2023-07-07 格式:DOCX 页数:75 大小:31.28KB
下载 相关 举报
上机考试题参考答案讲解.docx_第1页
第1页 / 共75页
上机考试题参考答案讲解.docx_第2页
第2页 / 共75页
上机考试题参考答案讲解.docx_第3页
第3页 / 共75页
上机考试题参考答案讲解.docx_第4页
第4页 / 共75页
上机考试题参考答案讲解.docx_第5页
第5页 / 共75页
点击查看更多>>
下载资源
资源描述

上机考试题参考答案讲解.docx

《上机考试题参考答案讲解.docx》由会员分享,可在线阅读,更多相关《上机考试题参考答案讲解.docx(75页珍藏版)》请在冰豆网上搜索。

上机考试题参考答案讲解.docx

上机考试题参考答案讲解

上机考试题参考答案

1、编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。

例子如:

字符串中原有的内容为:

abcdefg,则调用该函数后,串中的内容为:

gfedcba。

试题程序:

#defineN10

fun(char*s)

{inti=0,t,n=strlen(s);

for(;s+i

{t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}

}

main()

{chara[N];

clrscr();

printf("Enterastring:

");gets(a);

printf("Theoriginalstringis:

");puts(a);

fun(a);

printf("\n");

printf("Thestringaftermodified:

");

puts(a);

}

2、写程序,实现矩阵(3行3列)的转置(即行列互换)。

intfun(intarray[3][3])

{inti,j,t;

for(i=0;i<2;i++)

for(j=i+1;j<3;j++)

{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}

}

main()

{inti,j;

intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};

clrscr();

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf("%7d",array[i][j]);

printf("\n");

}

fun(array);

printf("Convertedarray:

\n");

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

printf("%7d",array[i][j]);

printf("\n");

}

}

3、请编一个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。

形参n给了数组中数据的个数:

利用指针odd返回奇数之和,利用指针even返回偶数之和

例如:

数组中的值依次为:

1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。

试题程序。

fun(int*a,intn,int*odd,int*even)

{inti;*even=0;*odd=0;

for(i=0;i

if(!

(a[i]%2))

*even+=a[i];

else

*odd+=a[i];

}

main()

{inta[6]={1,9,2,3,11,6},i,n=6,odd,even;

clrscr();

printf("Theoriginaldatais:

\n");

for(i=0;i

printf("\n\n");

fun(a,n,&odd,&even);

printf("Thesumofoddnumbers:

%d\n",odd);

printf("Thesumofevennumber:

%d\n",even);}

4、要求程序的功能是:

把20个随机数存入一个数组,然后输出该数组中的最小值。

其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。

试题程序。

#defineVSIZE20

intfun(intlist[],intsize)

{inti,j=0;

for(i=1;i

if(list[i]

j=i;

returnj;

}

main()

{

inti;

intvector[VSIZE];

clrscr();

for(i=0;i

{

vector[i]=rand();

printf("Vector[%d]=%6d\n",i,vector[i]);

}

i=fun(vector,VSIZE);

printf("\nMininum:

vector[%d]=%6d\n",i,vector[i]);}

5、请编一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。

例如:

h值为8.32433,则函数返回8.32;

h值为8.32533,则函数返回8.33。

试题程序。

floatfun(floath)

{longt;

h=h*1000;

t=(h+5)/10;

return(float)t/100;

}

main()

{

floata;

clrscr();

printf("Entera:

");scanf("%f",&a);

printf("Theoriginaldatais:

");

printf("%f\n\n",a);

printf("Theresult:

%6.2f\n",fun(a));}

6、编写函数fun,函数的功能是:

从字符串中删除指定的字符。

同一字母的大、小写按不同字符处理。

若程序执行时,输入字符串为:

turbocandBorlandc++从键盘上输入字符:

n,则输出后变为:

turbocadborladc++如果输入的字符串不存在,则字符串照原样输出。

试题程序。

intfun(chars[],intc)

{inti,k=0;

for(i=0;s[i];i++)

if(s[i]!

=c)s[k++]=s[i];

s[k]='\0';

}

main()

{staticcharstr[]="turbocandborlandc++";

charch;

clrscr();

printf(":

%s\n",str);

printf(":

");

scanf("%c",&ch);

fun(str,ch);

printf("str[]=%s\n",str);}

7、请编写一个unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。

例如:

w值为5923,则函数返回923;w值为923则函数返回23。

试题程序。

unsignedfun(unsignedw)

{if(w>=10000)returnw%10000;

if(w>=1000)returnw%1000;

if(w>=100)returnw%100;

returnw%10;

}

main()

{unsignedx;

printf("enteraunsignedintegernumber:

");

scanf("%u",&x);

if(x<10)printf("dataerror!

");

elseprintf("theresult:

%u\n",fun(x));}

8、编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。

试题程序。

#defineMAX100

intfun(intlim,intaa[MAX])

{inti,j=0,k;

for(k=2;k

{for(i=2;i

if(!

(k%i))break;

if(i>=k)aa[j++]=k;

}

returnj;

}

main()

{intlimit,i,sum;

intaa[MAX];

printf("\ninputaintegernumber:

");

scanf("%d",&limit);

sum=fun(limit,aa);

for(i=0;i

{if(i%10==0&&i!

=0)

printf("\n");

printf("%5d",aa[i]);

}}

9、请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

试题程序。

#defineM4

#defineN5

intfun(inta[M][N])

{intsum=0,i;

for(i=0;i

sum+=a[0][i]+a[M-1][i];

for(i=1;i

sum+=a[i][0]+a[i][N-1];

returnsum;

}

main()

{intaa[M][N]={{1,3,5,7,9},

{2,9,9,9,4},

{6,9,9,9,8},

{1,3,5,7,0}};

inti,j,y;

clrscr();

printf("Theoriginaldatais:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

y=fun(aa);

printf("\nThesum:

%d\n",y);

printf("\n");

}

10、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。

例如,原来的字符串为CEAedca,排序后输出为CedcEAa。

试题程序。

intfun(char*s,intnum)

{inti,j,t;

for(i=1;i

for(j=i+1;j

if(s[i]

{t=s[i];

s[i]=s[j];

s[j]=t;

}

}

main()

{chars[10];

clrscr();

printf("输入7个字符的字符串:

");

gets(s);

fun(s,7);

printf("\n%s",s);}

11、请编一函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主函数中赋予。

试题程序。

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{inti,j;

for(i=0;i

{pp[i]=tt[0][i];

for(j=0;j

if(tt[j][i]

}

}

main()

{intt[M][N]={{22,45,56,30},

{19,33,45,38},

{20,22,66,40}};

intp[N],i,j,k;

clrscr();

printf("theoriginaldatais:

\n");

for(i=0;i

{for(j=0;j

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\ntheresultis:

\n");

for(k=0;k

printf("%4d",p[k]);

printf("\n");}

12、写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。

(注意:

用****作为结束输入的标志。

试题程序。

fun(char(*a)[81],intnum,char**max)

{char*p=a[0];inti;

for(i=1;i

if(strlen(a[i])>strlen(p))

p=a[i];

*max=p;

}

main()

{charss[10][81],*ps;

intn,i=0;

clrscr();

printf("enterstring:

\n");

gets(ss[i]);

puts(ss[i]);

while(!

strcmp(ss[i],"****")==0)

{

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

fun(ss,n,&ps);

printf("\nmax=%s\n",ps);

}

13、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。

函数的功能是:

删除所有值为y的元素。

数组元素中的值和y的值由主函数通过健盘读入。

试题程序。

#defineM20

voidfun(intbb[],int*n,inty)

{inti,j=0;

for(i=0;i<*n;i++)

if(bb[i]!

=y)bb[j++]=bb[i];

*n=j;

}

main()

{intaa[M],n,y,k;

printf("\npleaseentern:

");

scanf("%d",&n);

printf("\nenter%dpositivenumber:

\n",n);

for(k=0;k

printf("theoriginaldatais:

\n");

for(k=0;k

printf("\nenteranumbertodeleted:

");

scanf("%d",&y);

fun(aa,&n,y);

printf("thedataafterdeleted%d:

\n",y);

for(k=0;k

printf("\n");

}

14、编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为:

asdasasdfgasdaszx67asdmklo,子字符串为:

as,则应输出6。

试题程序。

intfun(char*str,char*substr)

{inti,n=0,s=strlen(str);

for(i=0;i

if((str[i]==substr[0])&&(str[i+1]==substr[1]))

n++;

returnn;

}

main()

{

charstr[81],substr[3];

intn;clrscr();

printf("enter1:

");

gets(str);

printf("enter2:

");

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf("n=%d\n",n);}

15、请编写一个函数intfun(intx),它的功能是:

判断整数x是否是同构数。

若是同构数,函数返回1;否则返回0。

所谓“同构数”是指这样的数,它出现在它的平方数的右边。

例如:

输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。

x的值由主函数从健盘读入,要求不大于100。

试题程序。

intfun(intx)

{intxx=x*x;

if(xx==x||xx%10==x||xx%100==x)return1;

elsereturn0;

}

main()

{intx,y;

clrscr();

printf("\npleaseenteraintegernumbers:

");

scanf("%d",&x);

if(x>100){printf("dataeror!

\n");exit(0);}

y=fun(x);

if(y)printf("%dyes\n",x);

elseprintf("%dno!

\n",x);

}

16、请编写函数fun,函数的功能是:

在字符串中所有数字字符前加一个$字符。

例如,输入:

A1B23CD45,则输出为:

A$1B$2$3CD$4$5。

试题程序:

voidfun(char*s)

{chara[100];

inti=0;

while(*s)

if(*s>='0'&&*s<='9'){a[i++]='$';a[i++]=*s++;}

elsea[i++]=*s++;

a[i]='\0';

strcpy(s,a);

}

main()

{chars[80];

printf("enterastring:

");

scanf("%s",s);

fun(s);

printf("theresult:

%s\n",s);}

17、请编一个函数fun(char*s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。

例如:

原有的字符串为:

Mn.123xyZ,则调用该函数后,串中的内容为:

n.123xyZM。

试题程序:

#defineN81

fun(char*s)

{charc=*s;

for(;*(s+1);s++)

*s=*(s+1);

*s=c;

*(s+1)='\0';

}

main()

{chara[N];

clrscr();

printf("enterastring:

");

gets(a);

printf("theoriginalstringis:

");

puts(a);

fun(a);

printf("thestringaftermodified:

");

puts(a);}

18、请编写函数fun,函数的功能是:

将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,若输入:

17,则应输出:

9和46891012141516。

试题程序。

voidfun(intm,int*k,intxx[])

{inti,j;

*k=0;

for(i=2;i

for(j=2;j

if(i%j==0)

{xx[(*k)++]=i;break;}

}

main()

{intm,n,zz[100];

printf("\npleaseenteranintegernumberbetween10and100:

"

);

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nthereare%dnon-primenumberslessthan%d:

",m,n);

for(n=0;n

printf("\n%4d",zz[n]);}

19、请编一个函数fun(char*s),函数的功能是把字符串中所有的字母改写成该字母的下一个字母,最后一个字母z改写成字母a。

大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。

例如:

原有的字符串为:

Mn.123zyZ,则调用该函数后,串中的内容为:

No.123yzA。

试题程序。

#defineN81

fun(char*s)

{inti,n=strlen(s);

for(i=0;i

{if((s[i]>='A'&&s[i]<'Z')||(s[i]>='a'&&s[i]<'z'))

s[i]=s[i]+1;

elseif(s[i]=='z')s[i]='a';

elseif(s[i]=='Z')s[i]='A';

}

}

main()

{chara[N];

clrscr();

printf("enterastring:

");gets(a);

printf("theoriginalstringis:

");puts(a);

fun(a);

printf("thestringaftermodified:

");

puts(a);}

20、请编写函数fun,函数的功能是:

将s所指字符串中、下标为奇数位置上的大写字母转换为字母序列中的下一个小写字母;若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。

例如,输入:

ABCdxZZZ,则输出为:

AcCdXzZz。

试题程序。

#defineN80

voidfun(char*s)

{

inti;

for(i=1;i

if(s[i]>='A'&&s[i]<'Z')

s[i]+=32+1;

elseif(s[i]=='Z')s[i]+=32;

}

main()

{

chars[N];

printf("\nenterastring:

");scanf("%s",s);

fun(s);

printf("\ntheresult:

%s\n",s);}

21、程序定义了N*N的二维数组,并在主函数中赋值。

请编写函数fun,函数的功能是:

给数组周边元素置0值。

试题程序。

#defineN5

fun(intw[][N])

{inti;

for(i=0;i

{w[i][0]=0;

w[i][N-1]=0;

w[0][i]=0;

w[N-1][i]=0;

}

}

main()

{inta[N][N],i,j;

clrscr();

printf("*****Thearray*****\n");

for(i=0;i

{for(j=0;j

{a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

fun(a);

printf("*****Theresult*****\n");

for(i=0;i

{for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}}

22、请编写函数fun,它的功能是:

求出ss所指字符串中、指定字符的个数,并返回此值。

例如:

若输入字符串:

123412132,输入字符为:

1,则输出:

3。

试题程序。

#defineM81

#include

intfun(char*ss,charc)

{intnum=0;

while(*ss!

='\0')

{if(*ss==c)num++;

ss++;

}

return(num);

}

main()

{chara[M],ch;

clrscr();

printf("\nPleaseenterastrint:

");gets(a);

printf("\nPleaseenterach

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1