最新C语言题库Word下载.docx
《最新C语言题库Word下载.docx》由会员分享,可在线阅读,更多相关《最新C语言题库Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
t*=i;
//或者t=t*i;
t=%d\n"
t);
//在控制台输出t的值。
4.编写程序:
求[1,100]中,所有能被3整除,但又不能被7整除的数的和。
i++)
if(i%3==0&
&
i%7!
=0)//能被3整除但又不能被7整除
//sum=sum+i;
//将满足条件的i加进
5.编写程序:
求sum=1+1+2+1+2+3+…+1+2+3+…+100的和。
ints=0;
//定义s用于计算1+2+3+...
//定义sum用于计算1+1+2+1+2+3+...
s=s+i;
//s=1+2+3+...
sum=sum+s;
//sum=1+1+2+1+2+3+...
6.编写程序:
求sum=1-1/2+1/3-1/4+…-1/100的和,四舍五入保留小数点后4位。
//定义sum赋初值为0.0
if(i%2==1)//成立i为奇数
sum=sum+(double)1/i;
//i为奇数加进
else//i为偶数
sum=sum-(double)1/i;
//i为偶数减掉
7.编写程序:
求sum=1+2+3+…,sum<
=10000的最大值。
inttempi;
//定义sum并赋初值为0
i=1;
while(sum<
=10000)//因为不能确定循环次数,使用while()循环
{//跳出循环时,sum>
10000了
sum=sum+i;
tempi=i;
//保留了i的值
i++;
//i=i+1;
sum-tempi);
//也可sum-(i-1)
8.编写程序:
求t=1*2*3*…,t>
=10000的最小值。
//定义t并赋初值为1
while(t<
10000)//因为不能确定循环次数,使用while()循环
{//跳出循环时,t>
=10000了
t=t*i;
9.编写程序:
求数列:
1、1、2、3、5、8、…的前25项的和。
//定义循环变量i
intf1=1,f2=1;
//定义数列的第1项f1第2项f2
intf3;
//定义数列的第3项f3
intsum=2;
//定义sum并赋初值为2前两项的和
for(i=3;
=25;
i++)//从第三项开始
f3=f1+f2;
//从第三项开始,每一项都是它前两项的和
sum=sum+f3;
f1=f2;
//本轮的第2项,变成下轮的第1项
f2=f3;
//本轮的第3项,变成下轮的第2项
10.编写程序:
1、1、1、3、5、9、…从第几项起大于或等于50000。
//定义第几项i
intf1=1,f2=1,f3=1;
//定义数列的第1项f1第2项f2第3项f3
intf4;
//定义数列的第4项f4
i=3;
while
(1)//恒为真//for(;
;
)恒为真
f4=f1+f2+f3;
//从第4项开始,每一项都是它前3项的和
if(f4>
=50000)
break;
f3=f4;
//本轮的第4项,变成下轮的第3项
i=%d\n"
i);
//在控制台输出i的值。
2,扩展型
11.编写程序:
求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。
intn;
//定义循环变量n代表四位数
intnq,nb,ns,ng;
//n的各位数字
intm;
//各位数字之和
for(n=1000;
n<
=9999;
n++)//n代表四位数
nq=n/1000%10;
//nqn的千位
nb=n/100%10;
//nbn的百位
ns=n/10%10;
//nsn的十位
ng=n/1%10;
//ngn的个位
m=nq+nb+ns+ng;
//m是n的各位数字之和
if(n%2==1&
m%25==0)//n%2==1成立n为奇数
{//m%25==0成立m为25的倍数
sum=sum+n;
//加满足条件的n
12.编写程序:
所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身,例如:
153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间所有水仙花数之和。
//定义循环变量n代表[100,999]
intnb,ns,ng;
for(n=100;
=999;
n++)//n代表[100,999]
if(nb*nb*nb+ns*ns*ns+ng*ng*ng==n)
{//判断各位数字的三次方之和是否等于该数本身
13.编写程序:
所谓回文数是从左至右与从右至左读起来都是一样的数字,如:
121是一个回文数。
编写程序,求出100-900之间的所有回文数的个数。
//定义循环变量n遍历[100,999]
intnum=0;
//个数定义num并赋初值为0
intfdn;
//n的反读数
=900;
n++)//n代表[100,900]
fdn=ng*100+ns*10+nb*1;
if(fdn==n)
num++;
num=%d\n"
num);
//在控制台输出num的值。
14.编写程序:
把一张一元钞票,换成一分、二分和五分硬币,每种至少5枚,问有多少种方案?
intyf,ef,wf;
//一分二分五分
//方案个数
for(yf=5;
yf<
=65;
yf++)//一分最多100-10-25枚
for(ef=5;
ef<
=45;
ef++)//二分最多50-5枚
for(wf=5;
wf<
=20;
wf++)//五分最多20枚
if((yf*1+ef*2+wf*5)==100)//保证1元即100分
//满足条件,方案个数加1
num);
15.编写程序:
所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[2,1000]之间有多少个同构数。
intmain()
inti,j;
for(i=2;
i<
=1000;
i++)
j=i*i;
if(j%10==i||j%100==i||j%1000==i)
%d\t%d\n"
i,j);
16.编写程序:
所谓素数是指这样的自然数,除1和它本身外不再有其它因子。
求[1,500]中所有素数的和。
inti,n,flag;
for(n=2;
n<
=500;
n++)
flag=1;
//先假定是素数
i*i<
=n;
if(n%i==0)//满足一次非素数
flag=0;
//满足一次非素数
//满足一次没必要往后循环了
if(flag==1)
sum=sum+n;
sum);
17.编写程序:
一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,如:
6=1+2+3。
求出10000以内的所有完数之和。
intn,i;
//循环变量
ints;
for(n=1;
=10000;
s=0;
//存放因子的和
for(i=1;
i<
=n/2;
i++)//n的最大真因子是n/2一半
if(n%i==0)//满足i就是n的一个因子
//因子的和
if(s==n)//满足n是完数
18.编写程序:
一个正整数是另外一个正整数的平方,这个数就称为“平方数”,如:
25=5^2,25就是一个平方数,求出10000以内的所有平方数的个数。
math.h>
//sqrt()
m=(int)sqrt(n);
if(m*m==n)//满足就是平方数
sum=sum+1;
18.编写程序:
从键盘任意输入10个数,要求按照从小到大顺序排列显示输出。
#defineN10//符号常量
inta[N];
inti,j,t;
for(i=0;
N;
i++)//键盘输入
scanf("
%d"
&
a[i]);
N-1;
for(j=i;
j<
j++)
if(a[i]>
a[j])//以下交换
t=a[i];
a[i]=a[j];
a[j]=t;
i++)//输出
%d\t"
a[i]);
\n"
);
//换行
20.编写程序:
从键盘任意输入10个数,求出这10个数的平均数,最大值,最小值。
#defineN10//符号常量
intmax,min;
//最大值最小值
doubleave=0;
i++)//键盘输入
max=a[0];
min=a[0];
ave=ave+a[i];
if(max<
a[i])
max=a[i];
if(min>
min=a[i];
ave=%.4lf\n"
ave/N);
//ave/N才是平均数
max=%d\n"
max);
min=%d\n"
min);
3,函数型
21.编写一个函数intsushu(intn),此函数用来判断n是否素数,若n是素数,则函数返回1,若n不是素数,则函数返回0。
一个数除1和它本身外,不能被其它整数整除的正整数称为素数(注:
1不是素数,2是素数)。
intsushu(int);
intsushu(intn)
intflag;
if(n<
=1)
if(n%i==0)
returnflag;
22.编写一个函数intpingfangshu(intn),此函数用来判断n是否平方数,若n是平方数,则函数返回1,若n不是平方数,则函数返回0。
一个正整数是另外一个正整数的平方,这个数就称为“平方数”,例如,25=5^2,25就是平方数。
(1不是平方数)
intpfs(int);
intpfs(intn)
if(n<
=1)
i*i<
=n;
if(i*i==n)
return1;
23.编写一个函数inttonggaoshu(intn),此函数用来判断n是否同构数,若n是同构数,则函数返回1,若n不是同构数,则函数返回0。
所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数。
(1不是同构数
inttgs(int);
inttgs(intn)
inttn=n;
intjws;
m=n*n;
jws=1;
while(tn>
0)
jws=jws*10;
tn/=10;
if(m%jws==n)
else
24.编写一个函数intwanshu(intn),此函数用来判断n是否完数,若n是完数,则函数返回1,若n不是完数,则函数返回0。
一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。
例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。
intwanshu(int);
intwanshu(intn)
if(s==n)
25.编写一个函数intfandu(intn),此函数用来返回n的反读数。
如:
1357的反读数是7531。
intfandu(int);
intfandu(intn)
intsz;
while(n>
sz=n%10;
sum=sum*10+sz;
n=n/10;
returnsum;
26.编写一个函数intmaxgys(intn,intm),此函数用来返回n和m的最大公约数。
intmaxgys(int,int);
intmaxgys(intn,intm)
inttemp;
intr;
m)
temp=n;
n=m;
m=temp;
r=n%m;
while(r!
=0)
m=r;
returnm;
27.编写一个函数intmingbs(intn,intm),此函数用来返回n和m的最小公倍数。
intmingbs(int,int);
intmingbs(intn,intm)
inttn,tm;
tn=n;
tm=m;
if(tn<
tm)
temp=tn;
tn=tm;
tm=temp;
r=tn%tm;
tm=r;
returnn*m/tm;