C语言第二阶段考核答案.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、编写函数,实现对按从小到大排列的n个元素的有序数组a进行二分查找x的算法,若查找成功返回该元素下标,否则返回-1。 例:有序数组 a[10]={0,1,2,3,4,5,6,7,8,9} 输入:2 输出:2 输入:10 输出:-1 #include stdio.h void main() {int fn(int a[],int n,int x); int a[10]={0,1,2,3,4,5,6,7,8,9},x; scanf(%d,x); printf(%d\n,fn(a,10,x)); } int fn(int a[],int n,int x) { int l,r,mid,flag=-1; l=0;r=n-1; while(l=r) {mid=(l+r)/2; if(a[mid]==x){flag=mid;break;} if(a[mid]x) l=mid+1; else r=mid-1; } return flag; } 2、编写一个程序完成字符串拷贝的功能函数str_copy(a,b),可将字符数组a中的对应内容ascii码加1后拷贝到b中。 输入:abc 输出:bcd #include stdio.h void str_copy(char a[],char b[]) { int i; while(*a) { *b++=(*a++)+1; } *b=0; } void main() { char str1[10],str2[10]; scanf(%s,str1); str_copy(str1,str2); printf(%s\n,str2); } 3、用选择排序完成对下列数据的排序操作:19,454,23,67,89,3467,1,56。具体要求如下: (1)在主函数中通过对数组初始化的方式将该数列存在数组中,在子函数中完成排序操作。 (2)函数的返回类型必须定义成void类型。 (3)输出应在主函数中完成。 #include stdio.h void fn(int a[],int n) { int i,j,k,t; for(i=0;in;i++) { k=i; for(j=i+1;jn;j++) if(a[k]a[j])k=j; if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;} } } void main() { int a[8]={19,454,23,67,89,3467,1,56},i; fn(a,8); for(i=0;i8;i++) printf(%d,,a[i]); printf(\n); } 4、编写一个函数atoi,该函数的作用是将一个整数字符串转换成一个整数。函数定义的形式为int atoi(char *str),其中str是字符串的首地址。函数的返回值为求出的整数。如atoi(“123”) 的返回值为整数123。、 要求输入一个数字字符串和一个整数,将对应数字字符串转换为整数后计算和并输出。 例:输入:123 3 输出:126 #include stdio.h int atoi(char *str) { int i=0,sum=0; while(str[i]!=\0) { sum=sum*10+str[i]-0; i++; } return sum; } void main() { char str[10]; int n; int s; scanf(%s%d,str,n); s=atoi(str); printf(%d\n,s+n); } 5、请编写一个函数fun,它的功能是:输入并计算n门课程的平均分,计算结果作为函数值返回。输出时小数点后保留1位。 函数的首部为:double fun (double a[],int n) 例:输入:5 97 77 85 64 81 输出:80.8 #include stdio.h double fun(double a[],int n) { int i; double p,sum=0.0; for(i=0;in;i++) sum=sum+a[i]; p=sum/n; return p; } void main() { int i,n; double a[20]; scanf(%d,n); for(i=0;in;i++) scanf(%lf,a[i]); printf(%.1f\n,fun(a,n)); } 6、要求程序的功能是:从键盘输入n个数存入一个数组,然后输出该数组中的最小值及对应下标。其中确定最小值的下标的操作在f

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档