上机题总结(2)

2018-12-19 22:38

for(i=0;i

15.用二分法求f(x)=lnx+x^2在(1/e,1)内的近似根。 #include while(1) #include { float f(float x) if(fabs(f(r))<1e-5) break; { return (log(x)+x*x); if(f(m)*f(r)<0) n=r; } else m=r;

r=(m+n)/2.0;

void main() } { printf(\ float m=1/2.72,n=1,r; getch(); r=(m+n)/2.0; }

16.如1,1,2,3,5,8,13,21、、、的数列,设计程序输出大于n的最小的数,如n=9,应输出13. #include m=f3; int Fibonacci(int n) return(m);} { int f1=1,f2=1,f3,m; void main () f3=f1+f2; { while(f3

scanf(\f1=f2;

m=Fibonacci(t); f2=f3; f3=f2+f1;

}

17,利用公式求pai的值。

#include double fun(double e) { int i,k;

double s, t, x; s=0; k=1; i=2; x=3.0/4; while(x>e ) { s=s+k*x; k=-k; t=2*i;

x=(2*i+1)/(t*t); i++; }

return (s); }

main()

{ double e=(1e-3);

printf(\ getch(); }

printf(\ getch(); }

第二部分 改编题

1. 编写函数,统计给定字符串中各个字母出现的次数,不区分大小写。比如对

hello,Tom 进行统计。

void count_chars(char s[],int cnt[]) { int i;

for(i=0;s[i]!='\\0';i++)

{ if(s[i]>='a'&&s[i]<='z') cnt[s[i]-'a']++; if(s[i]>='A'&&s[i]<='Z') cnt[s[i]-'A']++; } } main()

{ char s[]=\ int i; count_chars(s,cnts); for(i=0;i<26;i++)

{ printf(\字母%c(或者%c)的出现次数为%d\\n\ }

注:类似的问题还有统计0~9每个数字出现的次数;

50个人对食堂饭菜的打分,如1,2,3,4分,统计四种分数出现的次数。 以上三种问题都是一种类型的 都要用到a[表达式]++这个重要式子。请同学们复习时把上面两道也编程出来。

2.删除类题目

? 删除字符串中的所有空格。 int i=0;char *p=str; while(*p) {if(*p!=’ ’)

str[i++]=*p;p++;} str[i]=’\\0’

? 从字符串中删除指定的字符。 Int i=0;char *p=s; while(*p){if(*p!=c)

s[i++]=*p;p++;} s[i]=’\\0’;

? 删除一个字符串中指定下标的字符。 Int I,j=0; for(i=0;i

b[j++]=a[i];b[j]=’\\0’;

? 将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串

放在t所指的数组中。 Int I,j=0,n=strlen(s); for(i=0;i

注:这类题目大同小异,希望同学们对比着学习。编程的时候只是穿插着其他

几个函数,只要做到条理清晰,就会“战无不胜”。

3.在1到2000000寻找如145这样每位数字的阶乘之和等于本身的数。 #include n/=10;} if(x==t) return 1; fac(int m) { long t=1; int i; for(i=0,i<=m;i++) t=t*i; return t; } facsum(long n) { long x,t=0; while(n) { t=fac(n)+t; 4.含有特征值的类型。

在a数组中查找与x值相同的元素的所在位置。 #include void main() {

int a[11],x,i;

printf(\ for(i=1;i<=10;i++) scanf(\ printf(\ scanf(\;

注:本题中的a[0]是设置的特征值,为了不无下限找下去。课本p43 最后day==-1也是设置的特征值。总之,在c编程中,有时候有些值不好表达,或者值不影响函数最终结果的输出,可以设置特征值方便表达。掌握特征值的运用在c编程还是很重要的。

a[0]=x;i=10; while(x!=a[i]) i--; if (i!=0)

printf(\is M\\n\ else

printf(\ getch();}else return 0;} main() {long i;

for(i=1;i<2000000;i++) if(facsum(i)) printf(\getch(); }

5.输入十位之内的整数,要求设计程序重组出最小的数。如输入6352410,则应输出1023456.

#include regroup(int a[],long n) { int k,i=-1,t,j,p,m; while(n)

{ a[++i]=n; n=n/10;} m=i+1; for(i=0;i<=m-2;i++) {k=i;

for(j=k+1;ja[j]) k=j;

t=a[i];a[i]=a[k];a[k]=t; }

if(a[0]==0)

{for(i=0;i

p=a[0];a[0]=a[i];a[i]=p;} return m; }

main() {

int a[20]; long t,q; int i;

scanf(\q=regroup(a,t); for(i=0;i


上机题总结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:VBA常用函数

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: