第一次作业

题目6-1 计算两数的和与差

1.设计思路

①定义函数,求出和与差

2.实验代码

#include <stdio.h>

void sum_diff( float op1, float op2, float *psum, float *pdiff );

int main()
{
    float a, b, sum, diff;

    scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
	
    return 0; 
}
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
  *psum=op1+op2;
  *pdiff=op1-op2;
}

3.本题调试过程碰到问题及解决办法

题目6-1 拆分实数的整数与小数部分

1.设计思路

①定义中间变量temp(小数部分)

②执行while循环每次减1直到把整数部分减没,剩下小数部分temp

③将整数部分和小数部分的值赋给相应的指针变量

2.实验代码

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

int main()
{
    float x, fracpart;
    int intpart;

    scanf("%f", &x);
    splitfloat(x, &intpart, &fracpart);
    printf("The integer part is %d\n", intpart);
    printf("The fractional part is %g\n", fracpart);

    return 0;
}
void splitfloat( float x, int *intpart, float *fracpart )
 {
   float temp;
   temp=x;
   while(temp-1>=0)
   {
     temp--;
   }
   *intpart=x-temp;
   *fracpart=temp;
 }

3.本题调试过程碰到问题及解决办法

①代码为while(temp-1>0)时,有部分正确,在Dev中调试时运行结果为

②代码为while(temp-1>=0)时,答案正确,在Dev中调试时运行结果为

③如果不>=0就会少一次temp--,运行结果就会都为1

6-2 在数组中查找指定元素

1.设计思路

①题中要求查找指定元素,如果找到返回元素最小的下标,否则返回-1。

②利用for循环逐个比较,用if语句进行判断。

2.实验代码

#include <stdio.h>
#define MAXN 10

int search( int list[], int n, int x );

int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");

    return 0;
}
int search(int list[], int n, int x)  
{  
    int i;  
    for(i=0;i<n;i++)  
    {  
      if(list[i]==x)  
        {  
            return i;  
        }  
    }  
    return -1;  
}  

3.本题调试过程碰到问题及解决办法

①不知道相等时执行返回值后还会不会执行不相等时的返回值,运行过后发现只会返回一个返回值。

②在return i后可加也可不加break。

 

7-1 数组元素循环右移问题

1.设计思路

(1)主要描述题目算法

①题中要求实现将数组元素循环右移,且不允许使用另外数组。

②用scanf键盘输入数组元素个数,及右移的位数。

③第一次利用for循环给数组赋值

④定义变量x当右移位数大于给定的数组元素时可以循环回来(例如:数组中有6个元素,而右移位数为7时,则右移1个元素)

⑤第二次利用for循环输出被移后面的数

⑥第三次利用for循环输出被移前面的数

(2)流程图

2.实验代码

#include<stdio.h>
int main()
{
    int n,i,m;
    scanf("%d %d",&n,&m);
    int a[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int x=m%n;
    for(i = n - x;i<n;i++)
        printf("%d ",a[i]);
    for(i = 0; i<n-x-1;i++)
        printf("%d ",a[i]);
    printf("%d",a[n-x-1]);
    return 0;
}

3.本题调试过程碰到问题及解决办法

①当给定6个数组元素时不能右移7位解决办法int x = m % n,利用余数实现循环回来。

 

posted @ 2018-04-03 22:38  郑宏泽  阅读(244)  评论(0编辑  收藏  举报