上机考试题参考答案_第1页
上机考试题参考答案_第2页
上机考试题参考答案_第3页
上机考试题参考答案_第4页
上机考试题参考答案_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机考试题参考答案

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

例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba0

试题程序:

ftdefineN10

fun(char*s)

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

for(;s+i<s+n-l-i;i++)

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

)

main()

{chara[N];

clrscrO;

printf(^Enterastring:");gets(a);

printf(^Theoriginalstringis:*);puts(a);

fun(a);

printf(〃\n〃);

printf(^Thestringaftermodified:");

puts(a);

1

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

intfun(intarray[3][3])

{inti,j,t;

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

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

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

)

mainO

{inti,j;

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

clrscrO;

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

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

printf(螺7d〃,array[i][j]);

printf("\n〃);

)

fun(array);

printf("'ConvertedarrayAn");

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

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

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

printfC\nO;

)

)

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

之和以及所有偶数之和。形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回

偶数之和

例如:数组中的值依次为:1,8,2,3,11,6;则利用指针。dd返回奇数之和24;利用指针even返

回偶数之和8。

试题程序。

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

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

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

if(!(a[i]%2))

*even+=a[i];

else

*odd+=a[i];

)

main()

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

clrscrO;

printf(,zTheoriginaldatais:\n");

for(i=0;i<n;i++)printf("%5d”,*(a+i));

printf("\n\n〃);

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

printf(^Thesumofoddnumbers:%d\n/z,odd);

printf(""Thesumofevennumber:%d\nz,,even);)

4、要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值

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

试题程序。

ttdefineVSIZE20

intfun(intlist[],intsize)

{inti,j=0;

for(i=l;i<size;i++)

if(list[i]<list[j])

j=i;

returnj;

)

mainO

(

inti;

intvector[VSIZE];

clrscrO;

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

(

vector[i]=rand();

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

)

i=fun(vector,VSIZE);

printf(^XnMininum:vector[%d]=%6d\n,z,i,vector[i]);)

5、请编•个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位

进行四舍五入(规定h中的值为正数)。

例如:h值为8.32433,则函数返回8.32:

h值为8.32533,则函数返回&33。

试题程序。

floatfun(floath)

{longt;

h=h*lOOO;

t=(h+5)/10;

return(float)t/100;

)

mainO

(

floata;

clrscrO;

printf("Entera:;scanf(〃%f”,&a);

printf(^Theoriginaldatais:");

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

printf("Theresult:%6.2f\n〃,fun(a));}

6、编写函数fun,函数的功能是:从字符串中删除指定的字符。同•字母的大、小写按不同字符处

理。

若程序执行时,输入字符串为:turbocandBorlandC++从键盘上输入字符:n,则输出后变为:turbo

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

试题程序。

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;

clrscrO;

printf(〃:%s\n”,str);

printf;

scanf(〃枇〃,&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)return哪10000;

if(w>=1000)returnw%1000;

if(w>=100)returnw%100;

returnw%10;

1

main()

{unsignedx;

printf("enteraunsignedintegernumber:〃);

scanf(找u〃,&x);

if(x<10)printf(z,dataerror!z/);

elseprintf(〃lheresultfun(x));}

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

数组中,该函数返回所求出素数的个数。

试题程序。

ttdefineMAX100

intfun(intlim,intaa[MAX])

{inti,j=O,k;

for(k=2;k<lim;k++)

{for(i=2;i<k;i++)

if(!(k%i))break;

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

)

returnj;

1

main()

{int1imit,i,sum;

intaa[MAX];

printf(〃\ninputaintegernumber:");

scanfC

sum=fun(1imit,aa);

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

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

printf("\n〃);

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

1)

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

在主函数中赋予。

试题程序。

ttdefineM4

^defineN5

intfun(inta[M][N])

{intsum=0,i;

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

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

for(i=l;i<M-l;i++)

sum+=a[i][O]+a[i][NT];

returnsum;

}

mainO

{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;

clrscrO;

printf(^Theoriginaldatais:\n〃);

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

(for(j=0;j<N;j++)printf("%6d〃,aa[i][j]);

printf(〃\n");

)

y=fun(aa);

printf(〃\nThcsum:%d\n”,y);

printf("\n〃);

)

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

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

试题程序。

intfun(char*s,intnum)

(inti,j,t;

for(i=l;i<num-2;i++)

for(j=i+l;j<num-l;j++)

if(s[i]<s[j])

(t=s[i];

s[i]=s[j];

s[j]=t;

)

)

main()

{chars[10];

clrscrO;

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<N;i++)

{pp[i]=tt[O]⑴;

for(j=0;j<M;j++)

if(tt[j][i]<pp[i])pp[i]=tt[j][i];

)

)

main()

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

{19,33,45,38},

{20,22,66,40}};

intp[N],i,j,k;

clrscrO;

printf(^theoriginaldatais:\n〃);

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

(for(j=0;j<N;j++)

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

printf(〃\n〃);

)

fun(t,p);

printf(〃\ntheresultis:\n〃);

for(k=0;k<N;k++)

printfC%4d/z,p[k]);

printf(〃\n〃);}

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

址。(注意:用****作为结束输入的标志。)

试题程序。

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

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

for(i=l;i<num;i++)

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

P=a[i];

*max二p;

)

mainO

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

intn,i=0;

clrscrO;

printf("enterstring:\n");

gets(ss[i]);

puts(ss[i]);

while(Istrcmp(ss[i],"****")==0)

(

i++;

gets(ss[i]);

puts(ss[i]);

)

n二i;

fun(ss,n,&ps);

printf("\nmaxGs\n〃,ps);

)

13、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有

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

试题程序。

ttdefineM20

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

{inti,j=0;

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

if(bb[i]!=y)bb[j++]=bb[i];

*n=j;

)

mainO

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

printf(^Xnpleaseentern:〃);

scanf("咏T,&n);

printf(^Xnenter%dpositivenumber:\n/z,n);

for(k=0;k<n;k++)scanf("%d”,&aa[k]);

printf(^theoriginaldatais:\rT);

for(k=0;k<n;k++)printf(,z%5d”,aa[k]);

printf(〃\nenteranumbertodeleted:");

scanf&y);

fun(aa,&n,y);

printf(*thedataafterdeleted%d:\n〃,y);

for(k=0;k<n;k++)printf("%4d”,aa[k]);

printfCXn");

)

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

定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:as,则应输出6。

试题程序。

intfun(char*str,char*substr)

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

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

if((str[i]==substr[O])&&(str[i+l]=substr[l]))

n++;

returnn;

)

main()

(

charstr[81],substr[3]:

intn;clrscr();

printfCenter1:");

gets(str);

printf("enter2:〃);

gets(substr);

puts(str);

puts(substr);

n=fun(sir,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;

)

mainO

{intx,y;

clrscrO;

printf(〃\npleaseenteraintegernumbers:");

scanf&x);

if(x>100){printf(,zdataeror!\n");exit(0);}

y=fun(x);

if(y)printf(,z%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>=,O'&&*s<='9'){a[i++]=';a[i++]=*s++;}

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

a[i]='\0';

strcpy(s,a);

)

mainO

{chars[80];

printf("enterastring:;

scanf("%s〃,s);

fun(s);

printf(^theresult:%s\n〃,s);}

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

个字符移到最后。

例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM。

试题程序:

itdefineN81

fun(char*s)

{charc=*s;

for(;*(s+l);s++)

*s=*(s+l);

*s=c;

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

)

main()

{chara[N];

clrscrO;

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<m;i++)

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

if(i%j=0)

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

)

main()

{intm,n,zz[100];

printf(〃\npleaseenteranintegernumberbetween10and100:“

);

scanf(

fun(n,&m,zz);

printf(〃\n\nthereare%dnon-primenumberslessthan%d:〃,m,n);

for(n=0;n<m;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<n;i++)

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

s[i]=s[i]+l;

elseif(s[i]二二,z,)s⑴二,a,;

elseif(s[i]==,Z*)s[i]-A*;

)

)

main()

{chara[N];

clrscrO;

printf(^enterastring:");gets(a);

printf(*theoriginalstringis:");puts(a);

fun(a);

printf(^thestringaftermodified:*);

puts(a);}

20、请编写函数fun,函数的功能是:将s所指字符串中、下标为奇数位置上的大写字母转换为字母

序列中的下一个小写字母;若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小

写字母z。

例如,输入:ABCdxZZZ,则输出为:AcCdXzZzo

试题程序。

^defineN80

voidfun(char*s)

(

inti;

for(i=l;i<N;i=i+2)

if(s[i]>=A*UstiKZ*)

s[i]+=32+l;

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

)

main()

(

chars[N];

printf(^Xnenterastring:");scanfs);

fun(s);

printf(*\ntheresult:%s\n,z,s);}

21、程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:

给数组周边元素置0值。

试题程序。

ttdefineN5

fun(intw[][N])

{inti;

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

{w[i][O]=O:

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

w[O][i]=O;

w[N-l][i]=O;

)

)

main()

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

clrscrO;

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

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

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

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

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

)

printf(〃\n");

)

fun(a);

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

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

{for(产O;j<N;j++)

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

printfC\n");

})

22、请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值。

例如:若输入字符串:123412132,输入字符为:1,则输出:3<,

试题程序。

ttdefineM81

ttinclude<stdio.h>

intfun(char*ss,charc)

lintnum=O;

while(*ss!=>\0*)

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

ss++;

1

return(num);

)

main()

(chara[M],ch;

clrscrO;

printf(*XnPleaseenterastrint:〃);gets(a);

printf("XnPleaseenterachar:");ch=getchar();

printf(〃\nThcnumberofthecharis:%d\n”,fun(a,ch));}

23、程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:

求出数组周边元素的平均值并作为函数值返回给主函数中的s。

试题程序。

ttdefineN5

doublefun(intw[][N])

{inti,t=0;

doubles=0;

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

{s+=w[i][0]+w[i][N-l];t+=2;}

for(i=l;i<N-l;i++)

{s+=w[0][i]+w[N-l][i];t+=2;)

s=s/t;

returns;

)

main()

{inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,11;

inti,j;

doubles;

clrscrO;

printf(''*****Thearray*****\n〃);

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

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

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

printfC\n*);

)

s=fun(a);

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

printf("Thesumis%lf\n〃,s);}

24、编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)。

例如,分别输入下面两个字符串:

FirstSrting

Secondstring

程序输IH:

FirstString-SecondString

试题程序。

voidfun(charpl[],charp2[])

(inti,j;

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

for(j=0;p2[j];j++)

pl[i++]=p2[j];

pl[i]=\0s;

)

main()

{charsi[80],s2[80];

clrscrO;

printf(z,Entersiands2:\n");

scanf("%s%s”,si,s2);

printf("sl=Ms\n",si);

printf("s2=%s\n”,s2);

printf(^Invokefun(sl,s2):\n");

fun(si,s2);

printf(^Afterinvoking:\n*);

printf(zz%s\n,z,si);)

25、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inl函数的功

能是:使数组第一列元素中的值与最后一列元素中的值对调、第二列元素的值与倒数第二列中的值对

调、……、其他依次类推。

试题程序。

ttdefineN5

intfun(inta[][N])

{inti,m,t;

for(m=0;m<N;m++)

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

{t=a[m][i];

a[m][i]=a[m][N-l-i];

a[m][N-l-i]=t;

)

)

main()

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

clrscrO;

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

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

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

(a[i][j]=rand()%30;printf(^Md'\aEi][j]);}

printf(〃\n");

}

fun(a);

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

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

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

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

printf(〃\n〃);

})

26、请编写函数fun,函数的功能是:实现B=A+AL即把矩阵A加上A的转置,存放在矩阵B中。

计算结果在main函数中输出。

试题程序。

voidfun(inta[3][3],intb[3][3])

{inti,j;

printfCzhuanzhiis:\n");

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

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

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

printf(〃\n〃);

)

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

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

b[i][j]=a[i][j]+a[j][i];

)

main()

{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];

inti,j;

clrscrO;

printf(*a[]is:\n");

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

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

printf(绘7d”,a[i][j]);

printf("\n");

)

fun(a,t);

printf("\n");

printf(z,t[]is:\n");

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

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

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

printfC\nO;

)

)

27、m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函

数值返回。

例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90、时,函数返回的人数应该

是4,below中的数据应为:10、20、30、40。

试题程序。

intfun(intscore[],intm,intbelow[])

{inti,j=0,aver=0;

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

aver+=score[i];

aver/=m;

printf("avcr=%d\n,,,aver);

fbr(i=O;i<m;i++)

if(score[i]<aver)

below[j++]=score[i];

returnj;

main()

{inti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,80,90);

clrscr();

printf("\nthescoreare

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

printf(',%4d",score,i|);

printf("\nH);

n=fun(score,9,below);

printf("\nBclowtheaveragescoreare

for(i=0;i<n;i++)printf(',%4d,',below[i|);

)

28、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),函数的功能是:

使数组左下半三角元素中的值全部置成0。

试题程序。

#defineN5

intfun(inta[][N])

{inti,j;

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

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

a[i][j]=O;

)

main()

{inta[N][N],ij;

clrscr();

printf(H***Thearray****\nM);

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

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

{a[i][j]=rand()%10;printf(',%4<i",a[i]|j]);}

printf("\n");

1

fun(a);

printf("Theresult\n");

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

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

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

printf("\n");

)1

29、请编写函数fun,经的功能是:求出1到100之内能被7或11整除、但不能同时被7和11整除

的所有整数井将它们放在a所指的数组中,通过n返回这些数的个数。

试题程序。

voidfun(int*a,int*n)

{inti,m=0;

fbr(i=l;i<100;i++)

if(((i%7==0)ll(i%Il==0))&&!((i%7==0)&&(i%ll==0)))

{a[m]=i;m+=l;}

*n=m;

)

main()

{intaa[100],n,k;

clrscr();

fun(aa,&n);

for(k=0;k<n;k++)

if((k+l)%10==0)printf("\n");

elseprintf(n%d,",aa[k]);}

30、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N])

,函数的功能是:使数组右上半三角元素中的值全部置成0。

试题程序。

#defineN5

intfun(inta[][N])

{inti,j;

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

for(j=i;j<N;j++)

a[i]U]=O;

}

main()

{inta[N][N],ij;

clrscr();

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

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

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

{a[i][j]=rand()%20;printfC'%4d,',a[i][j]);}

printf("\n");

)

fun(a);

prinlf("THERESULT\n");

for(i=0:i<N;i++)

{for(j=0;j<N;j++)printf("%4d",a[i][j]);

printf("\n");

)1

31、编写函数voidfun(intx,intpp口,int*n),它的功能是:求出能整除x且不是偶数的各整数,并放在

pp所指的数组中,这些除数的个数通过形参n返回。

例如,若x中的值为:30,则有4个数符合要求,它们是1,3,5,15o

试题程序。

voidfun(intx,intpp[|.int*n)

{inti,j=0;

fbr(i=l;i<=x;i=i+2)

if(x%i==0)

PPU++]=i;

*n=j;

1

main()

{intx,aa[1000|,n,i;

printf("\npleaseenteranintegernumber:\n");

scanf("%d",&x);

fun(x,aa,&n);

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

printf(H%d”,aa[i]);

printf("\n");}

32、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta口[N],i

ntn),函数的功能是:使数组右上半三角元素中的值乘以me

试题程序。

#defineN5

intfun(inta[][N],intm)

{inti,j;

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

for(j=N-l;j>=i;j-)

a[i][j]*=ni;

)

main()

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

printf(H****thearray****\n");

for(i=O;i<N;i++)

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

(a[i][j]=rand()%20;printf(u%4dn,a[i][j]);)

printf(n\n");

)

dom=rand()%10;while(m>=3);

printf("m=%4d\n",m);

fun(a,m);

printf("theresult\nH);

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

{for(j=0;j<N;j++)printf("%4d';a[i][j]);

prinlf(”\n");

))

33、编写•个函数voidfun(char*tt,intpp[]),统计在tt字符串中H到,z,26个字母各自出现的次数,并

依次放在pp所指数组中。

例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:

33322110000000000000000000

试题程序。

voidfun(charpp||)

{inti;

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

pp[i]=o;

for(;*tt;tt++)

if(*tt<='z'&&*tt>='a')

pp[*tt-97]++;

)

main()

{charaa[1000];

intbb[26],k;

clrscr();

printf("\nPleaseenteracharstring:,,);scanf(,'%sM,aa)

fun(aa,bb);

for(k=0;k<26;k++)printf("%d,n,bb[k]);

printfCAn");}

34、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),函

数的功能是:使数组左下半三角元素中的值乘以n。

试题程序。

ttdefineN5

intfun(inta[][N],intn)

{inti,j;

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

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

a[i]

)

main()

(inta[N][N],n,i,j;

printf(〃****thearray****\n");

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

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

{a[i][j]=rand()%10;printf(^%4d*,a[i][j]);}

printf(〃\n");

)

don=rand()%10;while(n>=3):

printf(〃n=%4d\n〃,n);

fun(a,n);

printf("****theresult****\n〃);

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

{for(j=0;j<N;j++)printf(z/%4dz/,a[i][j]);

printf("\n");

})

35、函数fun的功能是:将两个两位数的整数a、b合并形成一个整数放在c中。合并的方式是:将a

的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。

例如:当a=45,b=12o调用该函数后,c=42例

试题程序。

voidfun(inta,intb,long*c)

{inti,j,k,n;

i=a%10;j=a/10;k=b%10;n=b/10;

*c=j*1000+k*100+i*10+n;

)

main()

{inta,b;longc;

printf(Hinputa,b:");

scanf("%d%d,',&a,&b);

fun(a,b,&c);

printfC*theresultis:%ld\n'\c);}

36、请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素

数存入xx所指的数组中。

例如,若输入17,5,则应输出:19,23,29,31,37。

试题程序。

voidfun(intm,intk,intxx[])

{inti,j=0,p=m+l;

do

{for(i=2;i<p;i++)

if(p%i==O)break;

if(i>=p)xx|j++]=p;

P++;

)while(j<k);

)

main()

{intm,n,zz[1000];

printf("\npleaseentertwointegers:");

scanf("%d%d",&m,&n);

fun(m,n,zz);

fbr(m=0;m<n;m++)

printf("%d",zz[m]);

printf("\n");)

37、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,

函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有•个最低分)。

试题程序。

#include<stdio.h>

ttinclude<string.h>

ttdefineN10

typedefstructss

{charnum[10];ints;}STU;

fun(STUa[],STU*s)

{intk,i;

(*s).s=a[0].s;

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

if(a[i].s<(*s).s)

{(*s).s=a[i].s;k=i;}

strcpy((*s).num,a[k].num);

)

mainO

{STUa[N]={{"A01〃,81},{〃A02〃,89},{"A03〃,66}

,{〃A04〃,87},{〃A05〃,77},

[〃A06”,90},{〃A07〃,79},{〃A08〃,61},{〃;A09”,80},71}},m;

inti;

printf("****theoriginaldata****\n〃);

for(i=0;i<N;i++)printf("N0二版Mark二%d\n〃,a[i].num,a[i].s

);

fun(a,&m);

printf(*****theresull****\n〃);

printf("thelowest:%s,%d\n〃,m.num,m.s);

)

38、请编写•个函数voidfun(chara口,intk,intn),其功能是:删除字符串中指定下标开始的n个

字符。其中,a指向字符串,k中存放指定的卜标。

例如,字符串内容为:HellolloWorld!,k中值为:5,n中的值为:3,则调用该函数的结果为:Hello

WorId!o

试题程序。

#include<stdio.h>

ftdefineN80

voidfun(char*a,intk,intn)

{intm=strlen(a),i;

for(i=k+n;i<m;i++)a[k++]=a[i];

a[k]=\0f;

)

main()

{chars[N]=,,HellolloWorld!”;

intk,n;

printf(〃\ntheoriginalstring:%s'n',s);

printf(*enterindex---------------k:");

scanf&k);

printfenternumbertodelete----n:");scanf&n);

fun(s,k,n);

printf(〃\nthestringafterdeleted:%s\n',s);}

39、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,

函数的功能是:找出成绩最高的学生记录,通过形参返回主:函数(规定只有•个最高分)。

试题程序。

#include<stdio.h>

ttinclude<string.h>

#include<conio.h>

ttdefineN10

typedefstructss

{charnum[10];ints;}STU;

fun(STUa[],STU*s)

{inti;

*s=a[O];

for(i=l;i<N;i++)

if(a[i].s>(*s).s)

*s=a[i];

)

main()

{STUa[N]={{〃A01〃,81},{〃A02〃,89},{"A03〃,66}

,{〃A04”,87},{〃A05〃,77},

{〃A06”,90},{〃A07”,79},{"A08〃,61},{〃

;A09”,80},{“A10〃,71}},m;

inti;

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

for(i=0;i<N;i++)printf(/zN0=%sMark=%d\nz,,a[i].num,a[i].s

);

fun(a,&m);

printf("****theresult****\n〃);

printf(〃thetop:%s,%d\n/z,m.num,m.s);

)

40.已知数组s,要求求出最大值并指出最大值所在位置。

ttinclude"stdio.h〃

main()

{intmax2(inta,intb);

inta[10],i,m,max;

printf(^pelaseinput10data\n〃);

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

scanf&a[i]);

printf(〃\n");

max=a[0];

for(i=l;i<10;i++)

if(max2(max,a[i])>max)

{max=max2(max,a[i]);

m=i;

)

}

printf(〃max=%d\titis%dthdata\n〃,max,m+1);

)

intmax2(inta,intb)

{if(a>=b)returna;

elsereturnb;

)

41题:本题要求在数组里删除下标为奇数、同时ASCII值也为奇数的字符,并显示剩余后字符.

voidfun(char*s,chart[])

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

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

if(i%2==0||s[i]%2=0)

t[j++]=s[i];

t[j]=\0);

)

main()

{charaa[100];

intbb[100],k;

clrscrO;

printf(〃\nPleaseenteracharstring:");

scanf("%s”,aa);

fun(aa,bb);

printf(〃\n〃);

printfbb);}

42题:要求输入整数m,求出m项的和1+1/(1+2)+求(1+2+3)+….+1/(1+2+3+…+m)0

floatfun(intn)

Iinti,j;

floats,p;

s=0.0;p=0.0;

for(i=l;i<=n;i++)

{for(j=l;j<=i;j++)

P=P+j;

s=s+l.0/p;

p=0.0;

)

returns;}

main()

{intm;

floatn;

printf(*XnPleaseenteronedata:");

scanfm);

n=fun(m);

printf("\n〃);

printfC%r,n);}

43题:本题要求在数组里删除下标为奇数、同时ASCH值偶数的字符,并显示剩余后字符.

voidfun(char*s,chart[])

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

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

if(i%2==0||s[i]%2!=0)

t[j++]=s[i];

t[j]=\0r;

)

mainO

{charaa[100]:

intbb[100],k;

clrscrO;

printf(^XnPleaseenteracharstring:");

scanf(〃%s〃,aa);

fun(aa,bb);

printf("\n〃);

printf(〃%s〃,bb);}

44题:要求输入整数m,求出m项的和1T/3+1/5T/7+.+l/(2i+l)。

floatfun(float*sn,intn)

(inti;

floatk=-l.;

*sn=0;

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

(k=-k;

*sn=*sn+k/(2*i+l);

)

return*sn;

)

main()

{intm;

float*sn;

printf("\nPleaseenteronedata:");

scanf&m);

*sn=0.0;

*sn=fun(sn,m);

printf(〃\n");

printfC%f\*sn);}

45题:本题要求在数组里要删除下标为偶数、同时ASCII值奇数的字符,并显示剩余后字符.

voidfun(char*s,chart[])

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

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

if(i%2||!(s[i]%2))

t[j++]=s[i];

t[j]=>\O,;

}

main()

{charaa[100];

intbb[100],k;

clrscrO;

printf(^XnPleaseenteracharstring:");

scanfaa);

fun(aa,bb);

printf("\n〃);

printfbb);}

46g:本题输入两个整数m,n,求出m!/(n!*(m-n)!)

floatfun(intm,intn)

(inti;

doublet=l;

for(i=l;i<=m;i++)l*=i;

printft);

for(i=l;i<=n;i++)t/=i;

printf(*2t);

for(i=l;i<=m-n;i++)t/=i;

pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论