C语言编程练习60题.docx

上传人:b****7 文档编号:8790676 上传时间:2023-02-01 格式:DOCX 页数:32 大小:21.44KB
下载 相关 举报
C语言编程练习60题.docx_第1页
第1页 / 共32页
C语言编程练习60题.docx_第2页
第2页 / 共32页
C语言编程练习60题.docx_第3页
第3页 / 共32页
C语言编程练习60题.docx_第4页
第4页 / 共32页
C语言编程练习60题.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C语言编程练习60题.docx

《C语言编程练习60题.docx》由会员分享,可在线阅读,更多相关《C语言编程练习60题.docx(32页珍藏版)》请在冰豆网上搜索。

C语言编程练习60题.docx

C语言编程练习60题

综合编程题

1.编写函数fun求1000以内所有7的倍数之和。

intfun(intm){}

2.用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。

#defineN3

intsum(inta[][N]){}

3.编写函数fun,函数的功能是:

求一组数中大于平均值的数的个数。

例如:

给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。

intfun(inta[],intn){}

4.编写函数fun,函数的功能是:

求给定正整数m以内的素数之和。

例如:

当m=20时,函数值为77。

intfun(intm){}

5.求一批数中最大值和最小值的差。

intmax_min(inta[],intn){}

6.编写函数fun,函数的功能是:

求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。

每一分数的分母是前两项的分母之和;每一分数的分子是前两项的分子之和。

例如:

求前20项之和的值为32.660259。

floatfun(intn){}

7.编写函数fun,函数的功能是:

求一个四位数的各位数字的立方和

intfun(intn){}

8.编写函数fun,函数的功能是:

求1到100之间的偶数之积。

doublefun(intm){}

9.计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。

10.将一个字符串中的前N个字符复制到一个字符数组中去,不许使用strcpy函数。

练习题:

2:

将一个数组中的元素按逆序存放。

#defineN7

main()

{

staticinta[N]={12,9,16,5,7,2,1},k,s;

printf("\ntheoriganalarray:

\n");

for(k=0;k

printf("%4d",a[k]);

/***********SPACE***********/

for(k=0;k

{

s=a[k];

/***********SPACE***********/

a[k]=a[N-k-1];

/***********SPACE***********/

a[N-k-1]=s;

}

printf("\nthechangedarray:

\n");

for(k=0;k

/***********SPACE***********/

printf("%4d",a[k]);

}

3:

产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。

#include"stdlib.h"

main()

{

/***********SPACE***********/

intt;

inti,j,k;

inta[10];

for(i=0;i<10;i++)

a[i]=random(61)+30;

for(i=0;i<9;i++)

{

/***********SPACE***********/

k=i;

for(j=i+1;j<10;j++)

/***********SPACE***********/

if(a[k]>a[j])k=j;

if(k!

=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

/***********SPACE***********/

for(i=0;i<10;i++)

printf("%5d",a[i]);

printf("\n");

}

5:

数组名作为函数参数,求平均成绩。

floataver(floata[])/*定义求平均值函数,形参为一浮点型数组名*/

{

inti;

floatav,s=a[0];

for(i=1;i<5;i++)

/***********SPACE***********/

s+=a[i];

av=s/5;

/***********SPACE***********/

returnav;

}

voidmain()

{

floatsco[5],av;

inti;

printf("\ninput5scores:

\n");

for(i=0;i<5;i++)

/***********SPACE***********/

scanf("%f",&sco[i]);

/***********SPACE***********/

av=aver(sco);

printf("averagescoreis%5.2f\n",av);

getch();

}

7:

输出Fibonacci数列的前15项,要求每行输出5项。

Fibonacci数列:

1,1,2,3,5,8,13...........

#include

main()

{

/***********SPACE***********/

intfib[14],i;

fib[0]=1;fib[1]=1;

for(i=2;i<15;i++)

/***********SPACE***********/

fib[i]=fib[i-2]+fib[i-1];

for(i=0;i<15;i++)

{

printf("%d\t",fib[i]);

/***********SPACE***********/

if(i%5==4)printf("\n");

}

}

9:

通过函数的递归调用计算阶乘。

longpower(intn)

{

longf;

if(n>1)

/***********SPACE***********/

f=power(n-1)*n;

else

f=1;

return(f);

}

main()

{

intn;

longy;

printf("inputainteagernumber:

\n");

/***********SPACE***********/

scanf("%d",&n);

y=power(n);

/***********SPACE***********/

printf("%d!

=%ld\n",n,y);

getch();

}

10:

计算圆周率的近似值。

#include

#include

main()

{

ints;

/***********SPACE***********/

floatn,pi;

doublet;

t=1;pi=0;n=1;s=1;

/***********SPACE***********/

while(fabs(t)>=2e-6)

{

pi+=t;n+=2;s=-s;t=s/n;

}

/***********SPACE***********/

pi*=4;

printf("pi=%.6f\n",pi);

}

11:

删除字符串中的数字字符。

例如:

输入字符串:

48CTYP9E6,则输出:

CTYPE。

#include

/***********SPACE***********/

voidfun(char*s)

{

char*p=s;

while(*p)

if((*p>='0')&&(*p<='9'))p++;

/***********SPACE***********/

else*s++=*p++;

/***********SPACE***********/

*s='\0';

}

main()

{

charitem[100];

printf("\nEnterastring:

");

gets(item);fun(item);

printf("\nThestring:

\"%s\"\n",item);

}

12:

计算并输出500以内最大的10个能被13或17整除的自然数之和。

#include

#include

/***********SPACE***********/

intfun(intk)

{

intm=0,mc=0,j,n;

/***********SPACE***********/

while(k>=2&&mc<10)

{

/***********SPACE***********/

if(k%13==0||k%17==0)

{

m=m+k;

mc++;

}

k--;

}

/***********SPACE***********/

returnm;

}

main()

{

clrscr();

printf("%d\n",fun(500));

}

13:

统计一个字符串中的字母、数字、空格和其它字符的个数。

#include"stdio.h"

main()

{

chars1[80];inta[4]={0};

intk;

/***********SPACE***********/

voidfun(chars[],intb[]);

gets(s1);

/***********SPACE***********/

fun(s1,a);

puts(s1);

for(k=0;k<4;k++)

printf("%4d",a[k]);

}

voidfun(chars[],intb[])

{

inti;

for(i=0;s[i]!

='\0';i++)

if('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')

b[0]++;

/***********SPACE***********/

elseif('0'<=s[i]&&s[i]<='9')

b[1]++;

/***********SPACE***********/

elseif(s[i]=='')

b[2]++;

else

b[3]++;

}

14:

求两个非负整数的最大公约数和最小公倍数。

main()

{

intm,n,r,p,gcd,lcm;

scanf("%d%d",&m,&n);

if(m

p=m*n;

r=m%n;

/***********SPACE***********/

while(r!

=0)

{

/***********SPACE***********/

m=n;n=r;r=m%n;

}

/***********SPACE***********/

gcd=n;

lcm=p/gcd;

/***********SPACE***********/

printf("gcd=%d,lcm=%d\n",gcd,lcm);

}

15:

以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。

#include

#include

main()

{

inti,n,sum;

sum=0;

/***********SPACE***********/

n=0;

/***********SPACE***********/

for(i=1;i<=300;i++)

/***********SPACE***********/

if(i%7==0||i%17==0)

if(i%2==0)

{

sum=sum+i;

n++;

printf("%6d",i);

/***********SPACE***********/

if(n%5==0)

printf("\n");

}

printf("\ntotal=%d",sum);

}

16:

不用第三个变量,实现两个数的对调操作。

#include

main()

{

inta,b;

scanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a,b);

/***********SPACE***********/

a=a+b;

/***********SPACE***********/

b=a-b;

/***********SPACE***********/

a=a-b;

printf("a=%d,b=%d\n",a,b);

}

17:

找出数组中最大值和此元素的下标,数组元素的值由键盘输入。

#include"stdio.h"

voidmain()

{

inta[10],*p,*s,i;

for(i=0;i<10;i++)

/***********SPACE***********/

scanf("%d",a+i);

/***********SPACE***********/

for(p=a,s=a;p-a<10;p++)

/***********SPACE***********/

if(*p>*s)s=p;

/***********SPACE***********/

printf("max=%d,index=%d\n",*s,s-a);

}

18:

输入学生成绩并显示。

#include

structstudent

{

charnumber[6];

charname[6];

intscore[3];

}stu[2];

voidoutput(structstudentstu[2]);

voidmain()

{

inti,j;

/***********SPACE***********/

for(i=0;i<2;i++)

{

printf("请输入学生%d的成绩:

\n",i+1);

printf("学号:

");

/***********SPACE***********/

scanf("%s",&stu[i].number);

printf("姓名:

");

scanf("%s",stu[i].name);

for(j=0;j<3;j++)

{

printf("成绩%d.",j+1);

/***********SPACE***********/

scanf("%d",&stu[i].score[j]);

}

printf("\n");

}

output(stu);

}

voidoutput(structstudentstu[2])

{

inti,j;

printf("学号姓名成绩1成绩2成绩3\n");

for(i=0;i<2;i++)

{

/***********SPACE***********/

printf("%-6s%-6s",stu[i].number,stu[i].name);

for(j=0;j<3;j++)

printf("%-8d",stu[i].score[j]);

printf("\n");

}

}

19:

计算平均成绩并统计90分以上人数。

main()

{

intn,m;floatgrade,average;

/***********SPACE***********/

average=n=m=0;

while

(1)

{

/***********SPACE***********/

scanf("%f",&grade);

if(grade<0)break;

n++;

average+=grade;

/***********SPACE***********/

if(grade<90)continue;

m++;

}

if(n)printf("%.2f%d\n",average/n,m);

}

20:

输入三个整数x,y,z,请把这三个数由小到大输出。

main()

{

intx,y,z,t;

scanf("%d%d%d",&x,&y,&z);

/***********SPACE***********/

if(x>y){t=x;x=y;y=t;}

/***********SPACE***********/

if(x>z){t=z;z=x;x=t;}

/***********SPACE***********/

if(y>z){t=y;y=z;z=t;}

printf("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。

#include"math.h"

/***********SPACE***********/

#defineS(x,y,z)(x+y+z)/2

#defineAREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))

main()

{

floata,b,c,s,area;

printf("a,b,c=");

/***********SPACE***********/

scanf("%f,%f,%f",&a,&b,&c);

if(a+b>c&&b+c>a&&c+a>b)

{

/***********SPACE***********/

s=S(a,b,c);

/***********SPACE***********/

area=AREA(s,a,b,c);

printf("area=%f\n",area);

}

}

24:

要求输出如下结果:

b=-1a=65535

a=65534

a=30b=6c=5

main()

{

/***********SPACE***********/

intb=-1,c;unsigneda;

/***********SPACE***********/

a=b;

printf("b=%da=%u\n",b,a);

/***********SPACE***********/

a+=b;

printf("a=%u\n",a);

/***********SPACE***********/

b=(a=30)/(c=5);

printf("a=%db=%dc=%d\n",a,b,c);

}

25:

用函数调用方式,实现字符串的复制。

voidstring_copy(char*str_from,char*str_to)

{

inti=0;

/***********SPACE***********/

for(;(*(str_to+i)=*(str_from+i))!

='\0';i++);

}

main()

{

staticchararray_str1[20]="Iamateacher.";

chararray_str2[20];

/***********SPACE***********/

string_copy(array_str1,array_str2);

/***********SPACE***********/

printf("array_str2=%s\n",array_str2);

}

26:

计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。

#include

#include

#include

intfun(inthigh)

{

intsum=0,n=0,j,yes;

/***********SPACE***********/

while((high>=2)&&(n<10))

{

yes=1;

for(j=2;j<=high/2;j++)

/***********SPACE***********/

if(high%j==0)

{

yes=0;

break;

}

if(yes)

{

sum+=high;

n++;

}

high--;

}

/***********SPACE***********/

returnsum;

}

main()

{

clrscr();

printf("%d\n",fun(100));

}

27:

下面的程序是求1!

+3!

+5!

+……+n!

的和。

main()

{

longintf,s;

inti,j,n;

/***********SPACE***********/

s=0;

scanf("%d",&n);

/***********SPACE***********/

for(i=1;i<=n;i+=2)

{

f=1;

/***********SPACE***********/

for(j=1;j<=i;j++)

/***********SPACE***********/

f=f*j;

s=s+f;

}

printf("n=%d,s=%ld\n",n,s);

}

28:

打印以下图形。

*****

*****

*****

*****

*****

main()

{

chara[5][9]={""};

inti,j;

for(i=0;i<5;i++)

/***********SPACE***********/

for(j=i;j

a[i][j]='*';

/***********SPACE***********/

for(i=0;i<5;i++)

{

for(j=0;j<9;j++)

/***********SPACE***********/

printf("%c",a[i][j]);

/***********SPACE***********/

printf("\n");

}

}

29:

求一个二维数组中每行的最大值和每行的和。

#include"s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1