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

下载本文档

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

文档简介

上机考试题参考答案1、 编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。试题程序:#define N 10fun(char *s) int i=0,t,n=strlen(s);for(;s+is+n-1-i;i+)t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;main() char aN;clrscr();printf(Enter a string:); gets(a);printf(The original string is:);puts(a);fun(a);printf(n);printf(The string after modified:);puts(a); 2、 写程序,实现矩阵(3行3列)的转置(即行列互换)。int fun(int array33) int i,j,t;for(i=0;i2;i+)for(j=i+1;j3;j+)t=arrayij;arrayij=arrayji;arrayji=t;main() int i,j;int array33=100,200,300,400,500,600,700,800,900;clrscr();for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf(n);fun(array);printf(Converted array:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf(n);3、 请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶数之和例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。试题程序。fun(int *a,int n,int *odd,int *even) int i; *even=0;*odd=0;for(i=0;in;i+)if(!(ai%2)*even+=ai;else*odd+=ai;main() int a6=1,9,2,3,11,6,i,n=6,odd,even;clrscr();printf(The original data is:n);for(i=0;in;i+) printf(%5d,*(a+i);printf(nn);fun(a,n,&odd,&even);printf(The sum of odd numbers:%dn,odd);printf(The sum of even number:%dn,even);4、 要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。试题程序。#define VSIZE 20int fun(int list,int size) int i,j=0;for(i=1;isize;i+)if(listilistj)j=i;return j;main()int i; int vectorVSIZE;clrscr();for(i=0;i=2)位的整数,函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23。试题程序。unsigned fun( unsigned w ) if(w=10000) return w%10000;if(w=1000) return w%1000;if(w=100) return w%100;return w%10;main() unsigned x;printf( enter a unsigned integer number : );scanf( %u,&x);if(x10) printf(data error!);else printf (the result :%un, fun(x);8、 编写函数int fun(int lim,int aaMAX),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。试题程序。#define MAX 100int fun( int lim, int aaMAX) int i,j=0,k;for( k=2; klim; k+) for( i=2; i=k) aaj+=k;return j;main() int limit,i,sum;int aaMAX;printf(n input a integer number:);scanf( %d,&limit);sum=fun(limit,aa);for(i=0; isum; i+) if(i%10=0&i!=0)printf(n);printf(%5d, aai);9、 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。试题程序。#define M 4#define N 5 int fun(int aMN)int sum=0,i;for(i=0;iN;i+)sum+=a0i+aM-1i;for(i=1;iM-1;i+)sum+=ai0+aiN-1;return sum ;main() int aaMN=1,3,5,7,9,2,9,9,9,4,6,9,9,9,8,1,3,5,7,0;int i,j,y;clrscr();printf(The original data is :n);for(i=0;iM;i+)for(j=0;jN;j+) printf(%6d,aaij);printf(n);y=fun(aa);printf(nThe sum: %dn,y);printf(n);10、 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。试题程序。int fun(char *s,int num) int i,j,t;for(i=1;inum-2;i+)for(j=i+1;jnum-1;j+)if(sisj) t=si;si=sj;sj=t;main() char s10;clrscr();printf(输入7个字符的字符串:);gets(s);fun(s,7);printf(n%s,s);11、 请编一函数void fun(int ttMN,int ppN),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主函数中赋予。试题程序。#define M 3#define N 4void fun(int ttMN,int ppN) int i, j;for(i=0;iN;i+) ppi=tt0i;for(j=0;jM;j+)if(ttjippi) ppi=ttji;main() int tMN= 22,45,56,30,19,33,45,38,20,22,66,40;int pN,i,j,k;clrscr();printf(the original data is:n);for(i=0;iM;i+)for(j=0;jN;j+)printf(%6d,tij);printf(n);fun(t,p);printf(nthe result is:n);for(k=0;kN;k+)printf(%4d,pk);printf(n);12、 写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用*作为结束输入的标志。)试题程序。fun(char (*a)81, int num,char *max) char *p=a0;int i;for(i=1;istrlen(p)p=ai; *max=p;main() char ss1081,*ps;int n,i=0;clrscr();printf(enter string:n);gets(ssi);puts(ssi);while(!strcmp(ssi,*)=0)i+;gets(ssi);puts(ssi);n=i;fun(ss,n,&ps);printf(nmax=%sn,ps);13、 请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。数组元素中的值和y的值由主函数通过健盘读入。试题程序。#define M 20 void fun (int bb, int *n,int y) int i,j=0;for( i=0; i*n; i+)if(bbi!=y) bbj+=bbi;*n=j;main() int aaM,n,y,k;printf(nplease enter n:);scanf(%d,&n);printf(nenter %d positive number:n, n);for( k=0; kn; k+) scanf( %d,&aak);printf(the original data is: n);for( k=0; kn; k+) printf( %5d, aak);printf( nenter a number to deleted:);scanf(%d,&y);fun(aa,&n,y);printf(the data after deleted %d:n, y);for(k=0; kn; k+) printf(%4d,aak);printf(n);14、 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出6。试题程序。int fun(char *str,char *substr) int i,n=0,s=strlen(str);for(i=0;i100)printf(data eror!n);exit(0);y=fun(x);if(y) printf(%d yesn,x);else printf (%d no!n,x);16、 请编写函数fun,函数的功能是:在字符串中所有数字字符前加一个$字符。例如,输入:A1B23CD45,则输出为:A$1B$2$3CD$4$5。试题程序:void fun( char *s)char a100;int i=0;while(*s)if(*s=0&*s=9) ai+=$;ai+=*s+;else ai+=*s+; ai=0;strcpy(s,a);main() char s80;printf(enter a string:);scanf(%s, s);fun(s);printf(the result: %sn, s);17、 请编一个函数fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM。试题程序:#define N 81 fun(char *s) char c=*s;for(;*(s+1);s+)*s=*(s+1);*s=c;*(s+1)=0;main() char aN;clrscr();printf(enter a string:);gets(a);printf(the original string is:);puts(a);fun(a);printf(the string after modified:);puts(a);18、 请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和4 6 8 9 10 12 14 15 16。试题程序。void fun( int m, int *k, int xx ) int i,j;*k=0;for( i=2; im; i+)for( j=2; ji; j+)if( i%j=0) xx(*k)+=i; break;main() int m, n,zz100;printf(n please enter an integer number between 10 and 100: );scanf( %d,&n);fun(n,&m,zz);printf(nn there are %d non-prime numbers less than %d: , m,n);for(n=0; nm; n+)printf(n %4d,zzn);19、 请编一个函数fun(char *s),函数的功能是把字符串中所有的字母改写成该字母的下一个字母,最后一个字母z改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。例如:原有的字符串为:Mn.123zyZ,则调用该函数后,串中的内容为:No.123yzA。试题程序。#define N 81 fun(char *s) int i,n=strlen(s);for(i=0;i=A&si=a&siz)si=si+1;else if(si=z) si=a;else if(si=Z) si=A;main() char aN;clrscr();printf(enter a string:);gets(a);printf(the original string is:);puts(a);fun(a);printf(the string after modified:);puts(a);20、 请编写函数fun,函数的功能是:将s所指字符串中、下标为奇数位置上的大写字母转换为字母序列中的下一个小写字母;若该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。例如,输入:ABCdxZZZ,则输出为:AcCdXzZz。试题程序。#define N 80 void fun(char *s)int i;for(i=1;i=A&siZ)si+=32+1;else if(si=Z) si+=32;main()char sN;printf(nenter a string:);scanf(%s,s);fun(s);printf(nthe result:%sn,s);21、 程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:给数组周边元素置0值。试题程序。#define N 5fun(int wN) int i ;for(i=0;iN;i+) wi0=0;wiN-1=0;w0i=0;wN-1i=0;main() int aNN,i,j;clrscr();printf(* The array *n);for(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%10;printf(%4d,aij);printf(n);fun(a);printf(* The result *n);for(i=0;iN;i+) for(j=0;jN;j+)printf(%4d,aij);printf(n);22、 请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值。例如:若输入字符串:123412132,输入字符为:1,则输出:3。试题程序。#define M 81#include int fun(char *ss,char c)int num=0;while(*ss!=0)if(*ss=c) num+;ss+;return(num);main()char aM,ch;clrscr();printf(nPlease enter a strint:);gets(a);printf(nPlease enter a char:);ch=getchar();printf(nThe number of the char is:%dn,fun(a,ch);23、 程序定义了N*N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。试题程序。#define N 5double fun (int wN) int i,t=0;double s=0;for(i=0;iN;i+)s+=wi0+wiN-1; t+=2;for(i=1;iN-1;i+)s+=w0i+wN-1i; t+=2;s=s/t;return s;main() int aNN=0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1;int i,j;double s;clrscr();printf(* The array *n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n);s=fun(a);printf(* The result *n);printf(The sum is %lfn,s);24、 编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)。例如,分别输入下面两个字符串:FirstSrtingSecondString程序输出:FirstStringSecondString试题程序。void fun(char p1,char p2)int i,j;for(i=0;p1i;i+);for(j=0;p2j;j+)p1i+=p2j;p1i=0;main() char s180,s280;clrscr();printf(Enter s1 and s2:n);scanf(%s%s,s1,s2);printf(s1=%sn,s1);printf(s2=%sn,s2);printf(Invoke fun(s1,s2):n);fun(s1,s2);printf(After invoking:n);printf(%sn,s1);25、 程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),函数的功能是:使数组第一列元素中的值与最后一列元素中的值对调、第二列元素的值与倒数第二列中的值对调、其他依次类推。试题程序。#define N 5 int fun(int aN) int i ,m,t;for(m=0;mN;m+)for(i=0;iN/2;i+)t=ami;ami=amN-1-i;amN-1-i=t;main() int aNN,i,j;clrscr();printf(* The array *n);for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%30;printf(%4d,aij);printf(n);fun(a);printf(* The result *n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n);26、 请编写函数fun,函数的功能是:实现B=A+A,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。试题程序。void fun(int a33,int b33)int i,j;printf(zhuan zhi is:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,aji);printf(n);for(i=0;i3;i+)for(j=0;j3;j+) bij=aij+aji;main()int a33=1,2,3,4,5,6,7,8,9,t33;int i,j;clrscr();printf(a is:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,aij);printf(n);fun(a,t);printf(n);printf(t is:n);for(i=0;i3;i+) for(j=0;j3;j+)printf(%7d,tij);printf(n);27、 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。例如,当score 数组中的数据为:10、20、30、40、50、60、70、80、90、时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。试题程序。int fun(int score,int m, int below) int i,j=0,aver=0;for(i=0;im;i+)aver+=scorei;aver/=m;printf(aver=%dn,aver);for(i=0;im;i+)if(scoreiaver)belowj+=scorei;return j;main() int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;clrscr(); printf(n the score are :); for(i=0;i9;i+)printf(%4d,scorei);printf(n);n=fun(score,9,below);printf(nBelow the average score are :);for(i=0;in;i+) printf(%4d,belowi);28、 程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),函数的功能是:使数组左下半三角元素中的值全部置成0。试题程序。#define N 5int fun(int aN)int i,j;for(i=0;iN;i+)for(j=0;j=i;j+)aij=0;main()int aNN,i,j;clrscr();printf(* The array *n);for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%10;printf(%4d,aij);printf(n);fun(a);printf(The resultn);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n);29、 请编写函数fun,经的功能是:求出1到100之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。试题程序。void fun(int *a,int *n) int i,m=0;for(i=1;i100;i+)if(i%7=0)|(i%11=0)&!(i%7=0)&(i%11=0)am=i;m+=1;*n=m; main() int aa100,n,k;clrscr();fun(aa,&n);for(k=0;kn;k+)if(k+1)%10=0) printf(n);else printf(%d,aak);30、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),函数的功能是:使数组右上半三角元素中的值全部置成0。试题程序。#define N 5 int fun(int aN) int i,j;for(i=0;iN;i+)for(j=i;jN;j+)aij=0; main() int aNN,i,j;clrscr();printf(* The array *n);for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%20; printf(%4d,aij);printf(n);fun(a);printf(THE RESULTn);for(i=0;iN;i+)for(j=0;jN;j+) printf(%4d,aij);printf(n);31、 编写函数void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶数的各整数,并放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x 中的值为:30,则有4个数符合要求,它们是1,3,5,15。试题程序。void fun(int x, int pp, int *n) int i,j=0;for( i=1;i=x; i=i+2)if( x%i=0)ppj+=i;*n=j;main() int x, aa1000, n, i;printf(n please enter an integer number:n); scanf(%d,&x);fun(x,aa,&n);for(i=0;in;i+)printf(%d , aai);printf(n);32、 程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN,int n),函数的功能是:使数组右上半三角元素中的值乘以m。试题程序。#define N 5 int fun( int aN, int m) int i,j;for(i=0; i=i; j-)aij*=m;main() int aNN,m,i,j;printf(* the array *n);for( i=0; iN;i+) for( j=0; j=3);printf(m=%4dn, m);fun( a,m);printf( the result n);for(i=0; iN; i+)for(j=0; jN; j+) printf(%4d, aij);printf(n);33、 编写一个函数void fun(char *tt,int pp),统计在tt字符串中a到z26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0试题程序。void fun(char *tt,int pp) int i;for(i=0;i26;i+)ppi=0;for(;*tt;tt+)if(*tt=a)pp*tt-97+; main() char aa1000;int bb26,k;clrscr();printf(nPlease enter a char string:);scanf(%s,aa);fun(aa,bb);for(k=0;k26;k+) printf(% d, ,bbk);printf(n);34、程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN,int n),函数的功能是:使数组左下半三角元素中的值乘以n。 试题程序。#define N 5int fun( int aN, int n) int i,j;for(i=0; iN; i+)for(j=0; j=i; j+)aij*=n;main() int aNN,n,i,j;printf(* the array *n);for( i=0; iN; i+)for( j=0; j=3);printf(n=%4d n, n);fun( a,n);printf( * the result *n);for(i=0;iN; i+)for(j=0; jN; j+) printf(%4d, aij);printf(n);35、函数fun的功能是:将两个两位数的整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如:当a=45,b=12。调用该函数后,c=4251试题程序。void fun(int a, int b, long *c) int i,j,k,n;i=a%10; j=a/10; k=b%10; n=b/10;*c=j*1000+k*100+i*10+n;main() int a,b; long c;printf( input a, b: );scanf(%d%d, &a,&b);fun(a,b,&c);printf( the result is :%ldn, c);36、请编写一个函数void fun(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。试题程序。void fun(int m, int k, int xx) int i,j=0,p=m+1;dofor( i=2; i=p) xxj+=p;p+; while(jk); main() int m,n,zz1000;printf(n please enter two integers: );scanf(%d%d,&m,&n);fun( m,n,zz);for(m=0; mn; m+)printf(%d , zzm);printf(n);37、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。试题程序。#include #include #define N 10typedef struct ss char num10; int s; STU;fun( STU a, STU *s) int k,i;(*s).s=a0.s;for( i=0;iN; i+)if (ai.s(*s).s)(*s).s=ai.s; k=i; strcpy ( (*s).num, ak.num);main() STU aN= A01,81,A02,89,A03,66,A04,87,A05,77,A06,90,A07,79,A08,61,;A09,80,A10,71 , m;int i;printf(* the original data *n);for(i=0;iN; i+) printf(N0=%s Mark=%dn, ai.num,ai.s);fun( a,&m);printf(* the result*n);printf( the lowest: %s ,%dn, m.num,m.s);38、请编写一个函数void fun(char a,int k,int n),其功能是:删除字符串中指定下标开始的n 个字符。其中,a指向字符串,k中存放指定的下标。例如,字符串内容为:Hellollo World!,k中值为:5,n中的值为:3,则调用该函数的结果为:Hello World!。试题程序。#include #define N 80void fun( char *a, int k, int n) int m=strlen(a),i;for(i=k+n; im; i+) ak+=ai;ak=0

温馨提示

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

评论

0/150

提交评论