c语言函数上机试题 C语言上机题
一道C语言上机改错题
错误不是double,float的问题,是你在函数定义的时候根本没有返回值,在函数体中却有return s语句
为建水等地区用户提供了全套网页设计制作服务,及建水网站建设行业解决方案。主营业务为网站建设、成都做网站、建水网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
return s后面缺“;”
9月计算机二级《C语言》上机试题及答案
(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、c、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是( )。
A.12345ABCDE
B.EDCBA54321
C.ABCDEl2345
D.54321EDCBA
(2)下列叙述中正确的是( )。
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中元素的个数是由队头指针和队尾指针共同决定的
(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A.0(n)
B.D(n2)
C.O(1092n)
D.0(nl092n)
(4)下列叙述中正确的是( )。
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C.顺序存储结构能存储有序表,链式存储结构不能存储有序表
D.链式存储结构比顺序存储结构节省存储空间
(5)数据流图中带有箭头的线段表示的是( )。
A.控制流
B.事件驱动
C.模块调用
D.数据流
(6)在软件开发中,需求分析阶段可以使用的工具是( )。
A.N—s图
B.DFD图
C.PAD图
D.程序流程图
(7)在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性
B.分类性
C.多态性
D.标识唯一性
(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A.一对一
B.一对多
C.多对一
D.多对多
(9)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
A.人工管理阶段
B.文件系统阶段
C.数据库系统阶段
D.三个阶段相同
(10)有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
A.笛卡尔积
B.交
C.并
D.自然连接
(11)下列叙述中错误的是( )。
A.C程序可以由多个程序文件组成
B.一个c语言程序只能实现一种算法
C.c程序可以由一个或多个函数组成,
D.一个C函数可以单独作为一个C程序文件存在(12)以下选项中,能用作数据常量的是( )。
A.115L
B.0118
C.1.5el.5
D.0115
(13)按照c语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A.大写字母
B.下划线
C.数字字符
D.连接符
(14)设变量已正确定义并赋值,以下正确的表达式是( )。
A.X=Y+z+5,++Y
B.int(15.8%5)
C.X=Y*5=X+Z
D.X=25%5.0
(15)设有定义:int X=2;,以下表达式中,值不为6的是( )。
A.2*x.x+=2
B.x++,2*x
C.x*=(1+x)
D.x*!x+1
(16)有以下程序:
程序运行后的输出结果是( )。
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
(17)有以下程序:
已知字母A的ASCIl码为65,程序运行后的输出结果是( )。
A)E.68B.
B)D,69
C.E,D
D.输出无定值
(18)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是( )。
A.(x—Y01Ix—YO)
B.(x—y0)
C.(x—Y0)
D.(x—Y==0)
(19)有以下程序:
程序运行后的输出结果是( )。
A.3
B.2
C.1
D.0
(20)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
c语言上机试题
1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
1.int fun(int score[],int m,int below[])
{int i,k=0,aver=0;
for(i-0;im;i++)
aver+=score[i];
aver/=m;
for(i=0,im;i++)
if(score[i]aver)
{below[k]=score[i];
k++;}
return k;}
2.请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
2.void fun(int *a,int *n)
{int i,j=0;
for(i=2;i1000;i++)
if((i%7==0//i%11==0))i%77!=0)
a[j++]=i;
*n=j;}
3.请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
3. void fun(int x, int pp[],int *n)
{int i=1,j=0,k=0,*t=pp;
for(i=0;i=x;i++)
if(i%2!=0)
{t[j]=i;
j++;}
for(i=0;ij;i++)
if(x%t[i]==0)
{pp[k]=t[i];
k++;}
*n=k;}
4.请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
4. void fun(char *tt,int pp[])
{int i;
for(i=0;i26;i++)
pp[i]=0;
while (*tt)
{switch(*tt)
{case'a':pp[0]++;break;
case'b':pp[1]++;break;
case'c':pp[2]++;break;
case'd':pp[3]++;break;
case'e':pp[4]++;break;
case'f':pp[5]++;break;
case'g':pp[6]++;break;
case'h':pp[7]++;break;
case'i':pp[8]++;break;
case'j':pp[9]++;break;
case'k':pp[10]++;break;
case'l':pp[11]++;break;
case'm':pp[12]++;break;
case'n':pp[13]++;break;
case'o':pp[14]++;break;
case'p':pp[15]++;break;
case'q':pp[16]++;break;
case'r':pp[17]++;break;
case's':pp[18]++;break;
case't':pp[19]++;break;
case'u':pp[20]++;break;
case'v':pp[21]++;break;
case'w':pp[22]++;break;
case'x':pp[23]++;break;
case'y':pp[24]++;break;
case'z':pp[25]++;break;}
tt++;}
}
5.请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
5. void fun(int m,int k,int xx[])
{int g=0,i,j,flag=1;
for(i=m+1;im*m;i++)
{for(j=2;ji;j++)
{if (i%j!=0)
flag=1;
else
{flag=0;
break;}
}
if (flag==1j=i)
{if (k0)
{xx[g++]=i;
k--;}
else
break;}}}
6.请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
6. void fun(char a[],char b[],int n)
{int i,j=0;
for (i=0;iLEN;i++)
if(i!=n)
{b[j]=a[i];
j++;}
b[j]='\0';}
7.请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
7. void fun(int *s,int t,int*k)
{int i,max;
max=s[0];
for (i=0;it;i++)
if (s[i]max)
{max=s[i];
*k=i; }}
8.编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n)
8. float fun(int n)
{int i;
float s=1.0,t=1.0;
for (i=2;i=n;i++)
{t=t+i;
s=s+1/t;}
return s;}
9.编写一个函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数,且要求mn。 p=m!/n!(m-n)!
9. p=m!/n!(m-n)!
float fun(int m,int n)
{float p,t=1.0;
int i;
for (i=1;i=m;i++)
t=t*i;
p=t;
for (t=1.0,i=1;i=n;i++)
t=t*i;
p=p/t;
for(t=1.0,i=1;im-n;i++)
t=t*i;
p=p/t;
return p;}
10.编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出Root=0.739085。
10. folat fun()
{float x1=0.0,x0;
do
{x0=x1;
x1=cos(x0); }
while (fabs(x0-x1)=1e-6);
return x1;}
11.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
11. int fun(int a[][N])
{int i,j;
for(i=0;iN;i++)
for(j=0;ji;j++)
a[i][j]=0;}
12.下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。
12.double fun (int w[][N])
{int i,j,k=0;
double s=0.0;
for (j=0;jN;j++)
{s+=w[0][j];
k++;}
for (j=0;jN;j++)
{s+=w[N-1][j];
k++;}
for (i=1;i=N-2;i++)
{s+=w[i][0];
k++;}
return s/=k;}
13.请编写一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。
13. void fun(int tt[M][N],int pp[N])
{int i,j,min;
for (j=0;jN;j++)
{min=tt[0][j];
for (i=0;iM;i++)
{if (tt[i][j]min)
min=tt[i][j];}
pp[j]=min;}}
14.请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
14. int fun (int a[M][N])
{int i,j,s=0;
for (j=0;jN;j++)
{s+=a[0][j];
s+=a[M-1][j];}
for (i=1;i=M-2;i++)
{s+=a[i][0];
s+=a[i][N-1];}
return s;}
15.请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
15. unsigned fun(unsigned w)
{unsigned t,s=0,s1=1,p=0;
t=w;
while(t10)
{if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10; }
return s;}
16.请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。
16. float fun (float h)
{long t;
float s;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
return s;}
17.请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。
17. void fun(char *s)
{char ch;
int i,m,n;
i=0;
m=n=strlen(s)-1;
while(i(n+1)/2)
{ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;}}
18.编写程序,实现矩阵(3行3列)的转置(即行列互换)。
18. void fun(int array[3][3])
{int i,j,temp;
for (i=0;i3;i++)
{temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp; }}
19.编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
19. void fun(char s[],int c)
{int i=0;
char*p;
p=s;
while(*p)
{if(*p!=c)
{s[i]=*p;
i++;}
p++;}
s[i]='\0';}
20.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
20. int fun(int lim,int aa[MAX])
{int k=0,i,j;
for(i=lim;i1;i--)
{for(j=2;ji;j++)
if(i%j==0)
break;
else
continue;
if(j=i)
{aa[k]=i;
k++;}}
return k++;}
21.请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ASCII码降序排列。
21.void fun(char *s,int num)
{char t;
int i,j;
for (i=1;inum-2;i++)
for (j=i+1;jnum-1;j++)
if(s[i]s[j])
{t=s[i];
s[i]=s[j];
s[j]=t;}}
22.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
22. double fun (STREC *h)
{ double max;
STREC *q=h;
max=h-s;
do
{if(q-smax)
max=q-s;
q=q-next; }
while(q!=0);
return max;}
23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都是一样的字符串。
23. int fun(char *str)
{int i,n=0,fg=1;
char *p=str;
while (*p)
{n++;
p++;}
for (i=0;in/2;i++)
if (str[i]==str[n-1-i]);
else
{fg=0;
break;}
return fg;}
24.请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
24. long fun(char *p)
{long s=0,t;
int i=0,j,n=strlen(p),k,s1;
if(p[0]=='-')
i++;
for(j=i;j=n-1;j++)
{t=p[j]-'0';
s1=10;
for (k=j;kn-1;k++)
t*=s1;
s+=t; }
if(p[0]=='-')
return -s;
else
return s;}
25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
25. char *fun(char *s,char *t)
{char *p,*t1=t,*s1=s;
int n=0,m=0;
while(*s1)
{n++;
s1++;}
while(*t1)
{m++;
t1++;}
if(n=m)
p=s;
else
p=t;
return p;}
26.请编写一个函数fun,它的功能是:根据以下公式求X的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14...。
26. double fun(double eps)
{double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))=eps)
{pi+=s;
t=n/(2*n+1);
s*=t;
n++;}
pi=pi*2;
return pi;}
27.请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
27.void fun(int m,int *a,int *n)
{int i,j;*n=0;
for(i=1;i=m;i++)
if(i%7==0//i%11==0)
{a[j]=i;
j++;}
*n=j;}
28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
28. void fun(int a[],int n, int *max,int *d)
{int i;
*max=a[0];
*d=0;
for(i=0;in;i++)
if(a[i]*max)
{*max=a[i];
*d=i;}}
29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
29. void fun(char *ss)
{int i,n;
n=strlen(ss);
for(i=1;in;i+=2;)
if(ss[i]='a'ss[i]='z')
ss[i]=ss[i]-32;}
30.请编写一个函数fun,它的功能是:求除一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
30. int fun(int a[][M])
{int i,j,max;
max=a[0][0];
for(i=0;i2;i++)
for(j=0;jM;j++)
if(a[i][j]max)
max=a[i][j];
return max;}
31.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
31. void fun(char *s,char t[])
{int i,j,n;
n=strlen(s);
for(i=0;in;i++)
if(i%2==0s[i]%2==0)
{t[j]=s[j];
j++;}
t[j]='\0';}
32.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。
32. void fun(char *s,char t[])
{int i,j=0,n;
n=strlen(s);
for(i=0;in;i++)
if(i%2!=0s[i]%2!=0)
{t[j]=s[j];
j++;}
t[j]='\0';}
33.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
33. void fun(char *a,int n)
{int i=0,k=0;
char *p,*t;
p=t=a;
while(*t)
t++;
t--;
while(*t--'*')
{k++;
t--;}
t++;
if(kn)
{while(*ppt+n)
{a[i]=*p;
i++;
p++;}
a[i]='\0'; }}
34.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
34. int fun(STREC*a,STREC *b)
{int i,j=0,max;
max=a[0].s;
for(i=0;iN;i++)
if(a[i].s==max)
{*(b+j)=a[i];
j++;
n++;}
return n;}
35.请编写一个函数,用来删除字符串中的所有空格。
35. void fun(char *str)
{int i=0;
char *p=str;
while(*p)
{if(*p!='')
{str[i]=*p;
i++;}
p++;}
str[i]='\0';}
36.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
36. void fun(char *a)
{int i=0,n=0;
char *p;
p=a;
while (*p=='*')
{n++;
p++;}
while (*p)
{a[i]=*p;
i++;
p++;}
while(n!=0)
{a[i]='*';
i++;
i--;}
a[i]='\0';}
37.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。
37. void fun(STREC *p)
{double av=0.0;
int i;
for(i=0;iN;i++)
av+=p-s[i];
av/=N;
p-ave=av;}
38.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
38. int fun(char *ss,char c)
{int n=0;
while(*ss)
{if(*ss==c)
n++;
ss++;}
return n;}
39.请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。
39. void fun(int *w,int p,int n)
{int b[N],i,j=0;
for(i=0;i=p;i++)
b[i]=w[i];
for(i=p+1;in;i++)
{w[j]=w[i];
j++;}
for(i=0;i=p;i++)
{w[j]=b[i];
j++;}}
40.请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
40.void fun(char *w,int m)
{char b[N];
int i,j=0;
for(i=0;im;i++)
{b[j]=w[i];
j++;}
for(i=0;istrlen(w)-m;i++)
w[i]=w[i+m];
for(j=0;jm;j++)
{w[i]=b[j];
i++;}
w[i]='\0';}
41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
41. void fun(char (*s)[N],char *b)
{int i,j,k=0;
for(j=0;jn;j++)
for(i=0;iM;i++)
{b[k]=*(*(s+i)+j)
k++;}
b[k]='\0';}
42.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int m),该函数的功能是:将数组右上半三角元素中的值乘以m。
42. void fun(int a[][N],int m)
{int i,j;
for(j=0;jN;j++)
for(i=0;i=j;i++)
a[i][j]=a[i][j]*m;}
43.编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
43. char *fun(char (*a)[81],int num)
{int i;
char *max;
max=a[0];
for(i=0;inum;i++)
if(strlen(max)strlen(a[i]))
max=a[i];
return max;}
44.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
44. int fun(char *str,char *substr)
{int n;
char *p,*r;
n=0;
while(*str)
{p=str;
r=substr;
while(*r)
if(*r==*p)
{r++;
p++;}
else
break;
if(*r=='\0')
n++;
str++;}
return n;}
45.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用C语言给提供得字符串函数。
45.void fun(char *a,int n,int h,int e)
{int i=0;
char *p;
for(p=a+h;pa+n-e;p++)
{*(a+i)=*p;
i++;}
*(a+i)='\0';}
46.学生得记录由学号和成绩组称个,N名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
46. void fun(STREC a[])
{int i,j;
STREC t;
for(i=0;iN-1;i++)
for(j=i;sN;j++)
if(a[i].sa[j].s)
{t=a[i];
a[i]=a[j];
a[j]=t; }}
47.请编写一个函数void fun(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。
47. void fun(char *ss)
{int i,n=0;
char *p=ss;
while(*p)
{n++;
p++;}
for (i=0;in;i++)
if ((ss[i]='a'ss[i]='z')
ss[i]=ss[i]-32;
ss[i]='\0';}
48.请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
48. void fun(int a,int b,long *c)
{*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}
49.请编写函数fun,其功能是:将s所指字符串中下标位偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
49. void fun(char *s,char t[])
{int i,j=0,n=strlen(s);
for(i=0;in;i++)
if(i%2==0s[i]%2!=0)
else
{f[j]=s[i];
j++;}
t[j]='\0';}
50.已知学生的记录是由学号和学习成绩构成,N名学生的数据已存入结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。
50. void fun(STU a[],STU *s)
{int i,max;
max=a[0].s;
for (i=0;iN;i++)
if(a[i].smax)
{max=a[i].s;
*s=a[i];}}
51.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。
51. void fun(int m,int *k,int xx[])
{int i,j;
int t=0;
for(i=2;im;i++)
{j=2;
while(ji)
{if(i%j==0)
{xx[t]=i;
t++;
break;}
j++;}
*k=t;}}
52.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
52. void fun(char p1[],char p2[])
{int i=0,n=0;
char *p=p1,*q=p2;
while (*p)
{p++;
n++;}
i=n;
while(*p)
{p1[i]=*q;
q++;
i++;}
p1[i]='\0';}
53.请编写函数fun,该函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。
53. void fun(int a[3][3],int b[3][3])
{int i,j,at[3][3];
for(i=0;i=2;i++)
for(j=0;j=2;j++)
at[i][j]=a[j][i];
for(i=0;i3;i++)
for(j=0;j3;j++)
b[i][j]=a[i][j]+at[i][j];}
54.学生的记录由学号和成绩组称个,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
54. double fun(STREC *a, STREC *b,int *n)
{double aver=0.0;
int i,j=0;
*n=0;
for (i=0;iN;i++)
aver+=a[i].s;
aver/=N;
for(i=0;iN;i++)
if(a[i].saver)
{b[j]=a[i];
(*n)++;
j++; }
return aver;}
本文名称:c语言函数上机试题 C语言上机题
网站URL:http://scjbc.cn/article/dodjdcc.html