第一题:
代码:
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum=op1+op2;
*pdiff=op1-op2;
return 0;
}
思路:
第一步:使用指针将所求量代入函数
第二步;按题目要求进行运算
第三不:返回主函数
问题:
无
第二题:
代码:
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart=(int)x;
*fracpart=(float)(x-*intpart);
return 0;
}
思路:
第一步:使用指针将所求量代入函数
第二步:利用int函数将x强制转化,求出整数部分
第三步:用将原数减去整数部分求出小数部分
第四步:返回主函数
问题:
无
第三题:
代码:
int search( int list[], int n, int x )
{
int i, index;
for(i = 0;i < n;i++ )
{
if(x==*(list+i) )
{index = i;
break;}
else{
index = -1;
}
}
return index;
}
思路:
第一步:使用指针将所求量代入函数
第二步:创建for循环,实现查找
第三步:利用if语句将数列中的数与所求数对比,找出结果
第四步:返回主函数输出不同结果
问题:
无
流程图:
第四题:
int fun(int *a,int *b,int n)
{
int i = 0,max = *a;
for(i = 0;i < n;i++)
{
if(max<*(a+i))
{
*b = i;
max = *(a+i);
}
}
return max;
}
思路:
第一步:使用指针将所求量代入函数
第二步:定义i,将max赋值
第三步:利用for循环,将数列中的数与max比较找出最大值
第四步:将最大值的下标赋值与指针b
第五步:返回主函数:
错误:
无
流程图:
第五题:
代码:
void input(int *arr,int n)
{
int g;
for(g=0;g<n;g=g+1)
scanf("%d",&*(arr+g));
}
void max_min(int *arr,int n)
{
int max,i=0,b;
max=*(arr+i);
for(;i<10;i=i+1)
{
if(*(arr+i)>*(arr+i+1))
{
max=*(arr+i);
b=i;
}
}
int min,j=0,c;
min=*(arr+j);
for(;j<10;j=i+1)
{
if(*(arr+j)<*(arr+j+1))
{
min=*(arr+j);
c=j;
}
}
int f,g,m=0;
f=*(arr+0);
*(arr+0)=*(arr+b);
*(arr+b)=f;
g=*(arr+n-1);
*(arr+n-1)=*(arr+c);
*(arr+c)=g;
}
void output(int *arr,int n)
{
int h;
for(h=0;h<n;h=h+1)
printf("%d",*(arr+h));
}
思路:
void input(int arr,int n)
第一步:使用指针将所求量代入函数
第二步:利用循环将数列中的数带入arr
void max_min(int *arr,int n)
第一步:使用指针将所求量代入函数
第二步:定义i,max,指针b
第三步:利用循环找出最大值,利用b记录其下标
第四步:定义j,min,指针c
第五步:利用循环找出最小值,利用c记录其下标
第六步:利用b和c,将首位与最小值交换,将末尾与最大值交换
void output(int *arr,int n)
第一步:使用指针将所求量代入函数
第二步:定义h
第三步:利用循环输出数列
错误:
无
流程图:
第六题:
代码:
void sort(int *x,int n)
{
int i, j , t;
for( j = 1; j <= n-1; j++)
{
for(i = 0; i <= n-j-1;i++)
{if(*(x+i)<*(x+i+1))
{
t= *(x+i);
*(x+i) = *(x+i+1);
*(x+i+1) = t;
}
}
}
}
思路:
第一步:使用指针将所求量代入函数
第二步:定义i,j,t
第三步:建立双循环,利用冒泡排序法
第四步返回主函数
错误;
无
流程图:
第七题:
代码:
bool palindrome( char *s )
{
int i=0,n=0;
for(;s[i]!=' ';i++)
n++;
for(i=0;i<=(n/2);i++)
{
if(s[i]!=s[n-i-1])
return 0;
}
return true;
}
思路:
第一步:使用指针将所求量代入函数
第二步:定义i=0,n=0
第三步:利用循环记录数列中有多少数目
第四步:利用循环判断对应位置的字母是否相同
第五步:若是返回true否返回flase
错误:
无
流程图:
第八题:
代码:
void strmcpy( char *t, int m, char *s )
{
*s=NULL;
int i,n=1;
for(i=0;*(t+i)!=' ';i++)
n++;
if(m>=n)
*s=NULL;
else
{
for(i=m-1;i<=n-1;i++)
s[i-m+1]=t[i];
}
}
思路:
第一步:使用指针将所求量代入函数
第二步:将字符数组t中的元素复制到s上,然后判断*s的长度
第三步:通过for循环将数组t[]中的从第m-1元素赋给数组s[]
第四步:返回主函数
错误:
无
流程图:
学习总结:
这两周的学习中我初步学会了指针的用法,复习了主函数和调用函数的知识点,回顾了冒泡排序法。但对与利用指针复制数组,还没有掌握清楚。
git上传:
https://coding.net/u/jike1liuyu/p/ppp/git/blob/master/%E6%96%B0%E5%BB%BA%E6%96%87%E6%9C%AC%E6%96%87%E6%A1%A3.txt?public=true
总结:
评论:
刘富垚:http://www.cnblogs.com/lhyyy/p/8619501.html
刘炜旗:http://www.cnblogs.com/ryo-/p/8644256.html
史泽文:http://www.cnblogs.com/shilcz/p/8611461.html