C/C++知识点之C语言-第一次作业
小标 2018-09-18 来源 : 阅读 1217 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言-第一次作业,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言-第一次作业,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

题目6-1 计算两数的和与差
1.设计思路
(1)主要描述题目算法
第一步:看主函数知道程序输入浮点型变量a,b,通过函数计算输出和与差。
第二步:函数部分将a赋值op1,b赋值op2,&sum赋值到指针变量psum,&diff赋值到指针变量pdiff。
第三步:在函数内写出计算过程。
(2)流程图
主函数:

调用函数:

2.实验代码
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
  *psum=op1+op2;
  *pdiff=op1-op2;
}
3.本题调试过程碰到问题及解决办法

题目6-2 拆分实数的整数与小数部分
1.设计思路
(1)主要描述题目算法
第一步:主函数定义浮点型变量x, fracpart;整形变量intpart。输入x并通过调用函数splitfloat计算,之后输出结果。
第二步:x赋值给x,&intpart赋值给intpart, &fracpart赋值给fracpart。
第三步:将x强制转化为整型,用实数部分减去整数部分得到小数部分。
(2)流程图
主函数:

调用函数:

2.实验代码
void splitfloat( float x, int *intpart, float *fracpart )
{
  *intpart=(int)x;
  *fracpart=x-(int)x;
}
3.本题调试过程碰到问题及解决办法

题目6-1 在数组中查找指定元素
1.设计思路
(1)主要描述题目算法
第一步:主函数定义整型变量i, index, n, x,a[10],输入n,for循环输入数组元素,输入待查元素x,通过函数search得到index值,若index不为-1,则输出index
的值,否则输出Not found;
第二步:定义指针变量p,整型变量i;p指向list[i];
第三步:通过for循环以及if判断语句观察数组中是否有x的值,若得到则将i返回,否则返回-1。
(2)流程图
主函数:

调用函数:

2.实验代码
int search( int list[], int n, int x )
{
  int *p,i;
  p=&list[i];
  for(i=0;i<n;i++)
  {
    if(*p++==x)
      return i;
  }
  return -1;
}
3.本题调试过程碰到问题及解决办法
使用指针变量时,在循环内应用*p++表示数组元素。
题目6-2 找最大值及其下标
1.设计思路
(1)主要描述题目算法
第一步:定义N为10.主函数定义整型变量a[N],i,max,p=0;for循环输入数组元素,经过函数fun(a,&p,N)调用,得到最大值max及下标p的值;输出。
第二步:fun(a,&p,N)中的变量赋值给int fun(int a,int b,int n)中的变量;
第三步:先将首元素赋给max作为最大值,然后通过for循环一次比较,将最大的留下,并将下标赋给b。
(2)流程图
主函数:

调用函数:

2.实验代码
int fun(int *a,int *b,int n)
{
  int i;
  int  max=*a;
  for(i=1;i<N;i++)
  {
    if(*(a+i)>*a)
    {
      *b=i;
      max=*(a+i);
    }
  }
  return max;
}
3.本题调试过程碰到问题及解决办法

6-1 最小数放前最大数放后
1.设计思路
(1)主要描述题目算法
第一步:本题主要是通过调用三个函数之后得到并输出结果。第一个和第三个函数运用for循环输入和输出。
第二步:第二个函数最主要。分为两部分,先用for循环将所有元素中的最大值和最小值找出,然后将最大值与第一个数交换,最小值与最后一个数交换即可。、
(2)流程图
主函数:

调用函数:
①input(int *arr,int n)

②max_min(int *arr,int n)

③output(int *arr,int n)

2.实验代码
void input(int *arr,int n)
{
  int i;
  for(i=0;i<n;i++)
  {
    scanf("%d",arr+i);
  }
}
void max_min(int *arr,int n)
{
  int i,max,min,t,p;
  max=min=*arr;
  for(i=0;i<n;i++)
  {
    if(max<*(arr+i))
    {
      max=*(arr+i);
      t=i;
    }
    if(min>*(arr+i))
    {
      min=*(arr+i);
      p=i;
    }
  }
  int j;
  j=*(arr+t);
  *(arr+t)=*(arr+n-1);
  *(arr+n-1)=j;
  int k;
  k=*(arr+p);
  *(arr+p)=*arr;
  *arr=k;
}
void output(int *arr,int n)
{
  int i;
  for(i=0;i<n;i++)
  {
    printf("%3d",*(arr+i));
  }
}
3.本题调试过程碰到问题及解决办法

题目6-2 指针选择法排序
1.设计思路
(1)主要描述题目算法
第一步:本题要调用一个选择排序法的函数,需要用到双循环结构。
第二步:调用函数第一层循环为趟数,第二层为比较大小,一次比较找出最值放到最前面。
(2)流程图
主函数:

调用函数:

2.实验代码
void sort(int *x,int n)
{
  int i,j,t;
  for(i=1;i<=n-1;i++)
  {
    for(j=0;j<=n-i-1;j++)
    {
      if(x[j]<x[j+1])
      {
        t=x[j];
        x[j]=x[j+1];
        x[j+1]=t;
      }
    }
  }
}
3.本题调试过程碰到问题及解决办法
大括号较多导致后面缺少一个作结尾,编译错误。
仔细检查后发现错误并改正。

6-1 判断回文字符串
1.设计思路
(1)主要描述题目算法
第一步:观察主函数,将数组元素输入之后通过调用palindrome判断字符串是否为回文字符串。最后输出。
第二步:通过strlen函数读取该数组的长度。
第三步:比较字符串中对称位置的字符是否相等,若有不相等的则返回值为false,若没有返回false,则palindrome函数返回值为true。
(2)流程图
主函数:

调用函数:

2.实验代码
bool palindrome( char *s )
{
    int i;
    int n = strlen(s);
    for(i=0;i<=n/2;i++)
    {
        if(*(s+i)!=*(s+n-i-1))
        return false;
    }
    return true;
}
3.本题调试过程碰到问题及解决办法

6-2 使用函数实现字符串部分复制
1.设计思路
(1)主要描述题目算法
第一步:主函数定义字符串t[MAXN], s[MAXN](MAXN=20),变量m。
第二步:引用函数strmcpy( char t, int m, char s )来实现字符串部分复制。输出。
(2)流程图
主函数:

调用函数:

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.本题调试过程碰到问题及解决办法
本题函数部分不知道怎么实现,通过同学讲解帮助完成。
附加题
实验代码
#include
int main()
{
    char c;
    while((c=getchar())!=‘\n‘)
    {
        if((c>=‘a‘&&c<=‘z‘)||(c>=‘A‘&&c<=‘Z‘))
        {
            c=c+2;
            if(c>‘Z‘&&c<=‘z‘+2||c>‘z‘)
            c=c-26;
        }
        printf("%c",c);
    }
    printf("\n");
    return 0;
}

学习总结和进度
1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?
学会了指针在程序中的运用。了解到指针变量与之前所学的一些变量之间的运用。
还学到了统计字符串长度的方法(运用strlen函数)。
还没学到的或者说希望学到的是对指针变量更熟练地运用,目前还很生疏,应多多练习。
2、git地址: https://git.coding.net/ZJY15/ZJY15.git
上传:

3、点评:
王姝雯 //www.cnblogs.com/phsudie/p/8590614.html
丰大为 //www.cnblogs.com/DavidPark/p/8551402.html
董雅洁 //www.cnblogs.com/exo123/p/8575595.html
4、请用表格和折线图呈现你本周(3/12 8:00~3/26 8:00)的代码行数和所用时间、博客字数和所用时间
 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程