用穷举法找出 1~100 间的质数,显示出来。分别使用 while,do-while,for 循环语句实现。 解: 源程序: 使用 while 循环语句: #include
#include void main() { int i,j,k,flag; i = 2; while(i <= 100) { flag = 1; k = sqrt(i); j = 2; while (j <= k) { if(i%j == 0) { flag = 0; break; } j++; } if (flag) cout << i << "是质数." << endl; i++; } } 使用 do…while 循环语句: #include #include void main() { int i,j,k,flag; i = 2; do{ flag = 1; k = sqrt(i); j = 2; do{ if(i%j == 0) { flag = 0;
break; } j++; }while (j <= k); if (flag) cout << i << "是质数." << endl; i++; }while(i <= 100); } 使用 for 循环语句: #include #include void main() { int i,j,k,flag; for(i = 2; i <= 100; i++) { flag = 1; k = sqrt(i); for (j = 2; j <= k; j++) { if(i%j == 0) { flag = 0; break; } } if (flag) cout << i << "是质数." << endl; } } 2-35 定义枚举类型 weekday,包括 Sunday 到 Saturday 七个元素在程序中定义 weekday 类型 的变量,对其赋值,定义整型变量,看看能否对其赋 weekday 类型的值。 解: #include enum weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
}; void main() { int i; weekday d = Thursday; cout << "d = " << d << endl; i = d; cout << "i = " << i << endl; d = (weekday)6; cout << "d = " << d << endl; d = weekday( 4 ); cout << "d = " << d << endl; } 程序运行输出: d=4 i=4 d=6 d=4 3-7 编写函数,参数为两个 unsigned short int 型数,返回值为第一个参数除以第二个参数的 结果,数据类型为 short int;如果第二个参数为 0,则返回值为-1。在主程序中实现输入输 出。 解: 源程序: #include short int Divider(unsigned short int a, unsigned short int b) { if (b == 0) return -1; else return a/b; } typedef unsigned short int USHORT; typedef unsigned long int ULONG; int main() { USHORT one, two; short int answer; cout << "Enter two numbers.\n Number one: "; cin >> one; cout << "Number two: "; cin >> two; answer = Divider(one, two); if (answer > -1)
cout << "Answer: " << answer; else cout << "Error, can't divide by zero!"; return 0; } 程序运行输出: Enter two numbers. Number one:8 Number two:2 Answer: 4 编写函数判断一个数是否是质数,在主程序中实现输入、输出。 解: #include #include int prime(int i); //判一个数是否是质数的函数 void main() { int i; cout << "请输入一个整数:"; cin >> i; if (prime(i)) cout << i << "是质数." << endl; else cout << i << "不是质数." << endl; } int prime(int i) { int j,k,flag; flag = 1; k = sqrt(i); for (j = 2; j <= k; j++) { if(i%j == 0) { flag = 0; break; } } if (flag) return 1; else return 0; } 程序运行输出:
请输入一个整数:1151 1151 是质数. 3-10 编写函数求两个整数的最大公约数和最小公倍数。 解: 源程序: #include #include h> int fn1(int i,int j); //求最大公约数的函数 void main() { int i,j,x,y; cout << "请输入一个正整数:"; cin >> i ; cout << "请输入另一个正整数:"; cin >> j ; x = fn1(i,j); y = i * j / x; cout << i << "和" << j << "的最大公约数是:" << x << endl; cout << i << "和" << j << "的最小公倍数是:" << y << endl; } int fn1(int i, int j) { int temp; if (i < j) { temp = i; i = j; j = i; } while(j != 0) { temp = i % j; i = j; j = temp; } return i; } 程序运行输出: 请输入一个正整数:120 请输入另一个正整数:72 120 和 72 的最大公约数是:24 120 和 72 的最小公倍数是:360 在主程序中提示输入整数 n,编写函数用递归的方法求 1 + 2 + … + n 的值。
解: #include #include int fn1(int i); void main() { int i; cout << "请输入一个正整数:"; cin >> i ; cout << "从 1 累加到" < long GetPower(int x, int y); int main() { int number, power; long answer; cout << "Ente