(c语言)作业讲解

例一:

题目:

答案: 

#include<stdio.h>
#include<math.h>
int main()
{
	int x;
	double sum=0; int g = 0; int i = 0;
	scanf("%d",&x);
	while (x > 0)
	{
		g = x % 10;
		if (g % 2 == 0)
		{
			g = 0;
		}
		else
		{
			g = 1;
		}
		sum += g*pow(10,i); //pow函数的返回值为double类型
		i++;
		x /= 10;
	}
	printf("%.0lf",sum);
	return 0;
}

 

例二: 

题目: 

答案: 

#include<stdio.h>
#include<math.h>
int main()
{
	int x,i,j,n;
	scanf("%d",&x);
	n = x;
	while (n--)
	{
		for (i = 0; i < n; i++)
		{
			printf("  ");
		}
		for (j = n+1; j <= x; j++)
		{
			printf("* ");
		}
		printf("\n");
	}
	return 0;
}

例三: 

题目: 

答案: 

#include<stdio.h>
int main()
{
  double value;
  int m, d, h;
  scanf("%lf %d %d %d", &value, &m, &d, &h);
  if (m == 11 && d == 11)
  {
    value *= 0.7;
    if (h == 1)
    {
      value -= 50.0;
    }
  }
  if (m == 12 && d == 12)
  {
    value *= 0.8;
    if (h == 1)
    {
      value -= 50;
    }
  }
  printf("%.2lf",value);
}

 

例四: 

题目: 

 

答案: 

 D

原码、反码、补码的最高位是0表示正数,1表示负数 

例五: 

题目: 

 

答案: 

 C

#include<stdio.h>
int main()
{
  unsigned char a = 200;
  unsigned char b = 100;
  unsigned char c = 0;
  //无符号字符型可存储数据大小为0~255,故不存在数据溢出和截断
  //0000 0000 0000 0000 0000 0000 1100 1000——(int)200
  //1100 1000——(unsigned char)200
  //0000 0000 0000 0000 0000 0000 0110 0100——(int)100
  //0110 0100——(unsigned char)100
  c = a + b;
  //0000 0000 0000 0000 0000 0001 0010 1100——(int)300
  //0010 1100——(unsigned char)200 ==44   发生截断
  printf("%d %d",a+b,c);
  //故a+b=300,c=44
}

 

例六: 

题目: 

 

答案: 

A

大端存储:低位数据放在高位,高位数据放在低位

小端存储:低位数据放在低位,高位数据放在高位

a大端存储:00 00 12 34

a小端存储:34 12 00 00 

变为字符型往后读取一个字节 00

例七: 

题目: 

 

答案: 

 C

#include<stdio.h>
#include<string.h>
int main()
{
	char a[1000] = {0};
	//字符型的数据存储范围为-127~128
	int i = 0;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;    //当数据超过存储范围时就不会执行赋值
	}
	printf("%d",strlen(a));
	//故最后数组里的元素只会有-127~128,也就是255个
	return 0;
}

 例八:

题目: 

答案: 

 D

大端存储:低位数据放在高位,高位数据放在低位

小端存储:低位数据放在低位,高位数据放在高位

在计算机领域,大小端(Endianness)是指字节序的排列顺序。

字节序,就是 大于一个字节类型的数据在内存中的存放顺序。

例九: 

题目: 

 答案:

#include<stdio.h>
//将所有的可能性都穷举出来,然后符合条件的返回值为1,相加为1说明两个中只有一个是对的
//不能用||判断,这样不能排除两个条件都为真的情况
int main()
{
	int a, b, c, d,e;
	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;
}

 例十:

题目: 

答案: 

#include<stdio.h>
int main()
{
	char killer;
	for (killer = 'a'; killer <= 'd'; killer++)    //穷举法
	{
		if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
		{
			printf("killer为%c",killer);
		}
	}
	return 0;
}

 例十一:

题目: 

答案: 

#include<stdio.h>	//杨辉三角
int main()
{
	int i, j;
	int z = 11;
	int arr[10][10] = {0};
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];   //观察其规律即可
			if (j == 0 || i == j)
			{
				arr[i][j] = 1;
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		int u = z;
			for (z; z > 0; z--)
			{
				printf(" ");
			}
			z = u - 1;
			for (j = 0; j <= i; j++)
			{
				printf(" %d ", arr[i][j]);
			}
		printf("\n");
	}
	return 0;
}

例十二:

题目: 

答案: 

A

free释放掉指针内容后,指针变量的值不会进行处理 

例十三:

题目: 

 

答案: 

C

字符串赋值时,赋值的是其首元素的地址 

例十四:

题目: 

答案: 

 C

数组指针是指向数组的指针

指针数组是存放指针的数组

例十五:

题目: 

答案: 

 C

例十六: 

题目: 

答案: 

例十七: 

题目: 

答案: 

例十八: 

题目: 

答案: 

例十九: 

题目: 

答案: 

 D

例二十: 

题目: 

答案: 

例二十一: 

题目: 

答案: 

例二十一: 

题目: 

答案: 

str1和str2是在不同存储空间内字符串的首地址,所以不相同

str3和str4都是字符串的首元素地址,故相等

例二十二: 

题目:

答案: 

例二十三: 

题目:

答案: 

解法1:

#include<stdio.h>		//左旋函数
#include<math.h>
void left_turn(char arr[], int x)
{
	int i;
	int lenth = strlen(arr);
	x %= lenth;   //简化循环次数
	for(i=0;i<x;i++)
	{
		char c = arr[0];	//将首元素取出来
		for(int j=0;j<lenth-1;j++)
		{
			arr[j] = arr[j + 1];    //之后的元素向前移
		}
		arr[lenth-1] = c;	//第一个元素放在最后
	}
}
int main()
{
	char arr[] = "ABCD";
	int x;
	scanf("%d", &x);//左旋的次数
	left_turn(arr, x);
	printf("%s", arr);
	return 0;
}

解法2:

#include<stdio.h>		//左旋函数
#include<math.h>
void reverse(char* left, char* right)  //交换函数
{
	while (left < right)
	{
		char t = *left;
		*left = *right;
		*right = t;
		left++;
		right--;
	}
}
void left_turn(char arr[], int x)
{
	int len = strlen(arr);
	x %= len;
	reverse(arr,arr+x-1);  //交换前一部分
	reverse(arr+x,arr+len-1);	//交换后一部分
	reverse(arr,arr+len-1);	//交换整体
}
int main()
{
	char arr[] = "ABCD";
	int x;
	scanf("%d", &x);//左旋的次数
	left_turn(arr, x);
	printf("%s", arr);
	return 0;
}

例二十四: 

题目:

答案: 

#include<stdio.h>
int find_num(int arr[3][3], int r, int c, int k)   //r为矩阵的行数,c为矩阵的列数
{
	int x = 0;
	int y = c - 1;
	while (x<=r-1&&y>=0)
	{
		if (k > arr[x][y])  //如果查找的数大于一行的最大数,则比较下一行的最大数
		{
			x++;
		}
		else if (k < arr[x][y])//如果查找的数小于一行的最大数,则比较后一列的数
		{
			y--;
		}
		else
		{
            printf("行:%d 列:%d",x+1,y+1);
			return 1;	//如果相等则说明找到了,返回1
		}
	}
	return 0;	//没找到返回0
}
int main()
{
	int arr[3][3] = {1,2,3,4,5,6,7,8,9};
	int k = 0;
	scanf("%d",&k);  //需要查找的数
	int ret = find_num(arr,3,3,k);
	if (ret==1)
	{
		printf("查找的数存在\n");
	}
	else
	{
		printf("查找的数不存在\n");
	}
	return 0;
}

例二十五: 

题目:

 

答案: 

例二十六: 

题目:

答案: 

回调函数就是一个通过函数指针调用的函数。

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

例二十七: 

题目:

 

答案: 

#include<stdio.h>
#include<string.h>
int PanDuan_string(char arr1[10], char arr2[10])
{
	int len = (int)strlen(arr1);
	int count = 0;
	for (int j = 0; j < len; j++)
	{
		char c = arr1[0];    //将第一个元素存放在c中
		for (int i = 0; i < len - 1; i++)
		{
			arr1[i] = arr1[i + 1];
		}
		arr1[len - 1] = c;
		if (strcmp(arr1,arr2)==0)  //如果相等则返回1
		{
			return 1;
		}
	}
	return 0;   //遍历结束没有相等的说明没找到,返回0
}
int main()
{
	char arr1[10]="ABCDE";
	char arr2[10] = "CDEAB";
	int p=PanDuan_string(arr1,arr2);
	if (p == 1)
	{
		printf("是由旋转得到\n");
	}
	else
	{
		printf("不是由旋转得到\n");
	}
	return 0;
}

例二十八: 

题目:

答案: 

数组名为数组的首元素地址,该数组的元素为字符串,字符串赋值的为字符串的首元素地址,故该数组的数组名为二维指针。​​​​​​​

例二十九: 

题目:

 

答案: 

二维数组的元素为一维数组,故二维数组的元素名为数组指针。

例三十: 

题目:

 

答案: 

 B

例三十一: 

题目:

答案: 

#include<stdio.h>
int main()
{
	int m, n,i,j;
	int arr[10][10];
	scanf("%d %d",&m,&n);
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	printf("\n");
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			printf("%d ", arr[j][i]);
		}
		printf("\n");
	}
	return 0;
}

例三十二: 

题目:

答案: 

#include<stdio.h>
int main()
{
	int m,i,j;
	int z = 0;
	int arr[10][10];
	scanf("%d",&m);
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < m; j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < m; j++)
		{
			if (i > j && arr[i][j] != 0)
			{
				z = 1;
			}
		}
	}
	if (z == 1)
	{
		printf("NO\n");
	}
	else
	{
		printf("YES\n");
	}
	return 0;
}

例三十三: 

题目:

答案: 

#include<stdio.h>
int main()
{
	int i,k;
	int a = 0, b = 0;
	int arr[50];
	scanf("%d",&k);
	if (k < 3)
	{
		printf("输入数据较少\n");
		return 0;
	}
	for (i = 0; i < k; i++)
	{
		scanf("%d",&arr[i]);
	}
	for (i = 0; i <k-1; i++)
	{
		if (arr[i] >=arr[i + 1])
		{
			a = 1;
		}
		else if (arr[i] < arr[i + 1])
		{
			b = 1;
		}
	}
	if ((a+b)<=1)
	{
		printf("sorted\n");
	}
	else
	{
		printf("unsorted\n");
	}
	return 0;
}

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/212655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子印章管理系统:是什么、3个平台推荐

说到印章&#xff0c;相信看过近现代电视剧的人都见过&#xff0c;一般在订立合约时最常用到&#xff0c;双方在合约上加盖印鉴&#xff0c;即代表着合约的成立。 我小时候还见过我父亲的印章&#xff0c;只是随着时代的发展&#xff0c;印章因为不易携带&#xff0c;容易被盗…

Spring事务传播机制

在上篇文章中&#xff0c;小编带领大家了解了Spring事务&#xff1a;Spring事务-CSDN博客&#xff0c;那么&#xff0c;本篇文章将会带领大家深入了解&#xff1a;Spring事务传播机制&#xff0c;感兴趣的各位老铁&#xff0c;欢迎深入探讨&#xff01;&#xff01; 事务传播机…

10行代码实现vue路由最简单的登陆拦截

需求&#xff1a;不涉及任何角色权限&#xff0c;基本实现目标&#xff0c;有token就可查看任何页面&#xff0c;否则就去登陆&#xff0c;来一步步实现 1. 创建你的路由页面&#xff0c;此处略了 2. 导航守卫拦截判断思路 // 创建路由 const router createRouter({history…

深度学习手势识别算法实现 - opencv python 计算机竞赛

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

智能优化算法应用:基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

rman 0级 1级备份结合的注意事项 obsolete 和 FRA自动清理

1. 当心0级备份从controlfile中删除&#xff0c;0级备份决定recover windows时间 &#xff0c;一级不算 Incremental backup cycle: Sundays: Level 0 Monday-Sat: cumulative level 1 Every Friday and Saturday, the time for the incremental level 1 backup sud…

创投课程研报专题课 | 如何写出高质量研报

协会邀请了来自GPTDAO的分析师——Will作为VC创投课程研报专题课的嘉宾&#xff0c;将于北京时间12月2日(周六)晚上21:00 PM-22:00 PM&#xff0c;与所有对Web3投资、创业心怀热忱的朋友一同探讨《如何写出高质量的研报》这个激动人心的话题。 浙江大学学生区块链协会&#xff…

mybatis整合(手动添加jar包方式)

操作步骤 创建数据库 建立user表 放入数据 1、创建javaweb工程并添加Jar包 用到的jar包 junit 用于测试 mybatis框架&#xff1a;mybatis-3.5.9.jar mysql数据库&#xff1a;mysql-connector-java-8.0.28.jar 2、添加MyBatis核心配置文件 <?xml version"1.0"…

[原创][2]探究C#多线程开发细节-“线程的无顺序性“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delph…

TensorRT之LeNet5部署(onnx方式)

文章目录 前言LeNet-5部署1.ONNX文件导出2.TensorRT构建阶段(TensorRT模型文件)&#x1f9c1;创建Builder&#x1f367;创建Network&#x1f36d;使用onnxparser构建网络&#x1f36c;优化网络&#x1f361;序列化模型&#x1f369;释放资源 3.TensorRT运行时阶段(推理)&#x…

工业机器视觉megauging(向光有光)使用说明书(二,轻量级的visionpro)

测试程序暂时支持80万&#xff08;包含1024*768&#xff09;以上的gige工业相机&#xff0c;以后会支持640*480分辨率相机。 我们程序中使用注意力机制&#xff0c;其实就是感兴趣区域&#xff08;roi&#xff0c;你看过我前面博文&#xff0c;就应该明白&#xff09;精神的延…

mac截图Snagit 中文介绍

1.超越普通的屏幕截图 TechSmith Snagit 是唯一具有内置高级图像编辑和屏幕录制功能的屏幕捕获软件。因此&#xff0c;您可以在一个程序中轻松创建高质量的图像和视频。 2.最后&#xff0c;屏幕捕获软件可以完成您所做的一切 快速解释一个过程如果您正在努力清楚地沟通&…

JS前端逆向

前言 js逆向一直没有相关了解&#xff0c;虽然目前渗透遇见的不是很多&#xff0c;大多数遇见的要么不加密&#xff0c;要么无法实现其加密流程&#xff0c;不过最近看到了一个较为简单的站点正好能够逆向出来&#xff0c;就做了简单记录。本文旨在介绍js逆向的一些基础思路&am…

WebGL笔记:矩阵旋转运算的原理和实现

矩阵 矩阵&#xff08;Matrix&#xff09;是一个按照矩形纵横排列的复数集合 矩阵就像一个矩形的阵盘&#xff0c;通过其中纵横排列的元素我们可以摆出不同功能的阵法&#xff0c;比如位移矩阵、旋转矩阵、缩放矩阵 …在矩阵中的每一行&#xff0c;或者每一列数字构成的集合&a…

设计模式-结构型模式之代理设计模式

文章目录 八、代理设计模式 八、代理设计模式 代理设计模式通过代理控制对象的访问&#xff0c;可以详细访问某个对象的方法&#xff0c;在这个方法调用处理&#xff0c;或调用后处理。既(AOP微实现) 。 代理有分静态代理和动态代理&#xff1a; 静态代理&#xff1a;在程序…

POSTGRESQL中如何利用SQL语句快速的进行同环比?

1. 引言 在数据驱动的时代&#xff0c;了解销售、收入或任何业务指标的同比和环比情况对企业决策至关重要。本文将深入介绍如何利用 PostgreSQL 和 SQL 语句快速、准确地进行这两种重要分析。 2. 数据准备 为了演示&#xff0c;假设我们有一张 sales 表&#xff0c;存储了销…

微信订阅号和服务号的区别

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;我们都知道&#xff0c;服务号一个月只能发4次文章&#xff0c;但是订阅号每天都能发文章。不过在接收消息这一方面&#xff0c;服务号群发的消息有消息提醒&#xff0c;并显示在对话框&#xff1b…

重新认识Word——样式

重新认识Word Word样式给所有一级标题加上一级标题样式修改标题一样式&#xff0c;符合要求 正文样式标题前的小黑点导航窗格样式的相互复制Word一键转PPT 话说回来&#xff0c;一个程序员平时可能还看不起office全家桶的软件&#xff0c;但是&#xff0c;在实际的生活运用中&a…

音视频的功耗优化

前言 在应用中&#xff0c;录制与音视频模块往往是高耗能的模块&#xff0c;设备容易发热&#xff0c;影响体验。 什么是功耗优化 手机有多个耗电模块&#xff0c; SOC(CPU&#xff0c;GPU&#xff0c;DDR)&#xff0c;Display&#xff0c;Audio&#xff0c;Video&#xff0…

thinkphp 5.1 对数据库查出来的字段进行预处理

比如数据库的设计是下面这样子&#xff1a; 我想展示的是这个样子&#xff1a; 前端可以处理。 Think PHP的处理方式&#xff1a; 定义属性 &#xff1a; $this->customize 任意值;//这里的之没有作用 <?phpnamespace app\hs\controller\shop;use app\daogou\mo…