C语言上机100题

  • 格式:doc
  • 大小:104.00 KB
  • 文档页数:31

C语言机试答案 第一套 1.编写函数fun,它的功能是:计算并输出下列级数和: S=1/2+1/2*3+1/3*4+...1/n*(n+1) 例如,当n = 10时,函数值为:0.909091 #include #include double fun(int n) { double s=0; int i; for (i=1;is+=1.0/(i*(n+1)); return s; } main() { printf("%f\n",fun(10)); } 2.在[10000, 20000]范围内考察个位数字是7的素数, 问: (1) 这样的素数有多少个? (2) 其中最大的一个等于几? #include int main(void) { int max,num=0; int i,j; for(i=10000;i<20001;i++) { for(j=2;jif(i%j==0) break; if(i==j&&i%10==7) { num++; max=i; } } printf("num=%d,max=%d\n",num,max); return 0; } 3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。 #include int main(void) { int year; printf("please input the year:\n"); scanf("%d",&year); if((year%400==0)||(year%4==0&&year%100!=0)) printf("%d is a leap year!",year); else printf("%d is not a leap year!",year); return 0; } 第二套1.编写函数fun,它的功能是:计算并输出下列级数和: 例如,当n = 10时,函数值为:0.909091 #include #include double fun(int n) { double s=0; int i; for (i=1;is+=1.0/(i*(n+1)); return s; } main() { printf("%f\n",fun(10)); } 2.回文数是指正读和反读都一样的自然数。例如,8, 121, 5445这三个数都是回文数。求: (1) [1,1000]之内既是回文数,又是素数的最大整数。 (2) [1,1000]以内既是回文数,又是素数的整数有多少个。 #include int huiwen(int n) { int p,m,flag=0; int s=0; m=n; do { p=m%10; s=s*10+p; m=m/10; }while(m); if(s==n) flag=1; return flag; } int sushu(int n) { int i,flag=0; for(i=2;iif(n%i==0) break; if(i==n) flag=1; return flag; } int main(void) { int i,max,num=0; for(i=1;i<1001;i++) { if(huiwen(i)&&sushu(i)) { max=i; num++; } } printf("num=%d,max=%d\n",num,max); return 0; } 3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格 #include int main(void) { char line[81]; int word=0,blank=0,flag=0; int i=0; gets(line); while(line[i]!='\0') { if(line[i]==' ') { blank++; if(flag) flag=0; } else if(!flag) { word++; flag=1; } i++; } printf("word=%d,blank=%d",word,blank); return 0; } 第三套 1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2)例如:当t =1000时,函数值为:1597。 #include #include #include int fun(int t) { int f1=0,f2=1,temp; while(f2{ temp=f1; f1=f2; f2=temp+f1; } return f2; } main() { int n; n=100; printf("n=%d,f=%d\n",n,fun(n)); } 2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和. #include int main(void) { int array[3][3]; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { scanf("%d",&array[i][j]); if(i==j) sum+=array[i][j]*array[i][j]; } printf("sum=%d\n",sum); return 0; } 3. 编程:删除字符串中的数字字符。 #include int main(void) { char string[81]; int i=0,j; gets(string); while(string[i]!='\0') { if(string[i]>='0'&&string[i]<='9') { j=i; do { string[j]=string[j+1]; j++; }while(string[j]!='\0'); } else i++; } printf("%s\n",string); return 0; } 第四套 1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s = 153.909064。 #include #include #include double fun (int n) { int i; double s,sum=0; for(i=1;i<1000;i++) { if(i%3==0&&i%7==0) sum+=i; } s=sqrt(sum); return s; } main() { printf("s=%f\n",fun(1000)); } 2.编程求出两个非零正整数的最大公约数. #include int main(void) { int m,n,t; printf("please input two positive integer :\n"); scanf("%d%d",&m,&n); if(m>0&&n>0) { if(m{ t=m;m=n;n=t; } do { t=m%n; m=n; n=t; }while(t); printf("the max common divisor is %d\n",m); } else printf("Error!\n"); return 0; } 3.请编写程序:根据以下公式求π(要求满足精度0.0005)的近似值:π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1)) #include int main(void) { double sum=1; double p=1,q=1; int n=1; while(p/q>5e-4) { p*=n; q*=(2*n+1); sum+=p/q; n++; }