大学基础c语言课堂习题

  • 格式:pdf
  • 大小:283.86 KB
  • 文档页数:5
n
开始
输入n
i←2 n%i为0?
y
n
i←i+1
i>√n ? y
输出n 结束
2015/5/11
1
for循环的应用
[例5.7] 求斐波那契数列第n项。斐波那契数列第一、第二两项为1,以 后每项为前两项的和。如前7项: 1,1,2,3,5,8,13 f1=1 (n=1) f2=1 (n=2) fn=fn-1+fn-2 (n≥3) [解题方法] 递推法:逐项递推
[例] [例]给定一个整数n,判断它是否为素数(即质数)。
注意:素数判别方法,若n不能被2~ n 的数整除,则n是素数。
[解] 采用穷举法
#include <stdio.h> //printf() #include <math.h> //sqrt() void main() { int n,i; //i作循环变量 printf("请输入整数: "); scanf("%d",&n); //输入整数n //循环判断n是否有约数 for(i=2; i<=sqrt(n); i++) if(n%i==0) break; if(i>sqrt(n))printf("%d是数素\n",n); else printf("%d不是素数\n",n); }
2015/5/11 3
for循环的应用
Hale Waihona Puke [例]十进制整数转换为二进制 void main() { int array[30];//用来保存计算结果 int x,i=0; printf("请输入一个整数将其转换为二进制:"); scanf("%d",&x); while(x) { array[i]=x%2; x=x/2; i++; } printf("结果为:"); for(i=i-1;i>=0;i--)//循环打印输出,注意是从后往前打印 printf("%d",array[i]); printf("\n"); }
[例]输入字符串,逆序输出 #include "stdio.h" int main() { char input[100]={0},output[100]={0}; int i,length=0; printf("请输入一个字符串:"); gets(input); for(i=0;input[i]!='\0';i++) length++; for(i=0;i<length;i++) output[i]=input[length-1-i]; printf("逆序存放后输出:"); puts(output); }
1, 1, 2, 3, 5, 8, 13, 21, 34, 55 f1+ f2 f f f f1+ f2 f1 + f2
递推表达式 f=f1+f2; f1=f2; f2=f;
2
2015/5/11
[例] 求斐波那契数列第n项。斐波那契数列第一、第二两项为1,以后 每项为前两项的和。如前7项: 1,1,2,3,5,8,13 #include<stdio.h> void main() { int n,i; int f1=1,f2=1,f; printf("n="); scanf("%d",&n); //输入n if(n<3) printf("1"); for(i=3;i<=n;i++) { f=f1+f2; //第n项 逐项 f1=f2; 递推 f2=f; } printf("%d\n",f); }