很好的C语言复习题.docx

上传人:b****8 文档编号:9375375 上传时间:2023-02-04 格式:DOCX 页数:24 大小:24.95KB
下载 相关 举报
很好的C语言复习题.docx_第1页
第1页 / 共24页
很好的C语言复习题.docx_第2页
第2页 / 共24页
很好的C语言复习题.docx_第3页
第3页 / 共24页
很好的C语言复习题.docx_第4页
第4页 / 共24页
很好的C语言复习题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

很好的C语言复习题.docx

《很好的C语言复习题.docx》由会员分享,可在线阅读,更多相关《很好的C语言复习题.docx(24页珍藏版)》请在冰豆网上搜索。

很好的C语言复习题.docx

很好的C语言复习题

【例4-4】任意输入2个实数,将这2个实数交换

/*example2-10交换2个实数*/

#include

voidmain(void)

{

inta,b,t;/*定义3个实型变量*/

printf("a=?

");

scanf("%d",&a);

图2-10代码2-10的执行结果

printf("b=?

");/*输出提示信息*/

scanf("%d",&b);/*输入信息*/

{

t=a;

a=b;

b=t;/*交换*/

}

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

printf("b=%d\n",b);/*输出交换后的信息*/

}

【例4-5】任意输入1个3位整数,找出它的个位、十位、百位

/*example2-11拆分3位整数个位、十位、百位*/

#include

voidmain(void)

{

inta;/*定义整数*/

intonedig,tendig,hundig;/*定义个位、十位、百位*/

printf("a=?

");

scanf("%d",&a);

onedig=a%10;

tendig=a%100/10;

hundig=a/100;/*计算个位、十位、百位*/

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

printf("%d%d%d,",onedig,tendig,hundig);

/*输出*/

}

【例4-6】任意输入1个小写字母,将其转换为大写字母

#include

voidmain(void)

{

chars,c;/*定义字符*/

printf("s=?

");

scanf("%c",&s);/*输入小写字母*/

c=s-32;/*计算大写字母*/

printf("smalet=%c\n",s);

printf("caplet=%c\n",c);/*输出*/

}

【例3-1】已知x的值,求y=|x|。

#include

voidmain(void)

{

floatx,y;/*定义实型数据*/

printf("x=?

");

scanf("%f",&x);/*输入实型数据*/

y=x;/*设y的初始值为x*/

if(x<0)

y=-x;/*更改y的值为-x*/

printf("x=%10.4f\n",x);

printf("y=%10.4f\n",y);/*输出*/

}

【例3-2】已知2个数,从小到大输出这个两个数。

#include

voidmain(void)

{

floatx,y,t;

scanf("%f,%f",&x,&y);

if(x>y)

{t=x;

x=y;

y=t;}

printf("x=%10.4f,y=%10.4\n",x,y);

}

【例3-5】输入1个数,判断其是奇数还是偶数

#include

voidmain(void)

{

intx;/*定义整型数据*/

printf("x=?

");

scanf("%d",&x);/*输入整型数据*/

if(x%2==0)

printf("%d是偶数",x);/*输出是偶数*/

else

printf("%d是奇数",x);/*输出是奇数*/

}

【例3-8】以5分制的形式输入一门课程的考试成绩,打印其所在的百分制段落,如:

输入B,输出80~89

#include

voidmain(void)

{

charscore;

printf("score=?

");

scanf("%c",&score);/*从键盘输入考试成绩*/

switch(score)

{

case'A':

printf("%cin90-100\n",score);break;/*优*/

case'B':

printf("%cin80-89\n",score);break;/*良*/

case'C':

printf("%cin70-79\n",score);break;/*中*/

case'D':

printf("%cin60-69\n",score);break;/*及格*/

case'E':

printf("%cin<60\n",score);/*不及格*/

}

}

【例3-11】求1+2+3+4+…..+100的值(用while循环实现)

#include

voidmain(void)

{

inti;/*定义整型循环变量*/

floatsum;/*定义累加和*/

i=1;/*初始化循环变量*/

sum=0.0;/*初始化累加和*/

while(i<=100)/*循环条件*/

{

sum=sum+i;/*不断累加*/

i++;/*修正循环变量*/

}

printf("i=%d,",i);/*输出循环变量*/

printf("sum=%f\n",sum);/*输出累加和*/

}

voidmain(void)

{inti;floatsum;

sum=0.0;

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

{sum=sum+i;}

printf("i=%d,",i);

printf("sum=%f\n",sum);}

输入10个整数,将正数累加。

#include"stdio.h"

voidmain()

{

inti,j,s=0;

printf("Pleaseenter10integer:

");

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

{scanf("%d",&j);

if(j<0)

continue;

s=s+j;

}

printf("sumis%d",s);

}

求累乘积的和sum=1!

+2!

+3!

+…+n!

#include

voidmain(void)

{inti,temp=1,sum=0,n;

printf("n=?

");

scanf("%d",&n);

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

{

temp=temp*i;

sum=sum+temp;}

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

求素数

#include

#include

voidmain(void)

{intn,i,s;

scanf(“%d”,&n);

s=sqrt(n);

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

{

if(n%i==0)break;

}

if(i>s)

printf(“\n%d”,n);

}

求Fibonacci数列前20个数

#include

voidmain(void)

{inti,f1,f2,f3;

f1=0;f2=1;

printf(“%10d%10d”,f1,f2);

for(i=3;i<=20;i++)

{f3=f1+f2;

printf(“%10d”,f3);

f1=f2;f2=f3;}

printf(“\n”);

}

求出10到100之内能同时被2、3、7整除的数

#include

voidmain(void)

{inti;

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

if(i%2==0&&i%3==0&&i%7==0)

printf(“%10d”,i);

}

*

**

***

****

*****

#include

voidmain(void)

{inti,j;

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

{

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

printf("*");

printf("\n");

}

}

编写程序输出下列图形

1

22

333

4444

55555

666666

7777777

88888888

999999999

#include"stdio.h"

voidmain()

{

inti,j;

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

{

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

printf("%d",i);

printf("\n");

}

}

6、求100~200之间的素数

#include

#include

voidmain(void)

{

intm,n,i,k=0;

for(m=101;m<=200;m=m+2)

{n=sqrt(m);

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

{if(m%i==0)break;}

if(i>n)

{printf("%4d",m);k++;}

if(k%10==0)

printf("\n");}

printf("\n素数有%d个\n",k);}

【例3-20】由键盘任意输入一个年号,如:

2008,判断其是否是闰年

/*example3-20判断闰年*/

#include

voidmain(void)

{

intn;/*定义数据*/

printf("n=?

");

scanf("%d",&n);/*输入年号*/

/*对年号进行判断*/

if((n%4==0&&n%100!

=0)||n%400==0)

printf("%d是闰年",n);/*输出是闰年*/

else

printf("%d不是闰年",n);/*输出不是闰年*/

}

求级数的和:

1+1/2+1/3+1/4+…+1/n

/*example3-23(b)求级数和*/

#include

voidmain(void)

{

inti;/*定义整型循环变量*/

floatsum=0.0;/*定义并初始化累加和*/

intn;

printf("n=?

");

scanf("%d",&n);/*输入项数*/

for(i=1;i<=n;i++)/*循环条件*/

{

sum=sum+1.0/i;/*不断累加*/

}

printf("sum=%f\n",sum);/*输出累加和*/

}

求级数的和:

π/4=1−1/3+1/5−1/7+…1/n

#include

voidmain(void)

{

inti;/*定义整型循环变量*/

floatsum=0.0;/*定义并初始化累加和*/

floattemp=-1;

intn;

printf("n=?

");

scanf("%d",&n);/*输入项数*/

for(i=1;i<=n;i=i+2)/*循环条件、步长为2*/

{

temp=-temp;/*正负相间*/

sum=sum+temp*(1.0/i);/*不断累加*/

}

sum=sum*4;/*计算pi*/

printf("sum=%f\n",sum);/*输出pi*/

}

【例7-1】通过函数求两个数的最大值。

/*example6-1通过函数求最大值*/

#include

intGetMax(int,int);/*函数的原型声明*/

voidmain(void)

{

inta,b,c,d;/*说明变量*/

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

d=GetMax(a,b);/*调用函数GetMax求a、b的较大值赋给d*/

d=GetMax(d,c);/*调用函数GetMax求d、c的较大值赋给d*/

printf("TheMaximumofa,b,cis%d\n",d);

}

intGetMax(intx,inty)

{

intmax;

if(x>y)

max=x;/*x>y成立,x为较大值*/

else

max=y;/*x>y不成立,y为较大值*/

returnmax;

}

【例7-3】函数调用举例,通过函数求xn,在主函数中输入x及n,并调用该函数,输出结果

#include

floatGetPow(float,int);/*函数原型声明*/

voidmain(void)

{

floatx,y;

intn;

printf("Pleaseinputx,n:

");

scanf("%f,%d",&x,&n);/*输入x,n*/

y=GetPow(x,n);/*给出实参列表,调用函数*/

printf(“x^n=%f\n”,y);/*将函数的返回值赋给y*/

}

floatGetPow(floatx,intn)/*函数定义,名称:

GetPow*/

{

floatz;

inti;

z=1;

for(i=1;i<=n;i++)/*循环累乘*/

z*=x;

returnz;/*返回累乘积*/

}

求两个数的最大公约数和最小公倍数

#include

Voidmain(void)

{inta,b,d,s;

intmax(inta,intb);

intmin(inta,intb);

scanf(“%d%d”,&a,&b);

d=max(a,b);

s=min(a,b);

printf(“d=%d,s=%d”,d,s);}

intmax(inta,intb)

{intt;

if(a

{t=a;a=b;b=t;}

while(b!

=0)

{t=a%b;a=b;b=t;}

return(a);}

intmin(inta,intb)

{ints;

s=a*b/max(a,b);

return(s);}

【例8-1】学生分数的处理问题。

有10个学生参加数学考试,考试成绩由键盘输入,计算平均成绩。

#include

voidmain(void)

{

inti;

floatmath,ave;

ave=0.0;/*平均成绩初值为0*/

for(i=0;i<10;i++)/*循环10次*/

{

scanf("%f",&math);/*输入成绩*/

ave=ave+math;/*累加成绩*/

}

ave=ave/10;/*求平均*/

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

}

•例1有一个一维数组,有10个整数存放其中,找出其中最大的一个数。

main()

{

inti,max,x[10];

printf("enterdata:

\n");

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

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

max=x[0];

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

if(x[i]>max)max=x[i];

printf("max=%d\n",max);

}

例7求一个3*4矩阵中的最大值及其所在的行、列。

参考程序如下:

main()

{inta[3][4],row=0,col=0,i,j,max;

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

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

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

max=a[0][0];

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

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

if(a[i][j]>max){max=a[i][j];row=i;col=j;}

}

编写函数fun,它的功能是:

根据以下公式求p的值,结果作为函数值返回。

m与n为两个正数且要求m>n.

p=m!

/(n!

(m-n)!

例如,m=12,n=8时,运行结果为495.000000

#include

floatfun(intm,intn)

{

}

voidmain()

{printf(“p=%f\n”,fun(12,8));

}

floatfun(intm,intn)

{intI;

doublep=1.0;

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

p=p*i;/*求m!

*/

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

p=p/i;/*求m!

/n!

*/

for(i=1;i

p=p/i;/*求m!

/(n!

(m-n)!

)*/

returnp;

}

1、请编写函数fun,其功能是:

将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

例如,当s所指数组中的内容为“ABCDEFGHIJK”,则在t所指数组中的内容应是“BDFHJ”

#include

#include

#include

#include

voidfun(char*s,chart[])

{

}

voidmain()

{

chars[100],t[100];

system(“CLS”);

printf("\nPleaseenteranstringS:

\n");

scanf(“%s”,s);

fun(s,t);

printf("\nTheresultis:

%s\n",t);

}

voidfun(char*s,chart[])

{inti,j=0,k=strlen(s);

for(i=1;i

t[j++]=s[i];

t[j]=‘\0’;}

假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

将字符串尾部的*号全部删除,前面和中间的*号不删除。

例如,若字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容则应当是“****A*BC*DEF*G”。

•#include

•#include

•voidfun(char*a)

•{

•}

•voidmain()

•{chars[81];

•printf(“Enterastring:

\n”);

•gets(s);

•fun(s);

•printf(“Thestringafterdeleted:

\n”);

•puts(s);

•}

•例如,若字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容则应当是“****A*BC*DEF*G”。

voidfun(char*a)

{while(*a!

=‘\0’)

a++;

a--;

while(*a==‘*’)

a--;

*(a+1)=‘\0’;

}

例如,若字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容则应当是“ABCDEFG”。

•voidfun(char*a)

•{inti,j=0;

•for(i=0;a[i]!

=‘\0’;i++)

•If(a[i]!

=‘*’)

•a[j++]=a[i];

•a[j]=‘\0’;}

•请编写函数fun,其功能是:

计算并输出3到n之间所有素数的平方根之和。

•例如,若主函数给n输入100,则输出为sum=148.874270.

•#include

•#include

•doublefun(intn)

•{

•}

•main()

•{intn;

•doublesum;

•printf(“\n\ninputn :

” ) ;

•scanf(“%d”,&n ) ;

•sum=fun(n);

•printf(“\n\nsum=%f\n\n”,sum);

•}

doublefun(intn)

{intm,k,I;

doubles=0;

for(m=3;m<=n;m++)

{k=sqrt(m);

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

If(m%i==0)break;

If(i>=k+1)

s+=sqrt(m);}

returns;

}

求因子之和

#include“stdio.h”

intfun(intn)

{ints=0,i;

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

if(n%i==0)

s+=i;

returns;}

main()

{intn,sum;

scanf(“%d”,&n);

sum=fun(n);

printf(“%d”,sum);}

改错:

在下列给定的程序中,函数fun的功能是:

先输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。

#include

voidfun()

{inta[3][3],sum;

inti,j;

/************found************/

sum=1;

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

{

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

/*************found**************/

scanf(“%d”,a[i][j]);

}

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

sum=sum+a[i][j];

printf(“sum=%d\n”,sum);

}

voidmain()

{

fun();

}

3.下面程序的功能是根据以下的公式计算π/2的值。

从键盘输入要求满足的精度值eps。

#include

main()

{doubles=0.0,t=1.0;

intn;

floateps;

scanf(“%f”,&eps);

for(n

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

当前位置:首页 > PPT模板 > 动态背景

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

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