C语言编程练习60题Word格式.docx
《C语言编程练习60题Word格式.docx》由会员分享,可在线阅读,更多相关《C语言编程练习60题Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
,a[k]);
/***********SPACE***********/
N/2;
k++)
{
s=a[k];
a[k]=a[N-k-1];
a[N-k-1]=s;
}
\nthechangedarray:
printf("
}
3:
产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。
#include"
stdlib.h"
main()
intt;
inti,j,k;
inta[10];
for(i=0;
i<
10;
i++)
a[i]=random(61)+30;
9;
k=i;
for(j=i+1;
j<
j++)
if(a[k]>
a[j])k=j;
if(k!
=i)
t=a[k];
a[k]=a[i];
a[i]=t;
}
i++)
%5d"
a[i]);
5:
数组名作为函数参数,求平均成绩。
floataver(floata[])/*定义求平均值函数,形参为一浮点型数组名*/
inti;
floatav,s=a[0];
for(i=1;
5;
s+=a[i];
av=s/5;
returnav;
voidmain()
floatsco[5],av;
\ninput5scores:
scanf("
%f"
&
sco[i]);
av=aver(sco);
averagescoreis%5.2f\n"
av);
getch();
7:
输出Fibonacci数列的前15项,要求每行输出5项。
Fibonacci数列:
1,1,2,3,5,8,13...........
#include<
stdio.h>
intfib[14],i;
fib[0]=1;
fib[1]=1;
for(i=2;
15;
fib[i]=fib[i-2]+fib[i-1];
%d\t"
fib[i]);
if(i%5==4)printf("
9:
通过函数的递归调用计算阶乘。
longpower(intn)
longf;
if(n>
1)
f=power(n-1)*n;
else
f=1;
return(f);
intn;
longy;
inputainteagernumber:
%d"
n);
y=power(n);
%d!
=%ld\n"
n,y);
10:
计算圆周率的近似值。
math.h>
ints;
floatn,pi;
doublet;
t=1;
pi=0;
n=1;
s=1;
while(fabs(t)>
=2e-6)
pi+=t;
n+=2;
s=-s;
t=s/n;
pi*=4;
pi=%.6f\n"
pi);
11:
删除字符串中的数字字符。
输入字符串:
48CTYP9E6,则输出:
CTYPE。
/***********SPACE***********/
voidfun(char*s)
char*p=s;
while(*p)
if((*p>
='
0'
)&
&
(*p<
9'
))p++;
else*s++=*p++;
*s='
\0'
;
main()
charitem[100];
\nEnterastring:
"
gets(item);
fun(item);
\nThestring:
\"
%s\"
item);
12:
计算并输出500以内最大的10个能被13或17整除的自然数之和。
conio.h>
intfun(intk)
intm=0,mc=0,j,n;
while(k>
=2&
mc<
10)
if(k%13==0||k%17==0)
m=m+k;
mc++;
k--;
returnm;
main()
{
clrscr();
%d\n"
fun(500));
13:
统计一个字符串中的字母、数字、空格和其它字符的个数。
stdio.h"
chars1[80];
inta[4]={0};
intk;
voidfun(chars[],intb[]);
gets(s1);
fun(s1,a);
puts(s1);
for(k=0;
4;
voidfun(chars[],intb[])
for(i=0;
s[i]!
if('
a'
<
=s[i]&
s[i]<
z'
||'
A'
Z'
)
b[0]++;
elseif('
=s[i]&
s[i]<
b[1]++;
elseif(s[i]=='
'
)
b[2]++;
else
b[3]++;
14:
求两个非负整数的最大公约数和最小公倍数。
intm,n,r,p,gcd,lcm;
%d%d"
m,&
if(m<
n){p=m,m=n;
n=p;
p=m*n;
r=m%n;
while(r!
=0)
m=n;
n=r;
gcd=n;
lcm=p/gcd;
gcd=%d,lcm=%d\n"
gcd,lcm);
15:
以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。
inti,n,sum;
sum=0;
n=0;
i<
=300;
if(i%7==0||i%17==0)
if(i%2==0)
sum=sum+i;
n++;
%6d"
i);
if(n%5==0)
\ntotal=%d"
sum);
16:
不用第三个变量,实现两个数的对调操作。
inta,b;
%d%d"
a,&
b);
a=%d,b=%d\n"
a,b);
a=a+b;
b=a-b;
a=a-b;
}
17:
找出数组中最大值和此元素的下标,数组元素的值由键盘输入。
inta[10],*p,*s,i;
a+i);
for(p=a,s=a;
p-a<
p++)
if(*p>
*s)s=p;
max=%d,index=%d\n"
*s,s-a);
18:
输入学生成绩并显示。
#include<
structstudent
charnumber[6];
charname[6];
intscore[3];
}stu[2];
voidoutput(structstudentstu[2]);
inti,j;
2;
i++)
请输入学生%d的成绩:
i+1);
学号:
"
%s"
&
stu[i].number);
姓名:
stu[i].name);
for(j=0;
j<
3;
j++)
成绩%d."
j+1);
stu[i].score[j]);
output(stu);
voidoutput(structstudentstu[2])
学号姓名成绩1成绩2成绩3\n"
%-6s%-6s"
stu[i].number,stu[i].name);
%-8d"
stu[i].score[j]);
19:
计算平均成绩并统计90分以上人数。
intn,m;
floatgrade,average;
average=n=m=0;
while
(1)
scanf("
grade);
if(grade<
0)break;
average+=grade;
90)continue;
m++;
if(n)printf("
%.2f%d\n"
average/n,m);
20:
输入三个整数x,y,z,请把这三个数由小到大输出。
intx,y,z,t;
%d%d%d"
x,&
y,&
z);
if(x>
y){t=x;
x=y;
y=t;
if(x>
z){t=z;
z=x;
x=t;
if(y>
z){t=y;
y=z;
z=t;
smalltobig:
%d%d%d\n"
x,y,z);
21:
三角形的面积为:
area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
,s=(a+b+c)/2,a、b、c为三角形三条边的长。
定义两个带
参数的宏,一个用来求s,另一个用来求area。
编写程序,
在程序中用带参数的宏求面积area。
math.h"
#defineS(x,y,z)(x+y+z)/2
#defineAREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))
floata,b,c,s,area;
a,b,c="
%f,%f,%f"
a,&
b,&
c);
if(a+b>
c&
b+c>
a&
c+a>
b)
s=S(a,b,c);
area=AREA(s,a,b,c);
area=%f\n"
area);
24:
要求输出如下结果:
b=-1a=65535
a=65534
a=30b=6c=5
intb=-1,c;
unsigneda;
a=b;
b=%da=%u\n"
b,a);
a+=b;
a=%u\n"
a);
b=(a=30)/(c=5);
a=%db=%dc=%d\n"
a,b,c);
25:
用函数调用方式,实现字符串的复制。
voidstring_copy(char*str_from,char*str_to)
inti=0;
for(;
(*(str_to+i)=*(str_from+i))!
i++);
staticchararray_str1[20]="
Iamateacher."
chararray_str2[20];
string_copy(array_str1,array_str2);
array_str2=%s\n"
array_str2);
26:
计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
intfun(inthigh)
intsum=0,n=0,j,yes;
while((high>
=2)&
(n<
10))
{
yes=1;
for(j=2;
=high/2;
j++)
if(high%j==0)
yes=0;
break;
if(yes)
sum+=high;
high--;
returnsum;
fun(100));
27:
下面的程序是求1!
+3!
+5!
+……+n!
的和。
longintf,s;
inti,j,n;
s=0;
=n;
i+=2)
for(j=1;
=i;
f=f*j;
s=s+f;
n=%d,s=%ld\n"
n,s);
28:
打印以下图形。
*****
*****
chara[5][9]={"
};
inti,j;
for(j=i;
i+5;
a[i][j]='
*'
%c"
a[i][j]);
29:
求一个二维数组中每行的最大值和每行的和。
s