C/C++之练习题1-3
来源:互联网 发布:移动网络代理服务器 编辑:程序博客网 时间:2024/05/22 00:33
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include<stdio.h>#include<stdlib.h> int main(){ int i,j,k,count=0; printf("\n"); for(i = 1;i<5;i++){ for(j=1;j<5;j++){ for(k = 1;k<5;k++){ if(i!=k && i!=j &&j!=k){ printf("%d,%d,%d\n",i,j,k); count++; } } } } printf("一共多少个%d",count); system("pause"); return 0; }
【程序2】
题目:
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于
10万元,低于20万元时,低于10万元的部分按10%提成,高于 10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
#include<stdio.h>#include<stdlib.h> double function(int bonus){ double sum; double bonus1,bonus2,bonus3,bonus4,bonus5,bonus6; bonus1 = 100000*0.1; bonus2 = 100000*0.075; bonus3 = 200000*0.05; bonus4 = 200000*0.03; bonus5 = 400000*0.015; printf("%0.2lf,%0.2lf,%0.2lf,%0.2lf,%0.2lf",bonus1,bonus2,bonus3,bonus4,bonus5); if(bonus<=100000){ sum = bonus*0.1 ; } else if(bonus<=200000){ sum = bonus1 + (bonus-100000)*0.075 ; } else if(bonus<=400000){ sum = bonus1 + bonus2 +(bonus-200000)*0.05; } else if(bonus<=600000){ sum = bonus1 + bonus2 +bonus3+ (bonus-400000)*0.03; } else if(bonus<=1000000){ sum = bonus1 + bonus2 +bonus3+ bonus4+ (bonus-600000)*0.015; } else if(bonus>1000000){ sum = bonus1 + bonus2 +bonus3+ bonus4+ bonus5+(bonus-1000000)*0.01 ; } return sum; } int main(){ double sum,i; int k; for(k=1;;k++){ printf("请输入利润进行提成计算:"); scanf("%lf",&i); sum = function(i); printf("获得提成:%0.2lf\n",sum); } system("pause"); return 0; }
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析:
#include<stdio.h>#include<stdlib.h>#include<math.h>/***第一种方式 //开方结果,再平方结果,相等返回true bool function(int number){ bool flag = false; int sum = 0; sum = sqrt(number); flag = (number == sum*sum); return flag; } ***************/ /** //计算结果小于100268的平方数,一共是316个数再减去268 ,再减去16个也就是有32个数需要计算,根本不需要计算十万个 int function1(){ int j; printf("输出10万以内平方少于100268的数:\n"); for(j= sqrt(268);j<sqrt(100268);j++){ printf("j = %ld\t",j); if(0 == j%10){ printf("\n"); } } printf("输出最后的j是等于%ld\n",--j); return j; } **/ /*******************************************************/ //反向计算,平方再减去100 和平方减去268 如果等于同一个数,则为完全平方数 void function2(){ //给两个数组存储平方数结果 一个减去一百,一个减去268,比较两个数组中的数据,相同者为符合的数 int sum,q,p = 0 ; int k,m,count,g; int a[316],b[316]; // sum = functio1(); // sum-sqrt(268),k初始值是16, 平方是256,256-100 = 156 k = sqrt(100); sum =sqrt(100268); for(q =k;q<=sum;q++){ a[p] =q*q-100; b[p]=q*q-268; // printf("输出最后的a是等于%d\t",a[p]); // printf("输出最后的b是等于%d\n",b[p]); p++; } printf("输出最后的需要比较的个数p是等于%d\t",p); //两个数组进行比较,相同的则写入到新的数组中 printf("数组a是等于多长%d\n",sizeof(a)); //1264也就是316的4倍?因为int占4 printf("数组b[6]是等于%d\n",b[6]); //1264也就是316的4倍?因为int占4 printf("数组b[7]是等于%d\n",b[7]); //1264也就是316的4倍?因为int占4 printf("数组a[0]是等于%d\n",a[0]); //1264也就是316的4倍?因为int占4 int len = sizeof(a)/sizeof(int);// len = sum - k; for(count = 7; count<=len;count++){ //很明显的一件事是a[0]比b[0]大168,也就是说比较的时候,可以略过一些没必要的比较 , // 估算一下 可以跳过,10....16,17,18,19 ,20,是可以跳过不比较的 for(g=1;g<=len;g++){ if(b[count]==a[g]){ printf("符合的数为:%d\n",b[count]); } } } //返回的数减一百或者268都行 } /****** 第一种方式 int main(){ int i; printf("开始计算10万以内符合要求的数\n"); for(i=1;i<100000;i++){ if(function(i+100)){ if(function(i+268)){ printf("符合的数:i = %ld\n",i); } } } function1(); system("pause"); return 0; } *****/ //第二种方式 int main(){ printf("开始计算10万以内符合要求的数\n"); function2(); system("pause"); return 0; }
0 0
- C/C++之练习题1-3
- c语言练习题3
- C语言练习题(3)
- c语言练习题1
- C语言练习题 1
- C语言练习题1
- C语言练习题(1)
- c语言练习题1
- The C Programming Language 练习题3-1
- C练习题
- C练习题
- c练习题
- c练习题
- c练习题
- [c] 练习题
- [c] 练习题
- C程序设计语言练习题之 1-19, 我的编程
- c primer plus9.1练习题
- C++继承和派生
- Spring scope属性详解
- freemarker的使用,转自http://blog.sina.com.cn/s/blog_64c505480100sxuh.html
- Java反射机制实例详解
- java序列化和反序列化
- C/C++之练习题1-3
- centos安装中文语言包
- SpringMVC:异常处理机制与自定义异常处理
- nginx_connect&request
- LIGHT OJ-1182 - Parity 【按位与】
- 关于_水木社区[日经题]_10只狗鉴别1000瓶中哪一瓶药有毒_的解答思路
- Tomcat源码解析(九):配置文件读取
- cocoscreate 官方例子说明 01_graphics_01_sprite_SimpleSprite by:adady
- *浙大PAT甲级 1060