《C程序设计基本编程题型全解》由会员分享,可在线阅读,更多相关《C程序设计基本编程题型全解(66页珍藏版)》请在金锄头文库上搜索。
1、C+程序设计课后练习全解第三单元运算符与表达式根据题目要求,编写完整的程序。从键盘上输入一些组合键,如Ctrl+B、Ctrl+D、Ctrl+Y等,如何能知道这些键的值。#includevoid main()(char Mul_Character;cinMul_Character;cout(int)Mul_Characterendi;)(2) 从键盘上输入一个整数x,将其低六位全部置1,其余各位不变。然后用十进制和十六制输出x的值。#includevoid main()(coutinput a intger:int num,num_changed;cinnum;num_changed = num
2、 | 0x003f;coutthe result is :,num_changed,(oct),hexnum_changed(hex),endl;)(3) 从键盘上输入一个整数x,将其高六位全部置0,其余各位不变。然后用十进制和十六制输出x的值。#include void main(void)(short x;cout input 1 int value:*;cin x;x = x & 0x03ffffff;高六位全部置 0 0000 0011 1111 1111 1111 1111 1111 1111cout nx=(dec)n x endl;/输出十进制cout x=(hex), hex
3、x endl;/输出十六进制)(4) 从键盘上输入一个摄氏温度C,求该温度对应的华氏温度F(F=5/9C+32)及绝对温度K(K=C+273.15)o#include void main()float c,f,k;coutinput temperature:,;cinc;f=5.0/9*c+32;elsecout此方程无解endi;elseif(b=O)coutn此方程无效(a,b都等于零)!*endl;elsexl=-c/b;coutvv”此方程只有一个根:” vvxlvvendl;)_l_ 3 5 8 3(7) 某个数列的前5项为:成3 5公,按此规律求出该数列的前20项,显示每一项的分子
4、和分母。#include#includevoid main()(int upl=2,up2=3;int down 1=1,down2=2;coutsetw(5)分子 * ,setw(5)分母 *,endl;coutsetw(5)upl* ,setw(5)downlendl;coutsetw(5)up2 *setw(5)down2endl;for(int i=3;iv=20;i+)int up=upl+up2;int down=downl+down2;coutsetw(5)upn setw(5)downendl;upl=up2;up2=up;downl=down2;dowii2=down;(8)
5、 输入一个正整数x,显示其所有的因子。在此基础上,求出110。之间的完全数。所谓完全数是指该数刚好等于它的因子之和(自己本身除外)。例如,6的因子为1, 2, 3,且6=1+2+3,因此6是一个完全数。#include void inain()coutinput a integer:int num,sum;int factor);cinnum;coutthe num vvnumvv s factors are:for(factor = l;factor = num;factor+)if(num % factor) = 0)coutfactorn ”;coutendl;coutvv”Kendl;
6、coutdo you want to find the perfect numbers betwenn 1 and100: (y or n)”;char flag;cinflag;if(flag = y) | (flag = Y)coutnthe perfect numbers between 1 and 100 are:vvendl;for(j = ly = 100U+)(sum = 0;for(factor = l;factor = j;factor+)(if(j % factor) = 0)sum += factor;sum -= j;if(sum = j)coutvvjvvcouten
7、dl;(9) 编程验证一个数学定理,任意一个正偶数都能分解为两个素数之和,例如,6=3+3、8=3+5。#include #include void main()int n;int ij;bool flag;coutvv”请输入任意整数(大于或等于6):”;cinn;while (n%2!=0|n6)coutvv”请输入任意整数(大于或等于6):”;cinn;for (i=3;iv=n/2;i+=2)flag=false;如果被整除,i不是素数break;停止内层循环如果循环到头了,i就是素数flag=true;)if (!flag)判断当前的i不是素数则执行下一次循环continue;fla
8、g=false;for (j=3; j * j (n-i)(停止内层循环/如果循环到头了,i就是素数for( j = 3; j * j = i; j += 2) /内层循环if( i % j = 0)flag=true;)if (flag)coutn,=,i+,(n-i)endl;第五单元函数和编译预处理根据题目要求,编写完整的程序,可所用己有函数,也可自行添加函数编写一个函数int digitSum(int x),返回形参x的十进制数的各位数之和,例如123的各位数为1+2+3=6。#includeint digitSum(int x)int sum=O;while(x)sum+=x%10;
9、x/=10;return sum;)void main()(int a;cina;coutdigitSuni(a)endl;(2) 编写一个函数,返回三个整数中的最大数并输出。要求先编写函数实现两个数中求最大数。#include int max_in_two(int a,int b)(if(a b)return a;elsereturn b;int max_in_three(int a,int b,int c)(return(max_in_two(max_in_two(a,b),c);void main()coutinput three integer:int a,b,c;cinabc;cou
10、tMthe max number is : Mmax_in_three(a,b,c)endl;(3) 编写一个函数,计算组合数:C(m, r) = m! / (r!X(m-r)!),其中m, r为正整数,且mr。分别求出C(4, 2), C(6, 4), C(8, 7)的组合数。求阶乘和组合数分别用函数来实现。#include /求阶乘函数unsigned factorial(unsigned n)(if(n = 1)return 1;elsereturn n * factorial(n-l);递归调用求组合数函数unsigned (unsigned m,unsigned r)(return
11、factorial(m)/(factorial(r)*factorial(m-r);void main()(coutMC(4, 2)=Mfc(4,2)endl;coutMC(6, 4)=fc(6,4)endl;coutMC(8, 7)=”vvfc(8,7)endl;)(4) 设计一个函数,将输入的十进制整数转换为相应的十六进制数并输出,个十六进制数。#includevoid z(int num)int i;char ch;if(num/16)z(num/16);i=num%16;if(i=10)ch=(char)i+55;coutch;else cout(char)i+0;void main(
12、)(int x;ccutvv”请输入一个十进制的整数:”;cinx;coutvv”其转换成十六进制数为:Z(x);coutendl;(5) 设计一个程序,求出5500之间的所有素数,要求每行输出5个素数。数来判断一个整数是否为素数。#include 要求输出8设计一个函#include using namespace std;bool IsPrime(int num);void main()(int count = 0;coutvv”本程序输出5-500之间所有素数:vvendl;for(int i = 5; i = 500; i+)if(IsPrime(i)(cout.setf(ios:le
13、ft);设置左对齐coutsetw(5)i;count +;if(count % 5 = 0)coutendl;)coutendl;bool IsPrime(int num)(if (num=0)|(nuiri = 1) return false;for (int i = 2; i =int(sqrt(double)nuni); i+)(if (num % i = 0) return false;)return true;(6) 设计一个程序,对于输入的一个正整数x,分解质因数并按从小到大次序输出所有质因数。例如,12=2*2*3, 13=13, 14 = 2*7。#includeiostrea