2018上C语言程序设计(高级)作业- 第1次作业
第一次作业
题目1-1 计算两数的和与差
1.设计思路
第一步:psum是op1与op2的和
第二步:pdiff是op1与op2的差
2.实验代码
void sum_diff( float op1, float op2, float *psum, float *pdiff)
{
*psum = op1 + op2;
*pdiff = op1 - op2;
}
3.本题调试过程碰到问题及解决办法
无
1-2 拆分实数的整数与小数部分
1.设计思路
第一步:取x整数部分
第二步:用x减去x整数部分
2.实验代码
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart = (int)x;
*fracpart = x - (int)x;
}
3.本题调试过程碰到问题及解决办法
无
2-1 在数组中查找指定元素
1.设计思路
第一步:定义下标i,返回值b
第二步:建立for循环,在数组中查找与输入的x相同的数字,如果有,下标i赋予返回值b,如果没有,-1赋予返回值b
第三步:返回b
2.实验代码
int search( int list[], int n, int x )
{
int i, b;
for(i = 0;i < n; i++)
{
if(list[i] == x)
{
b = i;
break;
}else
{
b = -1;
}
}return (b);
}
3.本题调试过程碰到问题及解决办法
无
2-2 找最大值及其下标
1.设计思路
第一步:定义max值为零,定义i
第二步:建立for循环,循环中建立if语句,把a【i】数组中大于max的数都赋予max,下标赋予*b
第三步:返回max
2.实验代码
int fun(int *a,int *b,int n)
{
int max=0;
int i;
for(i=0,max=0,*b=0;i<n;i++)
{
if( a[i] > max ) {
max=a[i];
*b=i;
}
}
return max;
}
3.本题调试过程碰到问题及解决办法
无
3-1 最小数放前最大数放后
1.设计思路
第一步:输入数组
第二步:定义for循环找出最大值与最小值与以一个数和最后一个数调换
第三步:输出数组值
2.实验代码
#include<stdio.h>
void input(int *arr,int n)
{
int i=0;
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
}
void max_min(int *arr,int n)
{
int j=0,x=0,y=n-1;
for(j=0;j<n;j++)
{
if(arr[x]>arr[j])
{
int swap;
swap=arr[x];arr[x]=arr[j];arr[j]=swap;
}
}
for(j=n-1;j>0;j--)
{
if(arr[y]<arr[j])
{
int temp;
temp=arr[y];arr[y]=arr[j];arr[j]=temp;
}
}
}
void output(int *arr,int n)
{
int k=0;
for(k=0;k<n;k++)
{
printf("%3d",arr[k]);
}
}
3.本题调试过程碰到问题及解决办法
无
3-2 指针选择法排序
1.设计思路
第一步:创建循环变量
第二步:定义j=0,k=0
第三步:将首元素与其他元素进行比较,根据大在前小在后进行交换,以此类推
2.实验代码
#include<stdio.h>
void sort(int *x,int n)
{
int j=0,k=0;
for(j=1;j<n;j++)
{
for(k=0;k<n-j;k++)
{
if(x[k]<x[k+1])
{
int swap;
swap=x[k];x[k]=x[k+1];x[k+1]=swap;
}
}
}
}
3.本题调试过程碰到问题及解决办法
无
4-1 判断回文字符串
1.设计思路
第一步:定义i,n
第二步:建立for循环进行比较
2.实验代码
bool palindrome( char *s )
{
int i,n;
for(i = 0,n = 0;s[i] != '\0';i ++)
{
n ++;
}
for(i = 0;i <= (n/2);i ++)
{
if(s[i] != s[n-i-1])
return 0;
}
return true;
}
3.本题调试过程碰到问题及解决办法
无
4-1 判断回文字符串
1.设计思路
第一步:定义i
第二步:建立for循环使t字符串中从m开始的字符赋予到s字符串中
2.实验代码
void strmcpy( char *t, int m, char *s ){
int i;
for(i=m;*(t+i-1)!='\0';i++){
*(s+i-m)=*(t+i-1);
}
*(s+i-m)='\0';
}
3.本题调试过程碰到问题及解决办法
无
学习总结和进度:
这两周学习了一些关于指针的知识,学习了如何使用指针,指针与数组的结合还有指针字符串的使用,我学的还不是太好,做一道题要很长时间,会多加练习。
git地址:https://git.coding.net/hgr123/text.git
点评作业:
http://www.cnblogs.com/dx2017/p/8560765.html
http://www.cnblogs.com/shilcz/p/8611461.html
http://www.cnblogs.com/gao628526/p/8551285.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步