C语言十个经典题型.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。? 例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba? fun(char *s)? { int i=0,t,n=strlen(s);? for( {t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}}? 注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次? 都进行两字符的位置对换,直到中间字符(用s+i? 地址,因此要注意把它的内容取出再进行换位。即先进行取内容运算*)? 2、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如 ,原来的字符串为CEAedca,排序后输出为CedcEAa。? void fun(char *s,int num) { int i,j; char t; for(i=0;inum;i++) for(j=i;jnum;j++) if(s[i]s[j]) { t=s[i]; s[i]=s[j]; s[j]=t; } } main() { char s[10]; printf(输入8个字符的字符串:); gets(s); fun(s,8); printf(\n%s,s); } 该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走 动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位。直到外for()循环走到 最后一个字符。此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可 。? 3、请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n=2)位的整数 ,函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23 。? unsigned fun( unsigned w )? { if(w=10000) return w%10000;? if(w=1000) return w%1000;? if(w=100) return w%100;? return w%10;? }? 注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如 果大于1000则对1000求余得出后3位数,这样一层一层往小的判断。由于return的作用除了返回值以外, 还有当执行到return时就跳出该程序,所以可以连续的用if()语句。? 4、请编一函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组 每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主? 函数中赋予。? #define M 3? #define N 4? void fun(int tt[M][N],int pp[N])? { int i, j;? for(i=0;i? { pp=tt[0];? for(j=0;j? if(tt[j] }}? /*注:该题用for(i=0;i;j++)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快 ,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题 目中都要用到多重循环(一般为二重)。*/? 5、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值 为y的元素。数组元素中的值和y的值由主函数通过健盘读入。? 试题程序。? #define M 20? void fun (int bb[], int *n,int y)? { int i,j=0;? for( i=0; i*n; i++)? if(bb!=y) bb[j++]=bb;? *n=j;}? /*注:该题的算法是,用for()循环控制元素逐一判断数组元素是否等于y,若不等则赋给新数bb,由 于删除的关系j总是小于或等于i,故而可用bb作为新数组,与第6题相似。还要注意*n=j;如果没有这个 语句则不能传回新数组的个数,另外也不能换成n=j;这点是用指针时常犯的错误,切记!*/? 6、 请编写一个函数int fun(int x),它的功能是:判断整数x是否是同构数。若是同构数,函数返 回1;否则返回0。? 所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输

文档评论(0)

gl5000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档