C语言操作题常考编程题库.docx
《C语言操作题常考编程题库.docx》由会员分享,可在线阅读,更多相关《C语言操作题常考编程题库.docx(25页珍藏版)》请在冰豆网上搜索。
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
voidmain()
{
inti,n;
doublea,b,c;
n=i/400;
printf("pleaseinputincome:
\n");
scanf("%d",&i);
a=(i-800)*0.05,b=20+(i-1200)*0.08,c=84+(i-2000)*0.2;
switch(n)
{
case0:
case1:
printf("不需缴税\n");break;
case2:
printf("需交纳%lf元\n",a);break;
case3:
case4:
printf("需交纳%lf元\n",b);break;
default:
printf("需交纳%lf元\n",c);break;
}
}
/*2.求一组数的奇数个数,偶数个数和平均值
#include
#defineN10
voidmain()
{
inta[N];
inti,m=0,n=0,sum=0;
doubleaverage;
printf("pleaseinput10numbers:
\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("wehave%doddsand%devens\n",n,m);
printf("average=%lf\n",average);
}*/
/*2'.求一组数的正数个数和负数个数与平均值*/
#include
#defineN10
voidmain()
{
inta[N];
inti,m=0,n=0,sum=0;
doubleaverage;
printf("pleaseinput10numbers:
\n");
for(i=0;i{
scanf("%d",&a[i]);
if(a[i]>0)
m++;
else
n++;
sum+=a[i];
}
average=(double)sum/N;
printf("wehave%dpositivenumbersand%dnagetivenumbers\n",m,n);
printf("theaverage=%lf",average);
}
/*3.求二维数组的主次对角线之和*/
#include
#defineM5
#defineN5
voidmain()
{
inta[M][N];
inti,j,sum1=0,sum2=0;
printf("pleaseinputthematrix:
\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
intisPrime(intn)
{
inti;
for(i=1;i{
if(n%i==0)
return0;
}
return1;
}
voidmain()
{
intn,i;
printf("pleaseinputanumber\n");
scanf("%d",&n);
i=isPrime(n);
if(i)
printf("%disaprime\n",n);
else
printf("%disnotaprime\n",n);
}
//5.级数有限项求和(以格里高利公式求π为例)//
#include
#include
voidmain()
{
intn=1;
doublep=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
#defineN5
voidmain()
{
inta[N],b[N],c[N];
inti;
printf("pleaseinputthefirstarraya[N]:
\n");
for(i=0;i{
scanf("%d",&a[i]);
}
printf("pleaseinputthesecondarrayb[N]:
\n");
for(i=0;i{
scanf("%d",&b[i]);
}
for(i=0;i{
c[i]=a[i]+b[i];
}
printf("thesumis:
\n");
for(i=0;iprintf("%d\t",c[i]);
}*/
//6.1调用函数实现//
#include
#defineN5
intf(inta,intb)
{
intsum;
sum=a+b;
returnsum;
}
voidmain()
{
inta[N],b[N],c[N];
inti;
printf("pleaseinputthefirstarraya[N]:
\n");
for(i=0;i{
scanf("%d",&a[i]);
}
printf("pleaseinputthesecondarrayb[N]:
\n");
for(i=0;i{
scanf("%d",&b[i]);
}
for(i=0;i{
c[i]=f(a[i],b[i]);
}
printf("thesumis:
\n");
for(i=0;iprintf("%d\t",c[i]);
}
/*7.求一组数的最大最小值*/
/*#include
voidmain()
{
inti,max,min;
inta[10];
printf("pleaseinputtennumbers\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("maxis%d,minis%d\n",max,min);
}
*/
/*随机数*/
#include
#include
voidmain()
{
inti,max,min;
inta[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
intf(intn)
{
if(n%4==0&&n%100!
=0||n%400==0)
return1;
else
return0;
}
voidmain()
{
intn;
printf("pleaseinputyear:
\n");
scanf("%d",&n);
if(f(n))
printf("%d是闰年\n",n);
else
printf("%d不是闰年\n",n);
}
/*可能会有要输出某一范围内所有闰年,思想一样,用循环调用函数即可*/
/*9.判断水仙花数(运用循环)
#include
voidmain()
{
intn,a,b,c,m;
printf("pleaseinputanumber:
\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("%disthenumberwewant\n",n);
else
printf("%disnotthenumber\n",n);
}*/
/*9'.输出所有水仙花数(调用函数(书P108为循环做法))*/
#include
intf(intn)
{
inta,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)
return1;
else
return0;
}
voidmain()
{
inti,t;
for(i=100;i<1000;i++)
{
t=f(i);
if(t==1)
printf("%d\t",i);
}
}
//10.百钱买百鸡(题目见书P115)//
#include
voidmain()
{
inti,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
intf(intm,intn)
{
inti=1,t;
if(m{
t=m;
m=n;
n=t;
}
while((i=m%n)!
=0)
{
m=n;
n=i;
}
returnn;
}
intg(intm,intn)
{
inti,j;
i=f(m,n);
j=m*n/i;
returnj;
}
voidmain()
{
intm,n,a,b;
printf("pleaseinputtwonumbers:
\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
voidmain()
{
inti,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
intf(intn)
{
inti=0;
while(n>0)
{
i=i*10+n%10;
n/=10;
}
returni;
}
voidmain()
{
intn,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
voidmain()
{
inti,a,j=0;
printf("pleaseinputanumber:
\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
intf(intn)
{
inti=0;
while(n>0)
{
i=i*10+n%10;
n/=10;
}
returni;
}
voidmain()
{
intn;
printf("pleaseinpitanumber:
\n");
scanf("%d",&n);
if(n==f(n))
printf("%d是回文数\n",n);
else
printf("%d不是回文数\n",n);
}
//13.排序//
//选择法//
/*#include
#defineN10
voidf(inta[],intn)
{
inti,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;
}
}
}
voidmain()
{
inta[N]={8,2,34,5,12,78,4,78,76,9};
inti=0;
intsize=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
#defineN5
voidf(inta[],intn)
{
inti,j;
intt;
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
#defineN5
voidf(inta[],intn)
{
inti,j;
intt;
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;
}
}
voidmain()
{
inta[N]={8,2,34,5,12};
inti=0;
intsize=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
#defineN3
#defineM3
voidmain()
{
inta[M][N],b[M][N];
inti,j;
printf("pleaseinputa[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
intf(intn)
{
if(n==1||n==0)
return1;
else
returnf(n-1)*n;
}
voidmain()
{
intn,m;
printf("pleaseinputanumber:
\n");
scanf("%d",&n);
m=f(n);
printf("%d!
=%d\n",n,m);
}
/*16.运用递归函数求斐波拉契数列(前30项)*/
#include
intf(intn)
{
if(n==1||n==2)
return1;
else
returnf(n-1)+f(n-2);
}
voidmain()
{
inti,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
#defineN5
voidmain()
{
intn,i,j,k,a,sum1=0;
printf("pleaseinputanumber:
\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
#defineN5
intk(inta,intsum)
{
sum=sum*10+a;
returnsum;
}
voidmain()
{
inta,i=0,j,sum=0;
printf("pleaseinputanumber:
\n");
scanf("%d",&a);
sum=k(a,k(a,sum));
printf("sum=%d\n",sum);
}
//18.求符合条件的整数(如是某个二位数的平方,个位、十位、百位数各不相同等)//
#include
voidmain()
{
inta,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
#defineN80
voidmain()
{
charstr[N];
char*p;
printf("pleaseinputthecode:
\n");