版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言教材习题及答案 25 / 25p第一章1.什么是程序?什么是程序设计语言?2.C语言有什么特点?3.什么是算法?算法的描述有哪些基本方法?第一章主要关注两个概念:一是程序的三种结构(顺序、分支或叫选择、循环);二是函数,主函数main()第二章1.指出下列哪些是C语言合法的用户识别符。void a3_b3 For 2a define _123 _abc DO2.指出下列哪些是C语言合法的常量。34 0x1g 33 a E20 18 0xa 1.E-5 3.F 0 .12 a34 双引号内表示字符串,但要在一个串内含有单引号、双引号要用转义字符正确的是:340x是十六进制的表示形式之一,但
2、十六进制里没有g这个数值0xa 带一个单引号、0开头,无意义.这里要注意ddd,1-3位八进制数,xhh,1-2位十进制数,他们都表示对应的ASCII值E20,E表示指数形式,但两边必须都有数字。将此题全部弄懂,所有关于常量的分基本跑不掉了。3.指出下列定义变量语句中的错误。int a;b=5; /同类型的两个变量,中间不能用分号。doubel h; /doubleint x,float y; /中间要用分号float f(x); /非法符号定义变量要注意,数据类型的关键字,还有就是变量名称必须是合法标识符。4.写出能表示数学式子1(2a12a)的C语言表达式。1.0/(2*a+1/(2*a)
3、5.#includeint main() double x=1,y; y=x+3/2; printf(y=%fn,y); return 0;结果是:2.000000,注意3/2=1(2)#includeint main() float x=2.9,y=3.2,z; int a=8; z=x+a%3*(int)(x+y)/2; printf(z=%fn,z); return 0;结果是:8.900000,注意(int)(x+y)=6。(3)#includeint main()int a=65,b=-20;char ch=A;float x=12.345678f;printf(abcn101tx4
4、1101n);printf(a=%d,%c,%o,%xn,a,a,a,a);printf(b=%d,%o,%x,%un,b,b,b,b);printf(ch=%d,%cn,ch,ch);printf(x=%f,%.2f,%10.2f,%-10.fn,x,x,x,x);return 0;此题包含的内容较多,都是细节,希望对照教材仔细分析结果。6程序设计。(1)输出如下的图形。 * * * * *此题答案参考实验指导书。这题在这章出现,主要是练习printf(),(2)已知铁的比重是7.86,计算并输出直径为100毫米的铁球重量#include#define PI 3.1415926void ma
5、in() double w,r=100.0/20,p=7.86; w=p*4.0*PI*r*r*r/3.0; printf(%.2fn,w); 第三章1.写出表示变量x的值在0,100范围内的逻辑表达式。x=0 & xbc的值是多少?04.已知变量x,y的值分别为5,9,逻辑表达式x&y-9)*6-!x的值是多少? 05.已知变量m,n的值都为1,逻辑表达式m-&n+执行后,m,n的值是多少? m=0,n=2,逻辑表达式的值是真。6(1): #include int main( ) int x=2,y; if(x) y=x; else y=3*x-1; printf(y=%dn,y); ret
6、urn 0; 运行结果是:y=2(2) #include int main( )int a=2,b=2,c=3;if (a=b) if(b=c) printf(a=b=cn); else printf(a!=bn);return 0; 运行结果是:a!=b(3)#include int main( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(a=%d,b=%dn ,a,b
7、); return 0; 运行结果是:a=2,b=1(4)#include int main( ) int n=5; while(n2) n-; printf(%dn,n); return 0; 运行结果是:4 3 2(5): #include int main( ) int a,b; for(a=1,b=1;a=20) break; if (b%3=1) b+=3;continue; b-=5; printf(%dn,a); return 0; 运行结果是:8 7.程序设计(1)从键盘输入一个字符。若该字符是小写,输出相应的大写字母;若该字符是大写字母,输出对应的小写字母;若是其他字符,则原
8、样输出。#include int main()char s;scanf(%c,&s);if (s=A&s =a&s=z) s=s-32;printf(%cn , s);return 0;(2)从键盘输入3个整数,输出其中的最大值。#include void main() int a,b,c;int m;printf(Please input a b cn);scanf(%d,%d,%d,&a,&b,&c);m=ab?a:b;m=mc?m:c;printf(Max is %dn,m);本题解法比较多。注意此题的逻辑关系。(3)从键盘输入一个整数,输出分段函数f(x)的值。 1-x2 (x2) f
9、(x)= 1+2x-x2 (2=x=10)#include int main( ) float x,y; scanf(%f,&x); if(x2) y=1-x*x; else if(x10) y=1+2*x-x*x; else y=1-x+x*x; printf(a=%fn ,y); return 0; 此类题,注意数轴方向。从一边为起点。(4)从键盘上输入一个整数,求其中每个数位的数字之和。#includeint main()int sum=0,a;scanf(%d,&a);if(a0);printf(%dn,sum);return 0;此题答案只考虑输入的是正整数,如果输入的是小于0的整数
10、,加个判读,用绝对值函数处理下即可。(5)将100元换成1元,5元,10元的零钱有多少种换法?#includeint main()int x,y,z,i=0;for(x=0;x=10;x+)for(y=0;y=20;y+)for(z=0;z=100;z+)if(x*10+5*y+z=100)printf(%5d,%5d,%5dn,x,y,z);i+;printf(There are %d ways.n,i);return 0;(6)计算方程X2+Y2=1989的所有整数解。#include#includevoid main()int v,i,j;v=(int)sqrt(1989); for (
11、i=0; i=v; i+) for (j=0;j=v;j+) if(i*i+j*j=1989) printf(%5d,%5dn,i*i,j*j); (7)输出所有的3位水仙花数。3位水仙花数是指一个整数的每个数位上的数字的3次方之和等于它本身,例如:13+53+33=153.#includevoid main()int a,b,c,d;for(a=100;a=999;a+)b=a/100;c=a%10;d=(a/10)%10;if(b*b*b+c*c*c+d*d*d=a) printf(%5dn,a);(8)在印度有一个古老的传说:舍罕王打算奖赏国际象棋的发明人宰相西萨 班 达依尔。国王问他想
12、要什么,他对国王说:“陛下,请你在这张棋盘的第1个小格里,赏给我一粒麦子,在第二个格子里给2粒,第三格给4粒,以后每一小格都比前一小格加一一倍。陛下啊,把这样摆满棋盘上所有64个小方格的麦粒,都赏赐给你的仆人吧!”。请帮国王计算一下,放完整个棋盘要多少颗小麦。#includevoid main() int i;double n,s;i=1; n=1.0; s=1.0; for(i=2;i=4)的偶数都可以用2个素数之和表示,将4100所有偶数分别用两个素数之和的形式输出。(例如:4=2+2,100=3+97)#include#includeint ss(int n) /*检查n是否为素数,如果
13、是则返回1,否则返回0*/ int i; for (i=2; i=(int)sqrt(n); i+) if (n%i=0) return 0; return 1;int main(void) int i,j,k=0; /*k用来控制打印换行*/for (i=4;i=100; i+=2) for(j=2; ji; j+) if (ss(j)&ss(i-j) printf(%d=%d+%d ,i,j,i-j); k+; if (k%5=0) putchar(n); break; return 0;注意判断素数的3种方法。n-1,n/2,(int)sqrt(n)(10)一球从100米高度自由落下,每
14、次漏地后反跳回原高度的一半,求在第10次落地时,共经过多少米?第10次反弹多高?#includeint main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ printf(the total of road is %fn,sn); printf(the tenth is %f metern,hn); return 0;第4章1.程序填空。(1)请在横线上填空,使程序输出数组s中最大元素的下标。#includeint main()int k,
15、p,s=1,-9,7,2,-10,3;for(p=0,k=0;psk) k=p;printf(%dn,k);return 0; 注意:红色部分为原题填空部分,下同。(2)请在横线上填空,使程序输出以下形式的图标。1 2 3 46 7 811 1216#include int main( ) int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;i4;i+) for(j=i;j4;j+) printf(%-5d,numij);printf(n);return 0;2.阅读下列程序,写出程序运行结果。(1)#include in
16、t main( )int i,k,a10,p3;k=5;for(i=0;i10;i+) ai=i;for(i=0;i3;i+) pi=ai*(i+1);for(i=0;i3;i+) k+=pi*2;printf(%dn,k);return 0; 运行结果:21(2) #include int main( )int p7=11,13,14,15,16,17,18,i=0,k=0;while(i7&pi%2)k=k+pi; i+;printf(%dn,k);return 0; 运行结果:24(3) #include int main( )int i;int a33=1,2,3,4,5,6,7,8,
17、9; for(i=0;i3;i+)printf(%d ,a2-ii); return 0; 运行结果:7 5 33.程序设计。(1)从键盘输入10个成绩,输出最高分和最低分。(2)在一次评奖中有10个评委对5个参赛选手打分,选手的最终得分为:去掉一个最高分、一个最低分后剩余8个分数的平均值。从键盘输入每个选手的得分,输出每个选手最终得分。(3)从键盘输入5门课程6个同学的成绩,。输出每门课程的最高分。(4)从键盘上输入一个4x5的矩阵,输出矩阵个周边元素的和。例如输入以下矩阵,输出:32。10 2 0 30 4 8 9 17 0 9 7 08 0 4 5 1第五章1、程序填空。(1)请在横线上
18、填空,使fun()函数实现a+b2的功能。int fun(int a,int b) int mul; mul=(a+b)*(a+b); return mul;注意:红色部分就是原来需要填空的地方,下同(2)请在横线上填空,使fun()函数返回参数s所表示的数组中各元素的和,其中参数len表示数组s的长度。double fun(double s ,int n) int i; double y=0; for(i=0;in;i+) y+=si;return y;2、阅读下列程序,写出程序运行结果。 #include #define LEN 10 void reverse(int a ,int n)
19、int i,t; for(i=0;in;i+) t=ai; ai=an-1-i;an-1-i=t;return ; int main( ) int bLEN=1,2,3,4,5,6,7,8,9,10,i,s=0; reverse(b,8); for(i=6;i10;i+) s+=bi; printf(s=%dn,s); return 0; 运行结果:s=34(2) #include int d=1;void fun (int p) int d=5; d+=p+; printf(%d,d); return;int main( ) int a=3; fun(a); d+=a+;printf(%dn
20、,d);return 0; 运行结果:84(3) #include void fun(int x,int y,int z) z=x*x+y*y; return ; int main( ) int a=31; fun(5,2,a); printf(%d,a); return 0; 运行结果:31(4) #include #define MAX(x,y) (x)(y)?(x):(y) int main( ) int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(%dn,t); return 0; 运行结果:73、程序设计。(1)编写函数sum,计算m到n
21、的累加和(m小于n),在主函数中调用sum()函数,计算并输出k=110k+k=2550k+k=530k的值。(2)编写函数item,计算1到n的累加和的倒数,在主函数中调用item()函数,计算并输出11+11+2+11+2+3+11+2+3+n的值。(3)一个正整数如果等于它的因子(包括1,但不包括自身)之和,则称为“完数”(例如6是一个“完数”,6=1+2+3)。编写函数fun,计算n的因子之和(不包括n),在主函数中调用fun()函数,输出1000以内的所有完数。(4)已知数列的递归关系如下,编写函数fun,计算数列的第n项,在主函数中调用fun()函数,输出该数列的前20项。 f(n
22、)=10 (n=1)fn-1+2 (n2)第六章1. 程序填空。(1)请在横线上填空,使程序完成计算数组a中元素的平均值并输出。 float average(int *pa,int n)int i,avg;avg=0;for(i=0;in;i+)avg+=pai;return (float)avg/n; int main( ) int a5=2,4,6,8,10;float mean;mean=average(a,5); printf(mean=%.2fn,mean);注意:红色部分即为原题填空部分,下同。2.请在横线上填空,使函数实现计算指针p所指向的字符串的长度。 int myStrlen
23、(char *p) int len=0;for(;*p!=0;p+) len+;return len;阅读下列程序,写出程序运行结果。(1) #include int main() int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=(*p1)*(*p2); printf(%dn,c); return 0; 运行结果:3(2) #include int main() int a33,*p,i; p=&a00; for(i=0;i9;i+) pi=i+1; printf(%dn,a12); return 0; 运行结果:6(3) #include int m
24、ain() int a =2,4,6,8,10,y=1,i,*p; p=&a1; for(i=0;i3;i+)y+=*(p+1); printf(%dn,y); return 0; 运行结果:19(4)#include#includeint main()char p1=abcd,p2=efgh,str50=ABCDEFG;strcat(str,p1);strcat(str,p2);printf(%cn,str);return 0;运行结果:ABCDEFGabcdefgh(5)#includeint main()char str=1a2b3c;int i;for(i=0;stri!=0;i+)i
25、f(stri9) printf(%c,stri);printf(n);return 0; 运行结果:abc3.程序设计(1) 编写函数Mystrcmp(char*str1,char*str2),该函数的功能是比较字符串str1和str2,如果相同返回0,否则返回两个字符串中第1个不相同的ASCII码值之差作为函数值返回,要求不采用库函数strcmp()实现。(2) 编函数fun(int*a,int n,int*odd,int*even),函数的功能是分别求出形参a所指向的数组中所有奇数、偶数之和,并分别保存在Odd、even所指向的变量中形参n表示形参a所指向的数组的长度。(3) 从键盘输入英
26、文的星期几,输出对应的中文星期几。(4) 从键盘输入一个字符串,然后将字符串按照如下规则重新排列:字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。例如输入字符串“a12bcd45”,则排列后的字符串为”abcd1234”.(5) 从键盘输入一个字符串,按照相反的顺序输出。(6) 从键盘输入一个英文句子,统计其中单词的个数(单词之间使用空格隔开,除子母和空格外不会出现其他符号)。第7章1. 程序填空。(1)请在横线上填空,使程序能从键盘上输入一个日期中的年、月、日,并输出。#include struct date int month;int year;int day;in
27、t main( ) struct date d;printf(请输入年、月、日);scanf(%d%d%d,&d.year,&d.month,&d.day);printf(年:%d月:%d日:%dn,d.year,d.month,d.day);return 0; (2)请在横线上填空,使程序实现从键盘输入5个工人的工资信息,输出平均工资的功能。#include struct workchar name10;int wage;int main( )struct work ws5;int i,sum;for(i=0;i5;i+)scanf(%s%d,,&(wsi.wage);for
28、(i=0,sum=0;i5;i+)sum+=wsi.wage;printf(平均工资=%f,sum/5.0);return 0; (3)在横线上填空,使insert( )函数实现在以head为头结点的链表后面,插入一个结点,并使链表中最后一个结点的next是NULL。此题不作要求.#include #include struct node int data; struct node *next;void insert(struct node *head) struct node *p; p=(struct node *)malloc(sizeof(struct node); printf(“请
29、输入:”);scanf(“%d”,&p-data);while (head-next!=NULL) head=head-next;-head-next=p;p-next=NULL;return;2. 阅读下列程序,写出程序运行结果。(1)#include struct cmplx int x,y;int main( )struct cmplx cnum2=1,3,2,7;printf(“%dn”,cnum0.y/cnum0.x*cnum1.x);return 0; 运行结果:6(2) #include struct abc data4=1,2,3,5,6,7,8,9,10,11; int I,
30、j,t=0; for(i=0;i4;i+) for(j=1;j3;j+) t+=datai,aj; printf(“%dn”,t); return0; (3) #include struct country int num; char name10; x5=1,”China”,2,”USA”,3,”France”,4,”England”,5,”Spanish”;int main()struct country *p;p=x+2;printf(“%d,%cn”,p-num,(*p).name2);return 0;(4)#include struct STU char name10; int n
31、um; ; void f1(struct STU c) struct STU b=“LiSiGuo”,2042; c=b; void f2 (struct STU*c) struct STU b=“SunDan”,2044; *c=b; int main() struct STU a=“YangSan”,2041,b=“WangYin”,2043;f1(a); fa(%b); printf(“%d %dn”,a.num,b.num); return 0;(5)#include int main() int x=12,y,z;y=x|0x8;z=y3;x=xx;printf(“%d%d%dn”,
32、x,y,z);return 0;3.程序设计。(1)从键盘输入坐标系中两个点的坐标,计算并输出他们的距离,要求使用结构图表示坐标点的坐标。(2)已知有一张班级成绩单,包括学生的学号、姓名、三门课程的成绩等信息,该班有10个同学。编写程序,使之实现下列功能:输入每个学生的各项信息。输出每个学生的各项信息。统计并输出每个同学的平均成绩(保留2位小数)。(3)已知一个通讯录包含:姓名、地址和电话号码信息,编写程序,从键盘出入10个通讯率的信息。在输入完毕后,从键盘输入姓名,并输出该姓名及对应的电话号码和地址。(4)某城市进行人口普查,需登记如下信息:姓名、性别、出生日期、职业。如果是学生,则要另外填写就读入学校和年级两项内容;如果是在职人员,则要填写工作单位和工作时间两项内容。要求输入数据并在屏幕上显示输出。第8章1. 程序填空(1) 请在横线上填空,使程序完成以下功能:从键
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省常德市2024-2025学年三年级上学期11月期中英语试题
- DB11T 1126-2014 实验动物垫料
- 职业卫生和放射卫生国家随机监督抽查计划
- 海南省琼中黎族苗族自治县2024-2025学年七年级上学期期中地理试题(含答案)
- 职业学院通信技术专业人才培养方案
- 吊椅缆车市场需求与消费特点分析
- 人工日光浴晒黑服务行业相关项目经营管理报告
- 人教版英语八年级下册 Unit 1 Section B (3a-SC)随堂练习
- 人教版八年级下册 Section A 单词短语专练(2课时)
- 基因疗法研究行业市场调研分析报告
- 农村自建房接受赠与协议书范文
- 2023年温州瑞安农商银行招聘考试真题
- GB/T 28617-2024绿色制造通用技术导则铸造
- 2024年工程部门工作计划模版(三篇)
- 2023-2024学年江西省萍乡市八年级(上)期末物理试卷
- 出诊管理制度
- 2024年广东省第一次普通高中学业水平合格性考试历史试卷(解析版)
- 工程项目建设程序及审批部门
- 融媒体综艺节目制作学习通超星期末考试答案章节答案2024年
- 2024年中国融通集团子公司中层管理人员社会招聘高频难、易错点500题模拟试题附带答案详解
- 七年级数学分层教学实施方案
评论
0/150
提交评论