大学c语言上机考试编程题库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char c1;
printf("input a latter:\n");
scanf("%c",&c1);
if(c1>='A'&&c1<='Z')
c1=c1+32;
printf("%c",c1);
return 0;
}
2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("Please input letters:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c>='0'&&c<='9')
digit++;
else if(c==' ')
space++;
else
other++;
}
printf("字母数:%d\n数字数:%d\n空格数:%d\n其他字母数:%d\n",letters,digit,space,other);
return 0;
}
3、编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。
#include<stdio.h>
int main()
{
int n;float c;
float sum(int n);
scanf("%d",&n);
c=sum(n);
printf("%f\n",c);
float sum(int n)
{
int i;
float sum=0.0;
for(i=1;i<=n;i++)
sum=sum+1.0/i;
return sum;
}
4、输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。
然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char c1;
printf("input a latter:\n");
scanf("%c",&c1);
if(c1>='a'&&c1<='z')
c1=c1-32;
printf("%c",c1);
return 0;
}
5、求S=a+aa+aaa+...+aa...a(n个a)之值。
其中a是一个数字,n代表a的位数。
例如:2+22+222+2222+22222(此时n为5),n由键盘输入。
#include<stdio.h>
int main()
{
int i,a,b,c,n;
scanf("%d,%d",&a,&n);
c=b=a;
for(i=2;i<=n;i++)
{
b=10*b+a;
c=b+c;
}
printf("%d\n",c);
return 0;
}
6、将一个二维数组行和列的元素互换,存到另外一个二维数组中。
#include<stdio.h>
int main()
int i,j;
int a[3][3]={1,2,3,4,5,6,7,8,9},b[3][3];
printf("array a:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("\n");
printf("array b:\n");
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
7、有三个整数a,b,c,由键盘输入,输出其中最大者。
#include<stdio.h>
int main()
{
int a,b,c,d;
int max(int x,int y,int z);
scanf("%d %d %d",&a,&b,&c);
d=max(a,b,c);
printf("%d\n",d);
return 0;
}
int max(int x,int y,int z)
{
int q,p;
if(x>y)q=x;
else q=y;
if(z>q)p=z;
else p=q;
return p;
8、将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,4,3,2,0。
要求改为0,2,3,4,6,8。
#include<stdio.h>
int main()
{
int a[6]={8,6,4,3,2,0};
int i,b[6];
printf("array a:\n");
for(i=0;i<6;i++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<6;i++)
b[i]=a[5-i];
printf("\n");
printf("array b:\n");
for(i=0;i<6;i++)
printf("%5d",b[i]);
printf("\n");
return 0;
}
9、有分段函数:当x<-5时,y=x+10; 当-5≤x≤5时,y=x/2;当x>5时,y=2x-10.
编一程序,输入x的值,输出y的值。
#include<stdio.h>
int main()
{
float y,x;
printf("请输入X的值");
scanf("%f",&x);
if(x<-5)
{
y=x+10;
printf("%3f,y=x+10=%f\n",x,y);
}
else if(x>=-5&&x<=5)
{
y=x/2;
printf("%3f,y=x/2=%f\n",x,y);
}
else
{
y=2*x-10;
printf("%3f,y=2*x-10=%f\n",x,y);
}
return 0;
}
10、用pi4≈1-1/3+1/5-1/7+...公式求pi的近似值,直到某一项的绝对值小于10的-6次方为止。
#include <stdio.h>
#include <math.h>
int main()
{
int sign=1,count=0;
double pi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-8)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}
11、输出以下图形
*
***
*****
*******
#include <stdio.h>
int main()
{int i,j,k;
for (i=0;i<=3;i++)
{for (j=0;j<=2-i;j++)
printf(" ");
for (k=0;k<=2*i;k++)
printf("*");
printf("\n");
} //下面的可以不要
/* for (i=0;i<=2;i++)
{for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}*/
return 0;
}
12、输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("请输入a,b,c的值\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d,%d,%d,\n",a,b,c);
return 0;
}
13、猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想吃时就剩一个桃子了。
求第一天共摘了多少个桃子。
#include <stdio.h>
int main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
day--;
}
printf("total=%d\n",x1);
return 0;
}
14、用冒泡排序法对输入的10个数进行升序排序,并存入数组中。
#include<stdio.h>
int main()
{
int a[10],i,j,t;
printf("please input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<=9;j++)
for(i=1;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
15、输入三角形的三边长,求三角形面积。
求三角形面积的公式为area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。
#include <stdio.h>/*有问题*/
#include <math.h>
int main ( )
{
float a,b,c,s,area;
printf("please input a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
16、一个数如果恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1、2、3,
而6=1+2+3,因此6是完数。
编程求1000以内所有完数。
#define M 1000
#include <stdio.h>
int main()
{
int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
int i,a,n,s;
for (a=2;a<=M;a++)
{n=0;
s=a;
for (i=1;i<a;i++)
if (a%i==0)
{n++;
s=s-i;
switch(n)
{case 1:
k1=i; break;
case 2:
k2=i; break;
case 3:
k3=i; break;
case 4:
k4=i; break;
case 5:
k5=i; break;
case 6:
k6=i; break;
case 7:
k7=i; break;
case 8:
k8=i; break;
case 9:
k9=i; break;
case 10:
k10=i; break;
}
}
if (s==0)
{
printf("%d ,Its factors are ",a);
if (n>1) printf("%d,%d",k1,k2);
if (n>2) printf(",%d",k3);
if (n>3) printf(",%d",k4);
if (n>4) printf(",%d",k5);
if (n>5) printf(",%d",k6);
if (n>6) printf(",%d",k7);
if (n>7) printf(",%d",k8);
if (n>8) printf(",%d",k9);
if (n>9) printf(",%d",k10);
printf("\n");
}
}
return 0;
}
17、有三个整数a,b,c,由键盘输入,输出其中最小者。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("请输入a,b,c的值\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d\n",c);
return 0;
}
18、编程求1!+3!+5!+7!+9!的值,并输出结果。
#include<stdio.h>
int main()
{
int s=0,i,j,a;
for(i=1;a=1,i<=9;i=i+2)
{
for(j=1;j<=i;j++)
a=a*j;
s=s+a;
}
printf("%d\n",s);
return 0;
}
19、有分段函数:当x<-10时,y=|x|+5;当-10≤x≤10时,y=4x-8;当x>10时,y=sqrt(x)。
编一程序,输入x的值,输出y的值。
#include <stdio.h>
#include<math.h>
int main()
{ int x;
float y;
printf("输入x:");
scanf("%d",&x);
if(x<-10)
{ y=-x+5;
printf("x=%3d, y=|x|+5=%f\n" ,x,y);
}
else if(x<=10)
{ y=4*x-8;
printf("x=%d, y=4*x-8=%f\n",x,y);
}
else
{ y=sqrt(x);
printf("x=%d, y=sqrt(x)=%f\n",x,y);
}
return 0;
}
20、有一函数:当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include <stdio.h>
int main()
{
int x,y;
printf("enter x:");
scanf("%d",&x);
if(x==0) y=-1;
else if(x!=0)
if(x>0) y=1;
else y=0;
printf("x=%d,y=%d\n",x,y);
return 0;
}
21、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("parcissus numbers are ");
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");
return 0;
}
22、写一个函数,求两个整数中的较大者,用主函数调用这个函数,并输出结果,两个整数由键盘输入。
#include<stdio.h>
int main()
{
int a,b,c;
int max(int x,int y);
printf("请输入a,b的值:\n");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("%d\n",c);
return 0;
}
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return z;
}
23、编程求2!+4!+6!+8!+10!的值,并输出结果。
#include<stdio.h>
int main()
{
int s=0,i,j,a;
for(i=2;a=1,i<=10;i=i+2)
{
for(j=1;j<=i;j++)
a=a*j;
s=s+a;
}
printf("%d\n",s);
return 0;
}
24、编程求圆面积、圆周长。
要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include<stdio.h>
# define pi 3.1415926
int main()
{
float r,h,c,s,bm,v,zt;
printf("请输入圆半径r,圆柱高h:\n");
scanf("%f,%f",&r,&h);
c=2*pi*r;
s=r*r*pi;
bm=4*pi*r*r;
v=3.0/4.0*pi*r*r*r;
zt=pi*r*r*h;
printf("圆周长为:c=%f\n圆面积为:s=%f\n圆球表面积为:bm=%f\n圆球体积为:v=%f\n 圆柱体积为:zt=%f\n",c,s,bm,v,zt);
return 0;
}
25、编程求1~100之间的所有素数,并输出结果。
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m=0;
for(n=1;n<=100;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");
return 0;
}
26、求一个3×3的整型矩阵对角线元素之和。
#include <stdio.h>
int main()
{
int a[3][3],sum=0;
int i,j;
printf("enter data:\n");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%3d",&a[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
for (i=0;i<3;i++)
sum=sum+a[i][i];
printf("sum=%6d\n",sum);
return 0;
}
27、将一个二维数组行和列的元素互换,存到另外一个二维数组中。
#include<stdio.h>
int main()
{
int a[2][2],b[2][2],i,j;
printf("enter data:\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf("\n");
printf("array a:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%3d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%3d",b[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
28、编程求1!+2!+3!+…+10!的值,并输出结果。
#include<stdio.h>
int main()
{
int sum=0,i,j,a;
for(i=1;i<=10;i++)
{
for(j=1,a=1;j<=i;j++)
a=a*j;
sum=sum+a;
}
printf("%d\n",sum);
return 0;
}
29、编写两个函数分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,并输出结果,两个整数由键盘输入。
#include <stdio.h>
int main()
{int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
return 0;
}
int hcf(int u,int v)
{int t,r;
if (v>u)
{t=u;u=v;v=t;}
while ((r=u%v)!=0)
{u=v;
v=r;}
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);
}
30、输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。
公式为c=5/9(f-32)。
#include<stdio.h>
int main()
{
float f,c;
printf("请输入一个华氏温度:");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("对应的摄氏温度为:");
printf("%6.2f\n",c);
return 0;
}
31、编写程序,将两个字符串连接起来,不要使用strcat函数。
#include<stdio.h>
void main()
{
char str1[20],str2[20];
int i=0,j=0;
printf("请输入字符串1:\n");
scanf("%s",str1);
printf("请输入字符串2:\n");
scanf("%s",str2);
while (str1[i]!='\0')
i++;
while (str2[j]!='\0')
str1[i++]=str2[j++];
str1[i]='\0';
printf("合并之后的字符串为:%s\n",str1);
}
32、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......,求出这个数列前20项之和。
#include <stdio.h>
int main()
{
int i,n=20;
double a=2,b=1,s=0,t;
for (i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf("sum=%16.10f\n",s);
return 0;
}
33、输出以下图形
*******
*****
***
*
#include <stdio.h>
int main()
{int i,j,k;
for (i=0;i<=3;i++)
{for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=6-2*i;k++)
printf("*");
printf("\n");
}
return 0;
}
34、有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include<stdio.h>
int main()
{
int a[3][4]={12,23,56,89,78,85,94,63,41,75,86,52},i,j,max;
max=a[0][0];
i=0;
j=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(max<a[i][j])
max=a[i][j];
i=i;
j=j;
}
}
printf("max=%d,i=%d,j=%d\n",max,i,j);
return 0;
}
35、求Fibonacci数列前40个数。
这个数列有以下特点:第1和第2个数为1,从第3个数开始,该数是其前面两个数之和。
#include<stdio.h>
int main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
printf("%12d %12d",f1,f2);
if(i%2==0)printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
36、编写程序,判断某一年是否是闰年。
(闰年的条件是:能被4整除,但是不能被100整除,或者可以被400整除。
#include<stdio.h>
int main()
{
int n,leap;
scanf("%d",&n);
if(n%4==0)
{if(n%100==0)
{if(n%400==0)
leap=1;
else leap=0;
}else leap=1;
}else leap=0;
if(leap)
printf("%d is ",n);
else printf("%d is not ",n);
printf("a leap year.\n") ;
}
37、一个球从100m高度自由落下,每次落地后又反跳回原高度的一半,再落下,再反弹。
求它在第10次落地时共经过多少米?
#include<stdio.h>
int main()
{
float sn=100,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
hn=hn/2;
sn=sn+2*hn;
}
printf(" %f\n",sn);
return 0;
}
38、输出“魔方矩阵”。
所谓魔方阵是指这样的矩阵,它的每一行、每一列和对角线之和均相等。
例如,三界魔方阵为
8 1 6
3 5 7
4 9 2
要求输出1---n*n的自然数构成的魔方阵。
#include <stdio.h>
int main()
{ int a[15][15],i,j,k,p,n;
p=1;
while(p==1)
{printf("enter n(n=1--15):");
scanf("%d",&n);
if ((n!=0) && (n<=15) && (n%2!=0))
p=0;
}
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for (k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if ((i<1) && (j>n))
{i=i+2;
j=j-1;
}
else
{if (i<1) i=n;
if (j>n) j=1;
}
if (a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}
39、编程求100~200之间的所有素数,并输出结果。
#include <stdio.h>
#include <math.h>
int main()
{
int n,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");
return 0;
}
40、编写一个程序,将字符数组a中的全部字符复制到字符数组b中。
不要使用strcpy函数。
#include<stdio.h>
#include<string.h>
void main()
{
char a[40],b[40];
int i;
printf("请输入a:");
scanf("%s",a);
for(i=0;i<=strlen(a);i++)
b[i]=a[i];
printf("b:%s\n",b);
}
41、从键盘输入一行字符,统计出输入的字符个数(注:不要使用strlun函数编程)。
#include <stdio.h>
void main()
{
int alphabet=0,i=0;
char str[100];
printf ("请输入一个字符串\n");
gets(str);
for (i=0;str[i]!='\0';i++)
++alphabet;
printf ("有%d个字母\n",alphabet);
}
42、输入学生的成绩,利用计算机将学生的成绩划分出等级并输出:
#include<stdio.h>
void main()
{
float m;
printf("输入学生成绩:\n");
scanf("%f",&m);
if ((m>100)||(m<0)) printf("数据有误\n");
else if (m>=90) printf("A级\n");
else if (m>=80) printf("B级\n");
else if (m>=70) printf("C级\n");
else if (m>=60) printf("D级\n");
else printf("E级\n");
}
43、给出年、月、日,计算该日是该年的第几天。
#include <stdio.h>
int main()
{int sum_day(int month,int day);
int leap(int year);
int year,month,day,days;
printf("input date(year,month,day):");
scanf("%d,%d,%d",&year,&month,&day);
printf("%d/%d/%d ",year,month,day);
days=sum_day(month,day); /* 调用函数sum_day */ if(leap(year)&&month>=3) /* 调用函数leap */
days=days+1;
printf("is the %dth day in this year.\n",days);
return 0;
}
int sum_day(int month,int day) /* 函数sum_day:计算日期*/ {int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for (i=1;i<month;i++)
day+=day_tab[i]; /* 累加所在月之前天数*/
return(day);
} /* 函数leap:判断是否为闰年*/
int leap(int year)
{int leap;
leap=year%4==0&&year%100!=0||year%400==0;
return(leap);
}
44、输出以下图形
*****
*****
*****
*****
#include <stdio.h>
int main()
{
char a[5]={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for (i=0;i<4;i++) //这里的4为行数
{
printf("\n");
printf(" ");
for (j=1;j<=i;j++)
printf("%c",space);
for (k=0;k<5;k++)
printf("%c",a[k]);
}
printf("\n");
return 0;
}
45、输出以下杨辉三角形(要求输出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include <stdio.h>
#define N 10
int main()
{
int i,j,a[N][N];
for (i=0;i<N;i++)
{
a[i][i]=1;
a[i][0]=1;
}
for (i=2;i<N;i++)
for (j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for (i=0;i<N;i++)
{
for (j=0;j<=i;j++)
printf("%7d",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
46、有一函数:当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include <stdio.h>
int main()
{
int x,y;
printf("enter x:");
scanf("%d",&x);
if(x==0) y=-1;
else if(x!=0)
if(x>0) y=1;
else y=0;
printf("x=%d,y=%d\n",x,y);
return 0;
}
47、输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("请输入a,b,c的值\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d,%d,%d,\n",a,b,c);
return 0;
48、有三个整数a,b,c,由键盘输入,输出其中最大者。
#include<stdio.h>
int main()
{
int a,b,c,d;
int max(int x,int y,int z);
scanf("%d %d %d",&a,&b,&c);
d=max(a,b,c);
printf("%d\n",d);
return 0;
}
int max(int x,int y,int z)
{
int q,p;
if(x>y)q=x;
else q=y;
if(z>q)p=z;
else p=q;
return p;
}
49、编程求圆面积、圆周长。
要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include<stdio.h>
# define pi 3.1415926
int main()
{
float r,h,c,s,bm,v,zt;
printf("请输入圆半径r,圆柱高h:\n");
scanf("%f,%f",&r,&h);
c=2*pi*r;
s=r*r*pi;
bm=4*pi*r*r;
v=3.0/4.0*pi*r*r*r;
zt=pi*r*r*h;
printf("圆周长为:c=%f\n圆面积为:s=%f\n圆球表面积为:bm=%f\n圆球体积为:v=%f\n 圆柱体积为:zt=%f\n",c,s,bm,v,zt);
return 0;
}
50、有分段函数:当x<-10时,y=|x|+5;当-10≤x≤10时,y=4x-8;当x>10时,y=sqrt(x)。
编一程序,输入x的值,输出y的值。
#include <stdio.h>
#include<math.h>
int main()
{ int x;
float y;
printf("输入x:");
scanf("%d",&x);
if(x<-10)
{ y=-x+5;
printf("x=%3d, y=|x|+5=%f\n" ,x,y);
}
else if(x<=10)
{ y=4*x-8;
printf("x=%d, y=4*x-8=%f\n",x,y);
}
else
{ y=sqrt(x);
printf("x=%d, y=sqrt(x)=%f\n",x,y);
}
return 0;
}
51、编写程序,判断某一年是否是闰年。
(闰年的条件是:能被4整除,但是不能被100整除,或者可以被400整除。
#include<stdio.h>
int main()
{
int n,leap;
scanf("%d",&n);
if(n%4==0)
{if(n%100==0)
{if(n%400==0)
leap=1;
else leap=0;
}else leap=1;
}else leap=0;
if(leap)
printf("%d is ",n);
else printf("%d is not ",n);
printf("a leap year.\n") ;
}
52、输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。
公式为c=5/9(f-32)。
#include<stdio.h>
int main()
{
float f,c;
printf("请输入一个华氏温度:");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("对应的摄氏温度为:");
printf("%6.2f\n",c);
return 0;
}
53、输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。
然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char c1;
printf("input a latter:\n");
scanf("%c",&c1);
if(c1>='a'&&c1<='z')
c1=c1-32;
printf("%c",c1);
return 0;
}
54、有三个整数a,b,c,由键盘输入,输出其中最小者。
#include<stdio.h>
int main()
{
int a,b,c,t;
printf("请输入a,b,c的值\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(b<c)
{
t=b;
b=c;
c=t;
}
printf("%d\n",c);
return 0;
}
55、输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char c1;
printf("input a latter:\n");
scanf("%c",&c1);
if(c1>='A'&&c1<='Z')
c1=c1+32;
printf("%c",c1);
return 0;
}
56、输入三角形的三边长,求三角形面积。
求三角形面积的公式为area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。
#include <stdio.h>/*有问题*/
#include <math.h>
int main ( )
{
float a,b,c,s,area;
printf("please input a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f\tb=%f\t%f\n",a,b,c);
printf("area=%f\n",area);
return 0;
}
57、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("parcissus numbers are ");
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");
return 0;
}
58、编程求1~100之间的所有素数,并输出结果。
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,m=0;
for(n=1;n<=100;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");
return 0;
}
59、用pi4≈1-1/3+1/5-1/7+...公式求pi的近似值,直到某一项的绝对值小于10的-6次方为止。
#include <stdio.h>
#include <math.h>
int main()
{
int sign=1,count=0;
double pi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-8)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}
60、一个数如果恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。
编程求1000以内所有完数。
#define M 1000
#include <stdio.h>
int main()
{
int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
int i,a,n,s;
for (a=2;a<=M;a++)
{n=0;
s=a;
for (i=1;i<a;i++)
if (a%i==0)
{n++;
s=s-i;
switch(n)
{case 1:
k1=i; break;
case 2:
k2=i; break;
case 3:
k3=i; break;
case 4:
k4=i; break;
case 5:
k5=i; break;
case 6:
k6=i; break;
case 7:
k7=i; break;
case 8:
k8=i; break;
case 9:
k9=i; break;
case 10:
k10=i; break;
}
}
if (s==0)
printf("%d ,Its factors are ",a);
if (n>1) printf("%d,%d",k1,k2);
if (n>2) printf(",%d",k3);
if (n>3) printf(",%d",k4);
if (n>4) printf(",%d",k5);
if (n>5) printf(",%d",k6);
if (n>6) printf(",%d",k7);
if (n>7) printf(",%d",k8);
if (n>8) printf(",%d",k9);
if (n>9) printf(",%d",k10);
printf("\n");
}
}
return 0;
}
61、求S=a+aa+aaa+...+aa...a(n个a)之值。
其中a是一个数字,n代表a的位数。
例如:2+22+222+2222+22222(此时n为5),n由键盘输入。
#include<stdio.h>
int main()
{
int i,a,b,c,n;
scanf("%d,%d",&a,&n);
c=b=a;
for(i=2;i<=n;i++)
{
b=10*b+a;
c=b+c;
}
printf("%d\n",c);
return 0;
}
62、编写两个函数分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,并输出结果,两个整数由键盘输入。
#include <stdio.h>
int main()
{int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
return 0;
}
int hcf(int u,int v)
{int t,r;
if (v>u)
{t=u;u=v;v=t;}
while ((r=u%v)!=0)
{u=v;
v=r;}
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);
}
63、设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
用scsnf输入数据,输出计算结果,输出时要有文字说明,取小数点后2位数字。
请编程序。
# include<stdio.h>
Int main()
{float h,r,l,s,sq,vq,vz;
Float pi=3.141526;
Prntf("请输入圆半径r,圆柱高h:");
Scanf("%f,%f,&r,&h");
l=2*pi*r;
Sq=4*pi*r*r;
Vq=3.0/4.0*pi*r*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("圆球体积为:v=%6.2f\n",v);
Printf("圆球体积为:vz=%6.2f\n",vz);
Return 0;
}
64、求一个3x3的整形矩阵对角线元素之和。
# include <stdio.h>
int main()
{
int a[3][3],sum=0;
Int i,j;
printf("enter data:\n");
for(i=0;i<0;j++)
for(j=0;j<0;i++)
scanf("%3d",&a[i][j];
for(i=0;i<3;i++)
sum=sum+a[i][i];
pintf("sum=%6d\n",sum);
Return 0;
}
65、用筛法求100之内的素数。
main()
{ int i,j,a[100];
for(i=2;i<100;i++)
{ a[i]=i;
for(j=2;j<=i;j++)
{if(j<i)
if(a[i]%j==0)
break;
if(a[i]-j==0)
printf("%5d",a[i]);
}
}
printf("\n");
}
或
#include"math.h"
main()
{static int i,j,k,a[98];
for(i=2;i<100;i++)
{a[i]=i;k=sqrt(i);
for(j=2;j<=a[i];j++)
if(j<k) if(a[i]%j==0)
break;
if(j>=k+1)
printf("%5d",a[i]);
}
printf("\n");
}
66、用选择法对10个整数从小到大排序。
main()
{ int i,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
或
main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=1;i<11;i++)
printf("%d",a[i]);
printf("\n");
}
67、已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。
main()
{ static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t;
scanf("%d",&a[9]);
for(i=9;i>0;i--)
if(a[i]<a[i-1]){t=a[i-1];a[i-1]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);printf("\n");
}
或
main()
{
static int a[5]={1,4,5,6,7};
int i,t,b;
scanf("%d",&b);
for(i=0;i<5;i++)
{if(b<=a[i])
{t=a[i];a[i]=b;b=t;}
printf("%d ",a[i]);}。