C语言重零开始习题集.docx

上传人:b****2 文档编号:11517020 上传时间:2023-06-01 格式:DOCX 页数:104 大小:131.88KB
下载 相关 举报
C语言重零开始习题集.docx_第1页
第1页 / 共104页
C语言重零开始习题集.docx_第2页
第2页 / 共104页
C语言重零开始习题集.docx_第3页
第3页 / 共104页
C语言重零开始习题集.docx_第4页
第4页 / 共104页
C语言重零开始习题集.docx_第5页
第5页 / 共104页
C语言重零开始习题集.docx_第6页
第6页 / 共104页
C语言重零开始习题集.docx_第7页
第7页 / 共104页
C语言重零开始习题集.docx_第8页
第8页 / 共104页
C语言重零开始习题集.docx_第9页
第9页 / 共104页
C语言重零开始习题集.docx_第10页
第10页 / 共104页
C语言重零开始习题集.docx_第11页
第11页 / 共104页
C语言重零开始习题集.docx_第12页
第12页 / 共104页
C语言重零开始习题集.docx_第13页
第13页 / 共104页
C语言重零开始习题集.docx_第14页
第14页 / 共104页
C语言重零开始习题集.docx_第15页
第15页 / 共104页
C语言重零开始习题集.docx_第16页
第16页 / 共104页
C语言重零开始习题集.docx_第17页
第17页 / 共104页
C语言重零开始习题集.docx_第18页
第18页 / 共104页
C语言重零开始习题集.docx_第19页
第19页 / 共104页
C语言重零开始习题集.docx_第20页
第20页 / 共104页
亲,该文档总共104页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言重零开始习题集.docx

《C语言重零开始习题集.docx》由会员分享,可在线阅读,更多相关《C语言重零开始习题集.docx(104页珍藏版)》请在冰点文库上搜索。

C语言重零开始习题集.docx

C语言重零开始习题集

习题一

一、概念题

1.C语言的特点是什么?

C语言由于它的下述特点,被广泛地应用于各个领域的程序设计中,具有很强的通用性。

(1)语言简洁:

C语言只有32个关键字,提供了很多语法供程序员尽量简化程序。

(2)运算符丰富:

共提供了34种运算符。

运算符多,运算对象的种类也多。

(3)数据类型丰富:

提供了整型、实型、字符型、枚举型、数组、结构体、共用体、指针、空等9种以上的数据类型。

(4)语法限制不太严格。

(5)允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

(6)生成目标代码质量高,程序执行效率高:

C的目标代码的效率仅比汇编语言低15%。

(7)可移植性好,基本不做修改就能用于各种计算机和各种操作系统。

2.请描述C语言的基本结构。

C语言的结构特点,归纳起来有下面几点。

(1)C程序是由一个或多个函数构成的,有且仅有一个主函数(main函数)。

(2)无论程序中有多少函数,程序的执行总是从main函数开始的,即main函数是整个程序的入口。

(3)函数由函数的首部和函数体两部分组成。

首部包含函数类型、函数名、函数形式参数名、形式参数定义;函数体部分包括说明部分和语句部分,是由最外层的大括弧括起的部分。

(4)C语言书写格式自由,一行内可以写几条语句,一条语句也可以分写在多行。

(5)C语言中使用大括号“{”“}”来表示程序的结构参次范围,左大括号和右大括号应该配对使用。

(6)每条语句和说明的后面必须有一个分号。

(7)可以用/*…*/对程序的任何地方做注释。

3.编写和运行程序的主要步骤有哪些?

编写和运行程序主要有以下步骤:

(1)分析讨论问题并定义数据;

(2)进行算法的设计。

算法的设计过程就是对数据处理步骤的描述过程;

(3)写出可供计算机运行的程序,并交给计算机编译运行;

4.请描述用VC编写和运行程序的主要步骤和具体操作。

获得C程序的运行结果需要经过下面几个步骤:

(1)新建VC工程;

(2)编辑源文件;

(3)编译源文件;

(4)连接、执行程序;

(5)查看结果。

二、编程题

1.模仿例题编写一个简单程序能够输出下面的图形:

*

***

*******

解:

#include

main()

{printf("*\n");

printf("***\n");

printf("********\n");

}

2.模仿例题编写简单程序,计算a+b+c的值,并输出。

解:

main()

{inta,b,c;

a=10;

b=20;

c=30;

printf(“a+b+c=%d”,a+b+c);

}

习题二

1.请在下列标识符中,挑选出可用作C语言用户标识符。

voiddefine3_b3_123IFFor-abcCase

beginwhile2aDoSizeof

答:

define_123IFForCasebeginDoSizeof

2.C语言中的整型数据(int)和数学上的整数完全一样吗,有什么区别,请举例说明。

答:

两者不完全相同。

C语言中整型数据(int)所能表示的范围受存储空间的限制,而数学上的整数无限制。

3.写出定义两个整型变量x、y,并分别赋初始值为10、1000的语句。

答:

intx=10;

longy=1000;

4.将下列程序中的整型常量10用符号常量的形式表示。

#include

intmain()

{

intdata[10];

inti;

floataverage=0;

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

{

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

average=average+data[i];

}

average=average/10;

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

printf("%d",data[i]);

printf("\naverage=%f",average);

}

答:

#include

#defineSIZE10

intmain()

{

intdata[SIZE];

inti;

floataverage=0;

for(i=0;i

{

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

average=average+data[i];

}

average=average/SIZE;

for(i=0;i

printf("%d",data[i]);

printf("\naverage=%f",average);

}

5.运行下面两段程序,观察运行结果有什么不同,找出原因。

(1)#include

intmain()

{

intx,y,temp;

x=10,y=1000;

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

temp=x;

x=y;

y=temp;

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

}

(2)#include

intmain()

{

intx,y;

x=10,y=1000;

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

x=y;

y=x;

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

}

答:

(1)结果:

x=10,y=1000

x=1000,y=10

(2)结果:

x=10,y=1000

x=1000,y=1000

原因:

(2)没有提供暂存变量。

交换时避免变量原值被覆盖。

6.将下列数学式子写成C语言表达式。

答:

(1)1/2(x/y+(1.5+x)/(4*a))

(2)1-2*x*x-4*y*y*y

7.假设用变量x、y、z分别表示三条边长,写出判断能否构成三角形的表达式。

答:

a+b>c&&a+c>b&&b+c>a

8.假设用变量x、y、z分别表示三角形的三条边,写出判断三角形是否为等边三角形的表达式。

答:

x==y&&y==z

9.假设x,y为两个整型变量,并已赋值,如何判断x能否被y整除。

答:

(x%y)==0

10.运行下面两段程序,输入相同的数据,观察运行结果有什么不同,找出原因。

并使用强制类型转换运算实现第二段程序的功能。

(1)#include

intmain()

{

floatn;

floats;

scanf("%f",&n);

s=1/n;

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

}

(2)#include

intmain()

{

intn;

floats;

scanf("%d",&n);

s=1/n;

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

}

答:

(1)0.333333

(2)0

第二种情况为0,是因为操作数的类型为整型,导致除法的操作结果被取整为0。

第二种情况修改如下:

#include

intmain()

{

intn;

floats;

scanf("%d",&n);

s=(float)1/n;

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

}

11.编写程序,输入一个3位整数,依次提取出百位、十位、各位上的信息,并输出。

如输入789,则输出7-8-9。

答:

#include

intmain(void)

{

intnum,a,b,c;

scanf("%d",&num);

if(num<100||num>1000)

exit(0);

a=num%10;

b=num%100/10;

c=num/100;

printf("%d-%d-%d",c,b,a);

}

12.编写程序,任意输入一个字符,输出它的ASCII码。

答:

intmain(void)

{

charc;

c=getchar();

printf("%chasASCIIcode%d",c,c);

}

13.编写程序,任意输入一个字符,输出它在ASCII码表中的前一个字符和后一个字符。

为方便编程,假设输入的字符不是ASCII码表中的第一个字符和最后

答:

intmain(void)

{

charc;

c=getchar();

printf("%c%c",c-1,c+1);

}

习题三

一.写出下面各表达式的值。

设x=0,y=2,z=-2,a=3,b=4,c=5。

1.x+y

2.z||b+c&&y+z

3.!

x

4.(x=b)&&(y=0)&&1

5.!

(y+z)+c–10&&y–b/2

解:

1、02、13、14、05、0

二.阅读程序,写出执行结果。

1、请写出当输入x分别为0、1、-1时下面两个程序的执行结果。

(1)main()/*程序1*/

{intx,y;

scanf("%d",&x);

if(x>=0)

if(x>0)y=1;

elsey=0;

elsey=-1;

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

}结果为:

当输入0时:

x=0,y=0;

当输入1时:

x=1,y=1;

当输入-1时:

x=-1,y=-1

(2)

main()/*程序2*/

{intx,y;

scanf("%d",&x);

y=-1;

if(x!

=0)

if(x>0)y=1;

elsey=0;

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

}结果为:

当输入0时:

x=0,y=-1;

当输入1时:

x=1,y=1;

当输入-1时:

x=-1,y=0

2、#include

main()

{inti=0;

while(i<=15)

if(++i%3!

=2)continue;

elseprintf("%d",i);

printf("\n");

}

结果为:

2581114

3、#include

main()

{inti,j,k=0;

for(j=11;j<=30;j++)

{if(k%10==0)

printf("\n");

for(i=2;i

if(!

(j%i))break;

if(i>=j-1)

{printf("%d\t",j);k++;}

}

}

结果为:

111317192329

三.程序填空题。

1.以下程序输入三个数,按大小次序输出,请填空。

main()

{floata,b,c,t;

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

if(a>b)

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

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=c;c=t;}

printf("%5、2f,%5、2f,%5、2f",a,b,c);

}

2.以下程序判断某年是否闰年,请填空。

main()

{intyear,leap;

scanf("%d",&year);

if(year%4==0)

{if(year%100==0)

{if(year%400==0)

leap=1;

elseleap=0;

}

elseleap=1;

}

elseleap=0;

if(leap)printf("%dis",year);

elseprintf("%disnot",year);

printf("aleapyear\n");

}

3.以下程序求ax2+bx+c=0的方程的解,请填空。

1):

a=0,不是2次方程

2):

b2–4ac=0,有两个相等实根

3):

b2–4ac>0,有两个不等实根

4):

b2–4ac<0,有两个共轭复根

#include"math、h"

main()

{floata,b,c,disc,x1,x2,realpart,imagpart;

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

printf("Theequation");

if(a==0)printf("不是一元二次方程");

elsedisc=b*b-4*a*c;

if(disc==0)

printf("hastwoequalroots:

%8.4f\n",-b/(2*a));

elseif(disc>0)

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf("hasdistinctrealroots:

%8.4fand%8.4f\n",x1,x2);

}

else

{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf("hascomplexroots:

\n");

printf("%8.4f+%8.4fi\n",realpart,imagpart);

printf("%8.4f-%8.4fi\n",realpart,imagpart);

}

}

4打印出所有的“水仙花数”;所谓“水仙花数”是指一个3位数,其各位数字立方和为该数本身。

例如:

153是一个“水仙花数”,因为:

153=13+33+53。

main()

{inti,j,k,n;

printf("水仙花数是:

");

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("%d",n);

}

}

5、输入一串字符,以?

号结束,输出其中小写字母个数和数字个数。

#includemain(){charch;intnum1=0,num2=0;ch=getchar();while(ch!

=’?

’)

{if((ch>=’a’)&&(ch<=’z’))num1++;/*字母个数加1*/

elseif((ch>=’1’)&&(ch<=’9’))num2++;/*数字个数加1*/

ch=getchar();/*取下一个字符*/

}

printf("%d,%d",num1,num2);

}

6、用下面公式求π的近似值,直到最后一项的绝对值小于10-7为止。

在程序空白处填上合适的内容。

#defineeps1e-7

#include

#include

main()

{ints=1;floatn,t,pi;

for(n=t=1,pi=0;fabs(t)>=eps;n=n+2,s=s*(-1),t=s/n)pi=pi+t;

pi=4*pi;

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

}

7、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?

第10次反弹多高?

在程序空白处填上合适的内容。

main()

{floatsn=100.0,hn=sn/2;

intn;

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

{sn=sn+2*hn;

hn=hn/2;

}

printf("第10次落地时共经过%f米\n",sn);

printf("第10次反弹%f米\n",hn);

}

四.编程题

1.输入四个数,按代数值由小到大次序输出这四个数。

main()

{intt,a,b,c,d;

printf("请输入四个数:

");

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

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

if(a>b)

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

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

if(b>c)

{t=b;b=c;c=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)

{t=c;c=d;d=t;}

printf("\n排序结果如下:

\n");

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

}

2、写一程序判断所输入整数的奇偶性

main()

{inti;

printf("\n请输入一个整数:

\n");

scanf("%d\n",&i)

if(i/2==0)

printf("%d是一个偶数!

\n",i);

else

printf("%d是一个奇数!

\n",i);

}

3.编程计算下面函数值,要求分别用if和switch语句实现。

 

main()/*用ifelseifelse语句实现*/

{intx,y;

printf("请输入x");

scanf("%d",&x);

if(x<1)

{y=x/2;

printf("x=%d,y=x/2=%d\n",x,y);

}

elseif(x<10)

{y=2*x-1;

printf("x=%d,y=2*x-1=%d\n",x,y);

}

else

{y=-x+11;

printf("x=%d,y=-x+11=%d\n",x,y);

}

}

main()/*用switch语句实现*/

{intx,y,t;

printf("请输入x");

scanf("%d",&x);

if(x<1)t=0;

elseif(x<10)t=1;

elset=2;

switch(t)

{case0:

y=x/2;break;

case:

1y=2*x-1;break;

case2y=-x+11;break;

}

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

}

4、有四个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。

这四个塔的高度为20米,塔以外无建筑物、高度为0。

现输入任一点的坐标,求该点的建筑高度。

main()

{inth=10;

floatx,y,x0=2,y0=2,d1,d2,d3,d4;

printf("请输入一个点(x,y):

");

scanf(“%f,%f”,&x,&y);

d1=(x-x0)*(x-x0)+(y-y0)*(y-y0);

d2=(x-x0)*(x-x0)+(y+y0)*(y+y0);

d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);

d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);

if(d1>1&&d2>1&&d3>1&&d4>1)

h=0;

printf("该点的高度为%d",h);

}

5*、输入年、月,输出该月天数。

#include"stdio.h"

main()

{intyear,month,day;

printf("请输入年,月:

");

scanf("%d,%d",&year,&month);

switch(month)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

day=31;break;

case4:

case6:

case9:

case11:

day=30;break;

default:

printf("therearenotthemonth");

}

if(month==2)

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

=0)||(year%400==0))

day=28;

elseday=29;

printf("%d年,%d月有%d天",year,month,day);

}

6、输入一位学生的生日并输入当前日期,计算该生的实足年龄。

#include"stdio.h"

main()

{unsignedintbirthday,data;

intyear;

printf("请输入学生的生日(到月):

\n");

scanf("%ud",&birthday);

printf("请输入当前的日期(到月)\n");

scanf("%ud",&data);

year=data-birthday;

year/=100;

printf("这个学生的年龄是:

%d",year);

}

7、编程求fibonacci数列:

1,1,2,3,5,8……的前40个数。

fibonacci数列定义如下:

F1=1(n=1)

F2=1(n=2)

Fn=Fn-1+Fn-2(n>=3)

#include"stdio.h"

main()

{longintf1,f2;

inti;

f1=1;

f2=1;

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

{printf("%12ld%12ld",f1,f2);

if(i%2=

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2