常见编程算法实例
常见编程算法实例关于数字上的一些编程算法1. 输出9*9口诀乘法表分析:分行与列考虑,共9行9列,i控制行,j控制列。
#include "stdio.h"main(){ int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<=i;j++){ result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/} printf("\n");/*每一行后换行*/}}2. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
【分析】关键是计算出每一项的值。
main(){ int a,n,count=1;long int sn=0,tn=0;printf("please input a and n\n");scanf("%d,%d",&a,&n);printf("a=%d,n=%d\n",a,n);while(count<=n){ tn=tn+a;sn=sn+tn;a=a*10;++count;}printf("a+aa+...=%ld\n",sn); }公式∏/4=1-1/3+1/5-1/7+...+ 1/n ,求∏的近似值,直到最后一项1/n 的绝对值小于0.000001。
#include<stdio.h>#include<math.h>main(){ int f=1;double pi=0,t=1,v=1;while(fabs(t)>1e-6){ pi=pi+t;v+=2;f=-f;t=f/v;}pi*=4;printf("∏=%f\n",pi); }有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
规律:分子是前一项分子分母之和,分母是前一项的分子。
main(){ int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a;a=a+b;b=t;/*序列规律的实现*/}printf("sum is %9.6f\n",s); }判断11<=x<=10000中的数那些是回文数,统计回文数个数,回文数每行输出10个。
分析:(1) 让x重新构成新的数t,如果x==t则是回文数.(2) 分解出x的各位,进行首尾比较,如果都相等则是回文数。
fun1()//算法一{ long x,i,t=0,s=10,cnt=0;for(x=11;x<10000;x++){ i=x;while(i!=0)//构成新的数{ t=t*s+i%10;i=i/10; }if(t==x){printf("%5d",x);cnt++;if(cnt%10==0)printf("\n"); }t=0; }printf("\ncnt=%5d",cnt);}fun2()//算法二{ long x,i,t=0,j=0,s=10,x1,cnt=0;int a[10];for(x=11;x<10000;x++){ x1=x;while(x1!=0)//分解出各位{ a[ j ]=x1%10;x1=x1/10;j++; }i=0;j--;while(i<j)//首尾比较if(a[i]==a[j])i++,j--;else break;if(i>=j){printf("%5d",x);cnt++;if(cnt%10==0)printf("\n"); }j=0; }printf("\ncnt=%5d",cnt); }main(){fun1(); }求1+2!+3!+...+20!的和。
main(){float n,s=0,t=1;for(n=1;n<=20;n++){ t*=n; //实现阶乘s+=t; //将阶乘累加}printf("1+2!+3!...+20!=%e\n",s); //%e 为科学计数法输出}输入一个年份判断它是否是闰年,满足下面条件之一就称为闰年:(1).能被4整除而不能被100整除。
(2).能被100整除也能被400整除。
#include<stdio.h>main(){long int year;printf("input year:");scanf("%d",&year);if(year%4==0&& year%100!=0||year%100==0&&year%400==0)printf("yes");else printf("No"); }将十进制数转换成任意进制。
分析:将输入的数循环除以基数取余直到商为0 ,然后逆序输出。
#include<stdio.h>void main() // idec为十进制数,ibase为要转换成数的基{int idec,i, idr, p=0,ibase;char strdr[20],t;printf("输入要转换的十进制数idec=");scanf("%d",&idec);printf("\n输入要转换成的进制基数(如:八进制则输入8)ibase=");scanf("%d",&ibase);while(idec!=0) //循环除以基数取余直到商为0{ idr=idec % ibase;if(idr>=10)strdr[p++]=idr-10+65; //将16进制的10,11,12,13,14,15与A,B,C,D,E,F对应else strdr[p++]=idr+48; //将数字转换为数字字符idec/=ibase; //得到商,把这个商的值重新赋值给idec} //下面for循环的目的是将取余的各数逆序存放,for(i=0; i<p/2; i++){ t=strdr[i];strdr[i]=strdr[p-i-1];strdr[p-i-1]=t; }strdr[p]='\0';printf("\n转换成%d进制后的数为:%s",ibase,strdr);printf("\n"); }将一个数组逆序输出。
分析:用第一个与最后一个交换,然后用第二个与倒数第二个交换,其余依此类推。
#define N 5main(){int a[N]={9,6,5,4,1},i,temp;printf("\n original array:\n");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp; }printf("\n sorted array:\n");for(i=0;i<N;i++)printf("%4d",a[i]); }打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
main(){int i,j,k,n;printf("'water flower'number is:");for(n=100;n<1000;n++){ i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){ printf("%-5d",n);} }printf("\n"); }找出3-1000中的全部素数。
素数(质数):只能被1和自身整除的自然数(1除外).如 2 3 5 7是素数。
#include<stdio.h>#include<math.h>main(){int i,j,cnt=0;for(i=3;i<=1000;i++){ for(j=2;j<=sqrt(i);j++)//i能被j整除说明不是素数,数学上已经证明只需要判断{ if(i%j==0) break; } // j<=sqrt(i),i都不能被j整除就能证明i为素数。
if(j>sqrt(i)){ printf("%4d",i);cnt++;if(cnt%5==0)printf("\n"); //控制每行输出5个数} } }判断整数x(0<x<100)是否是同构数。
同构数:一个数它出现在它的平方数的右边例如: 5 ,5的平方数是25,5是25中右侧的数,所以5是同构数;又如25 是625的同构数.#include<stdio.h>main(){ long int x,y,i=10;int flag=0;for(x=1;x<100;x++){y=x*x;while(y/i!=0) //利用循环取余的方法进行判断{ //先让y对10取余,判断是否是同构数if(y%i==x) //再对100取余判断,直到y/i为0{ flag=1;break; }i=i*10; }if(flag==1) printf("\n%d是%d的同构数!",x,y);flag=0;i=10; } }一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如6=1+2+3。
编程找出1000以内的所有完数。
main(){ static int k[11];int i,j,n,s;for(j=2;j<1000;j++){ n=-1;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;//找到质因子s=s-i;//减去找到的因子,如果减到s=0说明s是完数k[n]=i;} }if(s==0){printf("%d is a wanshu",j);for(i=0;i<n;i++)printf("%d,",k[i]);printf("%d\n",k[n]);}}}弦数:一个正整数x其平方等于某两个正整数平方之和。
C程序经典算法50例
C程序经典算法50例1.二分查找算法:在有序数组中查找指定元素。
2.冒泡排序算法:通过不断比较相邻元素并交换位置,将较大的元素向后冒泡。
3.快速排序算法:通过选择一个基准元素,将数组分割为左右两部分,并递归地对两部分进行快速排序。
4.插入排序算法:将数组划分为已排序和未排序两部分,每次从未排序中选择一个元素插入到已排序的合适位置。
5.选择排序算法:遍历数组,每次选择最小元素并放置在已排序部分的末尾。
6.希尔排序算法:将数组按照一定间隔进行分组并分别进行插入排序,然后逐步减小间隔并重复这个过程。
7.归并排序算法:将数组递归地划分为两部分,然后将两个有序的部分进行合并。
8.桶排序算法:将元素根据特定的映射函数映射到不同的桶中,然后对每个桶分别进行排序。
9.计数排序算法:统计每个元素的出现次数,然后根据计数进行排序。
10.基数排序算法:从低位到高位依次对元素进行排序。
11.斐波那契数列算法:计算斐波那契数列的第n项。
12.阶乘算法:计算给定数字的阶乘。
13.排列问题算法:生成给定数组的全排列。
14.组合问题算法:生成给定数组的所有组合。
15.最大连续子序列和算法:找出给定数组中和最大的连续子序列。
16.最长递增子序列算法:找出给定数组中的最长递增子序列。
17.最长公共子序列算法:找出两个给定字符串的最长公共子序列。
18.最短路径算法:计算给定有向图的最短路径。
19.最小生成树算法:构建给定连通图的最小生成树。
20.汉诺塔算法:将n个圆盘从一个柱子移动到另一个柱子的问题。
21.BFS算法:广度优先算法,用于图的遍历和查找最短路径。
22.DFS算法:深度优先算法,用于图的遍历和查找连通分量。
23.KMP算法:字符串匹配算法,用于查找一个字符串是否在另一个字符串中出现。
24.贪心算法:每次都选择当前情况下最优的方案,适用于求解一些最优化问题。
25.动态规划算法:将一个大问题划分为多个子问题,并通过子问题的解求解整个问题,适用于求解一些最优化问题。
常用算法举例
常用算法举例一、求面积、体积、方程的根,将公式的表达式用变量或常量表示出来,输出即可;二、累加、累乘(包括偶数和奇数的变换运算)三、典型算法举例:1、求两个数或三个数或多个数的最大值、最小值思路:用表判断的if语句就可完成,也可使用函数的调用;若是多个数,则采取从键盘上输入第一个数,并假定它是最大值存放在变量max中,以后每输入一个数便与max比较,若输入的数较大,则最大值是新的数值,存放到max中,数据输入完,最大值也就确定了。
main( ){int a,b,c,d;scanf(“%d,%d,%d”.&a,&b,&c);d=max(a,b,c);printf(“max=%d”,d);}int max(x,y,z)int x,y,z;{int p;p=x;if (p<y) p=y;if (p<z) p=z;return(p);}求10个数的最大值main( ){int I,k,max;scanf(“%d”,&max);for (I=2;I<11;I++){scanf(“%d”,&k);if (max<k) mzk=k;}printf(“max=%d\n”,max);}2、判断是否为闰年思路:闰年应满足条件之一:(a)能被4整除,但不能被100整除;(b)能被4整除又能被400整除main( ){int year,leap;scanf("%d",&year);if (year%4==0 ){ if (year%100==0){if (year%400==0)leap=1;else leap=0;}elseleap=1;}elseleap=0;if (leap)printf(“%d is “,year);elseprintf(“%d is not”,year);printf(“a leap year/n”);}此程序还可以简化用 (year%4==0 &&year%100!=0 || year%400==0)直接进行判断也可;此题还可求某范围内的闰年。
100个python算法实例
100个python算法实例Python算法是指用Python编写的解决问题或处理数据的方法和步骤。
Python是一种通用的、高级的编程语言,具有简单易学、可读性强、代码简洁等特点,非常适合用于编写各种算法。
下面将给出100个Python算法实例的相关参考内容,不包含任何链接。
1. 阶乘算法阶乘算法用于计算一个正整数的阶乘,即n! = n * (n-1) * ... * 2 * 1。
可以使用递归或循环的方式实现,以下是一个示例代码:```pythondef factorial(n):if n == 0:return 1else:return n * factorial(n-1)```2. 斐波那契数列算法斐波那契数列由0和1开始,后面的每一项都是前两项的和。
可以使用递归或循环的方式实现,以下是一个示例代码:```pythondef fibonacci(n):if n <= 0:return 0elif n == 1:return 1else:return fibonacci(n-1) + fibonacci(n-2)```3. 冒泡排序算法冒泡排序是一种简单的排序算法,通过不断比较相邻的两个元素并交换位置,使得最大(或最小)的元素逐渐“冒泡”到最后(或最前)。
以下是一个示例代码:```pythondef bubble_sort(lst):n = len(lst)for i in range(n - 1):for j in range(n - 1 - i):if lst[j] > lst[j + 1]:lst[j], lst[j + 1] = lst[j + 1], lst[j]return lst```4. 快速排序算法快速排序是一种高效的排序算法,通过选择一个基准元素,将小于该基准的元素移到左侧,大于该基准的元素移到右侧,然后递归地对左右两个部分进行排序。
以下是一个示例代码:```pythondef quick_sort(lst):if len(lst) <= 1:return lstelse:pivot = lst[0]less = [x for x in lst[1:] if x <= pivot]greater = [x for x in lst[1:] if x > pivot]return quick_sort(less) + [pivot] + quick_sort(greater)```5. 二分查找算法二分查找算法是一种快速查找有序列表中特定元素位置的算法,通过不断将待查找范围缩小一半的方式进行查找。
c语言循环结构经典算法
c语言循环结构经典算法C语言循环结构是程序设计中常用的一种结构,通过循环可以重复执行一段代码,实现重复性的任务。
下面列举了10个经典的算法案例,每个算法都有其特定的应用场景和解决问题的方法。
1. 阶乘计算:计算一个数的阶乘,即该数与小于它的所有正整数的乘积。
通过循环结构可以逐步累乘,最终得到阶乘结果。
2. 素数判断:判断一个数是否为素数,即只能被1和自身整除的数。
通过循环结构可以逐一判断该数是否能被小于它的每个数整除,若能则不是素数。
3. 斐波那契数列:斐波那契数列是指从第3项开始,每一项都等于前两项之和。
通过循环结构可以逐一计算每一项的值,从而得到完整的斐波那契数列。
4. 最大公约数:求两个数的最大公约数,即能同时整除两个数的最大正整数。
通过循环结构可以从较小的数开始逐一判断能否同时整除两个数,找到最大的能整除的数即为最大公约数。
5. 最小公倍数:求两个数的最小公倍数,即能同时被两个数整除的最小正整数。
通过循环结构可以从较大的数开始逐一判断能否被两个数同时整除,找到最小的能被整除的数即为最小公倍数。
6. 简单排序:对一组数进行排序,使其按照从小到大或从大到小的顺序排列。
通过循环结构可以比较相邻的两个数的大小,若顺序不对则交换位置,直到整个序列有序。
7. 数字翻转:将一个正整数从高位到低位逆序排列。
通过循环结构可以依次取出每一位的数字,然后将其乘以相应的权重得到逆序后的结果。
8. 队列模拟:模拟队列的入队和出队操作,实现数据的先进先出。
通过循环结构可以不断接收用户的输入,并根据不同的指令执行相应的操作。
9. 栈模拟:模拟栈的入栈和出栈操作,实现数据的后进先出。
通过循环结构可以不断接收用户的输入,并根据不同的指令执行相应的操作。
10. 二分查找:在一个有序数列中查找指定的元素,通过循环结构可以不断缩小查找范围,直到找到目标元素或确定不存在。
以上是10个经典的C语言循环结构算法,每个算法都有其独特的解决问题的方法。
C语言常见编程算法实例
常见编程算法实例一、关于数字上的一些编程算法1.输出9*9口诀乘法表。
分析:分行与列考虑,共9行9列,i控制行,j控制列。
#include "stdio.h"main(){ int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<=i;j++){ result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/} printf("\n");/*每一行后换行*/}}2.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
分析:关键是计算出每一项的值。
main(){ int a,n,count=1;long int sn=0,tn=0;printf("please input a and n\n");scanf("%d,%d",&a,&n);printf("a=%d,n=%d\n",a,n);while(count<=n){ tn=tn+a;sn=sn+tn;a=a*10;++count;}printf("a+aa+...=%ld\n",sn); }3.公式∏/4=1-1/3+1/5-1/7+...+ 1/n ,求∏的近似值,直到最后一项1/n 的绝对值小于0.000001。
#include<stdio.h>#include<math.h>main(){ int f=1;double pi=0,t=1,v=1;while(fabs(t)>1e-6){ pi=pi+t;v+=2;f=-f;t=f/v;}pi*=4;printf("∏=%f\n",pi); }4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
c语言算法100例
c语言算法100例以下是一些经典的C语言算法题目,总共提供100个例子供你练习和学习:1.编写一个程序,计算并输出斐波那契数列的前20个数。
2.编写一个程序,判断一个数是否为素数。
3.编写一个程序,计算并输出一个数的阶乘。
4.编写一个程序,实现两个数的交换(不使用第三个变量)。
5.编写一个程序,找出一个数组中的最大值。
6.编写一个程序,将一个字符串反转。
7.编写一个程序,判断一个字符串是否为回文字符串。
8.编写一个程序,实现冒泡排序算法对一个数组进行排序。
9.编写一个程序,实现二分查找算法在一个有序数组中查找指定的元素。
10.编写一个程序,计算并输出斐波那契数列的第n个数。
11.编写一个程序,将一个二维数组顺时针旋转90度。
12.编写一个程序,计算并输出一个数的平方根。
13.编写一个程序,判断一个字符串中是否包含重复字符。
14.编写一个程序,实现插入排序算法对一个数组进行排序。
15.编写一个程序,将一个有序数组合并为一个有序数组。
16.编写一个程序,判断一个数是否为完全数(即所有因子之和等于该数本身)。
17.编写一个程序,计算并输出一个数的倒数。
18.编写一个程序,判断一个字符串是否是另一个字符串的子串。
19.编写一个程序,实现选择排序算法对一个数组进行排序。
20.编写一个程序,计算并输出两个数的最大公约数。
21.编写一个程序,实现快速排序算法对一个数组进行排序。
22.编写一个程序,将一个字符串中的所有空格替换为指定的字符。
23.编写一个程序,判断一个数是否是回文数。
24.编写一个程序,计算并输出两个数的最小公倍数。
25.编写一个程序,实现归并排序算法对一个数组进行排序。
26.编写一个程序,判断一个字符串是否是有效的括号串。
27.编写一个程序,计算并输出一个数的立方根。
28.编写一个程序,实现堆排序算法对一个数组进行排序。
29.编写一个程序,判断一个数是否是质数。
30.编写一个程序,计算并输出一个数的二进制表示。
10个经典的C语言基础算法及代码
10个经典的C语言基础算法及代码1.冒泡排序算法冒泡排序是一种简单但效率较低的排序算法,在每一轮遍历中比较相邻的两个元素,如果顺序不正确则交换它们,直到整个数组有序为止。
```cvoid bubbleSort(int arr[], int n)for (int i = 0; i < n-1; i++)for (int j = 0; j < n-1-i; j++)if (arr[j] > arr[j+1])int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}```2.选择排序算法选择排序是一种简单直观的排序算法,它每次从待排序的数组中选择最小(或最大)的元素,并放到已排序的数组末尾。
```cvoid selectionSort(int arr[], int n)for (int i = 0; i < n-1; i++)int min_index = i;for (int j = i+1; j < n; j++)if (arr[j] < arr[min_index])min_index = j;}}int temp = arr[i];arr[i] = arr[min_index];arr[min_index] = temp;}```3.插入排序算法插入排序的基本思想是将数组分为已排序和未排序两部分,每次将未排序的元素插入到已排序的合适位置。
```cvoid insertionSort(int arr[], int n)for (int i = 1; i < n; i++)int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key)arr[j+1] = arr[j];j--;}arr[j+1] = key;}```4.快速排序算法快速排序使用分治法的思想,每次选择一个基准元素,将小于基准的元素放到左边,大于基准的元素放到右边,然后递归地对左右两个子数组进行排序。
经典生活情境编程算法题
经典生活情境编程算法题
编程算法题在计算机科学中非常常见,经典的生活情境编程算法题可以帮助我们更好地理解和应用算法。
下面我将从不同的角度给出一些经典的生活情境编程算法题的示例。
1. 最短路径算法,假设你要规划一条最短路径去超市购物,你可以使用 Dijkstra 算法或者 A 算法来找到最短的路线,考虑到交通状况和道路距离,以便在最短的时间内到达目的地。
2. 排序算法,假设你有一堆杂乱的书籍需要整理,你可以使用快速排序算法或者归并排序算法来帮助你按照字母顺序将书籍整理好。
3. 贪心算法,假设你有一定数量的钱,你需要在超市购买尽可能多的食物,但是要保证不超出预算,这时你可以使用贪心算法来尽可能多地买到食物,同时保持预算平衡。
4. 动态规划算法,假设你要安排一周的饮食计划,你可以使用动态规划算法来帮助你安排每天的饮食,使得总热量摄入最佳化。
以上是一些生活情境下的编程算法题的示例,通过这些例子,我们可以看到算法在生活中的广泛应用,帮助我们解决各种实际问题。
当然,不同的生活情境可能需要不同的算法来解决,这也体现了算法的灵活性和多样性。
C语言入门必学—10个经典C语言算法
C语言入门必学—10个经典C语言算法C语言是一种广泛使用的编程语言,具有高效、灵活和易学的特点。
它不仅在软件开发中被广泛应用,也是计算机科学专业的必修课。
在学习C语言的过程中,掌握一些经典的算法是非常重要的。
本文将介绍10个经典C语言算法,帮助读者更好地了解和掌握C语言。
一、冒泡排序算法(Bubble Sort)冒泡排序算法是最简单、也是最经典的排序算法之一。
它通过不断比较相邻的元素并交换位置,将最大(或最小)的元素逐渐“冒泡”到数组的最后(或最前)位置。
二、选择排序算法(Selection Sort)选择排序算法是一种简单但低效的排序算法。
它通过不断选择最小(或最大)的元素,并与未排序部分的第一个元素进行交换,将最小(或最大)的元素逐渐交换到数组的前面(或后面)。
三、插入排序算法(Insertion Sort)插入排序算法是一种简单且高效的排序算法。
它通过将数组分为已排序和未排序两个部分,依次将未排序部分的元素插入到已排序部分的合适位置。
四、快速排序算法(Quick Sort)快速排序算法是一种高效的排序算法。
它采用了分治的思想,通过将数组分为较小和较大两部分,并递归地对两部分进行排序,最终达到整个数组有序的目的。
五、归并排序算法(Merge Sort)归并排序算法是一种高效的排序算法。
它采用了分治的思想,将数组一分为二,递归地对两个子数组进行排序,并将结果合并,最终得到有序的数组。
六、二分查找算法(Binary Search)二分查找算法是一种高效的查找算法。
它通过不断将查找范围折半,根据中间元素与目标值的大小关系,缩小查找范围,最终找到目标值所在的位置。
七、递归算法(Recursive Algorithm)递归算法是一种通过自我调用的方式解决问题的算法。
在C语言中,递归算法常用于解决树的遍历、问题分解等情况。
八、斐波那契数列算法(Fibonacci Sequence)斐波那契数列是一列数字,其中每个数字都是前两个数字的和。
C语言经典算法100例
C语言经典算法100例(1)(2007-08-15 15:09:22)C 语言编程经典 100 例【程序1】题目:有1、2、3、4个数字,能组成多少个互不一样且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;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) /*确保i、j、k三位互不一样*/printf(“%d,%d,%d\n“,i,j,k);}}【程序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.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(“%ld“,&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i〈=100000)bonus=i*0.1;else if(i〈=200000)bonus=bonus1+(i-100000)*0.075;else if(i〈=400000)bonus=bonus2+(i-200000)*0.05;else if(i〈=600000)bonus=bonus4+(i-400000)*0.03;else if(i〈=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(“bonus=%d“,bonus);}【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
