当前位置:文档之家› 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<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-2000)*0.2;switch(n){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 10void 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++;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 10void 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++;elsen++;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 5void 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;}{int n,i;printf("please input a number\n");scanf("%d",&n);i=isPrime(n);if(i)printf("%d is a prime\n",n);elseprintf("%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++;}printf("%lf",pi);}//6.两个一维数组相加///*#include<stdio.h>#define N 5void 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 5int 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;elsereturn 0;}void main(){int n;printf("please input year:\n");scanf("%d",&n);if(f(n))printf("%d是闰年\n",n);elseprintf("%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);elseprintf("%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;elsereturn 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-2000之间的回文数(循环)// /*#include<stdio.h>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<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-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<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);elseprintf("%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);elseprintf("%d不是回文数\n",n); }//13.排序////选择法///*#include<stdio.h>#define N 10void 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 5void 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 5void 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 3void 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;elsereturn 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;elsereturn 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 5void 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 5int 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 80void 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 100void 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); }。

相关主题