- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)