ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:29KB ,
资源ID:9286103      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9286103.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言经典习题集.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言经典习题集.docx

1、C语言经典习题集第三章习题3-1(选做)分析下列程序的输出结果 #include int main(void) char x =a,y =b; printf(“ xybmnr”); /*xy之前四个空格*/ printf(%c%cn,x,y); printf(%can,65); return 0; 3-2. 分析程序运行结果。 #include int main(void ) short i,j; unsigned short u1,u2; u1=10000; u2=40000; i=u1; j=u2; printf(u1=%u,u2=%uni=%d,j=%dn,u1,u2,i,j); ret

2、urn 0; .3-3 若a=3,b=4,c=5,x=,y=,z= ,u=51274,n=128765, c1=a,c2=b.想得到以下的输出格式和结果,请写出 程序(包括定义变量类型和设计输出,表示空格 ) 注意: 数值的地方必须利用变量的值,不能像下面这行 printf(“ a=3b=4c=5n”); a=3b=4c=5 x=,y=,z= x+y= y+z=z+x= u=51274n=128765、 c1=a or 97(ASCII) c2=b or 98(ASCII) 3-4 写程序输入x和y, 求x的y次方(课本附录四,pow函数)第四章 习题4-1 编程求 4-2 输出下面的九九乘法

3、表1*1=1、2*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=498*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81¥4-3

4、证明for、while、do-while三者之间等价,即for可用while表示,反之亦然。4-4 输入三条边, 判断一个三角形是锐角、直角、钝角三角形中的哪一者4-5 求最大的“水仙花数”.要求(1)三重循环 (2)一重循环用break4-6 已知 ,利用这个公式求 的近似值,要求误差小于10-64-7(较难) 分析如下代码(n2): for(i=1;in;i+) for(j=1;ji;j+) for(k=1;kj;k+) printf(“n”);| 问printf语句共执行了几次这段代码执行完以后i,j,k值为多少 4-8 (较难) 有如下代码段(n为正整数): i=1; while(i+

5、n) j=1; while(j+i) k=1; while(k+j) printf(“n”); 问printf语句共执行了几次这段代码执行完以后i,j,k值为多少&4-9 分析程序输出结果(假设输入 1234 ,然后回车)#includeint main(void) int c; while(c=getchar()!=n) switch(c-2) ( case 0: case 1:putchar(c+4); case 2:putchar(c+5);break; case 3:putchar(c+3); default: putchar(c+2);break; return 0;?4-10分析程

6、序的输出结果 #include int main(void) int x=2,y,z; x*=3+2; printf(%dn,x);¥ x*=y=z=4; printf(%dn,x); x=y=z; printf(%dn,x); x=(y=z); printf(%dn,x);return 0; -4-11 写一个程序用getchar接收一行字符,然后把这行字符分成各个单词,假定单词之间用一个或多个空格或tab键分开,起始字符也可以是空格或tab键。示例:输入字符串是: I am a CMPE 150 student则输出是:IamaCMPE150student4-12 有两个整数数组 int

7、a5, b7; 数组元素从键盘输入,写一个程序累计a、b数组中总共有多个不同元素并输出。 例如 :a数组元素是1, 1, 2, 3, 4 b数组元素是1, 1, 5, 3, 4,则结果是a、b数组中总共有5个不同元素,分别是1,2,3,4,5¥第五章 函数5-1 写出程序运行结果#include int f(int a,int b);int main(void) printf(%dn, f(3,4) );- return 0; int f(int a,int b) if(a=1|b=1) return 1; return f(a-1,b)+f(a,b-1); 5-2 自己写一个函数求,n为可正

8、可负的整数,递归或非递归均可,要求不能使用库函数pow。5-3 写函数求两个正整数的最大公约数(分别用普通函数和递归函数)5-4 已知Ackerman函数如下:!写递归函数求akm(1,3),尝试akm(3,3),akm(4,3)5-5 写一个函数,判断三个数能否构成三角形的三条边。写另外一个函数,根据三角形的三条边长求三角形的面积。写一个程序测试这两个函数。第六章 习题6-1 写出程序运行结果,#include int main(void) void f(int); f(4); return 0;void f(int n) static int a=1; int b=1; if(n0) b+

9、; printf(%d %dn, +a,b); f(n-1);) 6-2 写程序输出第五章例题hanoi塔的分析过程/*示例输出过程见下(以n=2为例)*/1:2 X Y Z 2:1 X Z Y 3:0 X Y Z function 3 is over. 4:0 Z X Y function 4 is over function 2 is over 5:1 Y X Z 6:0 Y Z X function 6 is over 7:0 X Y Z function 7 is over- function 5 is overfunction 1 is over输出格式 1: 2 X Y Z( “:

10、”前数字表示函数第几次被调用, “:”后表示函数各参数) 。比如缩进对齐表示被调用关系,比如第2次第5次函数都是被第一次函数调用,所以它们是对齐的,而且相对第一次要缩进若干字符。第七章 指针习题7-1 分析下列程序的输出结果#include int f1(int *x,int *y,int z);int main(void ) int a=3,b=4,c=5,d; d=f1(&a,&b,c); printf(%d %d %d %dn,a,b,c,d); return 0;int f1(int *x,int *y,int z) *x=(*y)+; return(-z);7-2分析下列程序的输出结

11、果.一维数组的指针表示法#include int main(void ) int a10,b10, *pa, *pb,i; pa=a; pb=b; for(i = 0; i 5; i+, pa+, pb+) *pa=i; *pb=2*i; printf(%dt%dn,*pa,*pb); pa=&a1; pb=&b1;for(i = 0; i 5; i+) *pa+=i;: *pb+=2*(i+1); printf(%dt%dn,*pa+,*pb+); return 0; 7-3 分析下列程序的输出结果,强制指针转换 #include int main(void) char c3, *pc1,

12、*pc2 = c; int i4, *pi1, *pi2 = i; double d4, *pd1,*pd2 = d; pc1= pc2 + 1; pi1 = pi2 + 2; pd1 = pd2 + 3;( printf(%d %d %dn,pc1-pc2,pi1-pi2,pd1-pd2); printf(%d %d %dn,(int)pc1-(int)pc2, (int)pi1- (int)pi2 , (int)pd1-(int)pd2); return 0;7-4 标准库函数modf原型如下:#include double modf(double value, double *iptr)

13、;学习该函数的功能并回答为什么iptr要是double *类型而不是int *,写一个小程序调用该函数。7-5 写一个函数返回double类型数组中最大数的下标,写一个小程序测试该函数。7-6将习题4-12的功能改写成函数。int ntersection(int set1, int size1, int set2, int size2, int *result); 该函数求set1(大小size1)、set2(大小size2)两个数组中总共有所有不同元素的数目作为函数的返回值,并将这些元素存入result指向的空间中,result指向的空间应该使用malloc动态分配,动态分配的空间不能浪费(

14、即不多不少)。 第八章 字符串处理习题8-1 分析下列程序的输出结果#include int main(void) int a=0,1,2; int *p=a,b;, char *q=abcde; b=*+p; printf(%d %d %d %d %dn,a,*a,*(a+2),*(p+1),p1); printf(%d %d %c %s %sn,q,*q,q3,q+3,q); return 0;8-2 写一个函数,该函数的功能是将一个字符串中的小写字母转换成大写字母。8-3分析下列程序的输出结果,测试指针与数组的关系 #include int main(void) static char

15、good=“good morning!”; /*一个空格*/ char *ch=&good13; while(-ch=&good0) putchar(*ch); putchar(n); return 0; 8-4 写一个验证密码(假定密码为abcde)的程序,由用户输入密码,可以有三次输入机会,只要输入正确,则程序结束,否则继续下一次尝试;如果满了三次,则输出”you are failure!”,程序结束。下面是一个演示步骤:enter password:12enter password:34)enter password:acyou are failure! 第九章 数组及应用9-1假定数组

16、为int a35; 请问如下两条条语句将产生什么后果a42 = 8;a17 = 9;。9-2 实现冒泡排序,从第一个元素开始,降序排列。9-3 约瑟夫斯问题. 有 n个人手牵手排成一圈,顺时针从1到n编号后,从1号开始按顺时针报数,每到m时相应的人就出局,剩下的人从那个人的下一个开始重新开始报数,依此下去,问最后剩下的人是第几号用一维数组解决这个问题9-4 利用二维数组按如下格式输出十行杨辉三角形 1 1 1; 1 2 1 1 3 3 1 1 4 6 4 19-5 假定sizeof(float)为4, 则数组 float a653 (1) 数组第77个元素是哪一个 (2) 若&a000为0x4

17、51A,问&a321是多少 ;9-6 编程对二维数组各元素求和,要求用函数实现9-7 用二维数组编程求两个矩阵相乘 9-8 (选做) 从键盘依次读入“VISUALC+”,“VISUAL BASIC”, “C” , “PASCAL”, “FORTRAN”, “LISP”, 用二维数组接收然后将其按降序输出。9-9 “6174”问题,任给一各位不全相等的四位数,各位按递增和递减分别组成两个四位数,大的减去小的得到一个四位数,再进行如上处理,总能得到6174(如果是3,则 看成0003)如:5423 5432-2345=3087 8730-378 =8352 8532-2358=6174 试分别用循

18、环和递归函数来验证这个结论.9-10 (较难,选做) 将hanoi问题推广,初始状态每个圆盘可能在任何一个柱子上,只要没有大圆盘放在小圆盘的上面即可.编写一个递归函数解决这个问题.!第十章 结构习题10-1 学习中标准库函数div的用法,写一个测试程序测试它的功能。然后实现一个函数mydiv,功能和div一样。 10-2 改写示例程序getSides函数,使之参数为结构而不是结构指针,有必要的话修改与之有关的部分. 体会其中的区别.10-3 (选做) 写一个程序,处理有理数的输入、输出、加减乘除运算。有理数都可以表示为a/b形式,a、b均为整数且互质,必须保证运算后仍满足以上条件10-4 处理

19、一个班的同学信息。每位同学信息包括如下几项:姓名、学号、生日、高数成绩、外语成绩、计算机成绩。生日最好声明为一个结构.要求完成总成绩降序输出对应的姓名、学号、总成绩。10-5分析下列程序的输出结果.测试结构变量和指向结构变量的指针的赋值及成员的表示.#include struct abc int a; float b;( char * c; ; int main(void ) static struct abc x=23,Wang; struct abc *px=&x; printf(%d %.1f %sn, , , ; printf(%d %.1f %sn,px-a, (*px).b, px

20、-c); printf(%c %sn,*px-c+2,&px-c1); return 0; 10-6分析下列程序的输出结果。测试指向结构变量的指针和字符指针的赋值.动态分配空间 #include #include #include struct stu char * name; float grad; *p; int main(void) struct stu a; p=&a;; p-grad=; p-name=(char *)malloc(20); strcpy(p-name,LiPing); printf(%s %.2fn,p-name,p-grad); return 0; 10-7 设计

21、一个日期类型,包含年、月、日的信息。写一个函数nextday返回某日的下一天信息,原型如下: struct date next_day(struct date thisday);10-9(选做,有难度)写一个函数,判断一个点是否在三角形内部,可利用已有的代码第11章 文件习题11-1 将4-100内哥德巴赫猜想验证结果写入一个文件11-2 输出一个文本文件,所有小写字母转换为大写第12章 预处理习题12-1 分析下列程序的输出结果#include #define AB(a,b) 2*(a)+2*(b)int main(void) int a=3; float b=; printf(%.2fn,1/AB(a,b); return 0;12-2 分析下列程序的输出结果*/ 文件内容如下: #define T 1 #define ABC main() printf(hello!%sn,s); return 0; 文件内容如下#include #include #if T char *s=good morning!; ABC #endif12-3 下面value值为多少#define DIV(a,b) a/b int arg1 = 7, arg2 = 5; float value; value = (float)(DIV(arg1*arg2,arg1-arg2)/2);

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

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