C语言题库(编程)河南工业大学 河工大 c语言期末考试题库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、编程题
1.有一函数:当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include
void main()
{
int x,y;
printf("请输入x:");
scanf("%d",&x);
if(x<0)
y=-1;
else if(x=0)
y=0;
else
y=1;
printf("y=%d",y);
}

2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include
void main()
{int a,b,c,temp=0;
printf("please input a,b,c: ");
scanf("%d %d %d",&a,&b,&c);
if(aif(aif(bprintf("从大到小为:%d,%d,%d\n",a,b,c);

}

3.有三个整数a,b,c,由键盘输入,输出其中最大者。
void main()
{
int a,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
#define pi 3.1416
main()
{
float r,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
int main()
{
int year,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("%d is ",year);
else
printf("%d is not ",year);
printf("a leap year.\n");
return 0;
}
7.输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。公式为c=5/9(f-32)
#include
int main()
{
float f,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
void main()
{int a,b,c,temp=0;
printf("please input a,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
void main()
{
cha

r a;
scanf("%c",&a);
if(islower(a))
a=a-32;
printf("%c\n",a);
}
11.编程求圆柱体积,圆柱表面积。要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include

int main(int argc, char *argv[])
{
float r,h,l,s,sq,vq,vz;
float pi=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");
return 0;
}
12.有分段函数:当x<-5时,y=x+10; 当-5≤x≤5时,y=x^2;当x>5时,y=2x-10.
编一程序,输入x的值,输出y的值。
13.有三个整数a,b,c,由键盘输入,输出其中最小者。
#include
int main()
{
int a,b,c,temp,min;
printf("请输入三个整数:");
scanf("%d,%d,%d",&a,&b,&c);
temp=(amin=(tempprintf("三个数中最小数是%d\n",min);
return 0;
}


14.输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
#include
void main()
{
char c;

printf("input ch:");
c=getchar();
if( c>='A'&&c<='Z')
{
c=c+32;
printf("%c",c);
}
else printf("%c",c);
}
15.输入三角形的三边长,求三角形面积。求三角形面积的公式为
area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2
#include
#include
void main()
{
float a,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
int main()
{
int n=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);
return 0;
}
17.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想吃时就剩一个桃子了。求第一天共摘了多少个桃子。
#include
void main()
{
int day; static x1=1;
day=10;
while(day>0)
{
x1=(x1+1)*2;
day--;
}
printf("桃子总数=%d\n",x1);
}
18.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include
int main()
{
int i,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");
return 0;
}
19.编程求1~100之间的所有素数,并输出结果。
#include

int main(void)
{
int a[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]);
return 0;
}
20.编程求1!+3!+5!+7!+9!的值,并输出结果。
#include
int main()
{
int n=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);
return 0;
}

21.用pi/4≈1-1/3+1/5-1/7+...公式求pi的近似值的绝,直到某一项对值小于10的-6次方为止。
#include
#include
int main()
{
int sign=1;
double pi=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);
return 0;
}

22.一个球从100m高度自由落下,每次落地后又反跳回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米?
#include "stdio.h"
#include "stdio.h"
main()
{
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2; /*第n次反跳高度*/
}
printf("the total of road is %f\n",sn);
getch();
}
23.输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
int main()
{
int p,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);
return 0;
}
24.利用循环,编程求1!+2!+3!+…+10!的值,并输出结果。
main()
{
int i,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()
{ int i,x,y,a;
float sum=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

#define N 4

long fibonacci(int n)
{
if (0==n||1==n) return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}

int main(void)
{
int i;

printf("Fibonacci数列的前40项\n");
for (i=0; i<40;)
{
printf("%-10ld",fibonacci(i++));
if(i%N==0) printf("\n");
}
printf("\n");
return 0;
}
27.一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程求10

00以内所有完数。
#include
void main()
{
int i,j;
int sum;
for(i=2;i<1000;i++)
{
sum=0;
for(j=1;jif(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
int main()
{
int a,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);
return 0;
}


29.编程求100~200之间的所有素数,并输出结果。
#include
#include
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;
}
30.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include"stdio.h"
main()
{char c;int i=0,j=0,k=0,l=0;
while((c=getchar())!='\n')
{if(c>=65&&c<=90||c>=97&&c<=122) i++;
else if(c>=48&&c<=57) j++;
else if(c==32) k++;
else l++;}
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
#define N 5
int main()
{int a[N],i,temp;
printf("enter array a:\n");
for(i=0;iscanf("%d",&a[i]);
printf("array a:\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,array a:\n");
for(i=0;iprintf("%4d",a[i]);
printf("\n");
return 0;
}
32.编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。
#include
main()
{
float i=1,sum=0,n;
printf("input a number n:");
scanf("%f",&n);
while(i<=n)
{
sum+=1.0/i;
i=i+1;
}
printf("%f\n",sum);
}


33.将一个二维数组int a[3][4]的行和列的元素互换,存到另外一个二维数组中。
#include
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
printf("arrary a:\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("array b:\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=2;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}

34.利用循环输出以下图形
*****
****
***
**
*
#include
int main()
{
int
i,j,m;
for(i=1;i<=5;i++)
{
m=i;
for(m=1;mprintf(" ");
for(j=0;j<=5-i;j++)
printf("*");
printf("\n");
}
return 0;
}
35.用冒泡排序法对输入的10个数进行降序排序,并存入数组中。
#include
int main()
{
int a[10]

;
int i,j,t;
printf("input 10 numbers:\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("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
36.有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include
int main()
{
int i,j,row=0,colum=0,max;
int a[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);
return 0;
}

37.用冒泡排序法对输入的10个数进行升序排序,并存入数组中。
#include
int main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\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("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}

38.利用循环,输出以下图形
*****
*****
*****
*****
*****
#include
int main()
{char a[5]={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for (i=0;i<5;i++)
{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;
}

39.输出以下杨辉三角形(要求输出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
#include
#define N 10
int main()
{int i,j,a[N][N];
for(i=0;i{a[i][i]=1;
a[i][0]=1;
}
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
40.利用循环输出以下图形
*
***
*****
*******
#include
int main()
{
int i,j,m;
for (i=1;i<=4;i++)
{
m=i;
for (m=1;m<=4-i;m++)
printf(" ");
for (j=0;j<2*i-1;j++)
printf("*");
printf("\n");
}
return 0;
}
41.利用循环,输出以下图形
*******
*****
***
*
#include

int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i{
for(j=n-1-i;j>0;j--)printf(" ");
for(j=0;j<2*i+1;j++){int k=j;if(k>25)k%=26;printf("%c",'*'+k);}
printf("\n");
}
return 0;
}

42.求一个3×3的整型矩阵对角线元素之和。
#include
main()
{
int a[3][3],i,j,sum=0;
printf("请输入数组元素:(3*3)\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n");
printf("数组为:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
printf("对角线

的和:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j||2-i==j)
sum+=a[i][j];

printf("%d\n",sum);

}
43.编写程序,将两个字符串连接起来,不要使用strcat函数。
int main()
{
char *a="qwet",*b="woei";
char c[20];
int i,j;
for( i=0,j=0;*(a+i);i++ ,j++)
c[j]=*(a+i);
for(i=0 ; *(b+i);i++,j++ )
c[j]=*(b+i);
c[j]='\0';
for( i=0 ; c[i] ;i++ )
printf("%c ",c[i]);
}
44.写一个函数,求两个整数中的较大者,用主函数调用这个函数,并输出结果,两个整数由键盘输入。
#include
int maxNum(int a,int b)
{
return(a>b?a:b);
}
void main()
{
int a,b,max;
printf("Enter two numbers!\n");
scanf("%d%d",&a,&b);
max=maxNum(a,b);
printf("Max:%d\n",max);
}
45.编写两个函数分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,并输出结果,两个整数由键盘输入。
#include
int hcf(int,int);
int lcd(int,int,int);
void main()
{
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",l);
}
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);
}

46. . 输出左边图案。
...
.....
.......
.....
...
.
#include
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;
}

相关文档
最新文档