【C语言】数组

一维数组

数组的定义:

方式一:int a[10];     // 事先自己写明

方式二:int n;  scanf("%d",&n);  int a[n];      // 用户输入


简单运用:

对10个数组元素依次赋值为0,1,2...,9,要求按逆序输出。

#include<stdio.h>
int main(){
	int i,a[10];
	for(i = 0;i <= 9;i++){
		a[i] = i;      // 对数组元素 a[0]-a[9]赋值
	}
	for(i = 9;i >= 0;i--){
		printf("%d ",a[i]);   // 输出 a[9]-a[0]共10个元素
	}
	printf("\n");
	return 0;
}

运用于斐波那契数列。

#include<stdio.h>
int main(){
	int i;
	int f[20] = {1,1};   // 对最前面的2个元素赋值均为 1
	for(i = 2;i < 20;i++){
		f[i] = f[i-2]+f[i-1];
	}
	for(i = 0;i < 20;i++){
		if (i%5 == 0)     // 一行输出 5个数
			printf("\n");    
		printf("%10d ",f[i]);    // 对齐格式
	}
	printf("\n");
	return 0;
}

输入10个数,运用冒泡法排序输出。

#include<stdio.h>
int main(){
	int a[10];
	int i,j,t;
	printf("input 10 numbers : \n");
	for(i = 0;i < 9;i++){
		scanf("%d",&a[i]);
	}
	printf("\n");
	for(j = 0;j < 9;j++)      // 重点!!!
		for(i = 0;i < 9-j;i++)
			if(a[i] > a[i+1]){
				t = a[i];
				a[i] = a[i+1];
				a[i+1] = t;
			}
	printf("the sorted numbers : \n");
	for(i = 0;i < 10;i++)
		printf("%d ",a[i]);
	printf("\n");
	return 0;
}

二维数组

数组的定义:

方法一: float  a[3][4],b[2][3];

方法二: int a[3][4] = {{1,2,3,4},{5,6,7,8},{5,6,3,4}};

方法三: int a[3][4] = {{1},{5},{6}};     // 未被赋值的都为0


简单运用:

将2行3列矩阵a的数,存放到3行2列的矩阵b中。

#include<stdio.h>
int main(){
	int a[2][3] = {{1,2,3},{4,5,6}};
	int b[3][2],i,j;
	printf("array a:\n");     // 输出矩阵 a
	for(i = 0;i < 2;i++){
		for(j = 0;j < 3;j++){
			printf("%3d ",a[i][j]);
			b[j][i] = a[i][j];
		}
		printf("\n");
	}
	printf("\n");
	printf("array b:\n");     // 输出矩阵 b
	for(i = 0;i < 3;i++){
		for(j = 0;j < 2;j++){
			printf("%3d ",b[i][j]);
		}
		printf("\n");
	}
	return 0;
}

存在3×4的矩阵a,找到矩阵中最大的数,并确定它的行和列。

打擂台算法

#include<stdio.h>
int main(){
	int i,j,row=0,colum=0,max;
	int a[3][4] = {{1,2,3,4},{4,5,8,9},{-13,-5,3,10}};   // 赋初值
	max = a[0][0];     // 先将 a[0][0] 当作最大
	for(i = 0;i < 3;i++){
		for(j = 0;j < 4;j++){
			if(a[i][j] > max){
				max = a[i][j];
				row = i + 1;     // 行数从 0 开始,所以所在行 + 1
				colum = j + 1;
			}
		}
	}
	printf("max = %d\nrow = %d\ncolum = %d\n",max,row,colum);
	return 0;
}

字符数组

数组的定义:

方法一: char c[10];

方法二: c[0] = M;c[1] = E;

方法三: char c[2] = {'M','E'};


简单运用:

输出一个菱形图。

#include<stdio.h>
int main(){
	char diamond[][5] = {{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
	int i,j;
	for(i = 0;i < 5;i++){
		for(j = 0;j < 5;j++){
			printf("%c",diamond[i][j]);
		}
		printf("\n");
	}
	return 0;
}

 输入一行字符,统计其中有多少个单词。

#include<stdio.h>
int main(){
	char string[50];
	int i,num = 0,word = 0;
	char c;
	gets(string);
	for(i = 0;(c = string[i]) != '\0';i++){   // 只要不是结束符‘\0’,就继续执行循环
		if(c == ' ') word = 0;     // 如果是空格字符,使word置为0
		else if(word == 0){        // 如果不是空格字符,且word置为了0
			word = 1;
			num++;
		}
	}
	printf("There are %d words in this line.\n",num);
	return 0;
}

输入三个字符串,找到其中最大的一个。(在英文字典位置靠后的字母大,且小写字母比大写字母大)

#include<stdio.h>
#include<string.h>
int main(){
	char str[3][20];
	char string[20];
	int i;
	for(i = 0;i < 3;i++){
		gets(str[i]);      //读入 3 个字符串,分别给str[0],str[1],str[2]
	}
	if(strcmp(str[0],str[1]) > 0)
		strcpy(string,str[0]);
	else
		strcpy(string,str[1]);
	printf("%s",string);
	if(strcmp(str[2],string) > 0)
		strcpy(string,str[2]);
	printf("\nthe largest string is :\n%s\n",string);
	return 0;
}

#include<string.h>常用函数

puts/gets     --->    输出或输入一个字符

strcat     --->    连接字符

strcat(str1,str2);

strcpy     --->    字符串复制

strcpy(str2,str1);    // 将str1复制到str2内

strcmp     --->     字符串比较

strcmp(str1,str2)>0;     // str2>str1      ASCⅡ

strlen     --->     字符串长度

strlen("China");

strlwr     --->     字符串转小写

strupr     --->     字符串转大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值