1.
#include<stdio.h>
#include<string.h>
int main(int argc,char const *argv)
{
char arr[20] = "";
int zimu=0,shuzi=0,kong=0,other=0;
printf("请输入一个字符串:\n");
gets(arr);
int len = strlen(arr);
for (int i=0;i<len;i++)
if((arr[i]>='a'&&arr[i]<='z')||arr[i]>='A'&&arr[i]<='Z')
{
zimu++;
}
else if(arr[i]>='0'&&arr[i]<='9')
{
shuzi++;
}
else if(arr[i]==' ')
{
kong++;
}
else
{
other++;
}
printf("字母的个数为%d,数字的个数为%d,空格的个数为%d,其他字符的个数为%d\n", zimu,shuzi,kong,other);
return 0;
}
2.
#include<stdio.h>
#include<string.h>
int main(int argc,char const *argv)
{
char arr[20]={0};
printf("请输入一个字符串:\n");
gets(arr);
printf("arr=%s\n",arr);
int len = strlen(arr);
int sum = 0;
for(int i=0;i<len;i++)
{
if(arr[i]>='0'&&arr[i]<='9')
{
sum += arr[i]-'0';
}
}
printf("和为:%d\n",sum);
return 0;
}
3.
#include<stdio.h>
#define M 4
#define N 3
int main(int argc,char const *argv)
{
int arr[4][3]={0};
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
printf("请输入数组第%d行第%d列的数:\n",i+1,j+1);
scanf("%d",&arr[i][j]);
}
printf("\n");
}
printf("数组为:\n");
for(int i=0;i<M;i++)
{
for(int j=0;j<N;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
int brr[M]={0};
for(int i = 0;i<M;i++)
{
brr[i] = arr[i][0];
for(int j = 0;j<N;j++)
if(brr[i] < arr[i][j])
{
brr[i] = arr[i][j];
}
}
for(int i=0;i<M;i++)
{
for(int j = 0;j<M-i;j++)
{
if(brr[j]>brr[j+1])
{
int temp = brr[j];
brr[j] = brr[j+1];
brr[j+1] = temp;
}
}
}
printf("最后的结果:\n");
for(int i=0;i<M;i++)
{
printf("%d\t",brr[i]);
}
putchar(10);
return 0;
}
4.
#include<stdio.h>
#define MAX 5
int main(int argc,char const *argv)
{
int arr[MAX] = {0} , brr[MAX]={0};
int crr[MAX] = {0};
int k=0;
for(int i = 0;i<MAX;i++)
{
printf("请输入第一个数组的第%d数:\n",i+1);
scanf("%d",&arr[i]);
printf("请输入第二个数组的第%d数:\n",i+1);
scanf("%d",&brr[i]);
}
for(int i = 0 ; i<MAX ; i++)
{
for(int j = 0 ; j<MAX ; j++)
{
if(arr[i] == brr[j])
{
crr[k] = arr[i];
k++;
}
}
}
printf("两个数组的交集是:\n");
for(int i = 0;i<k;i++)
{
printf("%d\t", crr[i]);
}
putchar(10);
return 0;
}
5.
#include<stdio.h>
#include<string.h>
int main(int argc,char const *argv)
{
char zhanghu[20] = "",mima[20] = "";
printf("请设置您的账户:\n");
printf("请设置的密码:\n");
scanf("%s%s",zhanghu,mima);
getchar();
char arr[20] = "",brr[20] = "";
printf("请输入您的账户:\n");
printf("请输入您的密码:\n");
scanf("%s%s",arr,brr);
getchar();
int x=0;
if(strcmp(zhanghu,arr)==0&&strcmp(mima,brr)==0)
{
printf("登录成功\n");
}else
{
printf("登录失败\n");
}
return 0;
}
return 0;
}
思维导图:
一(继昨天内容数组的运用)
1.逆序,即将数据进行首尾交换
方法:交换max/2次
交换对象:arr[i]《==》arr[MAX-1-i]
交换三部曲
2.选择,即对数据进行筛选(需要一个新数组存放筛选后的结果)
3.排序
1.冒泡排序:不断把相邻数据进行比较,满足条件则进行交换
2.选择排序:不断在数组中找到最值,放到已排序的最后位置
二、二维数组
1.定义:多个一维数组的集合(有行有列)
数据类型 数组名[常量1][常量2]
2.初始化
1.按行初值化
int arr[3][4] = { {1,2,3,4},{5,6,7,8},{9,9,9,9,}};
2.按行部分初值化
int arr[3][4] = {{1,2},{8}};
3.按数组排列初始化
int arr[3][4] = {1,2,3,4,5,6,7,8,9};
4.特殊初值化
int arr[][4] = {1,2,3,4,5,6};//1,2,3,4,5,6,0,0
注意!二维数组中无论何时第二维不能省略
三、二维数组的具体运用
1.输入输出(双重循环)
2.求和、求均值、求最值
1.求所有数组内所有元素和
2.求每一行数组和
3.求数组内所有元素最值
4.求每一行的最值
5.均值也同上
3.转置,即将二维数组行列互换(需要一个新数组)
brr[j][i] = arr[i][j]
四、字符数组
1.一维字符数组
1.定义:存放字符的数组,用于解决字符串的问题
字符串:用双括号括起来的0个或多个字符称为字符串,字符串默认有结束标识‘、0’
2.初始化
单字符
全部初始化
部分初始化
特殊初始化
字符串长度
整体初始化:char arr[6] = "hello";
特殊字符初始化:char arr[] = "ni hao"; //数组实际长度7,字符串实际长度6
3.具体作用
1.输入输出(待补充)
#include<string.h>