一维数组代码
#include <stdio.h>
#define MAX 10
int arrmax(int *arr)
{
int sum, max, pos;
int i;
max = arr[1], pos = 0;
for (i = 0; i < MAX; i++)
{
sum += arr[i];
if (arr[i] > max)
{
max = arr[i];
pos = i + 1;
}
}
printf("最大值是%d,位于第%d个\n", max, pos);
}
int printarr(int *arr)
{
printf("成绩为:");
for (int i = 0; i < MAX; i++)
{
printf("%d\t", arr[i]);
}
putchar(10);
return 0;
}
int nixu(int *arr)
{
int i = 0, j;
while (i <= MAX / 2)
{
j = arr[i];
arr[i] = arr[MAX - 1 - i];
arr[MAX - 1 - i] = j;
i++;
}
for (int i = 0; i < MAX; i++)
{
printf("%d\t", arr[i]);
}
putchar(10);
return 0;
}
int search(int *arr)
{
int search = 0, count = 0, pos = 0;
int i = 0; //用于遍历数组的循环变量
printf("请输入您要查找的值:");
scanf("%d", &search);
getchar();
putchar(10);
//开始遍历数组,实现存在性查找
for (i = 0; i < MAX; i++)
{
//判断数据是否是要查找的数据
if (search == arr[i])
{
count++;
if (count == 1)
pos = i + 1;
}
}
//判断是否查找到
if (!count)
printf("未找到\n");
else
printf("%d位于第%d个,共出现%d次\n", search, pos, count);
return 0;
}
int maopao(int *arr)
{
printf("冒泡排序\n");
for (int i = 0; i < MAX - 1; i++)
{
for (int j = 0; j < MAX - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main(int argc, char const *argv[])
{
int arr[MAX];
int i;
for (i = 0; i < MAX; i++)
{
printf("输入第 %d 个同学的成绩", i + 1);
scanf("%d", &arr[i]);
getchar();
putchar(10);
}
//arrmax(arr);
//nixu(arr);
search(arr);
printarr(arr);
maopao(arr);
printarr(arr);
return 0;
}
二维数组代码
#include <stdio.h>
#define M 4
#define N 5
int main(int argc, char const *argv[])
{
//定义一个二维数组
int arr[M][N] = {0};
int brr[N][M] = {0};
//对数组进行输入输出,通过双重循环找到任意一个数据
for (int i = 0; i < M; i++) //外行
{
for (int j = 0; j < N; j++) //内列
{
//在此处可以找到arr[i][j]
printf("请输入第%d行%d列的元素:", 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 sum[4] = {0};
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
sum[i] += arr[i][j];
}
printf("%d行的和:%d\n", i + 1, sum[i]);
}
//转置
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
brr[j][i] = arr[i][j];
}
}
printf("转置数组元素分别是:\n");
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
printf("%d\t", brr[i][j]);
}
printf("\n");
}
return 0;
}
杨辉三角代码
#include <stdio.h>
int main(int argc, char const *argv[])
{
while (1)
{
int m;
printf("输入行数\n");
scanf("%d", &m);
if (m > 10 || m < 2)
{
printf("输入值过大或错误\n");
break;
}
int yanghui[10][10] = {{1}, {1, 1}};
int i, j;
for (i = 2; i < m; i++)
{
for (j = 0; j <= i; j++)
{
if (j == 0)
yanghui[i][j] = 1;
else
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
}
}
//printarr(yanghui,m);
printf("数组元素分别是:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j <=i; j++)
{
printf("%d\t", yanghui[i][j]);
}
printf("\n");
}
}
return 0;
}
课后习题:
1、提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数
#include <stdio.h>
int main()
{
char ch;
int letter = 0, space = 0, digit = 0, other = 0;
printf("请输入字符串:\n");
while ((ch = getchar()) != '\n')
{
if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z') //字母
letter++;
else if (ch >= '0' && ch <= '9') //数字
digit++;
else if (ch == ' ') //空格
space++;
else
other++;
}
printf("您所输入的字符串中:英文字母有%d个,空格有%d个,数字有%d个,剩余其他字符%d个\n", letter, space, digit, other);
return 0;
}
请输入字符串:
qweweorj13514ihfh()* JK
您所输入的字符串中:英文字母有14个,空格有1个,数字有5个,剩余其他字符3个
2、提示并输入一个字符串,求出该字符串中所有数字的总和
#include <stdio.h>
int main()
{
char ch;
int plus = 0, flag = 0;
printf("请输入字符串:\n");
while ((ch = getchar()) != '\n')
{
if (ch >= '0' && ch <= '9')
{
plus += ch - '0';
flag = 1;
}
}
if (flag == 0)
printf("字符串中没有数字\n");
else
printf("字符串中所有数字和为%d\n", plus);
return 0;
}
运行结果:
ubuntu@ubuntu:day7$ ./tongji
请输入字符串:
fiojgjagf;g dfgs
字符串中没有数字
ubuntu@ubuntu:day7$ ./tongji
请输入字符串:
3465ajggj;536
字符串中所有数字和为32
3、定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。
#include <stdio.h>
#define M 4
#define N 3
int main(int argc, char const *argv[])
{
//定义一个二维数组
int arr[M][N] = {0};
int i, j;
//对数组进行输入输出,通过双重循环找到任意一个数据
for ( i = 0; i < M; i++) //外行
{
for ( j = 0; j < N; j++) //内列
{
printf("请输入第%d行%d列的元素:", i + 1, j + 1);
scanf("%d", &arr[i][j]);
}
printf("\n");
}
//打印数组的所有值
printf("数组元素分别是:\n");
for ( i = 0; i < M; i++)
{
for ( j = 0; j < N; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
//找到每一行的最值
int max[M];
for ( i = 0; i < M; i++)
{
max[i] = arr[i][1];
for ( j = 0; j < N; j++)
{
if (arr[i][j] > max[i])
max[i] = arr[i][j];
}
printf("第%d行的最大值是%d\n", i + 1, max[i]);
}
//排序并重新输出
int sort,tmp;
for (i = 0; i < M; i++)
{
sort = i;
for ( j = i + 1; j < M; j++)
{
if (max[sort] > max[j])
{
sort = j;
}
}
if (sort != i)
{
tmp = max[i];
max[i] = max[sort];
max[sort] = tmp;
}
}
printf("升序后的最大值为");
for (int i = 0; i < M; i++)
{
printf("%d\t", max[i]);
}
putchar(10);
return 0;
}
运行结果:
请输入第1行1列的元素:2
请输入第1行2列的元素:3
请输入第1行3列的元素:7
请输入第2行1列的元素:4
请输入第2行2列的元素:3
请输入第2行3列的元素:6
请输入第3行1列的元素:3
请输入第3行2列的元素:8
请输入第3行3列的元素:5
请输入第4行1列的元素:4
请输入第4行2列的元素:3
请输入第4行3列的元素:2
数组元素分别是:
2 3 7
4 3 6
3 8 5
4 3 2
第1行的最大值是7
第2行的最大值是6
第3行的最大值是8
第4行的最大值是4
升序后的最大值为4 6 7 8
4、提示并输入两个一维整形数组,求这两个数组的交集。
#include <stdio.h>
#define MAX 5
int main(int argc, char const *argv[])
{
int arr[MAX];
int brr[MAX];
int jiaoji[MAX];
int i, j, k = 0;
printf("输入第1个数组的内容\n");
for (i = 0; i < MAX; i++)
{
scanf("%d", &arr[i]);
}
getchar();
printf("输入第2个数组的内容\n");
for (i = 0; i < MAX; i++)
{
scanf("%d", &brr[i]);
}
getchar();
for (i = 0; i < MAX; i++)
{
for (j = 0; j < MAX; j++)
{
if (arr[i] == brr[j])
{
jiaoji[k] = arr[i];
k++;
}
}
}
printf("交集是:\n");
for (i = 0; i < k; i++)
{
printf("%d ", jiaoji[i]);
}
putchar(10);
return 0;
}
运行结果:
输入第1个数组的内容
1 3 5 7 9
输入第2个数组的内容
2 3 4 5 6
交集是:
3 5
5、完成注册和登录功能:使用两个一维字符数组存储账户和密码
#include <stdio.h>
#include <string.h>
#define M 20
int main()
{
char name[M] = {0};
char pword[M] = {0};
printf("请注册账号:\n");
scanf("%s", name);
printf("请输入注册密码:\n");
scanf("%s", pword);
int i;
char input_n[M];
char input_p[M];
for (i = 0; i < 3; i++)//3次机会
{
printf("请输入账号:\n");
scanf("%s", input_n);
printf("请输入密码:\n");
scanf("%s", input_p);
if ((strcmp(input_p, pword) == 0) && (strcmp(input_n, name) == 0))
break;
else if (i < 3)
printf("密码错误,重新输入!\n");
}
if (i < 3)
{
printf("登陆成功,进入程序!\n");
}
else
printf("密码错误,退出程序!\n");
return 0;
}
运行结果:
请注册账号:
qwert
请输入注册密码:
qwer@12345
请输入账号:
qwert
请输入密码:
12456
密码错误,重新输入!
请输入账号:
qwert
请输入密码:
qwer@12345
登陆成功,进入程序!
注册:完成对账号和密码的输入
登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败