1、C和指针部分课后习题代码C和指针部分课后习题代码第四单元部分编程题#include#include#include/*4.14第1题编写一个程序,读入一个值,计算并打印它的平方根ai+1=(ai+(n/ai)/2*/float Mysqrt(float n) float s; float f; if(n0) return false; else f=1; do s=f; f=(s+n/s)/2; while(s!=f); return f; /*第6题请编写一个函数,他从一个字符串中提取一个子字符串。*/int Substr(char *des,char *src,int start,int
2、len) int count=0; while(*src!=0) count+; *src+; if(count=start) int i; for(i=0;ilen;i+) desi=srci; if(srci=0) desi=0; break; desi=0; return strlen(des);void Show(char *str,int len) for(int i=0;ilen;i+) printf(%c,stri); printf(n);/*第7题编写一个函数,从一个字符串中去掉多余的空格。*/void Deblank(char *str,int len) int count=
3、0; int i; for(i=0;i1 & stri+1!= ) for(int k=i;klen;k+) strk-count+2=strk+1; count=0; if(stri= & stri+1!= ) count=0; int main() /*-第1题-*/ printf(%fn,Mysqrt(4); printf(%fn,Mysqrt(16); /*-第6题-*/ char str1=helloworldchina; char str210; printf(%dn,Substr(str2,str1,5,5); printf(%dn,Substr(str2,str1,10,10)
4、; /*-第7题-*/ char str3=hello wor ld c hina; Deblank(str3,strlen(str3); Show(str3,strlen(str3); return 0;第五单元部分编程题#include#include#include/*请编写一个函数unsigned int reverse_bits(unsigned int value)这个函数的返回值是把value的二进制模式从左到右变换一下后的值*/unsigned int reverse_bits(unsigned int value) unsigned int rslt = (value & 0
5、); unsigned int flag = 1; /标志位移次数 while(flag != 0) if(value & 1) = 1) rslt = (rslt 1) + 1; /若为1时rslt加1再向前移1位 else rslt = 1; flag = 1; return rslt;int main() printf(%un,reverse_bits(25); printf(%un,reverse_bits(1); printf(%un,reverse_bits(15); return 0;第七单元部分编程题#include/*第1题厄密多项式*/int HermitePolynomi
6、als(int x,int n) int h; if(n=2) h=2*x*HermitePolynomials(x,n-1)-2*(n-1)*HermitePolynomials(x,n-2); return h;/*第2题编写一个叫gcd的函数,它接受两个整形参数,并返回这两个数的最大公约数*/int Gcd(int a,int b) int h; int r; int temp; if(a0|b0) return 0; if(a0) h=Gcd(b,r); return h;int main() printf(%dn,HermitePolynomials(3,-1); printf(%d
7、n,HermitePolynomials(3,1); printf(%dnn,HermitePolynomials(3,2); printf(%dn,Gcd(24,12); printf(%dn,Gcd(24,-12); printf(%dnn,Gcd(14,24); return 0;第九单元部分编程题#include#include#include#include/*拷贝字符串中前n个字符*/void Mystrncpy(char *desstr,char *stcstr,int n) if(strlen(stcstr)(unsigned)n) for(int i=0;in;i+) des
8、stri=stcstri; else while(*stcstr!=0) *desstr+=*stcstr+; desstr=0; void Show(char *str,int len) for(int i=0;i(unsigned)n) for(int i=0;in;i+) str1j=str2i; j+; str1j=0; else while(*str1!=0) *str1+; while(*str2!=0) *str1+=*str2+; str1=0; return p;/*比较字符串中前n个字符的大小*/int Mystrncmp(char *str1,char *str2,int
9、 n) int count=0; int tmp; if(strlen(str2)(unsigned)n) while(count=(unsigned)n) tmp=*str1-*str2; *str1+; *str2+; count+; else while(tmp=*str1-*str2)=0 & *str1!=0) *str1+; *str2+; return tmp;/*将一个数字转化成一个字符型式*/void Myitoa(char *str,int num,int radix) int i=0; char tmp; int count=0; char index=012345678
10、9ABCDEFGHIJKLMNOPQRSTUVWXYZ; /索引表 unsigned unum; if(num0) /将负数先转化成正数 unum=-num; stri=-; i+; else unum=num; while(unum!=0) stri+=indexunum%radix; /将数字转化成字符 unum/=radix; count+; stri=0; i-; if(str0=-) tmp=str0; for(int k=0;kcount;k+) strk=strk+1; /将数组中的每个字符向前移动移动一位 strcount=tmp; /将负号置于数组末尾 for(int j=0
11、;j=0;i-) if(stri=ch) return str+i; return false;/*编写一个名叫my_strnchr的函数,此函数类似于strchr但它的第3个参数指定ch字符在str字符中第几次出现。*/char *my_strnchr(char *str,int ch,int which) int count=0; for(unsigned int i=0;istrlen(str);i+) if(stri=ch) count+; if(which=count) return str+i; return false;/*编写一个函数,实现函数在第1个参数中进行查找,并返回匹配
12、第2个参数所包含的字符的数量*/int count_chars(char const *str,char const *chars) int count=0; while(*str!=0) for(unsigned int i=0;istrlen(chars);i+) if(*str=charsi) count+; str+; return count;int main() char str150=helloworld; char str250=0; Mystrncpy(str2,str1,5); Show(str2,strlen(str2); Mystrncpy(str2,str1,15);
13、 Show(str2,strlen(str2); char str3=china; printf(%sn,Mystrncat(str1,str3,4); char str4=abcdefg; char str5=acbdef; printf(%dn,Mystrncmp(str4,str5,3); char str632=0; Myitoa(str6,123,16); Show(str6,32); Myitoa(str6,-123,16); Show(str6,32); Myitoa(str6,456789,20); Show(str6,32); Myitoa(str6,-456789,20); Show(str6,32); printf(%sn,my_strrchr(str1,a); printf(%sn,my_strrchr(str1,l); printf(%sn,my_strnchr(str1,l,2); printf(%sn,my_strnchr(str1,l,3); printf(%sn,my_strnchr(str1,l,4); printf(%dn,count_chars(str4,str5); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1