1 / 19

浙 江 广 播 电 视 大 学 计算机应用专业(开放专科)

浙 江 广 播 电 视 大 学 计算机应用专业(开放专科). 《 程序设计语言 》 作业 3 分析. 1. 编写函数 inteferPower(base,exponent), 返回 base 的 exponent 次幂 。例如, integerPower(3,4)=3*3*3*3. 假定 exponent 是非 0 整数, base 是一个整数。 用 for 循环控制函数的计算过程,不使用任何数学函数。. 分析: 保证 exponent 非 0 ,返回结果。. int integerPower(int base,int exponent) {int result=1,n;

Télécharger la présentation

浙 江 广 播 电 视 大 学 计算机应用专业(开放专科)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 浙 江 广 播 电 视 大 学 计算机应用专业(开放专科) 《程序设计语言》作业3分析

  2. 1.编写函数inteferPower(base,exponent),返回base的exponent次幂。例如,integerPower(3,4)=3*3*3*3.假定exponent是非0整数,base是一个整数。用for循环控制函数的计算过程,不使用任何数学函数。1.编写函数inteferPower(base,exponent),返回base的exponent次幂。例如,integerPower(3,4)=3*3*3*3.假定exponent是非0整数,base是一个整数。用for循环控制函数的计算过程,不使用任何数学函数。 分析: 保证exponent非0,返回结果。

  3. int integerPower(int base,int exponent) {int result=1,n; while(exponent<0) { printf(“invalid !input again:\n”); scanf(“%d”,&exponent);} for(n=0;n<exponent;n++) result*=base; return result;/*包含exponent为1*/ } main() { int base,exponent; scanf(“%d,%d”,&base,&exponent); printf(“%d”,integerPower(base,exponent)); }

  4. 2.编写有两个整数参数的函数multiple,用该函数确定一对整数中的第二个整数是否是第一个整数的整数倍。如果第二个参数是第一个参数的整数倍,函数返回1,否则返回0。把该函数用在程序中,并在程序中输入一系列整数对。2.编写有两个整数参数的函数multiple,用该函数确定一对整数中的第二个整数是否是第一个整数的整数倍。如果第二个参数是第一个参数的整数倍,函数返回1,否则返回0。把该函数用在程序中,并在程序中输入一系列整数对。 分析: 判断 是否整数倍,可通过求余运算实现。

  5. int multiple(int f1,int f2) { if(f2%f1==0) return 1; else return 0; } main() { int first,second; scanf(“%d,%d”,&first,&second); printf(“%d”,multiple(first,second)); }

  6. 3. 编写一个函数,绘制正方形,正方形边长由参数side指定,绘制的字符由参数fillCharacter指定,例如:参数side为2,fillCharacer为“*”,则打印出: ** ** 分析: 绘制的行数由side确定(外循环); 每一行绘制的列数由side确定(内循环),绘制的符号由fillCharacter确定。

  7. void draw_square(int side,char fillCharacter) { int i,j; for(i=0;i<side;i++) { for(j=0;j<side;j++) printf(“%c”,fillCharater); printf(“\n”);} } main() { int s,ch; scanf(“%d,%c”,&s,&ch); while(s<0){ printf(“invalid!input again:\n”): scanf(“%d”,&s);} draw_square(s,ch);}

  8. 4. 编写一个函数, 确定一个整数是否为素数;将该函数用在程序中,计算并打印出1到1000之间所有的素数。 分析: 素数:仅能被1和自身整除的整数; 整除:若m%n==0,则m能被n整除。 测试所有数(即从2到自身),若都不能被整除则该数为素数;只要有一个能整除则退出测试;

  9. int is_primenumber(int n) { int i; for(i=2;i<n;i++) if(n%i==0) break; if(i==n) return 1; else return 0; }

  10. main() { int k,n=0; for(k=2;k<=1000;k++) if(is_primenumber(k)) { printf(“%d”,k); n++; if(n%5==0) printf(“\n”); } }

  11. /*改进的算法*/ for(i=2;i<n/2;i++) if(n%i==0) break; /*改进的算法*/ for(i=2;i<sqrt(n);i++) if(n%i==0) break;

  12. 5. 编写一个模拟投掷硬币程序。每投掷一次硬币,程序都要打印出正面或反面。让程序投掷硬币100次,计算硬币每一面出现的次数并打印结果。程序调用函数flip 模拟硬币投掷,该函数不带参数,在出现反面时返回0,在出现正面时返回1.注:如果程序真实地模拟了硬币投掷,那么出现正面和反面的次数大致相等。 分析:模拟一次投掷flip函数,返回1或0; 在主调函数中多次调用flip并根据返回值统计出现正面或反面的次数。

  13. int flip(void) { return (rand()%2);} main() { int k,n1=0,n2=0; srand(time(NULL)); for(k=0;k<100;k++) if(flip()) n1++; else n2++; printf(“coin head:%d\n”,n1); printf(“coin tail:%d\n”,n2);}

  14. 6. Fibonacci数列 0,1,1,2,3,5,8,13,21…… 的开始两项是0和1,其后的每一项都是它前两项之和。编写一个非递归函数fibonacci(n)计算第n项的Fibonacci数。 分析:F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n>=3)

  15. 月数 小兔子数 中兔子数 老兔子数 总数 1 1 0 0 1 2 0 1 0 1 3 1 0 1 2 4 1 1 1 3 5 2 1 2 5 … .. .. .. … 古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有的兔子不死,问每个月兔子的总数为多少?

  16. long fibonacci(int n) { long int f1,f2; int i,t; if(n==0||n==1) return n; else {f1=0;f2=1; for(i=3;i<=n;i++) { t=f2; f2=f1+f2; f1=t;} return f2; } }

  17. /*递归的fibonacci函数*/ long fibonacci(int n) { if(n==1||n==0) return 1; else return fibonacci(n-1)+fibonacci(n-2); }

  18. 7.输入一个在1到32767之间的整数,打印出组成它的一系列数字,数字之间用两个空格分开。例如,输入整数1234则输出1 2 3 4。 分析: 个位数:x%10 十位数:x/10%10 …… 多少位?

  19. /*递归的f函数*/ void f(int x) { if(x/10==0) printf(“%d\t”,x); else { f(x/10); printf(“%d\t”,x%10);} }

More Related