本章有些题没写,有的是前面的内容,有一部分要用指针方便点,懒了hhh
魔方问题还是推荐各位大一新生去看看的,有助于提高能力
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand() % x)
#define N 3
int main() {
//1
/*
for (int i = 1; i < 100; i++) {
int flag = 0;
for (int j = 2; j <= i / 2; j++)
{
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0)
{
printf("%d是一个素数\n", i);
}
}
*/
//2
/*
int a[10] = {1,3,55,8,13,23,66,2,33,21};
for (int i = 0; i < 10; i++)
{
for (int j = i+1; j < 10; j++)
{
if (a[i] > a[j])
{
int t = 0;
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ",a[i]);
}
*/
//3
/*
int sum = 0;
int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
printf("对角线元素之和为%d\n", sum = a[0][0] + a[0][2] + a[1][1] * 2 + a[2][0] + a[2][2]);
*/
//4
/*
int arr[6] = { 3,5,7,9,11 };
int n,flag;
scanf_s("%d",&n);
for (int i = 0; i < 6; i++)
{
//输入数字小于第一个时
if (n < arr[0])
{
for (int i = 5; i > 0; i--)
{
arr[i] = arr[i - 1];
}
arr[0] = n;
break;
}
else if (n > arr[i] && n <= arr[i + 1]) {
flag = i + 1;
for (int i = 5; i > flag; i--)
{
arr[i] = arr[i - 1];
}
arr[flag] = n;
break;
}
//输入数字大于最后一个时
else if (n > arr[4])
{
arr[5] = n;
break;
}
}
//输出数组
for (int i = 0; i < 6; i++)
{
printf("%d ",arr[i]);
}
*/
//5
/*
int arr[5] = {8,6,5,4,1};
for (int i = 0; i < 5/2; i++)
{
int t = 0;
t = arr[i];
arr[i] = arr[4 - i];
arr[4 - i] = t;
}
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
*/
//6
/*
int a[10][10];
//初始化数组
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
a[i][j] = 0;
}
}
//第一列全为1
for (int i = 0; i < 10; i++)
{
a[i][0] = 1;
}
//运算
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
}
}
//输出数组
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
*/
//13
/*
char str1[10] = "Hello ", str2[10] = "World";
char str[20];
strcpy_s(str, str1);
for (int i = 0; i < 20; i++)
{
if(str[i] == '\0') {
int k = 0;
for (int j = i; j < 20; j++)
{
str[j] = str2[k];
k++;
}
break;
}
}
puts(str);
*/
//7
/*
int a[N][N] = { 0 };
int x = 0;
int y = N / 2;
a[x][y] = 1;
for (int i = 2; i <= N * N; i++)
{
if ((i -1)%N ==0)
{
x++;
}
else
{
x--;
x = (x + N) % N;
y++;
y %= N;
}
a[x][y] = i;
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N;j++) {
printf("%d ",a[i][j]);
}
printf("\n");
}
*/
/*
int arr[N][N];
int max, min;
int flag = 0;
srand((unsigned int)time(0));
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++) {
arr[i][j] = random(100);
}
}
for (int i = 0; i < N; i++)
{
flag = 0;
max = 0;
//找出某行中最大的数,记下其坐标
for (int j = 1; j < N; j++)
{
if (arr[i][max] < arr[i][j])
{
max = j;
}
}
//在该列中比较,若为最小则为鞍点
for (int k = 0; k < N; k++)
{
if (arr[i][max] > arr[k][max]) {
flag = 1;
break;
}
}
if (flag == 0)
{
printf("第%d行第%d列的元素为一个鞍点\n",i + 1,max + 1);
break;
}
else
{
printf("第%d行无鞍点\n",i);
}
}
//输出
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++) {
printf("%d\t",arr[i][j]);
}
printf("\n");
}
*/
return 0;
}