《大学C语言程序设计》题库编程题.docx
《《大学C语言程序设计》题库编程题.docx》由会员分享,可在线阅读,更多相关《《大学C语言程序设计》题库编程题.docx(26页珍藏版)》请在冰豆网上搜索。
《大学C语言程序设计》题库编程题
《大学C语言程序设计》题库-编程题
编程题
1.有一函数:
当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include
voidmain()
{
intx,y;
printf("请输入x:
");
scanf("%d",&x);
if(x<0)
y=-1;
elseif(x=0)
y=0;
else
y=1;
printf("y=%d",y);
}
2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include
voidmain()
{inta,b,c,temp=0;
printf("pleaseinputa,b,c:
");
scanf("%d%d%d",&a,&b,&c);
if(a
if(aif(bprintf("从大到小为:
%d,%d,%d\n",a,b,c);
}
3.有三个整数a,b,c,由键盘输入,输出其中最大者。
voidmain()
{
inta,b,c,max;
printf("输入三个数字:
\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b&&a>c)
max=a;
if(b>a&&b>c)
max=b;
if(c>a&&c>b)
max=c;
printf("最大值是:
%d\n",max);
}
4.编程求圆面积、圆周长。
要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include
#definepi3.1416
main()
{
floatr,l,s;
printf("请输入半径:
\n");
scanf("%f",&r);
l=2*pi*r;
s=pi*r*r;
printf("l=%7.2f\ns=%7.2f\n",l,s);
}
5.【有点难】有分段函数:
当x<-10时,y=|x|+5;当-10≤x≤10时,y=4x-8;当x>10时,y=sqrt(x)。
编一程序,输入x的值,输出y的值。
6.编写程序,判断某一年是否是闰年。
(闰年的条件是:
能被4整除,但是不能被100整除,或者可以被400整除。
)
#include
intmain()
{
intyear,leap;
scanf("%d",&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
printf("%dis",year);
else
printf("%disnot",year);
printf("aleapyear.\n");
return0;
}
7.输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。
公式为c=5/9(f-32)
#include
intmain()
{
floatf,c;
printf("输入华氏温度:
\n");
scanf("%f",&f);
c=(f-32)/1.8;
printf("对应的摄氏温度是:
%5.2f\n",c);
}
8.有一函数:
当x<1时,y=|x|;当1<=x<10时,y=2x-1;当x>=10时,y=3x+11。
编一程序,输入x的值,输出y的值。
9.输入三个实数,将这三个数按由小到大的顺序排列,并输出这三个数。
#include
voidmain()
{inta,b,c,temp=0;
printf("pleaseinputa,b,c:
");
scanf("%d%d%d",&a,&b,&c);
if(a>b){temp=a;a=b;b=temp;}
if(a>c){temp=a;a=c;c=temp;}
if(b>c){temp=b;b=c;c=temp;}
printf("从小到大为:
%d,%d,%d\n",a,b,c);
}
10.输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。
然后输出最后得到的字符。
#include
#include
voidmain()
{
chara;
scanf("%c",&a);
if(islower(a))
a=a-32;
printf("%c\n",a);
}
11.编程求圆柱体积,圆柱表面积。
要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include
intmain(intargc,char*argv[])
{
floatr,h,l,s,sq,vq,vz;
floatpi=3.1415926;
printf("请输入圆的半径r,圆柱高h:
");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=pi*r*r;
sq=4*pi*r*r;
vq=4.0/3.0*pi*r*r;
vz=pi*r*r*h;
printf("圆周长为:
l=%6.2f\n",l);
printf("圆面积为:
s=%6.2f\n",s);
printf("圆球表面积为:
sq=%6.2f\n",sq);
printf("圆球体积为:
vq=%6.2f\n",vq);
printf("圆柱体积为:
vz=%6.2f\n",vz);
system("PAUSE");
return0;
}
12.有分段函数:
当x<-5时,y=x+10;当-5≤x≤5时,y=x^2;当x>5时,y=2x-10.
编一程序,输入x的值,输出y的值。
13.有三个整数a,b,c,由键盘输入,输出其中最小者。
#include
intmain()
{
inta,b,c,temp,min;
printf("请输入三个整数:
");
scanf("%d,%d,%d",&a,&b,&c);
temp=(a
a:
b;
min=(temptemp:
c;
printf("三个数中最小数是%d\n",min);
return0;
}
14.输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
#include
voidmain()
{
charc;
printf("inputch:
");
c=getchar();
if(c>='A'&&c<='Z')
{
c=c+32;
printf("%c",c);
}
elseprintf("%c",c);
}
15.输入三角形的三边长,求三角形面积。
求三角形面积的公式为
area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2
#include
#include
voidmain()
{
floata,b,c,s,area;
printf("依次输入a,b,c:
");
scanf("%f%f%f,",&a,&b,&c);
s=(float)0.5*(a+b+c);
area=(float)sqrt(s*(s-a)*(s-b)*(s-c));
printf("面积为:
%7.2f",area);
}
16.编程求2!
+4!
+6!
+8!
+10!
的值,并输出结果。
#include
intmain()
{
intn=1,sum=0,j,m=1,i;
for(i=1;i<=5;i++){
m=1;
for(j=1;j<=2*i;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return0;
}
17.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想吃时就剩一个桃子了。
求第一天共摘了多少个桃子。
#include
voidmain()
{
intday;staticx1=1;
day=10;
while(day>0)
{
x1=(x1+1)*2;
day--;
}
printf("桃子总数=%d\n",x1);
}
18.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include
intmain()
{
inti,j,k,n;
printf("水仙花数是");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
return0;
}
19.编程求1~100之间的所有素数,并输出结果。
#include
intmain(void)
{
inta[100],i,j;
for(i=0;i<100;i++)a[i]=i+1;
for(i=1;i<100;i++)
for(j=i+1;j<100;j++)
if(a[i]&&a[j]%a[i]==0)
a[j]=0;
for(i=1;i<100;i++)
if(a[i])printf("%d\t",a[i]);
return0;
}
20.编程求1!
+3!
+5!
+7!
+9!
的值,并输出结果。
#include
intmain()
{
intn=1,sum=0,j,m=1,i;
for(i=1;i<=5;i++){
m=1;
for(j=1;j<=2*i-1;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return0;
}
21.用pi/4≈1-1/3+1/5-1/7+...公式求pi的近似值的绝,直到某一项对值小于10的-6次方为止。
#include
#include
intmain()
{
intsign=1;
doublepi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-6)
{pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}pi=pi*4;
printf("pi=%10.8f\n",pi);
return0;
}
22.一个球从100m高度自由落下,每次落地后又反跳回原高度的一半,再落下,再反弹。
求它在第10次落地时共经过多少米?
#include"stdio.h"
#include"stdio.h"
main()
{
floatsn=100.0,hn=sn/2;
intn;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2;/*第n次反跳高度*/
}
printf("thetotalofroadis%f\n",sn);
getch();
}
23.输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
intmain()
{
intp,r,n,m,temp;
printf("请输入两个正整数n,m:
");
scanf("%d%d,",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:
%d\n",n);
printf("它们的最小公约数为:
%d\n",p/n);
return0;
}
24.利用循环,编程求1!
+2!
+3!
+…+10!
的值,并输出结果。
main()
{
inti,j,n,sum=0;
for(i=1;i<=10;i++)
{
n=1;
for(j=1;j<=i;j++)
n*=j;
sum+=n;
}
printf("%d\n",sum);
}
25.有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13......,求出这个数列前20项之和。
#include
main()
{inti,x,y,a;
floatsum=0;
x=2;
y=1;
for(i=1;i<20;i++)
{
sum+=(float)(x)/y;
//printf("%d/%d\n",x,y);
a=x;
x=x+y;
y=a;
}
printf("%7.5f\n",sum);
}
26.求Fibonacci数列前40个数。
这个数列有以下特点:
第1和第2个数为1,从第3个数开始,该数是其前面两个数之和。
#include
#defineN4
longfibonacci(intn)
{
if(0==n||1==n)return1;
else
returnfibonacci(n-1)+fibonacci(n-2);
}
intmain(void)
{
inti;
printf("Fibonacci数列的前40项\n");
for(i=0;i<40;)
{
printf("%-10ld",fibonacci(i++));
if(i%N==0)printf("\n");
}
printf("\n");
return0;
}
27.一个数如果恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。
编程求1000以内所有完数。
#include
voidmain()
{
inti,j;
intsum;
for(i=2;i<1000;i++)
{
sum=0;
for(j=1;j
if(i%j==0)
sum=sum+j;
if(sum==i)
printf("%d是完数\n",sum);
}
}
28.求S=a+aa+aaa+...+aa...a(n个a)之值。
其中a是一个数字,n代表a的位数。
例如:
2+22+222+2222+22222(此时n为5),n由键盘输入。
#include
intmain()
{
inta,n,i=1,sn=0,tn=0;
printf("a,n=:
");
scanf("%d,%d",&a,&n);
while(i<=n)
{tn=tn+a;
sn=sn+tn;
a=a*10;
++i;
}
printf("a+aa+aaa+...=%d\n",sn);
return0;
}
29.编程求100~200之间的所有素数,并输出结果。
#include
#include
intmain()
{intn,k,i,m=0;
for(n=101;n<=200;n=n+2)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{printf("%d",n);
m=m+1;
}
if(m%10==0)printf("\n");
}
printf("\n");
return0;
}
30.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include"stdio.h"
main()
{charc;inti=0,j=0,k=0,l=0;
while((c=getchar())!
='\n')
{if(c>=65&&c<=90||c>=97&&c<=122)i++;
elseif(c>=48&&c<=57)j++;
elseif(c==32)k++;
elsel++;}
printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);
}
31.将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,4,3,2,0。
要求改为0,2,3,4,6,8。
#include
#defineN5
intmain()
{inta[N],i,temp;
printf("enterarraya:
\n");
for(i=0;iscanf("%d",&a[i]);
printf("arraya:
\n");
for(i=0;iprintf("%4d",a[i]);
for(i=0;i{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNOW,arraya:
\n");
for(i=0;iprintf("%4d",a[i]);
printf("\n");
return0;
}
32.编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。
#include
main()
{
floati=1,sum=0,n;
printf("inputanumbern:
");
scanf("%f",&n);
while(i<=n)
{
sum+=1.0/i;
i=i+1;
}
printf("%f\n",sum);
}
33.将一个二维数组inta[3][4]的行和列的元素互换,存到另外一个二维数组中。
#include
intmain()
{
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
intb[4][3],i,j;
printf("arrarya:
\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("arrayb:
\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=2;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return0;
}
34.利用循环输出以下图形
*****
****
***
**
*
#include
intmain()
{
int
i,j,m;
for(i=1;i<=5;i++)
{
m=i;
for(m=1;m
printf("");
for(j=0;j<=5-i;j++)
printf("*");
printf("\n");
}
return0;
}
35.用冒泡排序法对输入的10个数进行降序排序,并存入数组中。
#include
intmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return0;
}
36.有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include
intmain()
{
inti,j,row=0,colum=0,max;
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
return0;
}
37.用冒泡排序法对输入的10个数进行升序排序,并存入数组中。
#include
intmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return0;
}
38.利用循环,输出以下图