c - 使用 C 中的 printf 打印 * 相应的数字

标签 c printf

我正在尝试完成这项在各自编号中打印“*”的作业。另外,如果您看到我需要显示最小和最大数字的图片,我该怎么做?我正在考虑用一个数组来存储这些数字,但是当我创建数组并尝试传递它们时,我收到了一个错误。

这是图片: Output Example

#include <stdio.h>
#include <limits.h>
#include <math.h>

int f(int);

int main(void){
    int i, t, funval,tempL,tempH;
        int a;


    // Make sure to change low and high when testing your program
    int low=-3, high=11;
    for (t=low; t<=high;t++){
        printf("f(%2d)=%3d\n",t,f(t));

        }

    printf("\n");
    printf("   ");
    for (i=1; i<=31; i+=5)
        printf("%3d   ", i);
        printf("\n");
        printf("   ");
    for (i=1; i<=31; i+=5)
        printf("  |   ");
        printf("\n");


    for (t=low; t<=high;t++){
        printf("t=%2d\n",t);

    }
    printf("\n");
   for(i=0;i<=sizeof(nums)/sizeof(int);i++){
    if (nums[i] > max)
        {
      max = nums[i];
        }
   if (nums[i] < min)
        {
      min = nums[i];
        }
    }
    printf("Min: %d\n", min);
    printf("Max: %d\n", max);

    printf("\n");
    printf("   ");
    for (i=min; i<=max; i+=5)
        printf("%3d   ", i);
        printf("\n");
        printf("   ");
    for (i=min; i<=max; i+=5)
        printf("  |   ");
        printf("\n");


    for (t=low; t<=high;t++){
    printf("t=%2d\n",t);

    }

    // Your code here...
    return 0;
}


int f(int t){
    // example 1
    return (t*t-4*t+5);

    // example 2
    // return (-t*t+4*t-1);

    // example 3
    // return (sin(t)*10);

    // example 4
    // if (t>0)
    //  return t*2;
    // else
    //  return t*8;
}

最佳答案

#include <stdio.h>
#include <stdlib.h>

int parabola1(int);

int *calc(int low, int high, int (*f)(int), int *size, int *min, int *max){
/*
#input
low, high : range {x| low <= x <= high}
f : function
#output
*size : Size of array
*min : Minimum value of f(x)
*max : Maximum value
return : pointer to first element of int num[*size]
         NULL if this can not be ensured.
*/
    int i, x, *nums;
    *size = high - low + 1;
    *max = *min = f(low);//value of the provisional
    if(NULL==(nums=malloc(*size*sizeof(*nums)))){
        return NULL;//max and min are unavailable
    }
    for(i = 0, x = low; x <= high; ++x, ++i){
        nums[i] = f(x);
        if(nums[i] > *max)
            *max = nums[i];
        if(nums[i] < *min)
            *min = nums[i];
    }
    return nums;
}

int main(void){
    int i, t;
    int *nums, size;
    int low=-3, high=9, min, max;

    nums = calc(low, high, parabola1, &size, &min, &max);
    for (i=0; i<size;i++){
        printf("f(%2d)=%3d\n", low+i, nums[i]);
    }
    printf("--\n");
    printf("min=%3d\n", min);
    printf("max=%3d\n", max);
    printf("--\n");

    t = -2;
    printf("t=%2d%*s%c\n", t, nums[t-low]-min, "", '*');
    free(nums);
    return 0;
}

int parabola1(int t){
    return t*(t-4)+5;
}

关于c - 使用 C 中的 printf 打印 * 相应的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614386/

相关文章:

c - fgetc 打印错误的字符到控制台

c - scanf 和 scanf_s 之间的区别

c - 如何使用PIC18在 Debug模式下模拟中断?

java - Linux,JNA : UnsatisfiedLinkError on liblo second method call

c - 将指向字符数组的指针传递给函数?

bash - bash 中的 awk 和 printf

c - 如何在 linux(gcc) 中将 int 转换为 char/string,反之亦然?

matlab - matlab/octave 中结构内容和字段名的格式化打印

在 C 中将代码点转换为 wchar_t

c# - 调试断言失败 : C++ exception in a C# application?