计算机二级题目之循环结构练习学习
2021/12/13 23:19:08
本文主要是介绍计算机二级题目之循环结构练习学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.下列给定程序中,函数fun的功能是:计算并输出max以内最大的10个素数之和。high由主函数传给fun函数。
#include <stdio.h> #include <math.h> int fun( int high ) { int sum = 0, n=0, j, yes; /************found************/ while ((high >= 2) ___1___ (n < 10)) { yes = 1; for (j=2; j<=high/2; j++ ) if (high % j ==0 ){ /************found************/ yes=0; ___2___; } if (yes) { sum +=high; n++; } /************found************/ ___3___; } return sum ; } main ( ) { printf("%d\n", fun (100)); }
2.对从键盘输入的字符数组xx不超过80个,按照字符从大到小的顺序进行排序,排序后的结果存入字符串数组xx中。
#include <stdio.h> void main() { char xx[80] ; int numi,numj; char ch; printf("\n please input strings:"); scanf("%s",xx); for (numi=0;numi<strlen(xx);numi++) /***************found***************/ for (numj=___1___;numj<strlen(xx);numj++) if (xx[numi]<xx[numj]){ /***************found***************/ ___2___; xx[numi]=xx[numj]; /***************found***************/ ___3___;} printf("\n %s",xx); }
3.本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
#include <conio.h> #include <stdio.h> double fun(int n) { int a,b,c,k; double s; s=0.0; a=2; /***************found***************/ ___1___; for (k=1;k<=n;k++) { s=s+(double)a/b; c=a; a=a+b;b=c; } /***************found***************/ ___2___; } main() { int n; /***************found***************/ printf("\n n="); scanf("%d",___3___); printf("\n the value of function is: %lf\n", fun(n)); }
3.求下列分数序列的前n项之和。n值从键盘输入,和值通过函数值返回主程序输出。
#include <conio.h> #include <stdio.h> double fun(int n) { int a,b,c,k; double s; s=0.0; a=2; /***************found***************/ ___1___; for (k=1;k<=n;k++) { s=s+(double)a/b; c=a; a=a+b;b=c; } /***************found***************/ ___2___; } main() { int n; /***************found***************/ printf("\n n="); scanf("%d",___3___); printf("\n the value of function is: %lf\n", fun(n)); }
4.给定程序中,函数fun的功能是:f(x)=1+x+x2/+…+xn/n!直到|x/n!|<10-6,若x=2.5,函数值为:12.182494。
#include <stdio.h> #include <math.h> double fun(double x) { double f, t; int n; /**********found**********/ f = 1.0+___1___; t = x; n = 1; do { n++; /**********found**********/ t *= x/___2___; /**********found**********/ f += ___3___; } while (fabs(t) >= 1e-6); return f; } main() { double x, y; x=2.5; y = fun(x); printf("\nThe result is :\n"); printf("x=%-12.6f y=%-12.6f \n", x, y); }
5.
给定程序中,函数fun的功能是:找出100至x(x≤999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。
请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h> fun(int x) { int n, s1, s2, s3, t; /**********found**********/ n=__1__; t=100; /**********found**********/ while(t<=__2__) { s1=t%10; s2=(t/10)%10; s3=t/100; if(s1+s2+s3==15) { printf("%d ",t); n++; } /**********found**********/ __3__; } return n; } main() { int x=-1; while(x>999||x<0) { printf("Please input(0<x<=999): "); scanf("%d",&x); } printf("\nThe result is: %d\n",fun(x)); }
6.求k!(k<13),求阶乘的值作为函数值返回。例如k=10,则输出3628800.
#include <conio.h> #include <stdio.h> long fun ( int k) { /************found************/ if k > 0 return (k*fun(k-1)); /************found************/ else if ( k=0 ) return 1L; } NONO( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, k ; rf = fopen("gc02.in", "r") ; wf = fopen("gc02.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d,", &k) ; fprintf(wf, "%d!=%ld\n", k, fun ( k )) ; } fclose(rf) ; fclose(wf) ; } main() { int k = 10 ; printf("%d!=%ld\n", k, fun ( k )) ; NONO( ) ; }
7.输入x,y的值,求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。
#include <stdio.h> long fun(int x,int y,long *p ) { int i; long t=1; /**************found**************/ for(i=1; i<y; i++) t=t*x; *p=t; /**************found**************/ t=t/1000; return t; } main() { long t,r; int x,y; printf("\nInput x and y: "); scanf("%ld,%ld",&x,&y); t=fun(x,y,&r); printf("\n\nx=%d, y=%d, r=%ld, last=%ld\n\n",x, y,r,t ); }
8.“从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。例如:当s中的数为:7654321时,t中的数为:7531。”
#include <conio.h> #include <stdio.h> /************FOUND************/ void fun (long s, long t) { long sl=10; *t = s % 10; while ( s > 0) { s = s/100; *t = s%10 * sl + *t; /************FOUND************/ sl = sl*100; } } main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); }
9.下列给定程序中,函数fun 实现的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回 主函数;并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数 30800,则数字值为 零的个数为3,各位上数字值最大的是8。
#include <stdio.h> int fun(unsigned n, int *zero) { int count=0,max=0,t; do { t=n%10; /**************FOUND**************/ if(t=0) count++; if(max<t) max=t; n=n/10; }while(n); /**************FOUND**************/ zero=count; return max; } main() { unsigned n; int zero,max; printf("\nInput n(unsigned): "); scanf("%d",&n); max = fun( n,&zero ); printf("\nThe result: max=%d zero=%d\n",max,zero); }
10.找出一个大于给定整数m且紧随m的素数。
#include <conio.h> #include <stdio.h> int fun(int m) { int i, k ; for (i = m + 1 ; ; i++) { for (k = 2 ; k < i ; k++) /**************FOUND**************/ if (i % k != 0) break ; /**************FOUND**************/ if (k < i) return(i); } } NONO( ) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ FILE *fp ; int i ; fp = fopen("gc06.out", "w") ; for(i = 1 ; i <= 10 ; i++) fprintf(fp, "%d\n", fun(888 + i * 88)) ; fclose(fp) ; } main( ) { int n ; printf("\nPlease enter n: " ) ; scanf("%d", &n ) ; printf("%d\n", fun(n)) ; NONO( ) ; }
11.
编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。规定n的值不大于1000。例如:n的值为855时,应输出704。
#include <stdio.h> int fun(int n) { int sum=0,i; for(i=2;i<=n-1;i++) if(n%i==0) sum+=i; return sum; } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, n, sum ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; sum = fun(n) ; fprintf(wf, "%d=%d\n", n, sum) ; } fclose(rf) ; fclose(wf) ; } main() { int n,sum; printf("Input n: "); scanf("%d",&n); sum=fun(n); printf("sum=%d\n",sum); NONO(); }
12.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
注意:n的值要求大于2但不大于100。 部分源程序给出如下。
#include <math.h> #include <stdio.h> double fun(int n) { int i,j,k; double sum=0.0; for(i=3;i<=n;i++) {k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) break; if(j>=k+1) sum+=sqrt(i); } return sum; } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\n", s) ; } fclose(rf) ; fclose(wf) ; } main() { int n; double sum; printf("\n\nInput n: "); scanf("%d",&n); sum=fun(n); printf("\n\nsum=%f\n\n",sum); NONO(); }
13.设计程序,求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数返回,其中斐波那契数列F(n)的定义为:F(0)=0,F(1)=1;F(n)=F(N-1)+F(n-2)分别计算当t=1000和t=3000时的结果。
#include <conio.h> #include <math.h> #include <stdio.h> int fun( int t) { } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n, s ; fp = fopen("bc06.in","r") ; if(fp == NULL) { printf("数据文件bc06.in不存在!") ; return ; } wf = fopen("bc06.out","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%d", &n) ; s = fun(n) ; fprintf(wf, "%d\n", s) ; } fclose(fp) ; fclose(wf) ; } main() /* 主函数 */ { int n; n=1000; printf("n = %d, f = %d\n",n, fun(n)); NONO(); }
14.
如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子为1,2,3,且1+2+3=6,因此6是一个“完数”。
计算并输出1000以内的所有“完数”之和。
#include <stdio.h> int fun() { } void NONO () {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; int a; wf = fopen("out.dat","w") ; a=fun() ; fprintf(wf, "2-1000之间的完数之和为:%d\n", a) ; } int main( ) { printf("2-1000之间的完数之和为:%d\n",fun()); NONO (); return 0; }
15.编写一个函数,输入n为偶数时,计算1/2+1/4+...+1/n;当输入n为奇数时,计算1/1+1/3+...+1/n。 调用该函数并输出结果。
这篇关于计算机二级题目之循环结构练习学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南