




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5., 6./*, */7.顺序结构,选择结构,循环结构8.c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。其基本结构包括顺序结构、选择结构和循环结构三种。2.算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。1-3 编程题1. 试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。#include stdio.hmain() float a, b, h, s;a=10; b=20;h=5; s=(a+b)*h/2; printf(s=%fn , s ); 2. 编写程序显示如图1.11所示信息。图1.11 显示信息#include stdio.hmain() printf(*n);printf(* hello world *n);printf(*n); 习题22-1 单选题15 DBDCA 610 DCABA 1112 CA2-2 思考题12.00000021,0.539,2465100,d6(1)20 (2)0 (3)607. (1)10,6,4 (2)6,9,15 (3)3,60,838. 55习题33-1 选择题1-5BDABC 6-10ADCAC 11-12BB3-2 填空题1.32.02613.0x104. 2, 1 互换a,b的值0,4,c=38.i=10,j=209.(1) 65 (2) 65,A (3) 56.123400,123.456001 (4) 3.141600 (5) 8765.432 (6) 5.864000e+002 (7) 3.141600e+000 (8) 3.1416 (9) 8765 (10) 3.1416,8765.4310.a=2 b=5x=8.8 y=76.34c1=65 c2=973-3 编程题1. 编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式输出。 x y 十进制数 108 八进制数1210 十六进制数a8#include stdio.hmain() int x, y ; scanf(%d%d , &x, &y); printf( x yn); printf(%4d%4dn, x, y ); printf(%4o%4on, x, y ); printf(%4x%4xn, x, y );2. 编写一个程序,输入一个大写英文字符(BY),输出它的前导字符、该字符本身及其后续字符。#include stdio.hmain() char c; scanf(“%c”, &c ); printf(“%c, %c, %cn”, c-1, c, c+1 ); 3. 编写一个程序,输入一个3位正整数,要求反向输出对应的整数,如输入123,则输出321。编写程序并给出相应的程序流程图。#include stdio.hmain() int a, a1, a2, a3; scanf(“%d”, &a ); a1=a%10 ; a=a/10; a2=a%10; a=a/10; a3=a%10; printf(“%d%d%dn”, a1, a2, a3); 4. 编写程序,读入3个double型数据,求它们的平均值,保留此平均值小数点后1位数,对小数点后第2位数进行四舍五入,最后输出结果。#include stdio.hmain() double a, b, c, ave; scanf(“%lf%lf%lf”, &a, &b, &c ); ave=(a+b+c)/3 ; printf(“%8.2fn”, ave); 5. 编写程序,读入3个整数给变量a、b、c,然后交换它们的值,把a原来的值给b,把b原来的值给c,把c原来的值给a。#include stdio.hmain() int a, b, c, t; scanf(“%d%d%d”, &a, &b, &c ); t=a; a=c; c=b ; b=t ; printf(“a=%d, b=%d, c=%dn”, a, b, c ); 习题44-1单选题15 AADAD 610 ACB BB 1112BA4-2填空题1. 12. (1) a0 | b0 (2) x0 & x=10 (3) a=1.5 & b=1.5 & c=1.5 (4)pa | pb | pb?a:b)c?max:c 5-46175,0,38. (1) (a=0) (2) (b=0)(3) (discc & a+cb & b+ca) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“%f”,area); 2输入整数x、y,若x2+y21000,则输出x2+y2百位以上的数字,否则输出两数之和。#include stdio.hmain() int x,y; scanf(“%d,%d”,&x,&y); if (x*x+y*y1000) printf(“%dn”,(x*x+y*y)/100); else printf(“%dn”,x+y);3. 输入一个整数,判断它能否同时被3、5、7整除,并输出“yes”或“no”字样。#include stdio.hmain() int x, scanf(“%d”,&x); if(x%3=0 & x%5=0 & x%7=0) printf(“yesn”); else printf(“non”);4对任意输入的x,用下式计算并输出y的值。#include stdio.h#include “math.h” main() float x,y; scanf(“%f”,&x); if(x-2) y=x*x-sin(x); else if (x=2) y=pow(2,x)+1; else y=sqrt(x*x+x+1); printf(“%fn”,y);5 编写程序输入一个5位整数,判断它是不是回文数。回文数是指一个数从右到左和从左到右的对应数码相同,如12321是回文数,个位与万位相同,十位与千位相同。#include stdio.hmain( )long ge,shi,qian,wan,x;scanf(%ld,&x);wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;if (ge=wan&shi=qian)/*个位等于万位并且十位等于千位*/printf(this number is a huiwenn);elseprintf(this number is not a huiwenn);6. 编写程序用于计算某运输公司的运费。设每公里每吨货物的基本运费为p,货物重量为w,路程为s(单位为km),折扣为d,总费用计算公式为:f=p*w*s*(1-d)运费计算标准见表4.5。表4.5 某运输公司运费计算标准s250不 打 折250=s500折扣2500=s1000折扣51000=s2000折扣82000=s3000折扣15#include stdio.hmain()float p,w,s,d,f; scanf(“%f,%,%f”,p,s,w); if (s3000) d=0.15 else if( s=2000) d=0.1; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0 f=p*w*s*(1-d); printf(“%f”,f);习题55-1单选题15 CDABA 610 ABDDB1114 DBCB5-2填空题1202333 3(1) i10 (2) j%3!=04. (1) flag*(float)k/(k+1) (2) flag=-flag5(1) max=x (2) x!=-1 (3) scanf(%d, &x)5-3 编程题1. 用3种循环语句编写程序实现下列算式:(1)1+22+33+100100(2)e=,当最后一项的值小于10-6时为止。 (1) #include stdio.h main() int i; lont s=0; for(i=1;i1e-6)printf(“%f”,s);2. 编写程序求两个正整数的最大公约数。#include stdio.hmain()int m,n,t,a,b;scanf(“%d,%d”,&m,&n);if (m0;y-)s*=x; printf(”%d,%d,%dn”,s%10,s/10%10,s/100%10);4. 百鸡问题。用100元钱买100只鸡,其中,公鸡每只5元,母鸡每只3元,小鸡每3只1元。编写程序输出各种买法。 #include stdio.hmain() int x,y,z; for( x=1; x20;x+)for( y=1;y=0 & (5*x+3*y+z/3)-1001e-5) printf(”x=%d,y=%d,z=%dn”,x,y,z);5. 编写程序分别打印如下图形:* * * * * * * * * * * * * (a)(b)(a) #include stdio.h main()int j,k ; for( j=1 ;j=4 ;j+)for(k=1;k=4-j;k+)printf( );printf(*) ; printf(n) ; (b) #include stdio.hmain()int j,k ; for( j=1 ;j=4 ;j+)for(k=1;k=4-j;k+)printf( );for(k=1 ;k=2*j-1 ;k+)printf(*) ; printf(n) ; 6. 请编写程序求100999之间所有的水仙花数。水仙花数的含义是指这样的一个3位数,其各位数字的立方和等于该数本身。例如,371=33+73+13,所以371是一个水仙花数。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。#include stdio.hmain()int i,j,k,n;printf(water flowernumber is:);for(n=100;n=a & ch=z) ch=ch-32;putchar(ch); 2. 编写一函数求e=float expp(int n) int k, fac=1; float sum=0; for(k=1; k=n; k+) fac*=k;sum+=1.0/fac ; return(sum); 3. 编写一函数求一个整数的任意次方的最后3位数,即求xy的最后3位数。 int xy3( int x, int y) int k, num=1; for(k=1;kaj3 (1) r+bk (2) *x8-3 编程题1设数组a中的元素都为正整数,编程求其中偶数的个数和偶数的平均值。#include stdio.h#define N 10 main() int aN=1,2,3,4,5,6,7,8,9,0,osum=0, ocount=0, j; for(j=0;j10;j+)if(!( j%2) ocount+; osum+=aj; printf(“ocount =%d, osum =%dn”, ocount, osum);2. 有一个已排好序的数组,输入一个数,要求按原来排序的规律将它插入数组中,插入后数组仍然有序,请编程实现。#include stdio.h#define N 10 main() int aN=10,20,30,40,50,60,70,80,90, j, k, x; scanf(“%d”,&x); for(j=0;jN;j+) if (xj; k-)ak=ak-1; aj=x;for(j=0;jN;j+) printf(“%d”,aj); 3编程求一个矩阵对角元素之和,其中矩阵元素值由数组初始化时给定。#include stdio.h#define M 3main()int aMM=1,2,3,4,5,6,7,8,9,j,sum1=0,sum2=0; for( j=0;jM;j+)sum1+=ajj; sum2+=ajM-(j+1); printf(“%d,%dn”,sum1,sum2);4. 编一个程序检查二维数组是否对称(即对所有的i和j,都有aij=aji)。#include stdio.h#define M 3main()int aMM=1,2,3,2,4,5,3,5,6,j,k,flag=1; for( j=0;jM;j+)for(k=0;kM;k+) if (ajk!=akj) flag=0; break;if (flag) printf(“ok”);else printf(”NO”);5编程比较两个字符串的大小(不用strcmp( )函数)。#include stdio.h#include “string.h”main() char c110,c210,j; gets(c1);gets(c2); for(j=0; (c1j=c2j) & c1j & c2j; j+);printf(“%dn”,c1j-c2j);6. 有一篇文章,共有行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数。#include stdio.h#include ”string.h” #define M 3 #define N 80 main() char aMN,j,k,n5=0; for( j=0;jM;j+) gets(aj); for(j=0;j=A & ajk=a & ajk=0 & ajk=9) n3+; else if (ajk= ) n4+; elsen5+;for(j=0;jn2) swap(pointer1,pointer2);if(n1n3) swap(pointer1,pointer3);if(n2n3) swap(pointer2,pointer3);printf(the sorted numbers are:%d,%d,%dn,n1,n2,n3);swap(p1,p2)int *p1,*p2;int p;p=*p1;*p1=*p2;*p2=p;2. 编写函数,得到两个整数相除的商和余数。要求通过指针在函数间传递商和余数这两个数据。 #include stdio.hmain() int a,b,d ;double c;void fun(int a,int b,float *c, int *d); scanf(%d,%d,&a,&b); fun(a,b,&c,&d);printf(%lf,%dn,c,d);void fun(int a,int b,double *c, int *d) if (b) *c=(double)a/b; *d=a%b;3. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。编写三个函数:输入10个数;进行处理;输出10个数。#include stdio.hmain()void input (int *); void output (int *); void chuli (int *); int a10; input(a); chuli(a); output(a);void input(int *a) int j; for(j=0;j10;j+) scanf(%d, a+j); void chuli(int *a)int j,minl=0,maxl=0; for(j=0;j10;j+) if(amaxl*(a+j) minl=j; j=a0; a0=aminl;aminl=j; j=a9;a9=amaxl;amaxl=j; void output(int *a)int j; for(j=0;j10;j+)printf(%4d, *(a+j); printf(n);4按下列要求输入和输出下列数据阵列: 输入阵列如下: 1 2 3 4 5 6 7 8 9 10 11 12 输出阵列如下: 12 11 10 9 8 7 6 5 4 3 2 1# define M 3#define N 4main() int aMN=1,2,3,4,5,6,7,8,9,10,11,12,k,j,*p=a,t; for(k=0,j=M*N-1;kj;k+,j-) t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;for (k=0;kM;k+)for(j=0;jN;j+) printf(%4d ,akj);printf(“n”);5. 编写一个函数,求一个字符串的长度。在main( )函数中输入字符串,并输出其长度。#include stdio.hmain()int len,length(p);char *str20;printf(please input a string:n);scanf(%s,str);len=length(str);printf(the string has %d characters.n,len);int length(p)char *p;int n=0;while(*p!=0) n+; p+;return n;6. 请编写一个程序,运行时输出命令行参数的个数及参数名。#include “stdio.h”main(int argc,char *argv) int k; printf(“argc=%d”,argc); for (k=1;kargc; k+) printf(“%s”,argvk);7。用指针数组操作将输入的5个字符串按由小到大的顺序。#include stdio.h#include string.hmain()char *str15,ch520,k; void sort(char *);for(k=0;k5;k+)str1k=chk;gets(str1k);sort(str1);for(k=0;k5;k+)puts(str1k);void sort(char *str1) int k,j,t;char *c;for(k=0;k4;k+) t=k; for(j=k+1;j0) t=j; c=*(str1+t); *(str1+t)=*(str1+k) ; *(str1+k)=c ; 习题1010-1单选题1-5CDBBB 6-10BBBAD 11-15CCBDA 10-2填空题1.所有结构体成员所占存储空间的总和2.与占用存储空间最大的那个成员相等3. (1) 结构体(2) 3(3) sa.a(4) 9(5) psa=&sa4.805.struct node6.010-3 编程题1. 定义一个包含20个学生基本情况(包括学号、姓名、性别、C语言成绩)的结构体数组,编程实现下列功能:(1)输入20个学生的学号、姓名、性别、C语言成绩;(2)分别统计男女生的人数,求出男、女生的平均成绩;(3)按照学生的C语言成绩从高到底进行排序。struct student long num; char name20; char sex; float score;main() struct student s20, temp; int j,k, man=0, woman=0; float summan=0,sumwoman=0, aveman, avewoman; for(k=0; k20; k+) scanf(%ld %s %c%f,&sk.num,,&sk.sex,&sk.score);if(sk.sex=m) summan+=sk.score; man+;else sumwoman+=sk.score;woman+ ; aveman=summan/man; avewoman=sumwoman/woman; printf(%dt%ft%dt%fn,man,aveman,woman,avewoman); for(k=0; k19; k+) for(j=0;j20-k;j+)if(sj.scoresj+1.score) temp=sj;sj=sj+1;sj+1=temp;printf(the sorted numbers:n);for(k=0;k10.0) a=a-10.0; else a=a+10.0; if(ba) ; else b=a-b; printf(a=%f, b=%fn,a,b); 实验4 循环结构程序设计(1) 略(2) 略(3)编写一个程序,打印输出半径为110的圆的面积,若面积为4090则予以打印,否则,不予打印。#include stdio.hmain() float r=0, area=0; while(r10 & area40) printf(r=%f, area=%fn,r,area); r=r+1; area=3.1415926*r*r; (4)从键盘输入一批整数,统计其中不大于100的非负数数值的个数。(用while循环实现。)#include stdio.hmain() int x,i=0; scanf(%d,&x); while(x=0) if(x=1e-4) pi=pi+t; n=n+2.0; k=-k; t=k/n; pi=pi*4; printf(pi=%lfn,pi);(6)解决猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩一个桃子了。求第一天猴子共摘了多少个桃子。#include main() int i,m,n; for (n=1,i=1;i10;i+) m=2*n+2; n=m; printf(total=%dn,m);(7)取彩球问题。现有12个彩球3个白球、3个红球、6个黑球,从中任意取n(2n12)个球,求所有不同的取法。#include stdio.hmain() int n,white,red,yellow,count=0; printf(Please input the number of ball took:); scanf(%d,&n); printf(white red yellown); for(white=0;white=3;white+) for(red=0;red=0 & yellowv) a=u; u=v; v=a; while(b=u%v)!=0) u=v; v=b; return(v);int led(int x,int y,int h) return(x*y/h);main() int h,l; scanf(%d%d,&x,&y); h=hef(x,y); printf(HCF=%dn,h); l=led(x,y,h); printf(LCD=%dn,l);l 不用全局变量:#include stdio.hint hef(int x,int y) int a,b; if(yx) a=x; x=y; y=a; while(b=x%y)!=0) x=y; y=b; return(y);int led(int x,int y,int h) return(x*y/h);main() int x,y,h,l; scanf(%d%d,&x,&y); h=hef(x,y); printf(HCF=%dn,h); l=led(x,y,h); printf(LCD=%dn,l);(4)计算s = 1/1-1/2+1/3-+1/9999-1/10000,分别采用下列各种方法,每种方法单独用一个函数实现,最后加以比较: 从左到右各项相加; 从右到左各项相加; 从左到右各个正项和负项分别相加; 从右到左各个正项和负项分别相加。#include stdio.hvoid lsum(int n);void rsum(int n);void lsumc(int n);void rsumc(int n);main() lsum(10000); rsum(10000); lsumc(10000); rsumc(10000);void lsum(int n) int i,k=1; double sum=0,t; for(i=1;i=1;i-) t=1.0*k/i; sum+=t; k=-k; printf(the rsum is:%lfn,sum);void lsumc(int n) int i; double sum=0; for(i=1;i=n-1;i+,i+) sum+=1.0/i; for(i=2;i=2;i-,i-) sum-=1.0/i; for(i=n-1;i=1;i-,i-) sum+=1.0/i; printf(the rsumc is:%lfn,sum);(5)猴子吃桃问题的函数化。把猴子吃桃问题写成一个函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产品研发资金申请2025年政策扶持与产业升级策略报告
- 2025年新能源汽车废旧电池回收处理技术及案例分析报告
- 2025年生物科技行业可持续发展目标(SDGs)实践与产业融合报告
- 煤炭清洁高效燃烧技术在煤炭洗选加工中的应用与发展报告
- 医疗器械临床试验质量管理与规范化2025年发展趋势研究报告
- 2025年建筑信息模型(BIM)在施工全过程精细化管理中的应用策略报告
- 工业互联网平台量子密钥分发技术在智慧医疗领域的应用与挑战报告
- 2025年电商平台内容营销与种草经济产业链研究报告
- 深度解析:2025年工业互联网平台AR交互技术在制造领域的应用创新报告
- 绿色环保产业资金申请政策变化与应对策略报告2025
- 语文课堂精彩两分钟PPT课件
- 三生事业六大价值
- 锆石基本特征及地质应用
- 丝网除沫器小计算
- 制钵机的设计(机械CAD图纸)
- 学校财务管理制度
- 三年级下册美术课件-第15课色彩拼贴画|湘美版(共11张PPT)
- 水稻病虫统防统治工作总结
- 水在不同温度下的折射率、粘度和介电常数
- howdoyoucometoschoolPPT课件
- 四柱特高弟子班绝密资料——席学易
评论
0/150
提交评论