资源描述
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<stdio.h>
void main()
{
int i,n;
double a,b,c;
n=i/400;
printf("please input income:\n");
scanf("%d",&i);
a=(i-800)*0.05,b=20+(i-1200)*0.08,c=84+(i-)*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<stdio.h>
#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<N;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<stdio.h>
#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<N;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<stdio.h>
#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<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0,j=0;i<M;i++,j++)
{
sum1+=a[i][j];
}
for(i=0,j=N-1;i<M;i++,j--)
{
sum2+=a[i][j];
}
printf("主对角线和为%d\n",sum1);
printf("次对角线和为%d\n",sum2);
}
/*4.调用函数判断素数*/
#include<stdio.h>
#include<math.h>
int isPrime(int n)
{
int i;
for(i=1;i<sqrt(n);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<stdio.h>
#include<math.h>
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<stdio.h>
#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<N;i++)
{
scanf("%d",&a[i]);
}
printf("please input the second array b[N]:\n");
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<N;i++)
{
c[i]=a[i]+b[i];
}
printf("the sum is:\n");
for(i=0;i<N;i++)
printf("%d\t",c[i]);
}*/
//6.1调用函数实现//
#include<stdio.h>
#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<N;i++)
{
scanf("%d",&a[i]);
}
printf("please input the second array b[N]:\n");
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<N;i++)
{
c[i]=f(a[i],b[i]);
}
printf("the sum is:\n");
for(i=0;i<N;i++)
printf("%d\t",c[i]);
}
/*7.求一组数旳最大最小值*/
/*#include<stdio.h>
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)
{
min=a[i];
}
}
printf("max is %d,min is %d\n",max,min);
}
*/
/*随机数*/
#include<stdio.h>
#include<stdlib.h>
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)
min=a[i];
}
printf("max=%d\tmin=%d\n",max,min);
}
/*8.判断闰年*/
#include<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
int f(int m,int n)
{
int i=1,t;
if(m<n)
{
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-之间旳回文数(循环)//
/*#include<stdio.h>
void main()
{
int i,j,k=0,a;
printf("10-之间旳回文数有:\n");
for(i=10;i<=;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-之间旳回文数(函数调用)//
/*#include<stdio.h>
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-之间旳回文数有:\n");
for(n=10;n<=;n++)
{
if(n==f(n))
{
printf("%d\t",n);
k++;
if(k%5==0)
printf("\n");
}
}
printf("\n");
}*/
//12.3判断回文数(循环)//
/*#include<stdio.h>
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<stdio.h>
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<stdio.h>
#define N 10
void f(int a[],int n)
{
int i,j,k,t;
for(i=0;i<=n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void main()
{
int a[N]={8,2,34,5,12,78,4,78,76,9};
int i=0;
int size=sizeof(a)/sizeof(int);
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
printf("\n");
f(a,size);
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
printf ("\n");
}
//冒泡法//
#include<stdio.h>
#define N 5
void f(int a[],int n)
{
int i,j;
int t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}*/
//插入法//
#include<stdio.h>
#define N 5
void f(int a[],int n)
{
int i,j;
int t;
for(i=0;i<n;i++)
{
t=a[i];
j=i;
while(j>0&&a[j-1]>t)
{
a[j]=a[j-1];
--j;
}
a[j]=t;
}
}
void main()
{
int a[N]={8,2,34,5,12};
int i=0;
int size=sizeof(a)/sizeof(int);
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
printf("\n");
f(a,size);
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
printf ("\n");
}
//二维数组旳转置//
#include<stdio.h>
#define N 3
#define M 3
void main()
{
int a[M][N],b[M][N];
int i,j;
printf("please input a[M][N]\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
b[i][j]=a[j][i];
}
}
printf("b[M][N]=\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",b[i][j]);
} printf("\n");
}
printf("\n");
}
//15.调用递归函数求阶乘//
#include<stdio.h>
int f(int n)
{
if(n==1||n==0)
return 1;
else
return f(n-1)*n;
}
void main()
{
int n,m;
printf("please input a number:\n");
scanf("%d",&n);
m=f(n);
printf("%d!=%d\n",n,m);
}
/*16.运用递归函数求斐波拉契数列(前30项)*/
#include<stdio.h>
int f(int n)
{
if (n==1||n==2)
return 1;
else
return f(n-1)+f(n-2);
}
void main()
{
int i,k=0;
for (i=1;i<=30;i++)
{
printf("%d\t",f(i));
k++;
if(k%5==0)
printf("\n");
}
printf("\n");
}
//17.求a+aa+aaa+aaaa...//
/*#include<stdio.h>
#include<math.h>
#define N 5
void main()
{
int n,i,j,k,a,sum1=0;
printf("please input a number:\n");
scanf("%d",&n);
for(i=1;i<=N;i++)
{
k=fabs(10,i-1);
j=n+n*(i-1)*k;
sum1+=j;
}
printf("sum=%d\n",sum1);
}*/
#include<stdio.h>
#define N 5
int k(int a,int sum)
{
sum=sum*10+a;
return sum;
}
void main()
{
int a,i=0,j,sum=0;
printf("please input a number:\n");
scanf("%d",&a);
sum=k(a,k(a,sum));
printf("sum=%d\n",sum);
}
//18.求符合条件旳整数(如是某个二位数旳平方,个位、十位、百位数各不相似等)//
#include<stdio.h>
void main()
{
int a,b,c,n,m;
for(m=10;m<100;m++)
{
n=m*m;
a=n%10;
b=n/10%10;
c=n/100;
if(a!=b&&b!=c&&c!=a)
printf("%d\t",m);
}
printf("\n");
}
//19.字符串加密//
#include<stdio.h>
#include<string.h>
#define N 80
void main()
{
char str[N];
char *p;
printf("please input the code:\n");
gets(str);
p=str;
while(*p!='\0')
{
*p+=2;
p++;
}
printf("%s\n",str);
}
//20.记录字符串中字母和数字旳个数//
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define N 100
void main()
{
char str[N];
int i=0;
int a=0,b=0;
printf("please input a string:\n");
gets(str);
while(str[i]!='\0'&&str[i]!='\n')
{
if(isdigit(str[i]))
a++;
else if(isalpha(str[i]))
b++;
i++;
}
printf("there are %d letters and %d numbers\n",b,a);
}
展开阅读全文