大一c语言期末复习题

news2025/1/19 11:28:19

第11题:

答案:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100];
	char b[100];
	int n = 0, i = 0, j = 0;
	fgets(a, sizeof(a), stdin);    //输入一串字符存给a
	size_t len1 = strlen(a);       //一开始该字符串的长度
	if (len1 > 0 && a[len1 - 1] == '\n')     
	{
		a[len1 - 1] = '\0';    //将回车符删掉
	}
	printf("请输入下标正整数n\n");
	scanf("%d", &n);
	size_t len2 = strlen(a);     //删掉回车符后字符串的长度
	if (n >= 0 && n < len2)     //如果n<字符串的长度
	{
		for (i = 0; i < len2; i++)    //将a数组复制给b
		{
			if (i != n)     //如果没轮到n
			{
				b[j++] = a[i];
			}
		}
		b[j] = '\0';    //最后用\0结束掉b
	}
	printf("数组a:%s\n", a);
	printf("数组b:%s\n", b);
	printf("%d\n", n);
}

知识点:

一:fgets函数:当遇见一行数据并存给数组时就用fgets函数,因为一般用while((***)!=**)来处理多组输入时,再想将这些数据一个一个存给数组,还需要一个循环(例如for),这时就会发现,不论是while里面嵌套for,还是for里面嵌套while都不能实现上述的要求。

fgets函数格式:fgets(a,b,stdin),stdin代表输入缓冲区,b代表取stdin(即输入缓冲区)的个数,a代表从stdin里面取b个元素存进的地方a。

举例:

如图可知,想将键盘输入的xbadbcjdd(共10个元素)存进数组a,但实际只存了9个,第10个元素变成了‘\0’,是因为字符串必须要有\0结尾,所以会预留一个字节的长度给\0,所以实际存的元素个数为10-1(即b-1)

注:回车键\n也会被当作普通字符存进数组a中

二:sizeof运算符生成的值的数据类型是size_t,但其实在<stddef.h>头文件中,编译器已经通过typedef声明将size_t的数据类型定义为无符号整型,所以size_t其实就是无符号整型的一个别名

第12题:

答案:

#include<stdio.h>
int main()
{
	int n = 0, m = 0, i = 0, j = 0, tt[100][100] = { 0 }, pp[100] = { 0 };
	printf("请输入m和n的值\n");
	scanf("%d%d", &m, &n);    //输入m和n的值
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			scanf("%d", &tt[i][j]);    //将值赋值给二维数组
		}
	}
	for (j = 0; j < n; j++)      
	{
		int min = tt[0][j];    //假设每一列的第一位数为最小值(即行的下标为0)
		for (i = 1; i < m; i++)     //从第一位一直往下比较
		{
			if (tt[i][j] < min)    //如果下面的数比假设的最小值小
			{
				min = tt[i][j];    //这个数成为新的最小值
			}
		}
		pp[j] = min;       //将这一列的最小值存到一维数组
		printf("%d ", pp[j]);    //打印一维数组里的数
	}
	return 0;
}

第13题:

答案:

#include<stdio.h>
#include<string.h>
int main()
{
	char c, a[100] = { 0 };
	int len1 = 0, len2 = 0, i = 0, j = 0;
	fgets(a, sizeof(a), stdin);    //输入一行字符
	len1 = strlen(a);      //包括\n的字符串长度
	if (a[len1 - 1] == '\n')    
	{
		a[len1 - 1] = '\0';    //将字符串里面的换行符\n删去
	}
	len2 = strlen(a);   //删去\n后的字符串长度
	printf("请输入字符c:\n");
	scanf("%c", &c);    //输入字符c
	for (i = 0,j=0; i < len2; i++)
	{
		if (a[i] != c)    //如果不是字符c
		{
			a[j++] = a[i];    //则再赋给a
		}
	}
	a[j] = '\0';    //最后用\0结束a
	printf("%s\n", a);    //打印删去字符c的数组a
	return 0;
}

跟第11题挺像的,就不多说了(第11题是删1个字符,本题是删所以相同的字符)

第14题:

答案:

#include<stdio.h>
int main()
{
	int m = 0, i = 0, j = 0, max = 0;
	int arr[2][100] = { 0 };
	printf("请输入m的值:\n");
	scanf("%d", &m);    //输入m的值
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < m; j++)
		{
			scanf("%d", &arr[i][j]);    //将数据存进二维数组
		}
	}
	max = arr[0][0];    //假设二维数组的第一个数为最大值
	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < m; j++)
		{
			if (arr[i][j] > max)    //如果后面有某个数大于假设的最大值
			{
				max = arr[i][j];    //这个数为新的最大值
			}
		}
	}
	printf("最大值是:%d\n", max);   //打印最大值
	return 0;
}

第15题:

答案:

#include<stdio.h>
#include<string.h>
int main()
{
	int len1 = 0, len2 = 0, i = 0, j = 0;
	char a[100] = { 0 };
	fgets(a, sizeof(a), stdin);    //输入一行数据存给数组a
	len1 = strlen(a);           //包括\n的字符串长度
	if (a[len1 - 1] == '\n')
	{
		a[len1 - 1] = '\0';     //将字符串里面的换行符\n删去
	}
	len2 = strlen(a);        //删去\n后的字符串长度
	for (i = 0,j=0; i < len2; i++)    
	{
		if (a[i] != '*'||i==len2-1)    //当不是*或者是最后一位时(因为题目是除去尾部的*不删,就相当于最后一位无论是字母还*都不删)
		{
			a[j++] = a[i];
		}
	}
	a[j] = '\0';     //最后用\0结束a
	printf("%s\n", a);    //打印数组a
	return 0;
}

跟前面两题大同小异,也不多说了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Android12】Android Framework系列---tombstone墓碑生成机制

tombstone墓碑生成机制 Android中程序在运行时会遇到各种各样的问题&#xff0c;相应的就会产生各种异常信号&#xff0c;比如常见的异常信号 Singal 11&#xff1a;Segmentation fault表示无效的地址进行了操作&#xff0c;比如内存越界、空指针调用等。 Android中在进程(主要…

华为hcia之ipv6实验手册

R3: dhcp enable ipv6 dhcpv6 pool test address prefix 2000:23::/64 excluded-address 2000:23::2 dns-server 2000:23::2 interface GigabitEthernet0/0/0 ipv6 enable ipv6 address 2000:12::2/64 ipv6 address auto link-local undo ipv6 nd ra halt //无状态配置 inter…

基于Java网上点餐系统设计与实现

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

Jmeter吞吐量控制器总结

吞吐量控制器(Throughput Controller) 场景&#xff1a; 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B …

行车记录仪变清晰,变高清的办法一定要收藏

有时候我们会发现行车记录仪拍摄的视频不够清晰&#xff0c;特别是出现事故需要视频为证的时候&#xff0c;如果视频太模糊&#xff0c;很难获得交警的支持&#xff0c;那么如何让行车记录仪拍摄的视频变得更加清晰呢&#xff1f; 小编给大家分享几个办法&#xff0c;建议收藏…

山西电力市场日前价格预测【2023-12-31】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-31&#xff09;山西电力市场全天平均日前电价为445.23元/MWh。其中&#xff0c;最高日前电价为791.27元/MWh&#xff0c;预计出现在08:15。最低日前电价为270.52元/MWh&#xff0c;预计…

SpringIOC之ApplicationObjectSupport

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

LT8612UX-HDMI2.0 to HDMI2.0 and VGA Converter with Audio,支持三通道视频DAC

HDMI2.0 to HDMI2.0 and VGA Converter with Audio 1. 描述 LT8612UX是一个HDMI到HDMI和vga转换器&#xff0c;它将HDMI2.0数据流转换为HDMI2.0信号和模拟RGB信号。 它还输出8通道I2S和SPDIF信号&#xff0c;使高质量的7.1通道音频。 LT8612UX支持符合HDMI2.0/ 1.4规范的…

k8s搭建(五、k8s可视化管理工具Dashboard配置)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Java开发岗面试】八股文—数据库MySQLRedis

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…

一起玩儿物联网人工智能小车(ESP32)——20. PWM(脉冲宽度调制)技术初探

摘要&#xff1a;本文主要介绍脉冲宽度调制技术的基本知识。 今天继续完善智能小车的功能。前面&#xff0c;已经通过控制ESP32的GPIO引脚输出高低电平来实现了小车向各个方向行走的运动。但能走只是最基础的功能&#xff0c;下面就来学习在智能小车行走的时候&#xff0c;如何…

元旦特辑:Note5---插入排序

目录 前言&#x1faa9; 1. 排序的概念运用&#x1f7e3; 1.1 排序的概念&#x1f7ea; 1.2 排序的运用&#x1f49c; 2. 直接插入排序&#x1f7e2; 2.1 基本思想&#x1f7e9; 2.2 思路分析&#x1f49a; 2.3 代码实现✅ 2.3.1 sort.h 2.3.2 sort.c 2.3.3 test.c …

Linux网络编程学习心得.4

1.epoll工作模式 水平触发 LT 边沿触发 ET 因为设置为水平触发,只要缓存区有数据epoll_wait就会被触发,epoll_wait是一个系统调用,尽量少调用 所以尽量使用边沿触发,边沿出触发数据来一次只触发一次,这个时候要求一次性将数据读完,所以while循环读,读到最后read默认带阻塞…

设计模式——行为型模式

模板方法模式 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在类间…

专访大华智慧运营:利用物联网技术,加快融合智能

近日&#xff0c;指令集智能科技到访浙江大华智慧物联运营服务有限公司&#xff0c;对产品研发部总经理孙旭先生进行了深度采访。孙旭先生在采访中表示“现在行业对于运营服务的诉求越来越高&#xff0c;而针对物理空间的运营&#xff0c;最典型的特征就是要靠物联网产品支撑……

嵌入式科普(8)ESP-IDF newlib相关介绍和对比分析

一、目的/概述 二、资料来源 三、ESP-IDF简介 3.1 ESP-IDF FreeRTOS 3.2 ESP-IDF heap_caps 3.3 ESP-IDF newlib 四、对比 嵌入式科普(8)ESP-IDF newlib相关介绍和对比分析 一、目的/概述 1、在我的嵌入式科普(6)你听说过FreeRTOS heap6吗&#xff1f;…

命令模式-举例

开关和电灯之间并不存在直接耦合关系&#xff0c;在命令模式中&#xff0c;发送者与接收者之间引入了新的命令对象&#xff0c;将发送者的请求封装在命令对象中&#xff0c;再通过命令对象来调用接收者的方法。 命令模式的主要缺点如下&#xff1a; 使用命令模式可能会导致某…

Halcon纹理分析texture_laws/trans_from_rgb

Halcon纹理分析 文章目录 Halcon纹理分析1. 纹理滤波器2. 织物折痕检测 纹理是图像表面的一种灰度变化。有的纹理很规则&#xff0c;会以局部小区域为单元重复出现&#xff0c;而有的纹理则呈现出随机性。对于规则的纹理&#xff0c;可以很容易地从中分辨出重复的区域&#xff…

【BERT】深入理解BERT模型1——模型整体架构介绍

前言 BERT出自论文&#xff1a;《BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来&#xff0c;在自然语言处理领域&#xff0c;BERT模型受到了极为广泛的关注&#xff0c;很多模型中都用到了BERT-base或者是BE…

一个静态网站可以增加什么第三方功能/服务

一个静态网站&#xff0c;无后台功能&#xff0c;怎么增加一些实用功能呢&#xff1f;我们来看看一些免费的第三方服务。 静态页面寄存 Gitee pages/Github pages 都可以&#xff0c;绑定一个域名&#xff0c;版本一提交&#xff0c;直接发布有效果。 评论 每个 URL 页面都…