C语言编程题覆盖到的算法:
1、个人所得税计算;
2、求一组数的正、负数(或奇、偶数)的个数和平均值;
3、二维数组主、次对角线之和;
4、求素数(用函数实现);
5、级数有限项求和问题;
6、两个一维数组相加(用函数实现);
7、求最大、最小值;
8、判断闰年(用函数实现);
9、求水仙花数;
10、百钱百鸡;
11、求最大公约数、最小公倍数。
12、求回文数;
13、排序;
14、二维数组的转置;
15、递归函数求阶乘;
16、求斐波那契数列;
17、求和:a+aa+aaa+aaaa+....;
18、求符合条件的整数(如:是某个二位数的平方,个位、十位、百位数各不相同等);(包括素数,回文,完数,等等)
19、字符串加密;
20、统计字符串中字母和数字的个数;
/*1.个人所得税计算,以实验指导P24T5为标准*/
#include
void main()
{
int i,n;
double a,b,c;
printf("please input income:\n");
scanf("%d",&i);
a=(i-800)*0.05,b=20+(i-1200)*0.08,c=84+(i-2000)*0.2;
switch(n)
{
case 0:
case 1:printf("不需缴税\n");break;
case 2:printf("需交纳%lf元\n",a);break;
case 3:
case 4:printf("需交纳%lf元\n",b);break;
default:printf("需交纳%lf元\n",c);break;
}
}
/*2. 求一组数的奇数个数,偶数个数和平均值
#include
#define N 10
void main()
{
int a[N];
int i,m=0,n=0,sum=0;
double average;
printf("please input 10 numbers:\n");
for(i=0;i { scanf("%d",&a[i]); if(a[i]%2==0) m++; else n++; sum+=a[i]; } average=(double)sum/N; printf("we have %d odds and %d evens\n",n,m); printf("average=%lf\n",average); }*/ /*2'.求一组数的正数个数和负数个数与平均值*/ #include #define N 10 void main() { int i,m=0,n=0,sum=0; double average; printf("please input 10 numbers:\n"); for(i=0;i { scanf("%d",&a[i]); if(a[i]>0) m++; else n++; sum+=a[i]; } average=(double)sum/N; printf("we have %d positive numbers and %d nagetive numbers\n",m,n); printf("the average =%lf",average); } /*3.求二维数组的主次对角线之和*/ #include #define M 5 #define N 5 void main() { int a[M][N]; int i,j,sum1=0,sum2=0; printf("please input the matrix:\n"); for(i=0;i { for(j=0;j { scanf("%d",&a[i][j]); } } for(i=0,j=0;i { sum1+=a[i][j]; } for(i=0,j=N-1;i { sum2+=a[i][j]; } printf("主对角线和为%d\n",sum1); printf("次对角线和为%d\n",sum2); } /*4.调用函数判断素数*/ #include #include int isPrime(int n) { int i; for(i=1;i { if(n%i==0) return 0; } return 1; } void main() { int n,i; printf("please input a number\n"); scanf("%d",&n); i=isPrime(n); if(i) printf("%d is a prime\n",n); else printf("%d is not a prime\n",n); } //5.级数有限项求和(以格里高利公式求π为例)// #include #include void main() { int n=1; double p=0,t,pi; t=1/(pow((-1),(n+1))*2*(n-1)); while(fabs(t)>=1e-6) { pi+=t; n++; } pi=4*p; printf("%lf",pi); } //6.两个一维数组相加// /*#include #define N 5 void main() { int a[N],b[N],c[N]; int i; printf("please input the first array a[N]:\n"); for(i=0;i { scanf("%d",&a[i]); } printf("please input the second array b[N]:\n"); for(i=0;i { scanf("%d",&b[i]); } for(i=0;i { c[i]=a[i]+b[i]; } printf("the sum is:\n"); for(i=0;i printf("%d\t",c[i]); }*/ //6.1调用函数实现// #include #define N 5 int f(int a,int b) { int sum; sum=a+b; return sum; } void main() { int a[N],b[N],c[N]; int i; printf("please input the first array a[N]:\n"); for(i=0;i scanf("%d",&a[i]); } printf("please input the second array b[N]:\n"); for(i=0;i { scanf("%d",&b[i]); } for(i=0;i { c[i]=f(a[i],b[i]); } printf("the sum is:\n"); for(i=0;i printf("%d\t",c[i]); } /*7.求一组数的最大最小值*/ /*#include void main() { int i,max,min; int a[10]; printf("please input ten numbers\n"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } max=a[0]; min=a[0]; for(i=1;i<10;i++) { if(a[i]>max) { max=a[i]; } if(a[i] { min=a[i]; } } printf("max is %d,min is %d\n",max,min); } /*随机数*/ #include #include void main() { int i,max,min; int a[10]; for (i=0;i<10;i++) { a[i]=rand()%90+10; printf("%d\t",a[i]); } max=a[0]; min=a[0]; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d\tmin=%d\n",max,min); } /*8.判断闰年*/ #include int f(int n) { if(n%4==0&&n%100!=0||n%400==0) return 1; else return 0; } void main() { int n; printf("please input year:\n"); scanf("%d",&n); if(f(n)) printf("%d是闰年\n",n); else printf("%d不是闰年\n",n); } /*可能会有要输出某一范围内所有闰年,思想一样,用循环调用函数即可*/ /*9.判断水仙花数(运用循环) #include void main() { int n,a,b,c,m; printf("please input a number:\n"); scanf("%d",&n); a=n/100; b=n/10%10; c=n%10; m=a*a*a+b*b*b+c*c*c; if(m==n) printf("%d is the number we want\n",n); else printf("%d is not the number\n",n); }*/ /*9'.输出所有水仙花数(调用函数(书P108为循环做法))*/ #include int f(int n) { int a,b,c,m; a=n/100; b=n/10%10; c=n%10; m=a*a*a+b*b*b+c*c*c; if(m==n) return 1; else return 0; } void main() { int i,t; for(i=100;i<1000;i++) { t=f(i); if(t==1) printf("%d\t",i); } } //10.百钱买百鸡(题目见书P115)// #include void main() { int i,j,k; for(i=0;i<=20;i++) { for(j=0;j<=33;j++) { for(k=3;k<=99;k+=3) { if((i+j+k==100)&&(5*i+3*j+k/3==100)) printf("公鸡%d只,母鸡%d只,小鸡%d只\n",i,j,k); } } } } /*11.求最大公约数和最小公倍数,函数实现*/ #include int f(int m,int n) { int i=1,t; if(m { t=m; m=n; n=t; } while((i=m%n)!=0) { m=n; n=i; } return n; } int g(int m,int n) { int i,j; i=f(m,n); j=m*n/i; return j; } void main() { int m,n,a,b; printf("please input two numbers:\n"); scanf("%d %d",&m,&n); a=f(m,n); b=g(m,n); printf("最大公约数为%d\n",a); printf("最小公倍数为%d\n",b); } //12.1输出10-2000之间的回文数(循环)// /*#include void main() { int i,j,k=0,a; printf("10-2000之间的回文数有:\n"); for(i=10;i<=2000;i++) { a=i; j=0; while(a>0) { j=j*10+a%10; a/=10; } if(i==j) { printf("%d\t",i); k++; if(k%5==0) printf("\n"); } } printf("\n"); }*/ //12.2输出10-2000之间的回文数(函数调用)// /*#include int f(int n) { int i=0; while(n>0) { i=i*10+n%10; n/=10; } return i; } void main() { int n,k; printf("10-2000之间的回文数有:\n"); for(n=10;n<=2000;n++) { if(n==f(n)) { printf("%d\t",n); k++; if(k%5==0) printf("\n"); } } printf("\n"); }*/ //12.3判断回文数(循环)// /*#include void main() { int i,a,j=0; printf("please input a number:\n"); scanf("%d",&i); a=i; while(a>0) { j=j*10+a%10; a/=10; } if(j==i) printf("%d是回文数\n",i); else printf("%d不是回文数\n",i); }*/ //12.4判断回文数(函数调用)// #include int f(int n) { int i=0; while(n>0) { i=i*10+n%10; n/=10; } return i; } void main() { int n; printf("please inpit a number:\n"); scanf("%d",&n); if(n==f(n)) printf("%d是回文数\n",n); else printf("%d不是回文数\n",n); } //13.排序// //选择法// /*#include #define N 10 void f(int a[],int n) { int i,j,k,t; for(i=0;i<=n;i++) { k=i;