当前位置:文档之家› C语言操作题常考编程题库

C语言操作题常考编程题库

C语言操作题常考编程题库
C语言操作题常考编程题库

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;

for(j=i+1;j

{

if(a[j]

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

{

printf("%4d",a[i]);

}

printf("\n");

f(a,size);

for(i=0;i

{

printf("%4d",a[i]);

}

printf ("\n");

}

//冒泡法//

#include

#define N 5

void f(int a[],int n)

{

int i,j;

int t;

for(i=0;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}*/

//插入法//

#include

#define N 5

void f(int a[],int n)

{

int i,j;

int t;

for(i=0;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

{

printf("%4d",a[i]);

}

printf("\n");

f(a,size);

for(i=0;i

{

printf("%4d",a[i]);

}

printf ("\n");

}

//二维数组的转置//

#include

#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

{

for(j=0;j

{

scanf("%d",&a[i][j]);

}

}

for(i=0;i

{

for(j=0;j

{

b[i][j]=a[j][i];

}

}

printf("b[M][N]=\n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",b[i][j]);

} printf("\n");

}

printf("\n");

}

//15.调用递归函数求阶乘//

#include

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

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

#include

#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

#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

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

#include

#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

#include

#include

#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); }

相关主题
文本预览
相关文档 最新文档