2级C语言上机题 1

二级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;ifor(j=i;jif(s[j] 
9、 fun(int s[],int n)的功能是:将s数组中的n个数从大到小重新排列
int i,j,t;
for(i=0;ifor(j=i;jif(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{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;ifor(j=0;j{t=s[i][j];s[i][j]=s[j][i];s[j][i]=t;}
 
12、 请编写一个函数,用来删除字符串s中的所有空格。
int i,j;
for(i=0;iif(s[i]==’ ‘)
{for(j=i;ji--;}
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;ic[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;ic[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;iswitch(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;
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;iswitch(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;ifor(j=0;j<=i;j++) for(j=i;ja[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;ifor(j=0;jif(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{for(j=2;jif(i%j==0) break; if(i%j==0) break;
if(j=i) xx[l++]=i;}
*k=l; *k=l;
 
21、请编写一个函数 fun (char *s),函数的功能是把 s 串中所有的字母改写成该字母的下一个字母,字母z改写成字母 a。大写字母仍为大写字母,小写字母仍为小写字母,其它的字符不变。
int i,j;
for(i=0;iif((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;iif(!(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;it[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{pp[i]=tt[i][0]; {pp[i]=tt[0][i];
for(j=0;jif(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;ip1[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;iaver=s/m;
for(i=0;iif(score(i)return j;
 
28、编写一个函数,用该函数可以统计一个长度为2的子字符串sub在另一个字符串str中出现的次数。
int i,j=0;
for(i=0;iif(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*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;iif(a[i].s*s=a[j];
31、程序定义了M×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:①数组中第一行与最后一行对调,第二行与倒数第二行对调……②数组中第一列与最后一列对调,第二列与倒数第二列对调……
int i,j,t;
①for(j=0;j②for(i=0;i



相关文档
最新文档