二维数组输出

题目描述:

输入一个整数N,输出一个N行 N列的二维矩阵,矩阵中的元素用\1 ~ N*N顺序螺旋填充。

输入格式

一个整数N(N<=10)

输出格式

输出N行 N列 的矩阵,元素之间用一个空格隔开,行末不要有多余的空格。

样例

输入数据

3

输出数据

1 2 3

8 9 4

7 6 5

代码示例如下:
#include <stdio.h>

void spiralMatrix(int n) {
    int matrix[10][10];
    int num = 1;
    int rowStart = 0, rowEnd = n - 1;
    int colStart = 0, colEnd = n - 1;

    while (num <= n * n) {
        // 从左到右
        for (int i = colStart; i <= colEnd; i++) {
            matrix[rowStart][i] = num++;
        }
        rowStart++;

        // 从上到下
        for (int i = rowStart; i <= rowEnd; i++) {
            matrix[i][colEnd] = num++;
        }
        colEnd--;

        // 从右到左
        for (int i = colEnd; i >= colStart; i--) {
            matrix[rowEnd][i] = num++;
        }
        rowEnd--;

        // 从下到上
        for (int i = rowEnd; i >= rowStart; i--) {
            matrix[i][colStart] = num++;
        }
        colStart++;
    }

    // 输出矩阵
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int N;
    scanf("%d", &N);
    spiralMatrix(N);
    return 0;
}
运行结果如下:

C语言小案例_C语言

求函数值

题目描述:

输入x(x为整数),求函数值F(x)
函数定义如下:
F(x)=x x小于2
G(x)=x x小于2
F(x)=G(x/2)*2 x大于等于2且x为偶数
F(x)=G((x-1)/2) x大于等于2且x为奇数
G(x)=G(x/2)+1 x大于等于2且x为偶数
G(x)=x x为奇数

输入样例 10
输出样例 10

代码示例如下:

#include <stdio.h>
int G(int x) {
    if(x < 2 || x%2!=0)
        return x;
    return G(x/2)+1;
}
int F(int x) {
    if(x < 2)
        return x;
    if(x>= 2 && x%2==0)
        return G(x/2)*2;
    if(x>= 2 && x%2!=0)
        return G( (x-1)/2 );
}
int main(void) {
    int x;
    scanf("%d", &x);
        printf("%d\n", F(x));
    
    return 0;
}

运行结果如下:

10

C语言计算一元二次方程

题目描述如下图所示:

C语言小案例_C语言_02

代码示例如下:
#include<stdio.h>
#include<math.h>
int main() {
    double a,b,c,d,x,r,m;
    double x1=0;
    double x2=0;
    scanf("%lf %lf %lf",&a,&b,&c);
    d=b*b-(4*a*c);
    printf("d=%.2lf\n",d);
    if(a==0&&b==0&&c==0){
        printf("Zero Equation");
    }else if(a==0&&b==0&&c!=0){
        printf("Not An Equation");
    }else if(d==0) {    //德尔塔d是为0时,只有一个实数根。 
        x=(-b)/(2*a);
        printf("%.2lf\n",x);
    } else if(d>0){
        x1=(-b+sqrt(d))/(2*a);
        x2=(-b-sqrt(d))/(2*a);
        if(x1>x2){
            printf("x1=%.2lf,x2=%.2lf",x1,x2);
        } else{
            printf("x1=%.2lf,x2=%.2lf",x2,x1);
        }
    }else{
      r=(-b)/(2*a);
      m=sqrt(-d)/(2*a);
      printf("%x1=.2lf+%.2lfi,x2=%.2lf-%.2lfi\n",r,m,r,m);
    }
    return 0;
}
运行结果如下:

C语言小案例_C语言_03