C语言操作题常考编程题库Word格式.docx
《C语言操作题常考编程题库Word格式.docx》由会员分享,可在线阅读,更多相关《C语言操作题常考编程题库Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
ﻩinta[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("
wehave %doddsand%d evens\n",n,m);
ﻩprintf("
average=%lf\n"
average);
}*/
/*2'.求一组数的正数个数和负数个数与平均值*/
#include<
stdio.h>
#defineN10
voidmain()
int a[N];
int i,m=0,n=0,sum=0;
ﻩdouble average;
printf("pleaseinput10numbers:
);
ﻩ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%dpositivenumbersand%dnagetivenumbers\n"
m,n);
ﻩprintf("
theaverage=%lf"
average);
/*3.求二维数组的主次对角线之和*/
#include<stdio.h>
#define M5
#define N5
void main()
inta[M][N];
ﻩinti,j,sum1=0,sum2=0;
printf("
please inputthe matrix:
for(i=0;
i<M;
i++)
ﻩfor(j=0;
j<
N;
j++)
{
ﻩﻩscanf("%d",&
a[i][j]);
ﻩ}
ﻩ
for(i=0,j=0;
M;
i++,j++)
ﻩsum1+=a[i][j];
ﻩ}
for(i=0,j=N-1;
i++,j--)
ﻩ{
ﻩﻩsum2+=a[i][j];
ﻩprintf("
主对角线和为%d\n",sum1);
ﻩprintf("
次对角线和为%d\n"
sum2);
}
/*4.调用函数判断素数*/
#include<
#include<
math.h>
int isPrime(intn)
inti;
ﻩfor(i=1;
sqrt(n);
i++)
if(n%i==0)
return0;
return 1;
voidmain()
intn,i;
printf("
pleaseinputanumber\n"
scanf("
%d"
n);
i=isPrime(n);
ﻩif(i)
ﻩprintf("%disaprime\n"
n);
else
ﻩﻩprintf("%disnot aprime\n"
n);
//5.级数有限项求和(以格里高利公式求π为例)//
#include<stdio.h>
#include<math.h>
voidmain()
ﻩint n=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<stdio.h>
#defineN5
voidmain()
{
inta[N],b[N],c[N];
inti;
ﻩprintf("please input thefirstarraya[N]:
\n");
ﻩfor(i=0;
N;
ﻩ{
a[i]);
ﻩprintf("
please inputthesecond array b[N]:
ﻩfor(i=0;
ﻩscanf("
b[i]);
i<N;
ﻩc[i]=a[i]+b[i];
}
ﻩprintf("thesumis:
\n");
for(i=0;
printf("
%d\t",c[i]);
}*/
//6.1调用函数实现//
#include<
stdio.h>
#defineN5
int f(int a,intb)
intsum;
sum=a+b;
ﻩreturnsum;
voidmain()
inta[N],b[N],c[N];
inti;
ﻩprintf("pleaseinputthefirstarraya[N]:
ﻩfor(i=0;
ﻩscanf("
a[i]);
printf("pleaseinputthe secondarrayb[N]:
ﻩfor(i=0;
ﻩscanf("%d"
&b[i]);
for(i=0;
i<
ﻩc[i]=f(a[i],b[i]);
ﻩprintf("
thesumis:
\n"
ﻩfor(i=0;
ﻩprintf("
%d\t"
,c[i]);
/*7.求一组数的最大最小值*/
/*#include<
stdio.h>
voidmain()
ﻩinti,max,min;
inta[10];
ﻩprintf("pleaseinput tennumbers\n"
ﻩfor(i=0;
i<10;
ﻩscanf("%d"
&a[i]);
max=a[0];
ﻩmin=a[0];
ﻩfor(i=1;
10;
ﻩif(a[i]>max)
ﻩ{
ﻩﻩmax=a[i];
ﻩ}
ﻩif(a[i]<min)
ﻩ{
ﻩﻩmin=a[i];
ﻩﻩ}
printf("
max is%d,minis%d\n"
max,min);
*/
/*随机数*/
#include<stdio.h>
#include<
stdlib.h>
voidmain()
ﻩint i,max,min;
ﻩinta[10];
ﻩfor (i=0;
10;
i++)
a[i]=rand()%90+10;
ﻩﻩprintf("
%d\t"
,a[i]);
max=a[0];
ﻩmin=a[0];
for(i=1;
i<10;
ﻩﻩ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>
intf(intn)
ﻩif(n%4==0&
&n%100!
=0||n%400==0)
ﻩreturn 1;
ﻩelse
ﻩﻩreturn0;
ﻩintn;
ﻩprintf("pleaseinputyear:
ﻩscanf("
n);
if(f(n))
ﻩprintf("%d是闰年\n"
,n);
else
ﻩprintf("
%d不是闰年\n"
/*可能会有要输出某一范围内所有闰年,思想一样,用循环调用函数即可*/
/*9.判断水仙花数(运用循环)
#include<stdio.h>
void main()
intn,a,b,c,m;
printf("
pleaseinput anumber:
ﻩscanf("
&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("
%dis the numberwewant\n"
else
ﻩﻩprintf("
%dis notthe 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)
ﻩﻩreturn1;
ﻩﻩreturn 0;
ﻩinti,t;
ﻩfor(i=100;
1000;
ﻩt=f(i);
ﻩif(t==1)
ﻩﻩﻩprintf("
%d\t"
,i);
//10.百钱买百鸡(题目见书P115)//
#include<
stdio.h>
voidmain()
inti,j,k;
ﻩfor(i=0;
i<=20;
ﻩ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>
intf(intm,intn)
ﻩinti=1,t;
ﻩif(m<
n)
t=m;
m=n;
n=t;
while((i=m%n)!
=0)
ﻩﻩm=n;
ﻩﻩn=i;
ﻩ
returnn;
intg(intm,intn)
int i,j;
ﻩi=f(m,n);
ﻩj=m*n/i;
ﻩreturnj;
ﻩintm,n,a,b;
pleaseinputtwo numbers:
scanf("
%d%d"
,&m,&n);
ﻩa=f(m,n);
b=g(m,n);
最大公约数为%d\n"
a);
printf("
最小公倍数为%d\n"
b);
//12.1输出10-2000之间的回文数(循环)//
/*#include<
voidmain()
inti,j,k=0,a;
printf("
10-2000之间的回文数有:
for(i=10;
i<=2000;
ﻩ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("
ﻩprintf("\n"
}*/
//12.2输出10-2000之间的回文数(函数调用)//
/*#include<
stdio.h>
int f(intn)
inti=0;
ﻩwhile(n>
i=i*10+n%10;
ﻩn/=10;
ﻩreturn i;
void main()
int n,k;
10-2000之间的回文数有:
\n"
for(n=10;
n<
=2000;
n++)
ﻩif(n==f(n))
printf("
ﻩk++;
if(k%5==0)
ﻩﻩﻩprintf("
ﻩ}
printf("
}*/
//12.3判断回文数(循环)//
/*#include<stdio.h>
void main()
int i,a,j=0;
pleaseinput anumber:
\n");
ﻩscanf("
i);
a=i;
while(a>
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(intn)
ﻩinti=0;
ﻩwhile(n>0)
ﻩi=i*10+n%10;
n/=10;
returni;
voidmain()
ﻩintn;
printf("
pleaseinpitanumber:
ﻩscanf("
n);
ﻩif(n==f(n))
ﻩprintf("
%d是回文数\n"
n);
ﻩprintf("
%d不是回文数\n"
//13.排序//
//选择法//
/*#include<
stdio.h>
#defineN10
voidf(int a[],intn)
inti,j,k,t;
for(i=0;
=n;
k=i;
ﻩﻩfor(j=i+1;
n;
j++)
ﻩﻩ{
ﻩif(a[j]<a[k])
ﻩﻩﻩ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;
printf("
%4d",a[i]);
printf("\n");
ﻩf(a,size);
ﻩﻩprintf("
%4d"
,a[i]);
printf ("\n"
//冒泡法//
#include<stdio.h>
#defineN5
voidf(inta[],intn)
int i,j;
ﻩintt;
ﻩfor(i=0;
i<n-1;
i++)
for(j=0;
j<n-1-i;
if(a[j]>a[j+1])
ﻩﻩﻩ{ﻩ
ﻩﻩt=a[j];
ﻩﻩa[j]=a[j+1];
ﻩﻩﻩﻩa[j+1]=t;
ﻩ}
//插入法//
#include<stdio.h>
#defineN5
voidf(inta[],int n)
inti,j;
ﻩintt;
for(i=0;
i<n;
t=a[i];
ﻩj=i;
ﻩﻩwhile(j>
0&
a[j-1]>
t)
ﻩ{
ﻩﻩﻩa[j]=a[j-1];
ﻩ--j;
a[j]=t;
void main()
ﻩinta[N]={8,2,34,5,12};
ﻩint i=0;
ﻩintsize=sizeof(a)/sizeof(int);
printf("%4d"
,a[i]);
ﻩprintf("
ﻩf(a,size);
i++)
%4d"
,a[i]);
ﻩprintf ("
//二维数组的转置//
#include<
stdio.h>
#defineN3
#define M 3
voidmain()
inta[M][N],b[M][N];
ﻩinti,j;
ﻩprintf("
pleaseinputa[M][N]\n"
for(i=0;
M;
ﻩfor(j=0;
j<N;
ﻩﻩscanf("
a[i][j]);
ﻩfor(j=0;
N;
ﻩﻩb[i][j]=a[j][i];
ﻩﻩ}
ﻩprintf("
b[M][N]=\n");
ﻩfor(i=0;
ﻩﻩprintf("
%4d"
b[i][j]);
ﻩ}printf("
//15.调用递归函数求阶乘//
#include<
stdio.h>
intf(intn)
if(n==1||n==0)
ﻩreturn1;
ﻩelse
ﻩreturnf(n-1)*n;
voidmain()
intn,m;
pleaseinput a number:
scanf("%d",&n);
ﻩm=f(n);
ﻩprintf("%d!
=%d\n"
n,m);
/*16.运用递归函数求斐波拉契数列(前30项)*/
#include<
stdio.h>
intf(intn)
if(n==1||n==2)
ﻩreturn1;
else
ﻩﻩreturnf(n-1)+f(n-2);
voidmain()
ﻩint i,k=0;
for(i=1;
i<=30;
f(i));
k++;
ﻩif(k%5==0)
ﻩﻩprintf("\n"
//17.求a+aa+aaa+aaaa...//
/*#include<
stdio.h>
#include<
#define N5
voidmain()
intn,i,j,k,a,sum1=0;
ﻩprintf("
pleaseinputanumber:
scanf("
%d",&
ﻩfor(i=1;
i<=N;
ﻩk=fabs(10,i-1);
ﻩj=n+n*(i-1)*k;
ﻩsum1+=j;
printf("
sum=%d\n"
sum1);
stdio.h>
#defineN5
intk(inta,int sum)
ﻩsum=sum*10+a;
ﻩreturnsum;
voidmain()
inta,i=0,j,sum=0;
pleaseinputa number:
scanf("
%d",&
a);
sum=k(a,k(a,sum));
sum=%d\n"
sum);
//18.求符合条件的整数(如是某个二位数的平方,个位、十位、百位数各不相同等)//
#include<
stdio.h>
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("
//19.字符串加密//
#include<
stdio.h>
#include<string.h>
#defineN80
voidmain()
charstr[N];
ﻩchar*p;
ﻩprintf("pleaseinput thecode:
\n");