第四周第四天:C基础

1.局部变量和全局变量

        局部变量(Local Variable):定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错。

       全局变量(Global Variable):定义:所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件

2.作业题
(1)交换二维矩阵的两行(函数实现):

#include<stdio.h>

#include<stdlib.h>

int Hang, Lie;

int **init_Array(int, int);

void swapArrayHang(int **Array, int FirstHang, int Second);

void printArray(int **Array);

int main() {

printf("请输入矩阵的行数和列数!\n");

scanf("%d %d", &Hang, &Lie);

int **Array = init_Array(Hang, Lie);

printf("请输入您要交换的行数!\n");

int a, b;

scanf("%d%d", &a, &b);

swapArrayHang(Array,a,b);

printArray(Array);

system("pause");

return 0;

}

int **init_Array(int Hang, int Lie) {

int ** Array = (int **)malloc(Hang * sizeof(int *));

for (int i = 0; i<Lie; i++) {

Array[i] = (int *)malloc(Lie * sizeof(int));

}

printf("请输入一个%d行%d列的二位矩阵:\n", Hang, Lie);

for (int i = 0; i<Hang; i++) {

for (int j = 0; j<Lie; j++) {

scanf("%d", &Array[i][j]);

}

}

return Array;

}

void swapArrayHang(int **Array, int FirstHang, int SecondHang) {

int *tempArray = (int *)malloc(Lie * sizeof(int));

for (int i = 0; i<Lie; i++) {

tempArray[i] = Array[FirstHang-1][i];

Array[FirstHang-1][i] = Array[SecondHang-1][i];

Array[SecondHang-1][i] = tempArray[i];

}

}

void printArray(int **Array) {

printf("二维数组:\n");

for (int i = 0; i<Hang; i++) {

for (int j = 0; j<Lie; j++) {

printf("%d ", Array[i][j]);

}

printf("\n");

}

printf("\n");

}

(2)每位数的积小于和的两位数

#include<stdio.h>

#include<stdlib.h>

int chengJi(int n);

int he(int n);

int main() {

for (int n = 10; n <= 99; n++) {

if (chengJi(n) < he(n)) {

printf("%d ", n);

}

}

printf("100\n");

system("pause");

return 0;

}

int chengJi(int n) {

int a = n % 10;

int b = n / 10;

return a*b;

}

int he(int n) {

int a = n % 10;

int b = n / 10;

return a + b;

}

(3)必有球的个数和其他球的个数

#include<stdio.h>

#include<stdlib.h>

const char Red = 'r';

const char White = 'w';

const char Black = 'b';

void biYouBlack();

void biYouRed();

void biYouWhite();

int main() {

printf("请输入必有的球的颜色(r/w/b):\n");

char temp;

scanf("%c", &temp);

switch (temp)

{

case 'r': {

biYouRed();

break;

}

case 'w': {

biYouWhite();

}

default:

biYouBlack();

break;

}

system("pause");

return 0;

}

void biYouBlack() {

for (int b = 1; b <= 6; b++) {

for (int r = 0; r <= 3; r++) {

int NumOfOthers = 8 - b;

int NumOfWhite = NumOfOthers - r;

if (NumOfWhite > 5||NumOfWhite<0) {

continue;

}

else {

printf("%d red,%d white,%d black\n",r,NumOfWhite,b);

}

}

}

}

void biYouRed() {

for (int r = 1; r <= 3; r++) {

for (int w = 0; w <= 5; w++) {

int NumOfOthers = 8 - r;

int NumOfBlack = NumOfOthers - w;

if (NumOfBlack > 6 || NumOfBlack < 0) {

continue;

}

else {

printf("%d red,%d white,%d black\n", r, w, NumOfBlack);

}

}

}

}

void biYouWhite() {

for (int w = 1; w <= 5; w++) {

for (int b = 0; b <= 6; b++) {

int NumOfOthers = 8 - w;

int NumOfRed = NumOfOthers - b;

if (NumOfRed > 3 || NumOfRed < 0) {

continue;

}

else {

printf("%d red,%d white,%d black\n", NumOfRed, w, b);

}

}

}

}

(4)数列求和

#include<stdio.h>

#include<stdlib.h>

double **init_Array(int Hang, int Lie);

int main() {

double **Array = init_Array(2, 20);

double sum = 0;

for (int j = 0; j < 20; j++) {

double temp = Array[0][j]/Array[1][j];

sum+=temp;

}

printf("%f\n",sum);

system("pause");

return 0;

}

double **init_Array(int Hang, int Lie) {

double ** Array = (double **)malloc(Hang * sizeof(double *));

for (int i = 0; i<Lie; i++) {

Array[i] = (double *)malloc(Lie * sizeof(double));

}

for(int i=0;i<Hang;i++){

for(int j=0;j<Lie;j++){

Array[i][j]=0.0;

}

}

for (int j = 0; j<Lie; j++) {

for (int i = 0; i<Hang; i++) {

if (i == 0 && j == 0) {

Array[i][j] = 2.0;

continue;

}

if (i == 1 && j == 0) {

Array[i][j] = 1.0;

continue;

}

if(i==0){

Array[i][j] = Array[i][j-1] + Array[i + 1][j-1];

}

else{

Array[i][j] = Array[i-1][j-1];

}

}

}

return Array;

}

(5)矩阵转置

#include<stdio.h>

#include<stdlib.h>

int Hang,Lie;

int **init_Array(int Hang, int Lie);

void printArray(int **Array);

int **tranSpose(int **Array);

int main() {

printf("请输入矩阵的行数和列数!\n");

scanf("%d %d", &Hang, &Lie);

int **Array = init_Array(Hang, Lie);

int **TheArray = tranSpose(Array);

printArray(TheArray);

system("pause");

return 0;

}

int **init_Array(int Hang, int Lie) {

int ** Array = (int **)malloc(Hang * sizeof(int *));

for (int i = 0; i<Lie; i++) {

Array[i] = (int *)malloc(Lie * sizeof(int));

}

printf("请输入一个%d行%d列的二位矩阵:\n", Hang, Lie);

for (int i = 0; i<Hang; i++) {

for (int j = 0; j<Lie; j++) {

scanf("%d", &Array[i][j]);

}

}

return Array;

}

int **tranSpose(int **Array) {

int ** tempArray = (int **)malloc(Lie * sizeof(int *));

for (int i = 0; i<Hang; i++) {

tempArray[i] = (int *)malloc(Hang * sizeof(int));

}

for (int tempHang = 0; tempHang < Lie; tempHang++) {

for (int tempLie = 0; tempLie < Hang; tempLie++) {

tempArray[tempHang][tempLie] = Array[tempLie][tempHang];

}

}

return tempArray;

}

void printArray(int **Array) {

printf("二维数组:\n");

for (int i = 0; i<Hang; i++) {

for (int j = 0; j<Lie; j++) {

printf("%d ", Array[i][j]);

}

printf("\n");

}

printf("\n");

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容