新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx

上传人:b****5 文档编号:4431045 上传时间:2022-12-01 格式:DOCX 页数:64 大小:146.62KB
下载 相关 举报
新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx_第1页
第1页 / 共64页
新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx_第2页
第2页 / 共64页
新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx_第3页
第3页 / 共64页
新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx_第4页
第4页 / 共64页
新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx

《新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx》由会员分享,可在线阅读,更多相关《新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx(64页珍藏版)》请在冰豆网上搜索。

新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器.docx

新C语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言考期必备神器

C语言期末复习(平时练习答案)

[特别适用于千千万北航学子]

考试重点:

(编程题)排序,选择与冒泡排序,,各种进制转换。

]

 

第二次大作业—

前驱、后继字符

1.【问题描述】从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。

【输入形式】从键盘输入一个字符【输出形式】按两行输出:

第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开;第二行按照从小到大的顺序输出三个字符对应的ASCII值,并以一个空格隔开。

【输入样例】b【输出样例】abc979899【样例说明】输入字符b,b的前驱字符是a,后继字符是c,第一行按照从小到大的顺序输出abc;第二行输出对应的ASCII值979899【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

c0103.c。

//*从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。

*//

#include

intmain()

{

charc="";

printf("Inputanumber:

");

scanf("%c",&c);//*从键盘输入一个字符*//

printf("%c%c%c\n",c-1,c,c+1);//*第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开*//

printf("%d%d%d",c-1,c,c+1);//*第二行按照从小到大的顺序输出三个字符对应的ASCII值,并以一个空格隔开。

*//

return0;

}

当前编程题:

第二次大作业---数值变换2.【问题描述】编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。

【输入形式】从键盘输入三位的正整数。

【输出形式】输出交换后的正整数值。

【输入样例】356【输出样例】653【样例说明】从键盘输入的正整数值为356,将该数的个位与百位互换,所得结果为653.如果输入的正整数为300,则输出为3。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

c0102.c。

//*编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。

*//

#include

voidmain()

{

inta,d,e,f,sum;//*定义变量*//

printf("请输入一个三位正整数,\n");

scanf("%d",&a);//*输入一个数*//

if(a>0)//*对输入的值的正负做判断*//

{

d=a/100;

e=(a-d*100)/10;

f=a%10;

sum=100*f+10*e+d;

printf("%d\n",sum);//*输出交换后的正整数值。

*//

}

else

printf("-1\n");//*如果输入的数不是三位正整数,则输出-1*//

}

当前编程题:

第二次大作业---计算平均值3.【问题描述】从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。

【输入形式】从键盘输入三个整数,整数之间以空格隔开。

【输出形式】在屏幕上分两行显示结果:

第一行为三个数的和,整数形式输出;第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。

【输入样例】323【输出样例】82.67【样例说明】3、2、3的和为8,所以第一行输出8;第二行输出3、2、3的平均值2.67(保留两位小数)。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

c0101.c。

//*从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值*//

#include

intmain()

{

intx,y,z,sum;//*定义变量*//

floataverage;

scanf("%d%d%d",&x,&y,&z);//*从键盘输入三个整数,整数之间以空格隔开*//

sum=x+y+z;

average=(float)sum/3;//*第一行为三个数的和,整数形式输出;*//

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

printf("%.2f\n",average);//*第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数*//

return0;

}

当前编程题:

第二次大作业---正整数的打印4.【问题描述】给出一个不多于5位的正整数,要求:

1.求出它是几位数。

2.分别打印出每一位数字。

3.按照逆序打印出每一位数字。

【输入形式】控制台输入该正整数。

【输出形式】控制台分行输出输出结果。

【样例输入】1234【样例输出】412344321【样例说明】1234位数为4,分别为1,2,3,4,逆序为4321【评分标准】该题共有三个输出整数,完全正确得10分,每答错一个扣掉4分,直至得分为0。

本题要求上传程序的源文件。

所采用语言可以是C(.c)。

主文件名设定为intprint.c

//*给出一个不多于5位的正整数,要求:

1.求出它是几位数。

2.分别打印出每一位数字。

3.按照逆序打印出每一位数字。

*//

#include

voidmain()

{

longinta;

intn,b,c,d,e,f;

printf("\n请输入一个整数(0~99999):

");

scanf("%d",&a);

if(a>9999)

n=5;

else

if(a>999)

n=4;

else

if(a>99)

n=3;

else

if(a>9)

n=2;

else

n=1;

printf("\n这个数的位数=%d\n",n);

f=a/10000;

e=a%10000/1000;

d=a%10000%1000/100;

c=a%10000%1000%100/10;

b=a%10000%1000%100%10;

switch(n)

{

case5:

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

printf("%d%d%d%d%d\n",b,c,d,e,f);break;

case4:

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

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

case3:

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

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

case2:

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

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

case1:

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

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

}

}

当前编程题:

第二次大作业---简易计算器5.【问题描述】编程实现简易的计算器:

读入两个整数运算数(data1和data2)及一个运算符(op),计算表达式data1opdata2的值,其中op可以是+,-,*,/。

【输入形式】控制台输入运算数和运算符:

1.首先输入以空格分隔的两个整数,分别是data1和data2;2.输入一个字符作为运算符op,op可以是’+’,’-’,’*’,’/’。

输入时,data1、data2、op之间各留有一个空格。

具体格式见样例输入。

【输出形式】控制台输出运算结果。

作除法运算时,若能够整除,则输出为整数,否则输出结果小数点后应保留两位有效数字。

【样例输入】235*【样例输出】115【样例说明】输入中先后输入第一个运算数23,第二个运算数5,运算符’*’,要求对23和5进行乘法运算。

计算结果为115。

【评分标准】该题共20分,每个测试点4分。

本题要求上传程序的源文件。

所采用语言可以是C(.c).即所上传的文件名为calculator.c

//*编程实现简易的计算器:

读入两个整数运算数(data1和data2)及一个运算符(op),计算表达式data1opdata2的值,其中op可以是+,-,*,/。

*//

#include

intmain()

{

intdata1,data2,c;//定义变量//

doubled;

charop;

scanf("%d%d%c",&data1,&data2,&op);//输入运算数和运算符//

if(op=='+')//进行判断//

{

c=data1+data2;

printf("%d",c);

}

else

if(op=='-')

{

c=data1-data2;

printf("%d",c);

}

else

if(op=='*')

{

c=data1*data2;

printf("%d",c);

}

else

if(op=='/')

{

d=(double)data1/data2;

printf("%.2f",d);

}

return0;

}

 

找最大最小整数

1.【问题描述】编写一个程序,用户输入若干整数,试找出其中的最大数和最小数。

【输入形式】用户在第一行待输入数据个数,在第二行输入数据。

【输出形式】程序在下一行输出数据的最大值和最小值

【样例输入】

5

8962967452

【样例输出】9652

【样例说明】用户第一次输入的为数据个数,在下一行依次输入数据。

输出为5个数中的最大值和最小值,输出时候两个数之间用空格分隔。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

getmaxandmin.c

 

矩形相交

2.【问题描述】

平面上有两个矩形A和B,其位置是任意的。

编程求出其相交部分(如图中阴影部分)的面积。

(0≤a,b≤1000)

【输入形式】

从标准输入读取两行以空格分隔的整数,格式如下:

Ax1Ay1Ax2Ay2

Bx1By1Bx2By2

其中(x1,y1)和(x2,y2)为矩形对角线上端点的坐标。

各坐标值均为整数,取值在0至1000之间。

【输出形式】

向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。

在输出末尾要有一个回车符。

【输入样例】

0022

1134

【输出样例】

1

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件名为area.c。

[红色为采用答案

 

 

 

#include

#include

 

structpoint{

intx;

inty;

}A1,A2,B1,B2;

 

structrect{

structpointp1;

structpointp2;

}R1,R2;

 

structpointmakepoint(intx,inty);

structrectmakerect(structpointp1,structpointp2);

structrectguifanrect(structrectR);

 

#definemax(A,B)((A)>(B)?

(A):

(B))

#definemin(A,B)((A)>(B)?

(B):

(A))

 

main()

{

inti,num1[4],num2[4],area;

 

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

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

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

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

 

R1=makerect(A1=makepoint(num1[0],num1[1]),

A2=makepoint(num1[2],num1[3]));

R2=makerect(B1=makepoint(num2[0],num2[1]),

B2=makepoint(num2[2],num2[3]));

 

R1=guifanrect(R1);

R2=guifanrect(R2);

 

if(R1.p2.x<=R2.p1.x||R1.p2.y<=R2.p1.y||

R1.p1.x>=R2.p2.x||R1.p1.y>=R2.p2.y)

area=0;

else

area=abs(max(R1.p1.x,R2.p1.x)-min(R1.p2.x,R2.p2.x))*

abs(max(R1.p1.y,R2.p1.y)-min(R1.p2.y,R2.p2.y));

 

printf("%d\n",area);

}

 

structpointmakepoint(intx,inty)

{

structpointtemp;

temp.x=x;

temp.y=y;

returntemp;

}

structrectmakerect(structpointp1,structpointp2)

{

structrecttemp;

 temp.p1=p1;

temp.p2=p2;

returntemp;

}

 

structrectguifanrect(structrectr)

{

structrecttemp;

temp.p1.x=min(r.p1.x,r.p2.x);

temp.p1.y=min(r.p1.y,r.p2.y);

temp.p2.x=max(r.p1.x,r.p2.x);

temp.p2.y=max(r.p1.y,r.p2.y);

returntemp;

}

 3.【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。

【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。

【输出形式】程序在下一行输出删除其中所有子串后的字符串。

如果字符串不包含子串则输出原字符串本身。

【样例输入】

Iamaboy!

a

【样例输出】

Imboy!

【样例说明】用户首先输入字符串Iamaboy!

然后输出子串a,程序会寻找字符串中的子串删除它,最后将删除后的结果输出:

I#m##boy!

#表示空格。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

delsubstring.c。

#include

#include

charsource_str[1024];

chardel_str[1024];

chardest_str[1024];

intmain(void)

{

char*pdest;

intresult;

fgets(source_str,1024,stdin);

fgets(del_str,1024,stdin);

source_str[strlen(source_str)-1]='\0';

del_str[strlen(del_str)-1]='\0';

pdest=strstr(source_str,del_str);

result=0;

while(pdest!

=NULL){

strncat(dest_str,&source_str[result],(int)(pdest-&source_str[result]));

result+=(int)(pdest-&source_str[result])+strlen(del_str);

pdest=strstr(&source_str[result],del_str);

}

if(result

strncat(dest_str,&source_str[result],strlen(source_str)-result);

}

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

return0;

}

4.【问题描述】

编写一个函数char*str_bin(char*str1,char*str2),str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。

在main函数中测试该函数:

从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。

【输入形式】

分行从键盘输入两个有序字符串(不超过100个字符)

【输出形式】

输出合并后的有序字符串

【输入样例】

aceg

bdfh

【输出样例】

abcdefgh

【样例说明】

输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件名为combine.c。

 #include

char*str_bin(char*str1,char*str2)

{

staticcharstr[100];

inti=0;

while(*str1&&*str2)

{

if(*str1<*str2)

str[i++]=*str1++;

else

str[i++]=*str2++;

}

if(*str1)

while(str[i++]=*str1++);

else

while(str[i++]=*str2++);

returnstr;

}

 

intmain(){

chara[100];

charb[100];

scanf("%s\n%s",&a,&b);

printf("%s\n",str_bin(a,b));

return0;

}

 作业四

填空题

#题目

1.已知:

inta=2,b=7;

计算下列表达式的值:

5

a=4,b=1,a>b?

++a:

++b;

 

选择题

#题目

1.已知:

chara=’a’;floatb=2.3;doublec=41;intd;则执行语句d=a+b+c;后变量d的数据类型为A

(A)int(B)char(C)float(D)double

2.字符串“\ta\017bc”的长度(不包括结束符)是C

(A)9

(B)5

(C)6

(D)7

3.设整型变量x和y的值均为7,则表达式“x/(y-4)”的值是C

A.3

B.-3

C.2

D.1

 

4.题目内容:

有输入语句:

inta,b,c;scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,

从键盘输入数据的正确形式应当是(注:

#表示空格)D

(A)132<回车>

(B)1,3,2<回车>

(C)a=1#b=3#c=2<回车>

(D)a=1,b=3,c=2<回车>

编程题

作业四---反弹

1.【问题描述】

已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。

编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。

【输入形式】

从键盘输入整数n和m,以空格隔开。

【输出形式】

输出两行:

第一行输出总路程,保留小数点后两位;

第二行输出第m次落地后反弹的高度,保留小数点后两位。

【输入样例】

403

【输出样例】

65.00

0.63

【评分标准】

结果完全正确得20分,每个测试点4分,提交程序文件high.c。

---日期天数转换

2.【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。

【输入形式】用户在第一行输入一个日期(年月日,中间以空格分割)

【输出形式】程序在下一行输出一个整数

【样例输入】2006221

【样例输出】52

【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第几天并输出该天数。

另外还需要判断这一年是否为闰年。

【评分标准】结果完全正确得20分,每个测试点4分。

提交程序名为:

datetoday.c

#include

structtian

{

intyear;

intmonth;

intday;};

intdays(intyear,intmonth,intday)

{

ints=0,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

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

=0||year%400==0)a[2]=29;

for(i=1;i

returns;

}

voidmain()

{

intk=0;

structtiana;

scanf("%d%d%d",&a.year,&a.month,&a.day);

k=days(a.year,a.month,a.day);

printf("%d\n",k);

}

第五次走也

填空题

#题目

1.已知:

intk=4,a=3,b=2,c=1;则表达式“k

k:

c

c:

a”的值为1

 

2.已知:

charx=’A’,y=’B’;执行“(x=’B’)||(y=’C’)”的运算后,变量x,y的值分别为(答案用逗号隔开)

'B','B'

3.已知:

inta=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z)

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

当前位置:首页 > 高中教育 > 数学

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

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