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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《C程序设计》练习题.docx

1、C程序设计练习题上机程序调试及程序设计练习一、程序填空(1) 找Armstrong(水仙花)数:371=3*3*3+7*7*7+1*1*1#include #includevoid main() int i,a,b,c;for(i=100;i=999;i+) a=i/100;_1_ / b=i%100/10;c=i%10;if (_2_) / a*a*a+b*b*b+c*c*c = = i printf(%d is a Armstrong number!n,i);(2) 输入1个整数后,输出该数的位数。(例:输入3214则输出4,输入-23156则输出5)。#include void main

2、() int n,k=0; scanf(%d,&n); while( _1_ ) / n!=0 k+; _2_; / n=n/10 printf(%dn,k);(3) 求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。#include #include void main() int n,s=0; scanf(%d,&n); _ 1 _ / if (n0) n=-n; while(n!=0) _ 2 _ / s+=n%10; n=n/10; printf(%dn,s);(4) 调用函数f,将一个整数首尾倒置。例如:若程序输入12345,则输出54321;若程序输入-3456

3、7,则输出-76543。#include #include long f(long n) long m,y=0; m=fabs(n); while(m!=0) y=y*10+m%10; _1_ / m=m/10 ; if(n=0) return y; else _2_ / return -y ;void main()printf(%ldt,f(12345); printf(%ldn,f(-34567);(5) 调用函数f,从字符串中删除所有的数字字符。#include #include #include void f(char *s) int i=0; while(si!=0) if(isdi

4、git(si) _1_(s+i,s+i+1); / strcpy _2_ i+; / elsevoid main() char str80; gets(str); f(str); puts(str);(6) 调用find函数在输入的字符串中查找是否出现the这个单词。如果查到返回出现的次数,如果未找到返回0。#include int find(char *str) char *fstr=the; int i=0,j,n=0; while (stri!=0) for(_1_) / j=0; j=3 i+; return n;void main() char a80; gets(a); print

5、f(%d,find(a);(7) 输入的一个小写字母,将字母循环后移5个位置后输出。例如:a变成f,w变成b。#include void main() char c; c=getchar(); if(_1_) / c=a&c=v & c=z) _2_ / c=(c-a+5)%26+a; putchar(c);(8) 将字符串s中所有的字符c删除。#include void main() char s80; int i,j; gets(s); for(i=j=0; _1_; i+) / si != 0 if(si != c) sj=si; _2_ / j+; sj=0; puts(s);(9)

6、对x=1,2,10,求f(x)=x*x-5*x+sin(x)的最大值。#include #include #define f(x) x*x-5*x+sin(x)void main() int x; float max; _1_ / max=f(1); for(x=2;xmax) max=f(x); printf(%fn,max);(10) 输入三个整数,按由小到大的顺序输出这三个数。#include void swap(_1_) / int *pa, int *pb /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp;void ma

7、in() int a,b,c,temp; scanf(%d%d%d,&a,&b,&c); if(ab) swap(&a,&b); if(bc) swap(&b,&c); if(_2_) / if ( ab ) swap(&a,&b); printf(%d,%d,%d,a,b,c);(11) 调用函数f,去除数组中的负数,输入数组x7,输出结果为:1 3 4 6#include / 数组元素的删除void f(int *a,int *m) int i, j ; for(i=0;i*m;i+) if(ai0) for(j=i-;j*m-1;j+) aj=aj+1; _1_; / *m = *m-1

8、; void main() int i,n=7,x7=1,-2,3,4,-5,6,-7; _2_; / f (x, &n) ; for(i=0;in;i+) printf(%5d,xi); printf(n);(12) 调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。#include float f(float, float*, int);void main() float b5=1.1, 2.2, 3.3, 4.4, 5.5 ; printf(%fn, f(1.7,b,5) );float f( _1_ ) / flo

9、at x, float *a, int n float y=a0, t=1; int i; for(i=1; in; i+) t=t*x; y=y+ai*t; _2_ / return y;(13) 分别统计字符串中英文字母、数字、和其他字符出现的次数。#include #include void main() char a80; int n3=0, i; gets(a) ; _1_ / for ( i=0; ai!=0; i+) if (tolower(ai)=a & tolower(ai)=0 & ai=9 n1+; else n2+; for(i=0;i3;i+) printf(%dn,

10、ni); (14) 将输入的十进制整数n通过函数DtoH函数转换为十六进制数,并将转换结果以字符串形式输出。(例如:输入十进制数79,将输出十六进制4f。)# include # include char trans(int x)if(x10) return 0+x;else _1_ / return a+x-10;int DtoH(int n,char *str)int i=0;while(n!=0)_2_ / stri=trans(n%16);n/=16;i+; return i-1;void main()int i,k,n;char *str; / 注意:题目有错!str是悬挂指针。应改

11、为: char str80;scanf(%d,&n);k=DtoH(n,str);for (i=0;i=k;i+) printf(%c,strk-i);(15) 将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。#include void Dec2Bin(int m) int bin32,j; for(j=0;m!=0;j+) binj= _1_; / m%2 m=m/2; for( ; j!=0; j- ) printf(%d, _2_ ); / binj-1void main() int n; scanf(%d,&n); Dec2Bin(n);(16) 数列的第

12、1、2项均为1,此后各项值均为该项前二项之和。计算数列第30项的值。#include _1_ / long f(int n); 或者 long f(int);void main() printf(%ldn,f(30) ;long f(int n) if( _2_ ) / n=1 | n=2 return 1; else return f(n-1)+f(n-2);(17) 该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。#include struct STUDENT char name16; int math; int english; int computer; int

13、 average;void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */ int sum=0; sum = _1_; / pst-math+pst-english+pst-computer pst-average = sum/3;void main() int i; struct STUDENT st4=Jessica,98,95,90,Mike,80,80,90, Linda,87,76,70,Peter,90,100,99; for(i=0;i4;i+) GetAverage(_2_); / st + i printf(NametMathtEng

14、lishtComputAveragen); for(i=0;i4;i+) printf(%st%dt%dt%dt%dn,sti.name,sti.math,sti.english, puter,sti.average); (18) 输入m、n(要求输入数均大于0)。输出它们的最大公约数。#includevoid main() int m, n, k;while ( scanf(%d%d, &m, &n), _1_ ); / m=0|nn?n:m printf(%dn, k);(19) 求出a中各相邻两个元素的和,并将这些和存放在数组b中,按每行3个元素的形式输出。例如:b1=a0+a1,b9=

15、a8+a9。#include void main() int a10,b10,i; printf(nInput 10 numbers: ); for (i=0; i10;i+) /* 数组输入 */ scanf(%d, &ai); for (i=1; i10; i+) bi=_1_; /* 计算b数组中的元素 */ / ai-1+ai for (i=1; i0),求m使得2的m次方小于或等于n,2的m+1次方大于或等于n。#include void main() int m=0,t=1,n; while( _ 1 _); / scanf(“%d”,&n), n=0 / 逗号表达式 while(

16、!(t=n) _ 2 _ / t=t*2; m+; printf(“%dn”,m);二、程序改错(1) 输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。#include #include / 注意:题目有错!应增加一行:#include void main() char str256; int i,j,k=0,n; gets(str); n=strlen(str); for(i=0;in;i+) /*1*/ if (tolower(stri)z) / if (tolower(stri)=a & tolower(stri)=z) /*2*/ strn=stri; n+; / str

17、k=stri; k+; strk=0; printf(%sn,str);(2) 输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t后面。例如:输入ABCD,则字符串t为ABCDDCBA。#include #include void fun(char *s,char *t) int i,sl; sl=strlen(s); for(i=0;isl;i+) ti=si; for(i=0;isl;i+) /*1*/ tsl+i=ssl-i; / tsl+i=ssl-1-i; /*2*/ tsl=0; / tsl+i =0;void main() ch

18、ar s100,t100; scanf(%s,s); fun(s,t); printf(%s,t);(3) 运行时输入10个数,然后分别输出其中的最大值、最小值。#include void main() float x,max,min; int i; /* 1 */ for(i=0;i=10;i+) / for(i=1; imax) max=x; if(xmin) min=x; printf(%f,%fn,max,min);(4) 用选择法对10个整数按升序排序。#include #define N 10void main() int i, j, min, temp ; int aN=5, 4

19、, 3, 2, 1, 9, 8, 7, 6, 0 ; printf(nThe array is:n); /* 输出数组元素 */ for (i=0;iN;i+) printf(%5d,ai); for (i=0;iN-1;i+) /* 排序操作 */ min = i; for (j=i+1; jN; j+) /* 1 */ if (aminaj ) min =j; /* 2 */ temp=amin; amin=aj; aj=temp; /*数据交换*/ / 改成 temp=amin; amin=ai; ai=temp; printf(nThe sorted numbers: n); /* 输

20、出排序结果 */ for (i=0;iN;i+) printf(%5d,ai); printf(n);(5) 输入x和正数eps,计算多项式1-x+x*x/2-x*x*x/3!+的和直到末项的绝对值小于eps为止。#include #include void main() float x,eps,s=1,t=1,i=1; scanf(%f%f,&x,&eps); do /* 1 */ t=-t*x/+i; / t=-t*x/i+ ; s+=t; /* 2 */ while(fabs(t)=eps); printf(%fn,s);(6) 运行时若输入a、n分别为3、6,则输出下列表达式的值:3+

21、33+333+3333+33333+333333。#include void main() int i,a,n; long t=0; /* 1 */ s=0; / long s=0; scanf(%d%d,&a,&n); for(i=1;i=n;i+) /* 2 */ t=t*10+i; / t=t*10+1; s=s+t; s=s*a; printf(%ldn,s);(7) 用递归法将一个六位整数n转换称字符串。例如:输入123456,应输出字符串123456。#includevoid itoa(long i,char *s) if(i=0) return; /* 1 */ *s = 1+i

22、%10; / *s=i%10+0; itoa(i/10,s-1);void main() long n; char str7=; scanf(%ld,&n); /* 2 */ itoa(n,str+6); / itoa(n,str+5); printf(%s,str);(8) 输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。#include #include #include void main() int i,n; /* 1 */ struct axy float x,y; a; / struct axy float x,y; *a; scanf(%d,&n); a=(float*) malloc(n*2*sizeof(float); for(i=0;in;i+) /* 2 */ scanf(%f%f,ai.x,ai.y); / scanf(%f%f,&ai.x,&ai.y); for(i=0;in;i+) if(sqrt(ai.x*ai.x+ai.y*ai.y)=5) printf(%f,%fn,ai.x,ai.y);(9) 运行时输入n,则输出n的所有质数因子。例如:n=13860,则输出2、2、3、3、5、7、11。#include void main() int n,i; scan

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2