学习C语言第19天(练习题)

编程题

第一题 改数字

cs 复制代码
//改数字
int gaishuzi(int * input)
{
	int sum = 0;
	int i = 0;
	while (*input)
	{
		int bit=* input% 10;
		if (bit % 2 == 1)
		{
			sum += 1 * pow(10, i);
			i++;
		}
		else
		{
			sum += 0* pow(10, i);
			i++;
		}
		*input /= 10;
	}
	return sum;
}
int main()
{
	int input = 0;
	scanf("%d",&input);
	int a=gaishuzi(&input);
	printf("%d",a);
	return 0;
}

第二题 带空格直角三角形图案

cs 复制代码
//带空格直角三角形
int main()
{
	int n = 0;
	while(scanf("%d", &n) == 1)
	{
		int i = 0;
		int j = 0;
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < n; j++)
			{
				if (i + j < n - 1)
					printf("  ");
				else
				{
					printf("* ");
				}
			}
			printf("\n");
		}
	}
	return 0;
}

第三题 网购

cs 复制代码
//网购
int main()
{
	double price = 0.0;
	int m = 0;
	int d = 0;
	int flag = 0;
	scanf("%lf %d %d %d",&price,&m,&d,&flag);
	if (m==11,d==11)
	{
		price = price * 0.7 - flag * 50;
	}
	else if(m==12,d==12)
	{
		price = price * 0.8 - flag * 50;
	}
	if (price < 0.0)
	{
		printf("%.2lf\n", 0);
	}
	else
		printf("%.2lf\n",price);
	return 0;
}

第四题 猜名次

cs 复制代码
//猜名次
int main()
{
	int a = 0;
	int c = 0;
	int b = 0;
	int d = 0;
	int e = 0;
	for (a = 1; a <= 5; a++)
	{
		for (b = 1; b <= 5; b++)
		{
			for (c = 1; c <= 5; c++)
			{
				for (d = 1; d<= 5; d++)
				{
					for (e = 1; e<= 5; e++)
					{
						if (((b == 2) + (a == 3) == 1)
							&& ((b == 2) + (e == 4) == 1)
							&& ((c == 1) + (d == 2) == 1)
							&& ((c == 5) + (d == 3) == 1)
							&& ((e == 4) + (a == 1) == 1)
							)
						{
							if (a * b * c * d * e == 120)
								printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
						}
					}
				}
			}
		}	
	}
	return 0;
}

第五题 猜凶手

cs 复制代码
int main()
{
	int killer = 0;
	for (killer = 'a'; killer <= 'd'; killer++)
	{
		if ((killer != 'a')
			+ (killer == 'c')
			+ (killer == 'd')
			+ (killer != 'd') == 3)
		{
			printf("%c\n",killer);
		}
	}
}

第六题 杨辉三角

cs 复制代码
//杨辉三角
int main()
{
	int arr[10][10] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < i; j++)
		{
			if (j == 0)
				arr[i][j] = 1;
			if(i == j)
				arr[i][j] = 1;
			if (i >= 2 && j >= 1)
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j];
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < i; j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

第七题 字符串左旋

cs 复制代码
//字符串左旋
void left_rotate(char arr[], int k)
{
	int i = 0;
	int len = strlen(arr);
	for (i=0;i<k;i++)
	{
		char tmp = arr[0];
		int j = 0;
		for (j = 0; j < len - 1; j++)
		{
			arr[j] = arr[j + 1];
		}
		arr[len - 1] = tmp;
	}
}
int main()
{
	char arr[] = "abcdef";
	int k = 0;
	scanf("%d",&k);
	left_rotate(arr,k);
	printf("%s\n",arr);
	return 0;
}

第八题 杨氏矩阵

cs 复制代码
//杨氏矩阵
struct point
{
	int x;
	int y;
};
struct point find_num(int arr[3][3],int r,int c,int k)
{
	int x = 0;
	int y = c - 1;
	struct point p = { -1,-1 };
	while (x<=r-1&&y>=0)
	{
		if (k < arr[x][y])
		{
			y--;
		}
		else if (k > arr[x][y])
		{
			x++;
		}
		else
		{
			p.x = x;
			p.y = y;
			return p;
		}
	}
	return p;
}
int main()
{
	int arr[3][3] = {1,2,3,4,5,6,7,8,9};
	int k = 0;
	scanf("%d",&k);
	struct point  ret =find_num(arr, 3, 3, k);
	printf("%d %d",ret.x,ret.y);
	return 0;
}
cs 复制代码
int find_num(int arr[3][3],int *r,int* c,int k)
{
	int x = 0;
	int y = *c - 1;
	while (x<=*r-1&&y>=0)
	{
		if (k < arr[x][y])
		{
			y--;
		}
		else if (k > arr[x][y])
		{
			x++;
		}
		else
		{
			*r = x;
			*c = y;
			return 1;
		}
	}
	return 0;
}
int main()
{
	int arr[3][3] = {1,2,3,4,5,6,7,8,9};
	int k = 0;
	scanf("%d",&k);
	int x = 3;
	int y = 3;
	int  ret =find_num(arr, &x, &y, k);
	if(ret==1)
	printf("%d %d",x,y);
	return 0;
}

第九题 字符串旋转结果

cs 复制代码
//字符串旋转判断
int is_left_move(char arr1[],char arr2[])
{
	int len = strlen(arr1);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		char tmp = arr1[0];
		int j = 0;
		for (j = 0; j < len - 1; j++)
		{
			arr1[j] = arr1[j + 1];
		}
		arr1[len - 1] = tmp;
		if (strcmp(arr2, arr1) == 0)
			return 1;
	}
	return 0;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "cdefab";
	int ret = is_left_move(arr1,arr2);
	if (ret == 1)
	{
		printf("可以\n");
	}
	else
		printf("不可以");
	return 0;
}
cs 复制代码
//第二种方法
int is_left_move(char arr1[], char arr2[])
{
	int len = strlen(arr1);
	strncat(arr1, arr1, strlen(arr1));
	char* ret = strstr(arr1, arr2);
	if (ret == NULL)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}
int main()
{
	char arr1[20] = "abcdef";
	char arr2[] = "cdefab";
	int ret = is_left_move(arr1, arr2);
	if (ret == 1)
	{
		printf("可以\n");
	}
	else
		printf("不可以");
	return 0;
}

第十题 矩阵转置

cs 复制代码
//矩阵转置
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d",&n,&m);
	int arr[10][10] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d",arr[j][i]);
		}
		printf("\n");
	}
	return 0;
}

第十一题 上三角矩阵判定

cs 复制代码
// 上三角矩阵判定
int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[20][20] = { 0 };
	int i = 0;
	int j = 0;
	int flag = 1;//表示是上三角矩阵
	for(i=0;i<n;i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i; j++)
		{
			if (arr[i][j] != 0)
			{
				flag = 0;
				goto end;
			}
		}
	}
end:
	if (flag == 0)
	{
		printf("NO\n");
	}
	else
		printf("yes\n");
	return 0;
}

第十二题 有序序列判断

cs 复制代码
//有序序列判断
int main()
{
	int n = 0;
	int arr[50] = { 0 };
	scanf("%d",&n);
	int i = 0;
	int flag1 = 0;
	int flag2 = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d",&arr[i]);
		if (i > 0)
		{
			if (arr[i] > arr[i - 1])
			{
				flag1 = 1;
			}
			else if(arr[i]<arr[i-1])
			{
				flag2 = 1;
			}
			else
			{
				;
			}
		}
	}
	if (flag1 + flag2 <= 1)
	{
		printf("有序");
	}
	else
		printf("无须");
	return 0;
}

选择题

第一题 D

第二题 300 44

第三题 A

第四题 255

第五题 B

第六题 A

free只释放空间

第七题 C

第八题 C

第九题 C

第十题 C

第十一题 A

第十二题 B

第十三题 D

第十四题 A

第十五题 C

第十六题 C

第十七题 B

第十八题 C

第十九题 D

第二十题 B D

第二十一题 A

第二十二题 C

第二十三题 B

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习