首页 > 其他分享 >C语言数组练习

C语言数组练习

时间:2024-08-08 21:24:27浏览次数:10  
标签:tmp arr int 练习 C语言 ++ 数组 printf include

数组作业

一维数组练习题

题目1

键盘录入一组数列,利用冒泡排序将数据由大到小排序

#include <stdio.h>

int main() {
	int t[100], num, tmp;
	printf("请输入数字个数:");
	scanf("%d", &num);
	printf("请输入%d个数字:\n", num);
	for (int i = 0; i < num; i++) {
		scanf("%d", &t[i]);
	}
	for (int i = 0; i < num; i++) {
		for (int j = 0; j < num - 1 - i; j++) {
			if (t[j] < t[j + 1]) {
				tmp = t[j];
				t[j] = t[j + 1];
				t[j + 1] = tmp;
			}
		}
	}
	printf("从大到小排序为:");
	for (int i = 0; i < num; i++) {
		printf("%d ", t[i]);
	}
	printf("\n");
	return 0;
}

题目2

从键盘输入年、月、日,计算并输出该日是该年第几天

#include <stdio.h>

int main() {
	int year, month, day, tmp = 0;
	int t[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	printf("请输入年,月,日:");
	scanf("%d,%d,%d", &year, &month, &day);
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		t[1] = 29;
	}
	for (int i = 0; i < month - 1; i++) {
		tmp += t[i];
	}
	tmp += day;
	printf("%d月%d日在%d年是第%d天\n", month, day, year, tmp);
	return 0;
}

题目3

键盘录入一组数列,求最大数、最小数、均值

#include <stdio.h>

int main() {
	int num, t[100];
	double sum = 0.0;
	printf("请输入数列个数:");
	scanf("%d", &num);
	printf("请输入数列:");
	for (int i = 0; i < num; i++) {
		scanf("%d", &t[i]);
		sum += t[i];
	}
	sum = 1.0 * sum / num;
	int max = t[0], min = t[0];
	for (int i = 0; i < num;  i++) {
		if (t[i] > max) {
			max = t[i];
		}
		if (t[i] < min) {
			min = t[i];
		}
	}

	printf("最大数:%d、最小数:%d、均值:%.2lf\n", max, min, sum);
	return 0;
}

题目4

从键盘录入一组数列,判断是否是回文,举例:12321,abba,121

#include <stdio.h>
#include <string.h>

int main() {
	char a[100];
	int isTure = 1;
	scanf("%s", & a);
	int len = strlen(a);
	for (int i = 0; i < len / 2; i++) {
		if (a[len - 1 - i] != a[i]) {
			isTure = 0;
			break;
		}
	}
	if (isTure) {
		printf("是回文数。", a);
	} else {
		printf("不是回文数。");
	}
	return 0;
}


题目5

用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值;

#include <stdio.h>

int main() {
	int t[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, a;
	printf("数组中10个整型数为:");
	for (int i = 0; i < 10; i++) {
		printf("%d  ", t[i]);
	}
	printf("\n请输入一个数:");
	scanf("%d", &a);
	for (int i = 0; i < 10; i++) {
		if (a == t[i]) {
			printf("%d的下标为:%d\n", a, i);
			return 0;
		}
	}
	printf("没有这个数。\n");
	return 0;
}

题目6

通过键盘输入 10 个学员成绩:

1)输出不及格学员的成绩和下标。

2)求最高分的下标值

3)求最低成绩的下标值

4)求总成绩及平均成绩

#include <stdio.h>

int main() {
	int num, t[100], sum;
	double m = 0.0;
	printf("请输入10名学生成绩:\n");
	for (int i = 0; i < 10; i++) {
		scanf("%d", &t[i]);
		sum += t[i];
	}
	m = 1.0 * sum / 10;
	int max = t[0], min = t[0];
	for (int i = 0; i < 10; i++) {
		if (t[i] < 60) {
			printf("不及格,成绩为:%d,下标是:%d\n", t[i], i);
		}
		if (max < t[i]) {
			max = t[i];
		}
		if (min > t[i]) {
			min = t[i];
		}
	}
	printf("总成绩为:%d,平均成绩:%.2lf", sum, m);
	return 0;
}

二维数组练习题

题目7

一个二维数组赋了初值,用户输入一个数,在该二维数组中查找。找到则返回行列位置,没找到则提示。

#include <stdio.h>

int main() {
	int a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, r;
	printf("请输入要查的数:");
	scanf("%d", &r);
	printf("存储的二维数组为:\n");
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 4; j++) {
			printf("%3d ", a[i][j]);
		}
		printf("\n");
	}
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 4; j++) {
			if (a[i][j] == r) {
				printf("%d在%d行%d列\n", r, i, j);
				return 0;
			}
		}
	}
	printf("没有这个数。\n");
	return 0;
}

题目8

二维整型数组,求所有元素平均值,求每行最大值,求每列最小值。

#include <stdio.h>

int main() {
	int arr[100][100] = {0}, row, col;
    double sum=0;
	printf("请输入行,列:");
	scanf("%d,%d", &row, &col);
	printf("请输入一个二维数组");
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			scanf("%d", &arr[i][j]);
            sum+=arr[i][j];
		}
	}
    printf("平均值为:%.2lf",sum/(row*col));
	int rmax, cmin ;
	for (int i = 0; i < row; i++) {
		rmax = arr[i][0];
		for (int j = 0; j < col; j++) {
			if (rmax < arr[i][j]) {
				rmax = arr[i][j];
			}
		}
		printf("第%d行的最大值为:%d\n", i, rmax);
	}
	for (int j = 0; j < col; j++) {
		cmin = arr[0][j];
		for (int i = 0; i < row; i++) {
			if (cmin > arr[i][j]) {
				cmin = arr[i][j];
			}
		}
		printf("第%d列的最小值为:%d\n", j + 1, cmin); // 输出列号时加1以使其从1开始
	}
	return 0;
}

题目9

在行列相等数组计算主对角线元素的和

#include <stdio.h>

int main() {
	int arr[][3] = {{1, 2, 3}, {4, 5, 6,}, {7, 8, 9}}, tmp = 0;
	printf("数组为:\n");
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			printf("%3d", arr[i][j] );
		}
		printf("\n");
	}
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			if (i == j) {
				tmp += arr[i][j];
			}
		}
	}
	printf("主对角线元素的和为:%d\n", tmp);
	return 0;
}

题目10

计算一个矩阵下三角元素的和

#include <stdio.h>

int main() {
	int arr[][4] = {{1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12}, {13, 14, 15, 16}}, tmp = 0;
	printf("数组为:\n");
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 4; j++) {
			printf("%3d", arr[i][j] );
		}
		printf("\n");
	}
	for (int i = 0; i < 4; i++) {
		for (int j = 0; j < 4; j++) {
			if (i <= j) {
				tmp += arr[i][j];
			}
		}
	}
	printf("矩阵下三角元素的和为:%d\n", tmp);
	return 0;
}

题目11

电影院为了答谢影迷的支持,在某一排的某一列座位上放置了一个大礼包,放置礼物的位置具有这样的规则(行和列的平方和为开店日期 512(5月12日));请设计程序找出大礼包的位置,(假定电影院有20排,每排25个座位)

#include <stdio.h>

int main() {
	int tmp = 0;
	for (int i = 0; i < 20; i++) {
		for (int j = 0; j < 25; j++) {
			tmp = i * i + j * j;
			if (tmp == 512) {
				printf("礼包在%d排%d列。\n", i, j);
			}
		}
	}

	return 0;
}

字符数组练习题

题目12

编写一个程序,读取用户输入的字符串,并将其反转输出。

#include <stdio.h>
#include <string.h>

int main() {
	char t[100];
	printf("请输入字符串:");
	scanf("%s", t);
	printf("反转后字符串:");
	for (int i = strlen(t) - 1; i >= 0; i--) {
		printf("%c", t[i]);
	}
	return 0;
}

题目13

编写一个程序,判断用户输入的字符串是否为回文(即正反读都一样的字符串)。

#include <stdio.h>
#include <string.h>

int main() {
	int res = 0;
	char t[100], arr[100];
	printf("请输入字符串:");
	scanf("%s", t);
	for (int i = strlen(t) - 1, j = 0; i >= 0; i--, j++) {
		arr[j] = t[i];
	}

	if (strcmp(t, arr)) {
		printf("不是回文\n");
	} else {
		printf("是回文\n");
	}
	return 0;
}

思考题【选做】:

题目14

求出一个矩阵的鞍点。鞍点的含义为行上最大同时列上也最大。

#include <stdio.h>

int main() {
	int arr[][5] = {{1, 20, 30, 60, 23},
		{5, 25, 15, 35, 56},
		{9, 22, 33, 12, 13},
		{8, 18, 28, 38, 34}
	};
	printf("存的数组为:\n");
	int row = 4, col = 5, tmp = 0, t[row][2];
	for (int i = 0; i < row; i++) {
		tmp = 0;
		for (int j = 0; j < col; j++) {
			printf("%d ", arr[i][j]);
			if (tmp < arr[i][j]) {
				tmp = arr[i][j];
				t[i][0] = j;
				t[i][1] = arr[i][j];
			}
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < row; i++) {			//行最大值数组
		int isTure = 1;
		for (int j = 0; j < row; j++) {		//最大值的那一行
			//printf("t=%d,arr=%d\n", t[i][1], arr[j][t[i][0]]);
			if (t[i][1] < arr[j][t[i][0]]) {
				isTure = 0;
			}
		}
		if (isTure) {
			printf("鞍点为:%d\n", t[i][1]);
		}
		//printf("\n");
	}

	return 0;
}
	if (tmp < arr[i][j]) {
			tmp = arr[i][j];
			t[i][0] = j;
			t[i][1] = arr[i][j];
		}
	}
	printf("\n");
}
printf("\n");
for (int i = 0; i < row; i++) {			//行最大值数组
	int isTure = 1;
	for (int j = 0; j < row; j++) {		//最大值的那一行
		//printf("t=%d,arr=%d\n", t[i][1], arr[j][t[i][0]]);
		if (t[i][1] < arr[j][t[i][0]]) {
			isTure = 0;
		}
	}
	if (isTure) {
		printf("鞍点为:%d\n", t[i][1]);
	}
	//printf("\n");
}

return 0;

}



标签:tmp,arr,int,练习,C语言,++,数组,printf,include
From: https://blog.csdn.net/qixi_ao/article/details/141035999

相关文章

  • C++ 根据层序遍历数组 构造二叉树
    说明该层序遍历数组中空节点会使用-1代替,即该层序遍历数组可以理解为一个完全二叉树代码利用队列实现左右子节点的存储,每次通过获取队列头部元素即为当前头节点,然后在数组中i和i+1对应该头结点下的左右子节点,如果不为-1,那么说明可以入队。structTreeNode{intval;Tree......
  • 鹏哥C语言自定义笔记重点
    1.浮点数在内存中不能精确保存。2.sizeof这个操作符计算返回的结果是size_t类型的,是无符号整数型的,当遇见负数会被认为是非常大的数。3.strcpy在拷贝字符串时,会把源字符串中的\0也拷贝过去。assert是断言,可以防止NULL,需要头文件#include<assert.h>。const修饰指针变量放在*......
  • C语言入门零基础:5、进制数和进制转换
    前提:printf语句和scanf语句是源自与stdio.h这个头文件中的函数,它们的作用分别是输出和输入。应用:    printf("helloworld\n");  //用于输出(打印)hellowolrd这个语句。    inta;    scanf("%d",&a);   //用于向a空间输入一个整形数据......
  • c语言中输出字符指针相关问题
    原文链接:https://blog.csdn.net/littesss/article/details/71037908c语言中输出字符指针相关问题一、例如定义一个char*p="hello";的字符指针。首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对......
  • C数组和指针,从此不再困惑。
    目录一、思考下图中的问题?二、上图中问题答案,如下图:三、分析问题答案1、分析前知识准备1.0、内存区术语1.1、为什么定义数组类型变量时要指定大小或初始化1.2、指针指向的内存一定是在堆区吗?1.3、const关键字的思考1.4、进程虚拟地址空间1.5、为什么会段错误?2、开始......
  • C语言实现猜数字小游戏
    前言与概述本文章讲述如何通过C语言开发一款猜数字的小游戏,开发这款小游戏会让你在学习编程道路上获得更多成就感和快乐。程序功能①:文字从两端向中间汇聚的欢迎界面②:输入密码登录游戏③:简约美观的游戏主界面④:深挖猜数字游戏背后运行逻辑⑤:丰富多样的程序功能⑥:无限......
  • 字符旋转的结果(c语言)
    1.字符旋转的结果//写一个函数,判断一个字符是否为另一个字符串旋转之后的字符串//是返回1,不是返回02.方法一:我们可以使用字符旋转,进行一一比较。如果相等是返回1,如果不是返回0,将第一位存储起来,其他位先前相加,然后将第一位放在最后一位,进行比较,如果没有相等,那在++进行比较.......
  • 在python中将二维数组转换为彩色图像
    我有像这样的2d整数列表:list1=[[1,30,50],[21,45,9],[97,321,100]]下一步我要将其转换为numpy数组:myarr=np.asarray(list1)下一步我将使用PIL将其转换为图像,如下所示:img=Image.fromarray(myarr,"I")img.save("my.png")问题是我不想要灰......
  • 将二维数组与一维数组合并
    我目前np.append与两个数组组合,但它不能工作,它显示:ValueError:alltheinputarraydimensionsexceptfortheconcatenationaxismustmatchexactly,butalongdimension0,thearrayatindex0hassize64andthearrayatindex1hassize0这是我的......
  • 【C语言】一篇文章搞定C语言最难指针
    目录一、内存和地址(1)什么是内存的地址(2)如何寻找指定的内存地址(3)CPU和内存传递数据的方式二、指针变量和地址(1)取地址操作符(2)指针变量(3)解引用操作符(4)指针变量的大小(5)指针变量的类型的意义 ①指针的解引用②指针+/-整数③void*指针三、const修饰指针(1)cons......