文档库 最新最全的文档下载
当前位置:文档库 › C 题库

C 题库

C填空题

1. 若有定义语句:int s=6;则表达式s%2+(s+1)%2的值为[<1>]。
2. 在C语言中,&作为单目运算符时表示的是[<取地址>]。
3. 若已知:a=1,b=2,则表达式:!(a]。
4. 若s是int型变量,且s=8,则s%3+(s+1)%3表达式的值为[<2>]。
5. 若x和n均是int型变量,且x=12,n=5,则执行y=x%=(n%=2)表达式后y的值为[<0>]。
6. 若a的值为1,则表达式!a||++a的值是[<1>]。
7. C语言所提供的基本数据类型包括:单精度型、双精度型、整型、[<字符型>]和枚
举类型。
8. 设有定义:float x=123.4567;,则执行下列语句后的输出结果是[<123.460000>]
printf("%f\n",(int)(x*100+0.5)/100.0);
9. 若变量已正确定义为整型,则表达式n=i=2,++i,i++的值是[<3>]。
10. 在C语言中的赋值表达式中,赋值号左边须是[<变量>]。
11. 若有定义语句:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b
的值为[<1>]
12. C语言中逻辑运算符[]的优先级高于算术运算符。
13. 运算符%两侧运算量的数据类型必须都是[<整型>].
14. C语言源程序的后缀是[<.c>]。
15. C语言中的标识符只能由3种字符组成,它们是字母、数字、[<下划线>]。
16. C语言中用[<非0>]表示逻辑"真".
17. 在C语言中,用“\”开头的字符序列称为转义字符,转义字符“\n”的功能是[<
换行>]。
18. 在C语言中,用关键字[]定义单精度实型变量.
19. C语言中,用[<0>]表示逻辑值"假"。
20. C语言源程序经过编译后,生成文件的后缀是[<.obj>]。
21. C语言源程序连接后生成文件的后缀是[<.exe>]。
22. 空语句的形式是[<;>]。
23. 若有定义:int x=3, y=2; float a=2.5, b=3.5; 则下面表达式的值为[<1>]
(x+y)%2+(int)a/(int)b
24. 若a是int型变量,则计算表达式后,a的值为[<2>]
a=25/3%3
25. 在C语言中的实型变量分为两种类型,它们是float和[]。
26. 结构化程序由[<顺序、选择、循环>]三种基本结构组成。
27. 运算符++和--的运算量必须是[<变量>]。
28. 一个int型数据在内存中所占的字节数为[<2>].
29. 在C语言中,用关键字[]定义双精度实型变量.
30. 在C语言中,用关键字[]定义字符型变量。
31. 在Turbo C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是[<.exe>]。
32. 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为[<1>].
33. 当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为[<3、2、2>]。
if (a>c)
b=a;a=c;c=b;
34. 已知字母A的ASCII值为65,下列程序运行后的输出结果是[<6

7 G>]
main()
{char a,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c",a,b);
}
35. 若有定义:int a=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是[<1>]。
c=(a-=(b-5));
c=(a%3)+(b=1);
36. 复合语句在语法上被认为是[<一条语句>]。
37. 执行下列程序时,输入1234567,则输出结果是[<12 34>]。
#include
main()
{ int a=1,b;
scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b);
}
38. 若变量a和b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55
的形式输出,请写出完整的输出语句[]。
39. C语句的最后用[<;>]结束。
40. 变量i,j,k已定义为int类型并有初值0,用以下语句进行输入时
scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);
当执行第一个输入语句,从键盘输入:
12.3。(表示回车)
则变量i,j,k的值分别是[<12,0,0>]。
41. 下列程序运行后的输出结果是[<10 20 0>]。
main()
{int a,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
42. C语言中结束本次循环的语句是[]。
43. 以下程序段的输出结果是[<死循环>]
int k,n,m;
n=10;m=1;k=1;
while(k<=n) m*=2;
printf("%d\n",m);
44. 已有定义:char c='';int a=1,b;执行b!=c&&a;后b的值为[<0>]。
45. 以下程序的输出结果是[<-1>]
main()
{
int x=2;
while(x--);
printf("%d\n",x);
}
46. 下列程序的输出结果是[<1>]。
main()
{int x,a=1,b=2,c=3,d=4;
x=(ax)?x:d;
printf("%d\n",x);
}
47. for(;;)语句相当于while([<1>])。
48. 下列程序的输出结果是[<1>]。
main()
{int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
}
49. C语言中至少执行一次循环体的循环语句是[]。
50. 结构化程序设计规定的三种基本结构是顺序结构,选择结构和[<循环>]结构。
51. C语言中终止整个循环的语句是[]。
52. 若a,b均为整型变量,则以下语句的功能是[<交换a,b的值>]
a+=b; b=a-b; a-=b;
53. 在C语言中,表示逻辑"真"值使用整型值[<1>]
54. 设int a[2][3]={{5},{6}}; 则数组元素[]的值为5。
55. 若有定义:double a[5], 则a数组的长度为[<5>]。
56. 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]的值为
[<0>]。
57. 如果在程序中调用了strcat函数,则需要预处理命令[<#include >]。
58. 欲将字符串S1复制到字符串S2中,其语句是[]。
59. C 语言中数组的下标总是从[<0>]开

始,不可以为负数。
60. strcmp("how","How")的值是[<32或者>0>]
61. 若有定义int a[3][5];则排列在数组中的第九个元素是[]
62. C语言中构成数组各个元素具有相同的[<数据类型>]。
63. 字符串是以[<\0>]为结束标志的一维字符数组。
64. 若有定义:int b[2][3], 则b数组中列下标的上限为[<2>]。
65. C语言中字符串结束的标志是[<'\0'>]
66. 设int a[2][3]={{2},{3}}; 则数组元素[]的值为3。
67. strlen("How are you\n")的值是[<12>]
68. 若有定义:double x[3][5], 则x数组中行下标的上限为[<2>]。
69. 写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定
义语句是[]
70. 设有定义语句:int a[][3]={{0},{1},{3}},则数组元素a[1][2]是[<0>]
71. 若自定义函数要求返回一个值,则应在该函数体中有一条[<带表达式的return>]语
句.
72. 若用数组名作为函数调用的实参,传递给形参的将是数组的[<首地址>]。
73. C语言规定,简单变量作实参时,和它对应的参数之间的传递方式是[<值传递>]。
74. 若自定义函数要求不返回一个值,则应在该函数说明时加一个类型符[明符>]。
75. 全局的外部变量和函数体内定义的局部变量重名时,[<函数的局部>]变量优先。
76. 函数中的形参和调用时的实参都是变量时,传递方式为[<值传递方式>]。
77. C程序中的一个函数由两部分组成,即声明部分和[<执行部分>]
78. 函数的形式参数的作用域为[<定义它的函数>].
79. 函数中的形参和调用时的实参都是数组名时,传递方式为[<传地址方式>]。
80. C语言程序执行的开始处是[]
81. 假定在同一个编译单位中,函数a()调用了函数b(),则对函数b()不需要说
明的情况有下列两种:b()函数的定义地点在a()函数定义地点之前和[型函数>]。
82. 函数可以嵌套调用,但是不可以嵌套[<定义>]。
83. 为了保证被调用函数不返回任何值,其函数定义的类型应为[]
84. 若有定义int i; int *p =&i;则*&i等价于[]。
85. 指针变量作为函数的参数时,实参与形参之间传递的是[<地址>]。
86. 语句int *p中,指针变量名为[

]。
87. 执行语句int i=2; int *p; p=&i;后,*p的值为[<2>]。
88. 设有char *a="ABCD",则printf("%c", *a)的输出是[]。
89. 若d是已定义的双精度变量,再定义一个指向d的指针变量p的代码是[= &d>]。
90. 设int a[10],*p = a; 则对a[3]的引用可以是p[3]和*(p[<+3>])
91. "*"称为[<取内容运算符>]运算符.
92. 设有char *a="ABCD

",则printf("%s", a)的输出是[]。
93. "&"称为[<取地址运算符>]运算符。
94. 以下程序的输出结果是[<3 5>]。
#include
void swap(int *a,int *b)
{
int *t ;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d",*p,*q);
}
95. 若有定义int i; int *p =&i;则&*p等价于[

]。
96. 以下程序的输出结果是[<4>]。
#include
main()
{
int a[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
97. 有下列程序段,且变量已正确定义和赋值:
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
请填空,使下列程序段的功能与之完全相同。
s=1.0;k=1;
while([]) {s=s+1.0/(k*(k+1));[];}
printf("s=%f\n\n",s);
98. 下列程序中,fun()函数的功能是计算x^2-2x+6,主函数中将调用fun() 函数计算:
y1=(x+8)^2-2(x+8)+6
y2=sin^2(x)-2sin(x)+6
请填空。
#include "math.h"
double fun(double x) {return(x*x-2*x+6);}
main()
{ double x,y1,y2;
printf("Enter x:");
scanf("%lf",&x);
y1=fun([]);
y2=fun([]);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
99. 下列程序用于判断a、b、c能否构成三角形,若能输出YES,否则输出NO。请填空。
main()
{float a,b,c;
scanf("&f&f&f",&a,&b,&c);
if([<(a+b>c)&&(a+c>b)&&(b+c>a)>]) printf("YES\n");
else printf("NO\n");
}
100. 从键盘输入一个字符,并将其输出,完成填空。
main()
{char c;
c=[];
putchar[];
}
101. 下列程序的输出结果是[<0235>]
main()
{int k=5,n=0;
do
{switch(k)
{case 1: case 3:n+=1;k--;break;
default:n=0;k--;
case 2: case 4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
102. 下列程序的输出结果是[<2,2,0>]
main()
{int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0) x=x+y;
if (a<=0)
{ if(b>0)
if(c<=0) y=x-y;
}
else if (c>0) y=x-y;
else z=y;
printf("%d,&d,&d\n",x,y,z);
}
103. 下列程序的输出结果是[<25>]
main()
{int i;
for(i=1;i<=10;i++)
{ if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i);
}
104. 下列程序的功能是:将输入的正整数按逆序输出。例如,如输入135则输出531,
请填空。
main()
{int n,s;
scanf("%d",&n);
do
{s=n%10;printf("%d",s);[];}
while (n!=0);
}
105. 下列程序的功能是计算:s=1+12+123+1234+12345.请填空。
main()
{int t=0,s=0,i;
for(i=1;i<=5;

i++)
{t=i+[];s=s+t;}
printf("%d\n",s);
}
106. 输出已知数组中的所有偶数, 完成填空。
main()
{int a[10]={0,1,2,3,4,5,6,7,8,9},i;
for(i=0;i<10;i++)
if []
printf(“%d\n”,[]);
}
107. 输入数组的值,并输出, 完成填空。
main()
{ int a[6],i;
for(i=0;i<6;i++)
scanf(“%d”,[<&a[i]>]);
for(i=0;i<6;i++)
printf(“%d\n”,[]);
}
108. 下列程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减
前项之差存入数组b,并按每行4个输出,请填空。
main()
{int a[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
[]
for(i=1;i<10;i++)
{printf("%d",b[i-1]);
if(i%4==0) printf("\n");
}
}
109. 有下列程序:
int sub(int n) {return (n/10+n%10);}
main()
{ int x,y;
scanf("%d",&x);
y=sub(sub(sub(x)));
printf("%d\n",y);
}
若运行时输入:1234,程序的输出结果是[<10>]。
110. 下面程序将二维数组a的行和列互换后存放到一个二维数组b中,请填空。
main()
{int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
[]
}
}
111. 下列程序的功能是:求出数组x中各相临两个元素的和依次存放到数组a中,
然后输出。请填空。
main()
{int x[10],a[9],i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for([];i<10;i++)
a[i-1]=x[i]+[];
for(i=0;i<9;i++)
printf("%d",a[i]);
printf("\n");
}
112. 从键盘输入一个小写字母,改用大写字母输出,完成填空。
main()
{char c1,c2;
c1=[];
c2=[];
putchar(c2);}
113. 下列程序计算1到100的整数的累加和,请完善程序
main()
{int a,sum=[<0>];
a=1;
while([])
{sum+=a;
a++;}
printf(“sum=%d\n”,sum);
}
114. 下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否
则返回0。请填空。
int isprime(int a)
{int i;
for(i=2;i<=a/2;i++)
if(a%i==0)[];
[];
}
115. 以下程序功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最
低成绩,当输入负数时结束输入。请填空。
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while[=0>]
{
if(x>amax) amax=x;
if[] amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
116. 以下

程序段:
s=1.0;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1))
printf("%f\n",s);
请填空,使下面的程序段的功能完全与之等同。
s=0.0
d=1.0
k=0;
do
{
s=s+d;
[]
d=1.0/(k*(k+1));
}
while[]
printf("%f\n",s);}
117. 以下函数用以求x的y次方。请填空。
double fun(double x,int y)
{
int i;double z;
for(i=1;i[<<=y>];i++)
z=[];
return z;
}
118. 下面pi函数的功能是,根据以下公式返回满足精度ε要求的∏的值。请填空。
∏/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...
double pi(double eps)
{double s=0.0,t=1.0;
int n;
for([];t>eps;n++)
{
s+=t;
t=n*t/(2*n+1);
}
return (2.0*[]);
}
119. 以下程序的功能是计算s=0!+1!+2!+3!+...+n!。请填空。
long f(int n)
{ int i; long s;
s=1L;
for(i=1;i<=n;i++) s=[];
return s;
}
main()
{
long s;int k,n;
scanf("%d",&n);
s=0;
for(k=0;k<=n;k++) s=s+[];
printf("%ld\n",s);}
120. 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符'\n'结束循
环,请填空.
int n=0,c;
c=getchar();
while([])
{ if([='0'&&c<='9'>]) n++;
c=getchar();
}

 编程

 1.有一函数:当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include
int main()
{
int x,y;
scanf("%d",&x);
if (x>=0)
if (x>0) y=1;
else y=0;
else y=-1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include
int main()
{ float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a{ t=a; a=b; b=t; }
if(a{ t=a; a=c; c=t; }
if(b{ t=b; b=c; c=t; }
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
return 0;
}
3.有三个整数a,b,c,由键盘输入,输出其中最大者。
#include
int main()
{int a,b,c,max;
printf("请输入a,b,c\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(maxmax=b;
if(maxmax=c;
printf("最大的数为%d\n",max);
return 0;
}
4.编程求圆面积、圆周长。要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两
位数字。
#include
void main()
{
float r, l, s;
float pi=3.1415926;
printf("表输入圆半径r:");
scanf("%f", &r);
l=2*pi*r;
s=pi*r*r;
printf("圆周长为:l=%6.2f\n", l);
printf("圆面积为:s=%6.2f\n", s);
}
5.有分段函数:当x<-10时,y=|x|+5;当-10≤x≤10时,y=4x-8;当x>10时,y=sqrt(x)。
编一程序,输入x的值

,输出y的值。
#include
int main()
{
int x,y;
scanf("%d",&x);
if(x<-10)
y=abs(x)+5;
else if(x<=10)
y=4*x-8;
else y=sqrt(x);
printf("x=%d,y=%d\n",x,y);
return 0;
}
6.编写程序,判断某一年是否是闰年。(闰年的条件是:能被4整除,但是不能被100整除,
或者可以被400整除。)
#include
int main()
{int year,leap;
printf("enter year:"); 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 c,f;
printf("请输入一个华氏温度:");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("摄氏温度为:%5.2f\n",c);
return 0;
}
8.有一函数:当x<1时,y=|x|;当1<=x<10时,y=2x-1;当x>=10时,y=3x+11。编一程序,
输入x的值,输出y的值。

#include
#include
void main()
{
int x, y;
printf("输入x:");
scanf("%d",&x);
if (x<1)
y=abs(x);
else if (x<10)
y=2*x-1;
else
y=3*x+11;
printf("x=%3d, y=%d\n",x,y);
}
9.输入三个实数,将这三个数按由小到大的顺序排列,并输出这三个数。
main()
{ int a,b,c,*p1,*p2,*p3,t;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(*p1>*p2)
{t=p1;p1=p2;p2=t;}
if(*p1>*p3)
{t=p1;p1=p3;p3=t;}
if(*p2>*p3)
{t=p2;p2=p3;p3=t;}
printf("%d,%d,%d\n",*p1,*p2,*p3);
}
10.输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转
换。然后输出最后得到的字符。
#include
void main ( )
{
char ch;
scanf("%c",& ch);
ch=(ch>='A'&& ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
}

11.编程求圆柱体积,圆柱表面积。要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,
取小数点后两位数字。
#include
void main()
{
float r, h, v, s;
float pi=3.1415926;
printf("表输入圆半径r、圆柱高h:");
scanf("%f%f", &r,&h);
v=pi*r*r*h;
s=2*pi*r*r+2*pi*r*h;
printf("圆柱体积为:v=%6.2f\n", v);
printf("圆柱表面积为:s=%6.2f\n", s);
}
12.有分段函数:当x<-5时,y=x+10; 当-5≤x≤5时,y=x^2;当x>5时,y=2x-10.
编一程序,输入x的值,输出y的值。
#include
int main()
{
int x,y;
scanf("%d",&x);
if(x<-5)
y=x+10;
else if(x<=5)
y=x^2;
else y=2*x-10;
printf("x=%d,y=%d\n",x,y);
return 0;
}
13.有三个整数a,b,c,由键盘输入,输出其中最小者。
#include
int main()
{int a,b,c,max;
printf("请输入a,b,c\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max>b)
max=b;
if(max>c)
max=c;

printf("最小的数为%d\n",max);
return 0;
}
14.输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转
换。然后输出最后得到的字符。
#include
void main ( )
{
char ch;
scanf("%c",& ch);
ch=(ch>='A'&& ch<='Z')?(ch+32):ch;
printf("%c\n",ch);
}

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;
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("%f\n",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
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;

}
18.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该
数本身。
#include
void main()
{
int i,j,k,n;
printf("narcissus 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("%5d",n);
}
printf("\n");
}
19.编程求1~100之间的所有素数,并输出结果。
#include
#include
int main()
{
int n,m=0,k,i;
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;
}
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,n=1,term=1;
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
int main()
{
int i;
double m=100,sum=0;
for(i=0;i<10;i++){
sum=sum+m;
m=m/2;
}
printf("%f\n",sum);
return 0;
}

23.输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
void main()
{
int p,r,n,m,temp;
printf("请输入n和m: ");
scanf("%d,%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);
}
24.利用循环,编程求1!+2!+3!+…+10!的值,并输出结果。
#include
int main()
{
int n=1,sum=0,j,m=1,i;
for(i=1;i<=10;i++){
m=1;
for(j=1;j<=i;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return 0;
}
25.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......,求出这个数列前20项之和。
#include
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;
}
26.求Fibonacci数列前40个数。这个数列有以下特点:第1和第2个数为1,从第3个数
开始,该数是其前面两个数之和。
#include
int main()
{ int f1=1,f2=1,f3; int i;
printf("%12d\n%12d\n",f1,f2);
for(i=1; i<=38; i++)
{ f3=f1+f2;
printf("%12d\n",f3);
f1=f2;
f2=f3;
}
return 0;
}
27.一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而
6=1+2+3,因此6是完数。编程求1000以内所有完数。
#include
int main()
{
int m,s,i;
for (m=2;m<1000;m++)
{s=0;
for (i=1;iif((m%i)==0)s=s+i;
if(s==m)
{printf("%d,its factors are ",m);
for(i=1;iif(m%i==0) printf("%d ",i);
printf("\n");
}
}
return 0;
}

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,sn=0,tn=0,k,i=1,n;
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,m=0,k,i;
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
void main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<'z'||c>

='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf(":%d\n:%d\n:%d\n:%d\n",letters,space,digit,other);
}
31.将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,4,3,2,0。要求改为0,
2,3,4,6,8。
#include
#define N 6
void 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("\n Now,array a:\n");
for(i=0;iprintf("%d ",a[i]);
printf("\n");
}
32.编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结
果。
#include
#include
void main()
{
int i,s=1;
float n,t,a;
t=1;a=0;n=1;
printf("input n:",n);
while(i<=n)
{
a=a+t;
i=i++;
t=s/i;
}
printf("a=%10.6f\n",a);
}
33.将一个二维数组int a[3][4]的行和列的元素互换,存到另外一个二维数组中。
#include
void main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for (i=0;i<=1;i++)
{
for (j=0;j<=2;j++)
{
printf("%5d",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<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
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个数进行降序排序,并存入数组中。
int paixu(x)
int x[];
{int i,j,t;
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(x[i]>x[i+1]) {t=x[i+1];x[i+1]=x[i];x[i]=t;}
}
main()
{int y[10];int i;
for(i=0;i<10;i++)
scanf("%d",&y[i]);
paixu(y);
for(i=0;i<10;i++)
printf("%5d",y[i]);
printf("\n");
}
36.有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和
列号。
#include
void main()
{
int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
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);
}
37.用冒泡排序法对输入的10个数进行升序排序,并存入数组中。
int paixu(x)
int x[];
{int i,j,t;
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(x[i]>x[i+1]) {t=x[i+1];x[i+1]=x[i];x[i]=t;}
}
main()
{int y[10];int i;
for(i=0;i<10;i++)
scanf("%d",&y[i]);
paixu(y);
for(i=0;i<10;i++)
printf("%5d",y[i]);
printf("\n");
}
38.利用循环,输出以下图形
*****
*****
*****
*****
*****
#include
int main()
{
int i,j,m;
for (i=0;i<5;i++)
{

m=i;
for(m=0;mprintf(" ");
for(j=0;j<5;j++)
printf("*");
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
...
main()
{ static int m,n,k,b[11][11];
b[0][1]=1;
for(m=1;m<11;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-5d",b[m][n]);}printf("\n");
}
}
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 i,j,m;
for (i=1;i<=4;i++)
{
m=i;
for(m=1;mprintf(" ");
for(j=0;j<2*(5-i)-1;j++)
printf("*");
printf("\n");
}
return 0;
}
42.求一个3×3的整型矩阵对角线元素之和。
main()
{int i=0,j=0,a[3][3],s1,s2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
s1=a[0][0]+a[1][1]+a[2][2];
s2=a[0][2]+a[1][1]+a[2][0];
printf("s1=%d,s2=%d\n",s1,s2);
}
43.编写程序,将两个字符串连接起来,不要使用strcat函数。
main()
{ int i,j;char str1[100],str2[100],str3[201];
printf("input a string:");
gets(str1);
for(i=0;str1[i]!='\0';i++)
str3[i]=str1[i];
printf("input a string:");
gets(str2);
for(j=0;str2[j]!='\0';j++)
str3[j+i]=str2[j];
str3[j+i]='\0';
printf("%s\n",str3);
}
44.写一个函数,求两个整数中的较大者,用主函数调用这个函数,并输出结果,两个整数由
键盘输入。
#include
void main()
{
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max is %d\n",c);
}
int max(int x,int y)
{
if(x>y)
return(x);
else
return(y);
}
45.编写两个函数分别求两个整数的最大公约数和最小公倍数,在主函数中调用这两个函数,
并输出结果,两个整数由键盘输入。
#include
void main()
{
int cm(int x,int y);
int cd(int x,int y);
int a,b,m,n;
printf("输入两个数:");
scanf("%d %d",&a,&b);
m=cm(a,b);
n=cd(a,b);
printf("最大公约数是%d\n最小公倍数%d\n",n,m);
}
int cm(int x,int y)
{
int k;
k=x>y? x:y;
for(;;k++)
if(k%x==0&&k%y==0) break;
return(k);
}
int cd(int x,int y)
{
int i,j,k;
k=x>y? y:x;
for(i=1;i<=k;i++)
if(x%i==0&&y%i==0) j=i;
return(j);
}