C语言编程练习60题.docx

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

C语言编程练习60题.docx

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

C语言编程练习60题.docx

C语言编程练习60题

 

综合编程题

1.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。

例如,原来的字符串为CEAedca,排序后输出为CedcEAa。

intfun(char*s,intnum){}

2.输入三个字符串,按由小到大顺序输出。

编写交换函数fun,用交换指针的方式实现交换。

charfun(char*p1,char*p2){}

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

计算并输出给定整数n的所有因子之和(不包括1与自身)。

规定n的值不大于1000。

例如:

n的值为855时,应输出704。

intfun(intn){}

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

intfun(intm){}

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

#defineN3

intsum(inta[][N]){}

6.调用函数fun判断一个三位数是否"水仙花数"。

在main函数中从键盘输入一个三位数,并输出判断结果。

请编写fun函数。

所谓"水仙花数"是指一3位数,其各位数字立方和等于该数本身。

例如,153是一个水仙花数,因为153=1+125+27。

intfun(intn){}

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

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

例如:

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

intfun(inta[],intn){}

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

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

例如:

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

intfun(intm){}

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

intmax_min(inta[],intn){}

10.请编写一个函数fun,函数的功能是:

求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。

例如:

输入的数组为:

123

4156

12189

10112

求出的最大数为18,行坐标为2,列坐标为1。

#defineN4#defineM3

intfun(intarray[N][M]){}

11.编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。

调用该函数找出100~200之间满足条件的所有数。

intsub(intm){}

12.产生20个[30,120]上的随机整数放入二维数组a[5][4]中,求每行元素的和。

voidrow_sum(inta[5][4],intb[5]){}

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

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

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

例如:

求前20项之和的值为32.660259。

floatfun(intn){}

14.编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出。

intfun(inta[3][3]){}

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

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

例如:

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

intfun(intm){}

16.从键盘上输入任意实数x,求出其所对应的函数值。

z=(x-4)的二次幂(x>4)

z=x的八次幂(x>-4)

z=z=4/(x*(x+1))(x>-10)

z=|x|+20(其他)

floaty(floatx){}

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

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

intfun(intn){}

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

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

doublefun(intm){}

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

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

练习题:

1:

将字母转换成密码,转换规则是将当前字母变成其后的第四个字母,但W变成A、X变成B、Y变成C、Z变成D。

小写字母的转换规则同样。

#include

main()

{

charc;

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

while((c=getchar())!

='\n')

{

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

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))c+=4;

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

if((c>'Z'&&c<='Z'+4)||c>'z')c-=26;

printf("%c",c);

}

}

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");

}

4:

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

main()

{

charstr1[80],str2[80];

inti,n;

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

gets(str1);

scanf("%d",&n);

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

for(i=0;i

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

str2[i]=str1[i];

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

str2[n]='\0';

printf("%s\n",str2);

}

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();

}

6:

输入数组,最大的与最后一个元素交换,最小的与第一个元素交换,输出数组。

main()

{

intnumber[10];

input(number);

max_min(number);

output(number);

}

input(number)

intnumber[10];

{

inti;

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

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

scanf("%d,",&number[i]);

scanf("%d",&number[9]);

}

max_min(array)

intarray[10];

{

int*max,*min,k,l;

int*p,*arr_end;

arr_end=array+10;

max=min=array;

for(p=array+1;p

if(*p>*max)

max=p;

elseif(*p<*min)

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

min=p;

k=*max;

l=*min;

*p=array[0];

array[0]=l;

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

l=*p;

*p=array[9];

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

array[9]=k;

k=*p;

return;

}

output(array)

intarray[10];

{

int*p;

for(p=array;p

printf("%d,",*p);

printf("%d\n",array[9]);

}

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");

}

}

8:

将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。

#include

voidstrcopy(char*str1,char*str2,intm)

{

char*p1,*p2;

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

p1=str1+m;

p2=str2;

while(*p1)

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

*p2++=*p1++;

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

*p2='\0';

}

main()

{

inti,m;

charstr1[80],str2[80];

gets(str1);

scanf("%d",&m);

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

strcopy(str1,str2,m);

puts(str1);puts(str2);

}

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(

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

当前位置:首页 > 高中教育 > 语文

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

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