2010下半年C语言机试复习资料
1删除星号 (2)
2两个数组合成一个新数 (4)
3求和 (5)
4素数问题 (11)
5结构体编程题 (13)
6链表编程题 (16)
7字符串问题 (17)
8统计编程题 (20)
9二维数组编程题 (22)
10一维数组编程题 (26)
12四舍五入编程题 (30)
13其他编程题 (31)
1删除星号
1除了短期断后的信号将其他的信号删除H第一字母P最后字字母
void fun(char *a,char *h,char *p)
{
char str[81];
int i=0;
/*保存第一段*/
while(a[i]=='*') str[i]=a[i++];
/*处理第二段*/
while(h
{
if(*h!='*') str[i++]=*h;
h++;
}
/*处理第三段*/
while(*p!='\0')
{
str[i++]=*p;
p++;
}
str[i]='\0';
/*将处理后的结果重新保存到a字符串中*/
i=0;
while(str[i]!='\0')
a[i]=str[i++];
str[i]='\0';
}
4是前面的字母不得多于N个删除多余的少于不做什么处理中间后面不作处理
void fun(char *a,int n)
{
int count=0,i,j;
/*统计前面星号的个数*/
while(a[count]=='*') count++;
if(count>n)
{
for(i=0;i { for(j=0;a[j]!='\0';j++) a[j] = a[j+1]; a[j]='\0'; } } } 63讲后面信号删除前面中间不删除 void fun(char *a) { char *p; p = a; while(*p!='\0') p++; p--; while(*p=='*') p--; *p =0; } void fun(char *a,char *p) { int i=0; char str[81],*q; q = a; while(q { if(*q!='*') str[i++]=*q; q++; } while(*p!='\0') { str[i++] = *p; p++; } str[i]='\0'; i=0; while(str[i]!='\0') a[i] = str[i++]; a[i] ='\0'; } 2两个数组合成一个新数将两位A B位数形成CA的个位十位放C的百位个位 void fun(int a,int b,long *c) { *c =a/10*100+a%10+b/10*10+b%10*1000; } 3求和 2根据公式求拍值精度0.0005 double fun ( double eps) { double pi,t; int i; pi = 0.0; t = 1.0; i = 1; while(t>=eps) { pi += t; t *= 1.0*i/(2*i+1); i++; } pi = pi * 2; return pi; } 19计算便输出给点数数组9(长度为)没想了每相邻两个平均值的平方根之和90 double fun(double x[9]) { double ave,t; int i; ave = 0.0; for(i=0;i<8;i++) { t =(x[i]+x[i+1])/2.0; ave += sqrt(t); } return ave; } 20多项式值键盘输8输出S=0.662872 double fun(int n) { int i; double s; s = 0.0; for(i = 1;i<=n;i++) { s = s +(1.0/(2*i-1)-1.0/(2*i)); } return s; } 22输出X,<0.97直到|S(n)-S(n-1)<0.000001 double fun(double x) { double t1,t2,t,s; int i; t1 = 1; t2 =0.5*x; t = t2 -t1; s = 0; while(fabs(t)>=0.000001) { s += t1; t1 = t2; i++; t2 *= (0.5-i+1)/i*x; t = t2 - t1; } return s; } 23十个数方差s=11.730729 double fun(double x[10]) { double ave,s; int i; ave = 0.0; s = 0.0; for(i=0;i<10;i++) ave +=x[i]/10.0; for(i=0;i<10;i++) s+=(x[i]-ave)*(x[i]-ave)/10; s = sqrt(s); return s; } 25j输入20输出s=534.188884 double fun(int n) double t,s; t = 0.0; s = 0.0; for(i=1;i<=n;i++) { t += sqrt(i); s += t; } return s; } 44若n值11函数值1.833333 float fun(int n) { int i; float t,sum; t=0.0; sum=0.0; for(i=1;i<=n;i++) { t = t + i; sum = sum + 1.0 / t; } return sum; } 46例如m=12.n=8 运行结果495.0000000 float fun(int m,int n) float jm,jn,jc,p; jm=jn=jc=1; if(m { t=m; m=n; n=t;} for(i=1;i<=m;i++) { if(i<=n) jn*=i; if(i<=m-n) jc*=i; jm*=i; } p = jm/(jn*jc); return p; } 90函数n=15输出s=2.718282 double fun(int n) { int i; double t,s; s = 1.0; t = 1.0; for(i=1;i<=n;i++) { t *= i; s += 1.0/t; } return s; } 53s=in1 in2 in3+in(m)'''0.5l落个 double fun( int m) { int i; double s=0.0; for(i=1;i<=m;i++) s+=log(i); s = sqrt(s); return s; } 611、(s= n*(n+1)) double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) { s += 1.0/(i*(i+1)); } return s; } 62n=10 x=0.3 函数值1.349859 double fun(double x,int n) { int i; double t,s; t = 1.0; s = 0.0; for(i=1;i<=n;i++) { s += t; t = t *x/i; } return s; } 4素数问题 24计算出3到n之间的数数平方之和 double fun(int n) { int i,j; double sum; sum = 0; for(i=3;i { for(j=2;j { if(i%j==0) break; } if(j>=i) sum += sqrt(i); } return sum; } 28求出小于等于lim所有素数放在aa数组中返回素数个数 int fun(int lim,int aa[MAX]) { int i,j,count=0; for(i=2;i<=lim;i++) { for(j=2;j { if(i%j==0) break; } if(j>=i) { aa[count] = i; count++; } } return count; } 41void fun(int m,int,k int xx【】) void fun(int m,int k,int xx[]) { int i,j,count=0; for(i=m+1;count { for(j=2;j { if(j>=i) xx[count++]=i; } } 5结构体编程题 6学号8门课程成绩和平均分组成求学生平均分放到ave成员中 void fun(STREC *p) { int i; (*p).ave=0.0;