C语言编程题过关必背.doc
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调用该函数后, c=2514 *c=(b%10)*1000+(a%10)* 100+(b/10)*10+(a/10);
6、返回较长字符串 int i=0,j=0; while(s[i]!=0)i++; while(t[j]!=0)j++; if(i>=j)return s; else return t; 9、 除下标偶数同时ASCII码值偶数之外其 余全部删除 inti,j=0; for(i=0;s[i]!=0;i++) if(i%2==0&&s[i]%2==0) t[j++]=s[i]; t[j]=0; 12、 找出成绩最高学生纪录 (规定只有一 个最高分) inti, max = a[0].s, j = 0; for(i=1;i<N;i++) if(max< a[i].s) { j=i; max=a[i].s ; } *s = a[j] ; 15、二维数组每列最小元素 inti,j; for(i=0;i<N;i++) { pp[i]=tt[0][i]; for(j=1;j<M;j++) if(pp[i]>tt[j][i])pp[i]=tt[j][i]; } 18、从s所指的字符串中删除给定的字符 char *p=s; inti=0; while(*p) { if(*p!=c)s[i++]=*p; p++; } s[i]=0; 21、将所有大于 1 小于整数 m 的非素数 存入 xx 所指数组中 intnum=0; inti,j; for(i=2;i<m;i++) {for(j=2;j<i;j++) if(i%j==0)break; if(j<i) xx[num++]=i; } *k=num; 24、能被 7 或 11 整除,但不能同时被 7 和 11 整除 int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ; 27.s=1+1/(1+2)+…+1/(1+2+…+n) inti,j,xn=0; float s=0; for(i=1;i<=n;i++) { xn=xn+i; s=s+1.0/xn; } return s;
第 1 页 /共 4 页
28、迭代方法求方程:cos(x)-x=0 的一 个实根:xn+1=cos(xn) float x0, x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>1e-6); return x1; 31、将字符串中的前导*号全部删除, 中间和尾部的*号不删除字符串 int j=0;char *p=a; while(*p=='*')p++; while(*p) {a[j++]=*p; p++;} a[j]=0 ; 34、删除串中所有* int j =0 ; char *p=a; while(*p) { if(*p != '*') a[j++]=*p ; p++ ; } a[j]=0; 37、低于平均分的学生数据放在b所指 数组中 inti ; double ave = 0.0 ; *n = 0 ; for(i=0;i<N;i++) ave = ave+a[i].s; ave /= N ; for(i = 0 ; i< N ; i++) if(a[i].s < ave) { b[*n]=a[i] ; (*n)++; } return ave ; 40、求出学生成绩平均分 STREC *p=h->next; double av=0.0; int n=0; while(p!=NULL) {av=av+p->s; p=p->next; n++;} av=av/n; return av; 43、计算当x<0.97 Sn=1+0.5x+0.5*(0.5-1)x2/2!+… int n=1; double sum=1, xn=1; while(fabs(xn)>=0.000001) { xn=xn*x*(0.5-n+1)/n; n++; sum=sum+xn; } return(sum); 46、计算Sn=1-1/2+1/3-1/4+1/5… inti; double sum=0.0; for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i); return sum; 49、3 到 n 之间所有素数平方根之和 inti,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j<i; j++) if (i%j == 0) break; if (j >= i) s=s+sqrt(i*1.0); } return s;
10将s所指字符串中下标为偶数的字符删除inti11将s所指字符串中ascii值为偶数的字符删除inti12找出成绩最高学生纪录规定只有一个最高分intimax13左下三角元素乘nint14左下三角元素置0int15二维数组每列最小元素intij
2、把分数最低的学生数据放进 b 数组 (注意:第2套跟第87套交换) 1 、 a=45 , b=12 时,调用该函数后, inti, j = 0, min=a[0].s ; c=4152 for(i = 0 ; i< N; i++) if(min > a[i].s) min = a[i].s ; *c=(a/10)*1000+(b/10) for(i = 0 ; i< N; i++) *100+(a%10)*10+(b%10); if(min == a[i].s) b[j++] = a[i] ; return j ; 5、计算n门课程的平均分71.8 4、a=45,b=12 时,调用该函数后, int i; c=5142 float ave=0.0; *c=(a%10)*1000+(b/10)* f for(i=0;i<n;i++) 100+(a/10)*10+(b%10); ave=ave+a[i]; return ave/n; 7、能被7或11整除 在数组a中 8、下标奇数位置字母改大写 int i ,j=0; int i; for(i=7 ; i<=m; i++) for(i=1;ss[i]!=0;i++) if((i % 7 == 0) || (i % 11 == 0)) if(i%2&&ss[i]>='a'&&ss[i]<='z') a[j++]=i ; ss[i]-=32; *n=j; 10、将s所指字符串中下标为偶数的字 符删除 inti, j= 0; for(i=0;s[i]!=0;i++) if(i%2==1)t[j++]=s[i]; t[j]=0; 13、左下三角元素乘n int i, j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]*=n ; 16、是n(n≥2)位的整数,函数求出w的 低 n-1 位的数作为函数值返回 5923= 〉 923 if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ; 19、除首、尾字符外,将其余 5 个字符 按 ASCII 码降序排列。 char ch ; int i, j ; for(i =1;i<num-2;i++) for(j=i+1;j<num-1;j++) if(s[i]<s[j]) {ch=s[j];s[j]=s[i];s[i]=ch;} 11、将 s所指字符串中 ASCII 值为偶数的 字符删除 inti, j=0 ; for(i =0;i <strlen(s);i++) if(s[i]%2==1) t[j++]=s[i]; t[j]= 0 ; 14、左下三角元素置0 int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0; 17、字符串中的内容逆置 inti,len=strlen(s); char t; for(i=0;i<len/2;i++) { t=s[i]; s[i]=s[len-i-1]; s[len-i-1]=t; } 20、统计子串 as 个数 int cnt = 0 ; char *p = str, *q ; while(*p) { q = strstr(p, substr) ; if(q == NULL) break; p = q + strlen(substr) ; cnt++ ; } return cnt ; 23、B=A+A’ int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) { c[i][j] = a[j][i] ; b[i][j] = a[i][j] + c[i][j] ; } 26、删除指定下标字符 int i,j=0; for(i=0;a[i]!=0;i++) if(i!=n)b[j++]=a[i]; b[j]='\0';
29、求 Fibonacci 数列中大于 t 的最小的 一个数 int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; 32、除尾部*号,其余*删除 char *q=a; int j=0; while(*q && q<p) { if(*q != '*') a[j++] = *q ; q++ ; } while(*p) a[j++]=*p++; a[j]=0; 35、串尾部*号不多于n个 char *p=a ; int j=0; while(*p) p++; p--; while(*p == '*') p--; p++; while(j<n && *p) { p++ ; j++; } *p = 0 ; 38、把分数最高学生数据放在b所指数组 中,分数最高的学生可能不只一个 int i, max = a[0].s, n=0; for(i = 1; i < N; i++) if(max < a[i].s) max = a[i].s ; for(i= 0; i<N; i++) if(max==a[i].s) b[n++] = a[i] ; return n; 41 、计算并输出给定整数 n 的所有因子 ( 不 包 括 1 与 n 自 身 ) 之 和 n=856 sum=763 int s=0,i; for(i=2;i<n;i++) if(n%i==0)s+=i; return s; 44、计算并输出10个数的方差 inti; double avg=0.0,sum=0.0, s=0.0; for(i=0;i<10;i++)sum+=x[i]; avg=sum/10; for (i=0;i<10;i++) s+=(x[i]-avg)*(x[i]-avg); return sqrt(s/10); 47、S=1+1/1*2+1/1*2*3+… n的值大于1但不大于100 double s=0, xn=1; inti; for(i=1;i<=n;i++) { xn=xn*i;s+=1.0/xn; } return s; 50、S=1+(1+ 2 )+(1+ 2 + +。 。 。+(1+ 2 + 3 +..+ n ) inti; double xn=1.0,sum=1.0; for(i=2;i<=n;i++) { xn=xn+sqrt(i*1.0); sum+=xn; } return sum;
22、求 ss 所指字符串指定字符个数 intcnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ; 25、 统计在 tt 所指字符串中'a' 到 'z' 26 个小写字母各自出现的次数 char *p = tt ; inti ; for(i=0;i<26;i++) pp[i]=0 ; while(*p) { if(*p>='a'&&*p<='z') pp[*p-'a']+=1; p++;}
6、返回较长字符串 int i=0,j=0; while(s[i]!=0)i++; while(t[j]!=0)j++; if(i>=j)return s; else return t; 9、 除下标偶数同时ASCII码值偶数之外其 余全部删除 inti,j=0; for(i=0;s[i]!=0;i++) if(i%2==0&&s[i]%2==0) t[j++]=s[i]; t[j]=0; 12、 找出成绩最高学生纪录 (规定只有一 个最高分) inti, max = a[0].s, j = 0; for(i=1;i<N;i++) if(max< a[i].s) { j=i; max=a[i].s ; } *s = a[j] ; 15、二维数组每列最小元素 inti,j; for(i=0;i<N;i++) { pp[i]=tt[0][i]; for(j=1;j<M;j++) if(pp[i]>tt[j][i])pp[i]=tt[j][i]; } 18、从s所指的字符串中删除给定的字符 char *p=s; inti=0; while(*p) { if(*p!=c)s[i++]=*p; p++; } s[i]=0; 21、将所有大于 1 小于整数 m 的非素数 存入 xx 所指数组中 intnum=0; inti,j; for(i=2;i<m;i++) {for(j=2;j<i;j++) if(i%j==0)break; if(j<i) xx[num++]=i; } *k=num; 24、能被 7 或 11 整除,但不能同时被 7 和 11 整除 int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ; 27.s=1+1/(1+2)+…+1/(1+2+…+n) inti,j,xn=0; float s=0; for(i=1;i<=n;i++) { xn=xn+i; s=s+1.0/xn; } return s;
第 1 页 /共 4 页
28、迭代方法求方程:cos(x)-x=0 的一 个实根:xn+1=cos(xn) float x0, x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>1e-6); return x1; 31、将字符串中的前导*号全部删除, 中间和尾部的*号不删除字符串 int j=0;char *p=a; while(*p=='*')p++; while(*p) {a[j++]=*p; p++;} a[j]=0 ; 34、删除串中所有* int j =0 ; char *p=a; while(*p) { if(*p != '*') a[j++]=*p ; p++ ; } a[j]=0; 37、低于平均分的学生数据放在b所指 数组中 inti ; double ave = 0.0 ; *n = 0 ; for(i=0;i<N;i++) ave = ave+a[i].s; ave /= N ; for(i = 0 ; i< N ; i++) if(a[i].s < ave) { b[*n]=a[i] ; (*n)++; } return ave ; 40、求出学生成绩平均分 STREC *p=h->next; double av=0.0; int n=0; while(p!=NULL) {av=av+p->s; p=p->next; n++;} av=av/n; return av; 43、计算当x<0.97 Sn=1+0.5x+0.5*(0.5-1)x2/2!+… int n=1; double sum=1, xn=1; while(fabs(xn)>=0.000001) { xn=xn*x*(0.5-n+1)/n; n++; sum=sum+xn; } return(sum); 46、计算Sn=1-1/2+1/3-1/4+1/5… inti; double sum=0.0; for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i); return sum; 49、3 到 n 之间所有素数平方根之和 inti,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j<i; j++) if (i%j == 0) break; if (j >= i) s=s+sqrt(i*1.0); } return s;
10将s所指字符串中下标为偶数的字符删除inti11将s所指字符串中ascii值为偶数的字符删除inti12找出成绩最高学生纪录规定只有一个最高分intimax13左下三角元素乘nint14左下三角元素置0int15二维数组每列最小元素intij
2、把分数最低的学生数据放进 b 数组 (注意:第2套跟第87套交换) 1 、 a=45 , b=12 时,调用该函数后, inti, j = 0, min=a[0].s ; c=4152 for(i = 0 ; i< N; i++) if(min > a[i].s) min = a[i].s ; *c=(a/10)*1000+(b/10) for(i = 0 ; i< N; i++) *100+(a%10)*10+(b%10); if(min == a[i].s) b[j++] = a[i] ; return j ; 5、计算n门课程的平均分71.8 4、a=45,b=12 时,调用该函数后, int i; c=5142 float ave=0.0; *c=(a%10)*1000+(b/10)* f for(i=0;i<n;i++) 100+(a/10)*10+(b%10); ave=ave+a[i]; return ave/n; 7、能被7或11整除 在数组a中 8、下标奇数位置字母改大写 int i ,j=0; int i; for(i=7 ; i<=m; i++) for(i=1;ss[i]!=0;i++) if((i % 7 == 0) || (i % 11 == 0)) if(i%2&&ss[i]>='a'&&ss[i]<='z') a[j++]=i ; ss[i]-=32; *n=j; 10、将s所指字符串中下标为偶数的字 符删除 inti, j= 0; for(i=0;s[i]!=0;i++) if(i%2==1)t[j++]=s[i]; t[j]=0; 13、左下三角元素乘n int i, j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]*=n ; 16、是n(n≥2)位的整数,函数求出w的 低 n-1 位的数作为函数值返回 5923= 〉 923 if(w>10000) w %= 10000 ; else if(w>1000) w %= 1000 ; else if(w>100) w %= 100 ; else if(w>10) w %=10 ; return w ; 19、除首、尾字符外,将其余 5 个字符 按 ASCII 码降序排列。 char ch ; int i, j ; for(i =1;i<num-2;i++) for(j=i+1;j<num-1;j++) if(s[i]<s[j]) {ch=s[j];s[j]=s[i];s[i]=ch;} 11、将 s所指字符串中 ASCII 值为偶数的 字符删除 inti, j=0 ; for(i =0;i <strlen(s);i++) if(s[i]%2==1) t[j++]=s[i]; t[j]= 0 ; 14、左下三角元素置0 int i,j; for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0; 17、字符串中的内容逆置 inti,len=strlen(s); char t; for(i=0;i<len/2;i++) { t=s[i]; s[i]=s[len-i-1]; s[len-i-1]=t; } 20、统计子串 as 个数 int cnt = 0 ; char *p = str, *q ; while(*p) { q = strstr(p, substr) ; if(q == NULL) break; p = q + strlen(substr) ; cnt++ ; } return cnt ; 23、B=A+A’ int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) { c[i][j] = a[j][i] ; b[i][j] = a[i][j] + c[i][j] ; } 26、删除指定下标字符 int i,j=0; for(i=0;a[i]!=0;i++) if(i!=n)b[j++]=a[i]; b[j]='\0';
29、求 Fibonacci 数列中大于 t 的最小的 一个数 int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; 32、除尾部*号,其余*删除 char *q=a; int j=0; while(*q && q<p) { if(*q != '*') a[j++] = *q ; q++ ; } while(*p) a[j++]=*p++; a[j]=0; 35、串尾部*号不多于n个 char *p=a ; int j=0; while(*p) p++; p--; while(*p == '*') p--; p++; while(j<n && *p) { p++ ; j++; } *p = 0 ; 38、把分数最高学生数据放在b所指数组 中,分数最高的学生可能不只一个 int i, max = a[0].s, n=0; for(i = 1; i < N; i++) if(max < a[i].s) max = a[i].s ; for(i= 0; i<N; i++) if(max==a[i].s) b[n++] = a[i] ; return n; 41 、计算并输出给定整数 n 的所有因子 ( 不 包 括 1 与 n 自 身 ) 之 和 n=856 sum=763 int s=0,i; for(i=2;i<n;i++) if(n%i==0)s+=i; return s; 44、计算并输出10个数的方差 inti; double avg=0.0,sum=0.0, s=0.0; for(i=0;i<10;i++)sum+=x[i]; avg=sum/10; for (i=0;i<10;i++) s+=(x[i]-avg)*(x[i]-avg); return sqrt(s/10); 47、S=1+1/1*2+1/1*2*3+… n的值大于1但不大于100 double s=0, xn=1; inti; for(i=1;i<=n;i++) { xn=xn*i;s+=1.0/xn; } return s; 50、S=1+(1+ 2 )+(1+ 2 + +。 。 。+(1+ 2 + 3 +..+ n ) inti; double xn=1.0,sum=1.0; for(i=2;i<=n;i++) { xn=xn+sqrt(i*1.0); sum+=xn; } return sum;
22、求 ss 所指字符串指定字符个数 intcnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ; 25、 统计在 tt 所指字符串中'a' 到 'z' 26 个小写字母各自出现的次数 char *p = tt ; inti ; for(i=0;i<26;i++) pp[i]=0 ; while(*p) { if(*p>='a'&&*p<='z') pp[*p-'a']+=1; p++;}