二维数组输出
题目描述:
输入一个整数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;
}
运行结果如下:
求函数值
题目描述:
输入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语言计算一元二次方程
题目描述如下图所示:
代码示例如下:
#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;
}