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

253b171540df25e1b84436cbe50dfc72.gifC语言期末复习经典练习题+知识点总结+模拟考题三位一体完胜c语言!!!!{考期必备神器}.doc

C语言期末复习(平时练习答案)特别适用于千千万北航学子考试重点(编程题)排序,选择与冒泡排序各种进制转换第二次大作业前驱、后继字符 1. 【问题描述】 从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。 【输入形式】 从键盘输入一个字符 【输出形式】 按两行输出 第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开; 第二行按照从小到大的顺序输出三个字符对应的ASCII值,并以一个空格隔开。 【输入样例】 b 【输出样例】 a b c 97 98 99 【样例说明】 输入字符b,b的前驱字符是a,后继字符是c,第一行按照从小到大的顺序输出a b c;第二行输出对应的ASCII值97 98 99 【评分标准】 结果完全正确得20分,每个测试点4分。提交程序名为c0103.c。 *从键盘输入一个字符,求出它的前驱和后继字符(按照ASCII码值排序),并按照从小到大的顺序输出这三个字符和对应的ASCII值。*includestdio.hint mainchar c ;printf a number;scanfc, *从键盘输入一个字符*printf c c cn,c-1,c,c1;*第一行按照从小到大的顺序输出这三个字符,并以一个空格隔开*printf d d d, c-1,c,c1;*第二行按照从小到大的顺序输出三个字符对应的ASCII值,并以一个空格隔开。*return 0; 当前编程题第二次大作业-数值变换 2. 【问题描述】 编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出1。 【输入形式】 从键盘输入三位的正整数。 【输出形式】 输出交换后的正整数值。 【输入样例】 356 【输出样例】 653 【样例说明】 从键盘输入的正整数值为356,将该数的个位与百位互换,所得结果为653.如果输入的正整数为300,则输出为3。 【评分标准】 结果完全正确得20分,每个测试点4分。提交程序名为c0102.c。 *编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出1。 *include stdio.hvoid main int a,d,e,f,sum; *定义变量*printf请输入一个三位正整数,n;scanfd, *输入一个数*ifa0 *对输入的值的正负做判断*da/100;ea-d*100/10;fa10;sum100*f10*ed;printfdn,sum; *输出交换后的正整数值。*elseprintf-1n; *如果输入的数不是三位正整数,则输出1* 当前编程题第二次大作业-计算平均值 3. 【问题描述】 从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。 【输入形式】 从键盘输入三个整数,整数之间以空格隔开。 【输出形式】 在屏幕上分两行显示结果 第一行为三个数的和,整数形式输出; 第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。 【输入样例】 3 2 3 【输出样例】 8 2.67 【样例说明】 3、2、3的和为8,所以第一行输出8; 第二行输出3、2、3的平均值2.67(保留两位小数)。 【评分标准】 结果完全正确得20分,每个测试点4分。提交程序名为c0101.c。 *从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值*include stdio.hint main int x,y,z,sum; *定义变量*float average;scanfddd, *从键盘输入三个整数,整数之间以空格隔开*sumxyz; average floatsum/3; *第一行为三个数的和,整数形式输出;*printfdn,sum; printf.2fn,average; * 第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数*return 0; 当前编程题第二次大作业-正整数的打印 4. 【问题描述】给出一个不多于5位的正整数,要求 1.求出它是几位数。 2.分别打印出每一位数字。 3.按照逆序打印出每一位数字。 【输入形式】控制台输入该正整数。 【输出形式】控制台分行输出输出结果。 【样例输入】1234 【样例输出】 4 1234 4321 【样例说明】1234位数为4,分别为1,2,3,4,逆序为4321 【评分标准】该题共有三个输出整数,完全正确得10分,每答错一个扣掉4分,直至得分为0。本题要求上传程序的源文件。所采用语言可以是C.c。主文件名设定为intprint.c *给出一个不多于5位的正整数,要求 1.求出它是几位数。 2.分别打印出每一位数字。 3.按照逆序打印出每一位数字。 *includestdio.hvoid main long int a;int n,b,c,d,e,f;printfn请输入一个整数099999;scanfd,ifa9999 n5; else ifa999 n4; else ifa99 n3; elseifa9 n2; elsen1; printfn这个数的位数dn,n;fa/10000;ea10000/1000;da100001000/100;ca100001000100/10; ba10000100010010; switchn case 5printfdddddn,f,e,d,c,b; printfdddddn,b,c,d,e,f;break; case 4printfddddn,e,d,c,b; printfddddn,b,c,d,e;break;case 3printfdddn,d,c,b; printfdddn,b,c,d;break; case 2printfddn,c,b;printfddn,b,c; case 1printfdn,b; printfdn,b; 当前编程题第二次大作业-简易计算器 5. 【问题描述】 编程实现简易的计算器读入两个整数运算数data1和data2及一个运算符op,计算表达式data1 op data2的值, 其中op可以是,-,*,/。 【输入形式】 控制台输入运算数和运算符 1.首先输入以空格分隔的两个整数,分别是data1和data2; 2.输入一个字符作为运算符op,op可以是,-,*,/。 输入时,data1、data2、op之间各留有一个空格。具体格式见样例输入。 【输出形式】 控制台输出运算结果。作除法运算时,若能够整除,则输出为整数,否则输出结果小数点后应保留两位有效数字。 【样例输入】 23 5 * 【样例输出】 115 【样例说明】 输入中先后输入第一个运算数23,第二个运算数5,运算符*,要求对23和5进行乘法运算。计算结果为115。 【评分标准】 该题共20分,每个测试点4分。 本题要求上传程序的源文件。所采用语言可以是C.c.即所上传的文件名为calculator.c *编程实现简易的计算器读入两个整数运算数data1和data2及一个运算符op,计算表达式data1 op data2的值, 其中op可以是,-,*,/。 *include stdio.h int mainint data1,data2,c; 定义变量double d;char op;scanfdd c, 输入运算数和运算符ifop 进行判断cdata1data2;printfd,c;else ifop-cdata1-data2;printfd,c;else ifop*cdata1*data2;printfd,c;else ifop/ddoubledata1/data2;printf.2f,d;return 0;找最大最小整数1.【问题描述】编写一个程序,用户输入若干整数,试找出其中的最大数和最小数。【输入形式】用户在第一行待输入数据个数,在第二行输入数据。【输出形式】程序在下一行输出数据的最大值和最小值【样例输入】 5 89 62 96 74 52 【样例输出】96 52【样例说明】用户第一次输入的为数据个数,在下一行依次输入数据。输出为5个数中的最大值和最小值,输出时候两个数之间用空格分隔。【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为getmaxandmin.c矩形相交2.【问题描述】平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0a,b1000)【输入形式】从标准输入读取两行以空格分隔的整数,格式如下Ax1 Ay1 Ax2 Ay2Bx1 By1 Bx2 By2其中(x1,y1)和(x2,y2)为矩形对角线上端点的坐标。各坐标值均为整数,取值在0至1000之间。 【输出形式】向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。【输入样例】 0 0 2 21 1 3 4 【输出样例】1【评分标准】结果完全正确得20分,每个测试点4分,提交程序文件名为area.c。红色为采用答案include stdio.hinclude stdlib.hstruct point int x; int y;A1,A2,B1,B2;struct rect struct point p1; struct point p2;R1,R2;struct point makepointint x,int y;struct rect makerectstruct point p1,struct point p2;struct rect guifanrectstruct rect R;define maxA,B ABABdefine minA,B ABBAmain int i,num14,num24,area; fori0;i4;i scanfd, fori0;i4;i scanfd, R1 makerectA1 makepointnum10,num11, A2 makepointnum12,num13; R2 makerectB1 makepointnum20,num21, B2 makepointnum22,num23; R1 guifanrectR1; R2 guifanrectR2; 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 absmaxR1.p1.x, R2.p1.x - minR1.p2.x, R2.p2.x * absmaxR1.p1.y, R2.p1.y - minR1.p2.y, R2.p2.y; printfdn,area;struct point makepointint x,int y struct point temp;temp.x x; temp.y y; return temp;struct rect makerectstruct point p1,struct point p2 struct rect temp; temp.p1 p1; temp.p2 p2; return temp;struct rect guifanrectstruct rect r struct rect temp; 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; return temp;3.【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。【输出形式】程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。【样例输入】 I am a boy a 【样例输出】 I m boy 【样例说明】用户首先输入字符串I am a boy,然后输出子串a,程序会寻找字符串中的子串删除它,最后 将删除后的结果输出Imboy 表示空格。【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为delsubstring.c。include string.hinclude stdio.h char source_str1024;char del_str1024;char dest_str1024; int main void char *pdest; int result; fgetssource_str, 1024, stdin; fgetsdel_str, 1024, stdin; source_strstrlensource_str-1 0; del_strstrlendel_str-1 0; pdest strstrsource_str, del_str; result 0; whilepdest NULL strncatdest_str, result intpdest - pdest strstr ifresult strlensource_str strncatdest_str, printfsn, dest_str; return 0; 4.【问题描述】编写一个函数char * str_binchar* str1, char* str2, str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。【输入形式】分行从键盘输入两个有序字符串(不超过100个字符)【输出形式】输出合并后的有序字符串【输入样例】acegbdfh【输出样例】abcdefgh【样例说明】输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh【评分标准】结果完全正确得20分,每个测试点4分,提交程序文件名为combine.c。includestdio.hchar * str_binchar* str1, char* str2 static char str100; int i 0; while *str1 *str2 if *str1 *str2 stri *str1; else stri *str2; if *str1 while stri *str1; else while stri *str2; return str; int main char a100; char b100; scanfsns, printf sn,str_bina,b; return 0;作业四 填空题 题目 1. 已知 int a2, b7;计算下列表达式的值 5a4,b1,abab; 选择题 题目 1. 已知char aa;float b2.3;double c41;int d;则执行语句dabc;后变量d的数据类型为 A A int B char C float D double 2. 字符串“ta017bc”的长度不包括结束符是 C A 9B 5C 6D 7 3. 设整型变量x和y的值均为7,则表达式“x/y-4”的值是CA. 3B. 3C. 2D. 1 4. 题目内容有输入语句int a,b,c; scanfad,bd,cd, 为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应当是注表示空格DA 132回车B 1,3,2回车C a1b3c2回车D a1,b3,c2回车 编程题 作业四-反弹 1. 【问题描述】已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。【输入形式】从键盘输入整数n和m,以空格隔开。【输出形式】输出两行第一行输出总路程,保留小数点后两位;第二行输出第m次落地后反弹的高度,保留小数点后两位。【输入样例】40 3【输出样例】65.000.63【评分标准】结果完全正确得20分,每个测试点4分,提交程序文件high.c。 -日期天数转换 2. 【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。【输入形式】用户在第一行输入一个日期(年 月 日,中间以空格分割) 【输出形式】程序在下一行输出一个整数【样例输入】2006 2 21【样例输出】52【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第几天并输出该天数。另外还需要判断这一年是否为闰年。【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为datetoday.cincludestdio.hstruct tian int year;int month; int dayint daysint year,int month,int day int s0,i,a130,31,28,31,30,31,30,31,31,30,31,30,31;ifyear40year1000year4000 a229;fori1;imonth;i sai; ssday; return s;void main int k0;struct tian a; scanfddd,kdaysa.year,a.month,a.day; printfdn,k; 第五次走也填空题 题目 1. 已知int k 4,a3,b2,c1;则表达式“ka k cb c a”的值为 1 2. 已知char xA, yB; 执行“xByC”的运算后,变量x,y的值分别为(答案用逗号隔开)B,B3. 已知int a5,b6,w1,x2,y3,z4;执行语句“awxbyz;”后b 的值为6 选择题 题目 1. 执行以下程序段后,变量a,b,c的值分别是 B int x 10, y 9;int a, b, c;a x y x y;b x;c y;A a 9, b 9, c 9B a 8, b 8, c 10C a 9, b 10, c 9D a 11, b 11, c 10 编程题 作业五-删数问题 1. 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S最小。【输入形式】输入有两行1.第一行是大整数S。其中S最长可达240位。 2.第二行是整数N。S、N均以非0数字开头。【输出形式】输出有一行,是在S中删除N位后所得的最小数字S。【样例输入1】1785434【样例输出1】13【样例输入2】10021【样例输出2】002【样例说明】样例1中输入整数S178543,N4,要求在178543中删除4位,使剩下的数字最小。正确答案为S 13。样例2中输入整数S1002,N1,删完一位后S 002,而不是2,即2之前的0也必须输出。【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。【算法提示】将整数看作字符串形式读入;删数时,从前往后寻找第一个比后一个数字大的数字,然后删除之,按照这种方法删除N个数字即得最小数字。【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。上传C语言文件名为delete.c。 include stdio.hinclude string.h/* scan from 0 - 9, test the , rescan if get the result. */int main char integer250, result250; int start 0, strlength, n, i 0, j, temp, k 0; fgetsinteger, 249, stdin; strlength strleninteger - 1; integerstrlength 0; scanfd, for i 0; i 9; i temp i; for j start; j n n strlength; j if integerj temp 0 resultk temp 0; n; start j 1; i -1; break; for i 0; i k; i printfc, resulti; return 0; 作业五-求公式近似值 2. 【问题描述】已知ex的近似值可由下面公式计算得出ex1 x/1 x2/2 x3/3 xn/n给定x和n,利用上述公式求得ex的近似值。【输入形式】从控制台输入小数x,和整数n(n1),用空格隔开。【输出形式】向控制台输出求得的ex 的近似值(小数点后保留6位有效数据)。【样例输入】7 27【样例输出】1096.633156【样例说明】输入的x为7,n的值为27,即求e7的近似值,利用上述公式求得的近似值为1096.633156。【评分标准】该题要求输出ex的近似值,共有5个测试点。上传C语言文件名为ula.c。includestdio.hint maindouble x,s,y;int n,i;double t;scanflfd,t1;s1;y1;fori1;in;it*i;y*x;sy/t;printflfn,s;return 0;作业六选择题 题目 1. 若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为CA. scanfdf,a,b;B. scanfdf,C. scanfdlf,D. scanfdlf,a,b; 2. 在C语言程序中,以下正确的描述是 A 函数的定义可以嵌套,但函数的调用不可以嵌套BB 函数的定义不可以嵌套,但函数的调用可以嵌套C 函数的定义和函数的调用均不可以嵌套D 函数的定义和函数的调用均可以嵌套 3. 以下正确的函数声明形式是 A A double funint x, int yB double funint x; int yC double funint x, int y;D double funint x, y;实验六-字符串中字符排序 1. 【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。【输入形式】用户在第一行输入一个字符串。【输出形式】程序按照字符ASCII顺序从小到大排序字符串,并删除重复的字符进行输出。【样例输入】badacgegfacb【样例输出】abcdefg【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到大ASCII顺序排序,并删除重复的字符,最后输出为abcdefg【评分标准】结果完全正确得20分,每个测试点4分。提交源程序名为stringsort.c include stdio.hint mainchar str5000,hash2560;int i;scanfs,str;fori0;stri0;i hashstri1;fori0;i256;i ifhashi1 printfc,i;printfn;scanfd;作业七选择题 题目 1. 若有说明 char *language FORTRAN, BASIC, PASCAL, JAVA, C;则以下不正确的叙述是 D A language2 表示字符串PASCAL的首地址B *language2的值是字母PC language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针D language包含5个相同长度的数组 2. 设有说明 int * ptr M; 其中ptr是 C A M个指向整型变量的指针B 指向M个整型变量的函数指针C 一个指向具有M个整型元素的一维数组的指针D 具有M个指针元素的一维指针数组,每个元素都只能指向整型量 3. 下面能正确进行字符串赋值,并且能确保字符串以0结尾的操作是 C A char s5 ABCDE;B char s5 A, B, C, D, E;C char *s; s ABCDE;D char *s; scanfs, s; 4. 若有说明 char *language FORTRAN, BASIC, PASCAL, JAVA, C;则表达式 *language1 *language3 比较的是 C A 字符F和字符PB 字符串BASIC和字符串JAVAC 字符B和字符JD 字符串FORTRAN和字符串PASCAL 5. 若有以下定义,则数值不为3的表达式是 int x10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *p1;CA x3B p1 x 3, *p1C p1 x 2, *p1D p1 x 2, *p1 6. 以下正确的说明语句是A A int *b 1, 3, 5, 7, 9;B int a5, *num5 C int a 1, 3, 5, 7, 9; int *num5 a0, a1, a2, a3, a4;D int a34, *num4; num1 当前编程题实验七-整数的N进制字符串表示 1. 【问题描述】编写函数itob

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值