6-1 在数组中查找指定元素
本题要求实现一个在数组中查找指定元素的简单函数。
1.设计思路
遍历数组,寻找指定元素
程序代码如下
```
int search( int list[], int n, int x )
{
int i;
for(i=0;i<n;i++)
{
if(x==list[i])
return i;
}
return -1;
}
```
流程图如下:
错误以及问题:无。
6-2 找最大值及其下标
在一维整型数组中找出其中最大的数及其下标。
1.设计思路
(1)算法:
定义一个数组、循环变量i、最大值max、和数组中最大数的下标p。
对数组进行赋值。调用函数。在函数中找到最大值及其对应的下标。
输出数组元素的最大值及其下标。
代码如下:
```
int fun(int *a,int *b,int n)
{
int i;
int max = a[0];
for(i=1;i<n;i++)
{
if(max<a[i])
{
max=a[i];
*b=i;
}
}
return max;
}
```
流程图:
本题出现的问题及错误:未能实时记录。
C高级PTA作业(3)
6-1 最小数放前最大数放后
1.设计思路:
找到最小数并与第一个交换,找到最大数并与最后一个数交换。
代码如下:
```
void input(int *arr,int n) /*1*/
{
int i;
for(i=0;i<n;i++)
scanf("%d",arr+i);
}
void max_min(int *arr,int n)/*2*/
{
int max=*arr,min=*(arr+n-1);
int i,j=0,k=0;
for(i=0;i<n;i++)
{
if(*(arr+i)>max)
max=*(arr+i),k=i;
if(*(arr+i)<min)
min=*(arr+i),j=i;
}
int t;
t=*arr,*arr=*(arr+j),*(arr+j)=t;
t=*(arr+n-1),*(arr+n-1)=*(arr+k),*(arr+k)=t;
}
void output(int *arr,int n)/*3*/
{
int i;
for(i=0;i<n;i++)
{
printf("%3d",*(arr+i));
}
}
```
流程图:
本题遇到的问题:询问其他同学后理解。
所以代码一遍通过
6-2 指针选择法排序
1.设计思路:
定义指针变量p循环变量i,数组。将数组首元素的地址赋值给指针变量p。
读数组的各个元素赋值。使用选择排序法对数组进行从大到小的排序。
输出数组的各个元素。
代码如下:
```
void sort(int *x,int n)
{
int i,j,k;
for(i=0;i<n-1;i++)/*主循环*/
{
k=i;
for(j=i+1;j<n;j++)/*嵌套内循环*/
{
if(*(x+j)>*(x+k))
k=j;
}
if(k!=i)
{
int t;
t=*(x+k),*(x+k)=*(x+i),*(x+i)=t;
}
}
}
```
流程图:
本题题目中遇到的问题:无、
6-1 判断回文字符串
6-2 使用函数实现字符串部分复制
两次作业于deadline之前未能完成,后续单独补充说明。
我评论谁的作业:
王文博:http://www.cnblogs.com/wwb986187/p/8635502.html
梁圣然:http://www.cnblogs.com/messi6/p/8626565.html
李五壹:http://www.cnblogs.com/chenxidream/p/8562097.html
本周学习总结
学习指针,复习之前知识点
鉴于之前的作业均在deadline完成所以没有统计代码行数,下次改正!