最新C语言题库.docx
- 文档编号:4396158
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:19
- 大小:18.88KB
最新C语言题库.docx
《最新C语言题库.docx》由会员分享,可在线阅读,更多相关《最新C语言题库.docx(19页珍藏版)》请在冰豆网上搜索。
最新C语言题库
C语言题库:
一,基本型
1.编写程序:
求sum=1+2+3+…+100的和。
#include
intmain(void)
{
inti;//定义循环变量
intsum=0;//定义sum并赋初值为0
for(i=1;i<=100;i++)//for(i=1;i<=100;i=i+1)
{
sum+=i;//或者sum=sum+i;
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
2.编写程序:
求sum=1+1/2+1/3+1/4+…1/100的和,四舍五入保留小数点后4位。
#include
intmain(void)
{
inti;//定义循环变量
doublesum=0.0;//定义sum并赋初值为0.0
for(i=1;i<=100;i++)//for(i=1;i<=100;i=i+1)
{
sum+=(double)1/i;//或者sum+=1.0/i;
}
printf("sum=%.4f\n",sum);//在控制台输出sum的值。
return0;
}
3.编写程序:
求t=1*2*3*…*10的积。
#include
intmain(void)
{
inti;//定义循环变量
intt=1;//定义t并赋初值为1
for(i=1;i<=10;i++)//for(i=1;i<=10;i=i+1)
{
t*=i;//或者t=t*i;
}
printf("t=%d\n",t);//在控制台输出t的值。
return0;
}
4.编写程序:
求[1,100]中,所有能被3整除,但又不能被7整除的数的和。
#include
intmain(void)
{
inti;//定义循环变量
intsum=0;//定义sum并赋初值为0
for(i=1;i<=100;i++)
{
if(i%3==0&&i%7!
=0)//能被3整除但又不能被7整除
{
sum+=i;//sum=sum+i;//将满足条件的i加进
}
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
5.编写程序:
求sum=1+1+2+1+2+3+…+1+2+3+…+100的和。
#include
intmain(void)
{
inti;//定义循环变量
ints=0;//定义s用于计算1+2+3+...
intsum=0;//定义sum用于计算1+1+2+1+2+3+...
for(i=1;i<=100;i++)//for(i=1;i<=100;i=i+1)
{
s=s+i;//s=1+2+3+...
sum=sum+s;//sum=1+1+2+1+2+3+...
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
6.编写程序:
求sum=1-1/2+1/3-1/4+…-1/100的和,四舍五入保留小数点后4位。
#include
intmain(void)
{
inti;//定义循环变量
doublesum=0.0;//定义sum赋初值为0.0
for(i=1;i<=100;i++)
{
if(i%2==1)//成立i为奇数
{
sum=sum+(double)1/i;//i为奇数加进
}
else//i为偶数
{
sum=sum-(double)1/i;//i为偶数减掉
}
}
printf("sum=%.4f\n",sum);//在控制台输出sum的值。
return0;
}
7.编写程序:
求sum=1+2+3+…,sum<=10000的最大值。
#include
intmain(void)
{
inti;//定义循环变量
inttempi;
intsum=0;//定义sum并赋初值为0
i=1;
while(sum<=10000)//因为不能确定循环次数,使用while()循环
{//跳出循环时,sum>10000了
sum=sum+i;
tempi=i;//保留了i的值
i++;//i=i+1;
}
printf("sum=%d\n",sum-tempi);//在控制台输出sum的值。
//也可sum-(i-1)
return0;
}
8.编写程序:
求t=1*2*3*…,t>=10000的最小值。
#include
intmain(void)
{
inti;//定义循环变量
intt=1;//定义t并赋初值为1
i=1;
while(t<10000)//因为不能确定循环次数,使用while()循环
{//跳出循环时,t>=10000了
t=t*i;
i++;//i=i+1;
}
printf("t=%d\n",t);//在控制台输出t的值。
return0;
}
9.编写程序:
求数列:
1、1、2、3、5、8、…的前25项的和。
#include
intmain(void)
{
inti;//定义循环变量i
intf1=1,f2=1;//定义数列的第1项f1第2项f2
intf3;//定义数列的第3项f3
intsum=2;//定义sum并赋初值为2前两项的和
for(i=3;i<=25;i++)//从第三项开始
{
f3=f1+f2;//从第三项开始,每一项都是它前两项的和
sum=sum+f3;
f1=f2;//本轮的第2项,变成下轮的第1项
f2=f3;//本轮的第3项,变成下轮的第2项
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
10.编写程序:
求数列:
1、1、1、3、5、9、…从第几项起大于或等于50000。
#include
intmain(void)
{
inti;//定义第几项i
intf1=1,f2=1,f3=1;//定义数列的第1项f1第2项f2第3项f3
intf4;//定义数列的第4项f4
intsum=2;//定义sum并赋初值为2前两项的和
i=3;
while
(1)//恒为真//for(;;)恒为真
{
i++;
f4=f1+f2+f3;//从第4项开始,每一项都是它前3项的和
if(f4>=50000)
{
break;
}
f1=f2;//本轮的第2项,变成下轮的第1项
f2=f3;//本轮的第3项,变成下轮的第2项
f3=f4;//本轮的第4项,变成下轮的第3项
}
printf("i=%d\n",i);//在控制台输出i的值。
return0;
}
2,扩展型
11.编写程序:
求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。
#include
intmain(void)
{
intn;//定义循环变量n代表四位数
intnq,nb,ns,ng;//n的各位数字
intm;//各位数字之和
intsum=0;//定义sum并赋初值为0
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
}
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
12.编写程序:
所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身,例如:
153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间所有水仙花数之和。
#include
intmain(void)
{
intn;//定义循环变量n代表[100,999]
intnb,ns,ng;//n的各位数字
intsum=0;//定义sum并赋初值为0
for(n=100;n<=999;n++)//n代表[100,999]
{
nb=n/100%10;//nbn的百位
ns=n/10%10;//nsn的十位
ng=n/1%10;//ngn的个位
if(nb*nb*nb+ns*ns*ns+ng*ng*ng==n)
{//判断各位数字的三次方之和是否等于该数本身
sum=sum+n;//加满足条件的n
}
}
printf("sum=%d\n",sum);//在控制台输出sum的值。
return0;
}
13.编写程序:
所谓回文数是从左至右与从右至左读起来都是一样的数字,如:
121是一个回文数。
编写程序,求出100-900之间的所有回文数的个数。
#include
intmain(void)
{
intn;//定义循环变量n遍历[100,999]
intnb,ns,ng;//n的各位数字
intnum=0;//个数定义num并赋初值为0
intfdn;//n的反读数
for(n=100;n<=900;n++)//n代表[100,900]
{
nb=n/100%10;
ns=n/10%10;
ng=n/1%10;
fdn=ng*100+ns*10+nb*1;//n的反读数
if(fdn==n)
{
num++;
}
}
printf("num=%d\n",num);//在控制台输出num的值。
return0;
}
14.编写程序:
把一张一元钞票,换成一分、二分和五分硬币,每种至少5枚,问有多少种方案?
#include
intmain(void)
{
intyf,ef,wf;//一分二分五分
intnum=0;//方案个数
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分
{
num++;//满足条件,方案个数加1
}
}
}
}
printf("num=%d\n",num);
return0;
}
15.编写程序:
所谓“同构数”是指这样一个数,它出现在它的平方数的右侧,例如5的平方是25,25的平方是625,故5和25都是同构数,求[2,1000]之间有多少个同构数。
#include
intmain()
{
inti,j;
for(i=2;i<=1000;i++)
{
j=i*i;
if(j%10==i||j%100==i||j%1000==i)
{
printf("%d\t%d\n",i,j);
}
}
return0;
}
16.编写程序:
所谓素数是指这样的自然数,除1和它本身外不再有其它因子。
求[1,500]中所有素数的和。
#include
intmain(void)
{
inti,n,flag;
intsum=0;
for(n=2;n<=500;n++)
{
flag=1;//先假定是素数
for(i=2;i*i<=n;i++)
{
if(n%i==0)//满足一次非素数
{
flag=0;//满足一次非素数
break;//满足一次没必要往后循环了
}
}
if(flag==1)
{
sum=sum+n;
}
}
printf("sum=%d\n",sum);
return0;
}
17.编写程序:
一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,如:
6=1+2+3。
求出10000以内的所有完数之和。
#include
intmain(void)
{
intn,i;//循环变量
ints;
intsum=0;
for(n=1;n<=10000;n++)
{
s=0;//存放因子的和
for(i=1;i<=n/2;i++)//n的最大真因子是n/2一半
{
if(n%i==0)//满足i就是n的一个因子
{
s=s+i;//因子的和
}
}
if(s==n)//满足n是完数
{
sum=sum+n;
}
}
printf("sum=%d\n",sum);
return0;
}
18.编写程序:
一个正整数是另外一个正整数的平方,这个数就称为“平方数”,如:
25=5^2,25就是一个平方数,求出10000以内的所有平方数的个数。
#include
#include
intmain(void)
{
intn;
intsum=0;
intm;
for(n=2;n<=10000;n++)
{
m=(int)sqrt(n);
if(m*m==n)//满足就是平方数
{
sum=sum+1;
}
}
printf("sum=%d\n",sum);
return0;
}
18.编写程序:
从键盘任意输入10个数,要求按照从小到大顺序排列显示输出。
#include
#defineN10//符号常量
intmain(void)
{
inta[N];
inti,j,t;
for(i=0;i { scanf("%d",&a[i]); } for(i=0;i { for(j=i;j { if(a[i]>a[j])//以下交换 { t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i { printf("%d\t",a[i]); } printf("\n");//换行 return0; } 20.编写程序: 从键盘任意输入10个数,求出这10个数的平均数,最大值,最小值。 #include #defineN10//符号常量 intmain(void) { inta[N]; inti,j; intmax,min;//最大值最小值 doubleave=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语言 题库