二级C语言上机试题精选 
1、  编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0 的一个实根。 
xn+1=cos(xn)    迭代步骤如下:
(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 的一个实根,作为函数值返回。
double x1=0.0;
do
{x0=x1; x1=cos(x0); }
while(fabs(x0-x1)>=0.000001);
return x;
2、  编写函数double  fun,它的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入。                       
1      1      1      1              1           
S = ── - ── + ── - ── + … ─────         
1      3      5      7            2n+1         
int i,j=1;double s=0;
for(i=0;i<=n;i++)
{s=s+1.0/(2*i+1)*j;j=-j;}
*sn=s;
3、 编写函数double  fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n 为两个正整数且要求m > n。                 
m!                 
P = ─────                 
n!(m-n)!               
double i=1,x=1,y=1,z=1,p=0;
for(i=1;i<=m;i++) x=x*i;
for(i=1;i<=n;i++) y=y*i;
for(i=1;i<=(m-n);i++) z=z*i;
p=x/(y*z);
return p;
4、编写函数fun,它的功能是计算: s = [ln(1)+ln(2)+ ln(3)+...+ln(m)] 0.5
在C语言中可调用log ( n )函数求ln (n)。  log函数的引用说明是: double log(double x) ;
double i,s=0;
for(i=1;i<=m;i++) s=s+log(i);
return sqrt(s);
5、 编写函数double  fun(double h),它的功能是:四舍五入并保留两位小数
long int i,j=1;
if(h<0) {j=-1;h=-h;}
h=h*100+0.5;
i=h;
h=i/100.0;
return h*j;
6、编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:        F(0)=0,F(1)=1      F(n)=F(n-1)+F(n-2)
例如:当t = 1000时,函数值为:1597。
int i,f0=0,f1=1,f2=f0+f1;
while(f2<=t)
{f0=f1;f1=f2;f2=f0+f1;}
return f2;
7、编写函数fun,它的功能是:求出1000以内能被7或11整除,但不能同时被7和11整除的数,存放到数组xx中,通过函数名返回个数。
int i,j=0;
for(i=1;i<1000;i++)
if((i%7==0||i%11==0)&&i%77!=0) xx[j++]=i;
return j;
8、  fun的功能是:将s所指字符串中的内容从小到大重新排列
int i,j;char t;
for(i=0;i<strlen(s);i++)
for(j=i;j<strlen(s);j++)
if(s[j]<s[i]) {t=s[i];s[i]=s[j];s[j]=t;}
9、  fun(int s[],int n)的功能是:将s数组中的n个数从大到小重新排列
int i,j,t;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(s[j]>s[i]) {t=s[i];s[i]=s[j];s[j]=t;}
10、      函数fun的功能是:将s所指字
符串中内容倒序
int i,j=strlen(s);char t;
for(i=0;i<j/2;i++)
{t=s[i];s[i]=s[j-1-i];s[j-1-i]=t;}
11、      编写程序, 实现矩阵s(N行N列)的转置(即行列互换)
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<i;j++)
{t=s[i][j];s[i][j]=s[j][i];s[j][i]=t;}
12、      请编写一个函数,用来删除字符串s中的所有空格。
int i,j;
for(i=0;i<strlen(s);i++)
if(s[i]==’ ‘)
{for(j=i;j<strlen(s);j++) s[j]=s[j+1];
i--;}
13、      函数fun(int a[],int *n,int y)的功能是: 删除数组a中值为y的元素,*n为个数。
int i,j;
for(i=0;i<*n;i++)
if(a[i]==y)
{for(j=i;j<*n;j++) a[j]=a[j+1];
i--; (*n)--;}
14、函数fun的功能是:把a数组中的n个数,和b数组中逆序的n个数一一对应相乘、求平方,结果存在c数组中。
int i,j=n-1;
for(i=0;i<n;i++,j--)
c[i]=a[i]*b[j];
15、函数fun的功能是:把a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,结果存放在c数组中。例如:若a数组中的值是:1、3、5、7、8  b数组中的值是:2、3、4、5、8
调用该函数后,c中存放的数据是81、64、81、100、100
int i,j=n-1;
for(i=0;i<n;i++,j--)
c[i]=(a[i]+b[j])*(a[i]+b[j]);
16、函数fun的功能是:对a数组中n种商品价格进行分段统计,商品各段价格的数目存到b数组中; 其中:
价格为100元以下的个数存到b[0]中,价格为100元到199元的个数存到b[1],价格为200元到299元的个数存到b[2],价格为300元到399元的个数存到b[3],价格为400元到499元的个数存到b[4],价格为500元以上的个数存到b[5]中。
int i;                              或者 int i;
for(i=0;i<6;i++) b[i]=0;                for(i=0;i<6;i++) b[i]=0;
for(i=0;i<strlen(a);i++)                for(i=0;i<strlen(a);i++)
switch(a[i]/100)                              if(a[i]/100<5) b[a[i]/100]++;
{case 0: b[0]++;break;                  else b[5]++;
case 1: b[1]++;break;
case 2: b[2]++;break;
case 3: b[3]++;break;
case 4: b[4]++;break;
c语言定义一个字符串default: b[5]++;}
17、函数fun的功能是:对指定字符在字符串a中出现的次数进行统计,统计的数据存到b数组中。其中:字符'a'出现的次数存放到b[0]中, 字符'b'出现的次数存放到b[1] 中,字符'c'出现的次数存放到b[2]中,字符'd'出现的次数存放到b[3]中,字符'e'出现的次数存放到b[4]中,其它字符出现的次数存到b[5]中。
int i;                            或者 int i;
for(i=0;i<6;i++) b[i]=0;              for(i=0;i<6;i++) b[i]=0;
for(i=0;i<strlen(a);i++)              for(i=0;i<strlen(a);i++)
switch(a[i])                                    if(a[i]>=’a’&&a[i]<=’z’)
{case ‘a’: b[0]++;break;                    b[a[i]-‘a’]++;
case ‘b’: b[1]++;break;                else b[5]++;
case ‘c’: b[2]++;break;
case ‘d’: b[3]++;break;
case ‘e’: b[4]++;break;
default: b[5]++;}
18、程序定义了M×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:①使数组下半三角元素中的值乘以n;②使数组上半三角元素中的值乘以n
① int i,j;                            ② int i,j;
for(i=0;i<M;i++)                      for(i=0;i<M;i++)
for(j=0;j<=i;j++)                      for(j=i;j<N;j++)
a[i][j]=a[i][j]*n;                    a[i][j]=a[i][j]*n;
19、序定义了M×N的二维数组,并在主函数中自动赋值。请编写函数 fun,函数的功能是:
① 给数组周边元素置0值;  ② 求周边元素之和。
① int i,j;                      ② int i,j,s=0;
for(i=0;i<M;i++)                for(i=0;i<M;i++)
for(j=0;j<N;j++)                for(j=0;j<N;j++)
if(i==0||j==0||i==M-1||j==N-1)  if(i==0||j==0||i==M-1||j==N-1)
a[i][j]=0;                      s=s+a[i][j];      return s;
20、请编写一个函数fun,其首部为:    fun( int m, int *k, int xx[])
该函数的功能是: ①将所有大于1小于整数m的非素数存入数组xx,非素数的个数由k传回;
②将所有大于1小于整数m的素数存入数组xx,素数的个数由k传回。
① int i,j,l=0;              ② int i,j,l=0;
for(i=2;i<m;i++)                for(i=2;i<m;i++)
{for(j=2;j<i;j++)                {for(j=2;j<i;j++)
if(i%j==0) break;                if(i%j==0) break;
if(j<i) xx[l++]=i;}              if(j>=i) xx[l++]=i;}
*k=l;                            *k=l;
21、请编写一个函数 fun (char *s),函数的功能是把 s 串中所有的字母改写成该字母的下一个字母,字母z改写成字母 a。大写字母仍为大写字母,小写字母仍为小写字母,其它的字符不变。
int i,j;
for(i=0;i<strlen(s);i++)
if((s[i]>=’a’&&s[i]<’z’)||(s[i]>=’A’&&s[i]<’Z’)) s[i]=s[i]+1;
else if(s[i]==’z’||s[i]==’Z’) s[i]=s[i]-25; 
22、函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值也为偶数的字符删除, s中剩余的字符形成一个新串放在t所指的数组中。
int i,j=0;
for(i=0;i<strlen(s);i++)
if(!(i%2==0&&s[i]%2==0)) t[j++]=s[i];
t[j]=’\0’;
23、函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,s中剩余的字符形成一个新串放在t所指的数组中。
int i,j=0;
for(i=0;i<strlen(s);i++) if(!(s[i]%2==0)) t[j++]=s[i];
t[j]=’\0’;
24、请编写一个函数 void fun ( int tt[M][N], int pp[① M ② N ] ),tt 是一个 M 行 N 列的二维数组,求出每①行(②列)中最小元素,并依次放入 pp 数组中。tt 数组中的数由主函数从键盘读入。
① int i,j;                          ②    int i,j;
for(i=0;i<M;i++)                          for(i=0;i<N;i++)
{pp[i]=tt[i][0];                          {pp[i]=tt[0][i];
for(j=0;j<N;j++)                          for(j=0;j<M;j++)
if(pp[i]>
tt[i][j]) pp[i]=tt[i][j];}        if(pp[i]>tt[j][i]) pp[i]=tt[j][i];}
25、请编写一个函数  unsigned  fun ( unsigned  w ),w 是一个大于10的无符号整数,若 w 是 n (n ≥ 2)位的整数,函数求出w的后 n-1位的数作为函数值返回。
例如:w 值为 5923,则函数返回 923; w 值为 923 则函数返回 23。
unsigned i,j=1,k=w;
while(k>=10){k=k/10;j=j*10;}
return w%j;
26、编写一个函数 void fun(char p1[], char p2[]), 它的功能是: 实现两个字符串的连接(不使用库函数strcat)。
int i,j=strlen(p1);
for(i=0;i<strlen(p2);i++) p1[i+j]=p2[i];
p1[i+j]=’\0’;
27、请编写函数 int fun(int score[], int m, int below[]),它的功能是:计算 score 中 m 个人的平均成绩 aver, 将低于aver的成绩放在 below 中, 通过函数名返回人数。
int i,aver,j=0,s=0;
for(i=0;i<m;i++) s=s+score[i];
aver=s/m;
for(i=0;i<m;i++)
if(score(i)<aver) below[j++]=score[i];
return j;
28、编写一个函数,用该函数可以统计一个长度为2的子字符串sub在另一个字符串str中出现的次数。
int i,j=0;
for(i=0;i<strlen(str)-1;i++)
if(str[i]=sub[0]&&str[i+1]=sub[1]) j++;
return j;
29、编写函数fun(int s[],int *k,int n),出n个数据中最小的一个,通过形参传回。
int i,j=0;
for(i=0;i<n;i++) if(s[i]<s[j]) j=i;
*k=s[j];
30、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun,函数的功能是:出成绩最低的学生记录,通过形参返回主函数。 已给出函数的首部fun(  STU  a[], STU  *s  ),请完成该函数。
结构体的定义如下:    typedef  struct  ss
{  char  num[10];  int  s;  } STU;
程序如下:  int i,j=0;
for(i=0;i<N;i++)
if(a[i].s<a[j].s) j=i;
*s=a[j]; 
31、程序定义了M×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:①数组中第一行与最后一行对调,第二行与倒数第二行对调……②数组中第一列与最后一列对调,第二列与倒数第二列对调……
int i,j,t;
①for(j=0;j<N;j++)  for(i=0;i<M/2;i++)  {t=a[i][j];a[i][j]=a[M-i-1][j];a[M-i-1][j]=t;}
②for(i=0;i<M;i++)  for(j=0;j<N/2;j++)  {t=a[i][j];a[i][j]=a[i][N-j-1];a[i][N-j-i]=t;}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。