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<stdio.h>
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、点评:

王姝雯 http://www.cnblogs.com/phsudie/p/8590614.html

丰大为 http://www.cnblogs.com/DavidPark/p/8551402.html

董雅洁 http://www.cnblogs.com/exo123/p/8575595.html

4、请用表格和折线图呈现你本周(3/12 8:00~3/26 8:00)的代码行数和所用时间、博客字数和所用时间

原文地址:https://www.cnblogs.com/17-1/p/8644191.html

时间: 2025-01-04 05:28:58

C语言-第一次作业的相关文章

c语言第一次作业

C语言是一门编程语言,简单点说,就是由人类书写按照一定规范书写的字符,通过一定手段(编译链接)转换后,可以让电脑或者其它电子芯片"读懂",并按照其要求工作的语言. 在所有的编程语言中,C语言是相对古老而原始的,同时也是在同类语言中更接近硬件,最为高效的编程语言.其应用广泛,设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.目前C语言在底层开发,驱动编写,嵌入式开发等方面仍有着不可替代的地位. 而所谓C语言源代码,就是依据

高级c语言第一次作业刘子威

C语言程序的基本语句能完成功能的体会.(结合飞机游戏等) 数据输出包括字符输出函数putchar()和格式输出函数printf().数据输入包括字符输入函数getchar()和格式输入函数scanf() 飞机软件中default:printf('\n 错误,请重新选择...\n'); void print(int [][N]);//输出函数 void movebul(int [][N]);//子弹移动函数 void movepla(int [][N]);//敌机移动函数 void setting

C语言——第一次作业

**学习内容总结** 本周进行了算法的初步学习,用计算机的思维方式去思考问题,并学习了如何用传统程序框图表示算法. 相关内容: 1.算法是用来解决问题的方法与步骤. 2.计算机擅长重复,常用枚举的方法求解. 3.程序框图的三种基本结构:①顺序结构 ②选择结构 ③循环结构  a当型循环结构 b直到型循环结构 附:网络作业使我学会了Git的一些简单用法,对简单代码的熟练度有所提升. **遇到的问题和解决方法** 问题1:做PAT习题的时候,由于对代码的不熟练,出现了一些如没有换行.没有分句.忽略间距

C 语言学习 第一次作业总结

第一次的作业是冯老师布置的练习题,需要在pta平台上完成.我这边看不到结果,但是透过冯老师给出的截图,同学们都还是认真的去做的.同时,我这边也布置了一个持续 3 周的作业:熟悉 git 的使用.因为后期的小项目,肯定是要配合 coding.net 平台完成的,我不希望我的学生到时候一边焦头烂额的写代码,一边还要去熟悉软件的使用. 第一次作业,主要有以下 3 项: 开通博客 写一篇自我介绍 写本次作业的总结 其中,第一项作业是后面两项作业的前提.用博客来写作业和记录自己学习的点点滴滴,对于同学们来

软工实践第一次作业-黄紫仪

软工实践第一次作业 前言:emmmm之前因为没太注意,想着计算机专业怎么会有软工实践.所以之前一直都没去管.等到开学才发现突然翻车.QAQ现在赶紧先来补交一下. (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机专业的期待,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?   说到选择计算机,emmmm,某种意义上来说是打RPG游戏打出来的想法,因为很喜欢这类的游戏,所以也想去试着写一个属于自己的这种

第一次作业:一条咸鱼和计算机

第一次作业:一条咸鱼和计算机 第一部分:结缘计算机        我的经历和所有科班和非科班的博主都不太一样,他们大多数是喜欢计算机,或者认为计算机就业情况好,而我却是情非得已.第一次认识计算机应该是小学的时候再学校的机房里,当时的电脑是那种大屁股电脑,贼卡的那种,我们当时的计算机课应该是叫信息课,上课的时候总是偷偷一起玩金山打字里面的游戏,就是警察抓小偷的那个,想想当时一边玩游戏一边还要防被老师发现,还真的是挺刺激的啊.感觉我从前对计算机的印象就等同于玩游戏,小学的时候常年混迹电子厅,虽然经常

第一次作业_RTCSD2017

第一次作业要求: ubuntu linux环境下搭建arm交叉编译环境,git clone FreeRTOS例程并编译. 搭建交叉编译环境: 笔记本配置: Lenovo Y50,8GB Memory,Core i5-4210H CPU @ 2.90GHz x 4,NVIDIA GTX 860M 双系统: Windows 10  &  ubuntu 16.04 LTS (磁盘空间 340GB) 步骤: 1.设置软件源 系统设置-->软件和更新-->下载自:中国的服务器(mirrors.a

java第一次作业0

lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助,对于java的使用,目前处于初学者的状态,感觉到比较难. #2. 书面作业 1.为什么java程序可以跨平台运行?执行java程序的步骤是什么?(请用自己的语言书写) 因为java只在jvm中运行,跟平台不是直接接触的.步骤:编写java程序--生成class文件--虚拟机中解释文件. 2.什么是j

沧海一粟小组(第一次作业)

沧海一粟小组(第一次作业) 第一次作业主要是每个组员的介绍与想法: 黄启晨(组长)想法: 希望通过小组学习,带动大家一起学好软件工程这门学科,依托<构建之法-现代软件工程>这本有意义的书,这本书不像平常的教材那样死板,市面上的教材中仿佛团队中的每个人都是技术能手,按部就班地搞需求分析,设计······等等,但其实现实中,一个团队其实是由一群水平层次不齐的人组成的团队,要从用户,生活,相关技术的进步,超前的设想中挖掘,提出,解决需求.而这就是这本书能够带给我们的东西,它告诉了我们要创新,如何平衡