
1.程序设计入门
本部分主要包含C语言入门编程习题.
好梦成真Kevin
Never ever give up.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
子串(大贤者福尔)
大贤者福尔的字符串研究取得了积极的进展,但他现在遇到了一个新的问题,他需要找到一个字符串的所有满足特殊条件的子串。他的问题具体来说是,对一个给定的字符串,按给定的子串大小N进行分割(N不超过字符串的长度),分割点位于依次位于字符串中相邻字符之间,使得最大子串的长度不超过N。同时,把分割后的所有子串依次拼接,就可以恢复为原始字符串。如给定字符串ABCDE,若N为1,则分割的子串为A B C D E;若N为2,根据起始分割点不同,可以有两种分割结果,分别为A BC DE和AB CD E。福尔希望你能够帮他,原创 2021-07-05 19:43:46 · 2359 阅读 · 3 评论 -
巅峰日(大贤者福尔)
大贤者福尔经过长期的研究后发现,人的体力、智商和情商和运气具有周期性,会有高峰和低估,并且呈现出周期性变化的规律。在每一个周期中会有一天是高峰,这一天人会在某个方便表现的非常出色。尽管如此,由于这些周期的长度不一致, 通常情况下几个周期的高峰不会在同一天出现。但大众又都希望哪一天是自己的巅峰日,在这一天中,自己的体力、智商和情商和运气都达到高峰。输入输入数据有若干组,每一组包括两行数据,第一行包括4个正整数,分别为体力、智商和情商和运气的周期,已知最大周期不超过50。第二行包括5个非负整数p,i,e原创 2021-07-04 22:06:07 · 1864 阅读 · 0 评论 -
魔法数(大贤者福尔)
大贤者福尔最近迷上了数学,他研究发现有些神奇的数似乎具有某种魔力。于是他开始研究自然数,发现某个范围内的一些数,经过一定规则运算后的和,等于另一个数按同样规则计算后的值。具体来说,给定不大于N的整数a,b,c,d(1≤a≤b≤c≤d≤N),可能存在关系a^x+b^x+c^x=d^x。福尔想知道在给定的范围N中,有多少数能够满足这种关系?输入输入数据有若干行,每行包括两个整数x, N(2≤x≤3,1≤N≤100)。输出对每组测试数据,先输出样例编号Case c:,c为当前测试样例的组号,从原创 2021-07-04 22:00:29 · 2448 阅读 · 0 评论 -
神奇的等式
大贤者福尔在研究数学问题时,发现有一些自然数能够构成一个形如下式的等式,颇为神奇。. 其中xi (0≤i≤9)为0−9之间的数字,且各不相同。福尔想知道给定N的值时,有多少数能够满足这种关系?输入输入数据有若干行,每行包括单个整数N(2≤N≤79)。输出对每行输入数据,先在单独的行中输出如Case x:的测试样例信息,x为测试样例编号,从1开始。若存在满足条件的数值,则分别按分母递减的顺序依次在独立的行中输出各个等式;若不存在满足条件的数,则在单独的行中输出No such number原创 2021-07-04 21:49:46 · 1624 阅读 · 0 评论 -
乘积(整数最大连续乘积问题)
大贤者福尔的数学研究成绩斐然,影响力越来越大,也有很多人向他请教。最近,有人咨询他一个问题。给定若干个整数S=S1,S2,...,Sn,其中若干个连续的数的最大乘积是多少?福尔觉得这个问题太简单,他想把这个问题作为对你的考验,你能够解出来吗?输入输入数据有若干行,每行包含N(1≤N≤18)个空格分隔的整数S,每个整数Si的范围为−10≤Si≤10。输出对每行输入数据,先在单独的行中输出如Case x: ans from-to的测试样例信息,x为测试样例编号,从1开始,ans为满原创 2021-07-04 21:37:29 · 1710 阅读 · 0 评论 -
A+B III(C语言大数存储)(Version 1.0)
计算两个整数A和B的和。输入输入有若干行,每行为由空格分隔的一对整数A和B,如: 5 12输出输出数据A和B的和。示例输入25 33示例输出58提示A和B可能很大,最大不超过1000位十进制数。[程序代码]#include<stdio.h>#include<string.h>#define MAXSIZE 1003void ReverseOutput(char *Result);void InitResult(cha.原创 2021-07-04 15:48:19 · 1021 阅读 · 0 评论 -
判断整数是不是回文数
#include<stdio.h>#include<math.h>#define Yes 1#define No 0typedef short Status;long Reverse(long x);long Cal(long m);Status Judge(long k);int main(){ long x; printf("Please input the value of x : "); scanf("%ld", &x);.原创 2021-06-22 14:07:23 · 202 阅读 · 0 评论 -
三天打渔两天晒网
[题目要求]某人三天打渔两天晒网,假设他从1990年1月1日开始打渔三天,然后晒网两天,请编程回答任意的一天他在打渔还是晒网。A boy works for 3 days while has a 2 days off. If he is working on 1st, Jan, 1990, then for a date entered from the keyboard, please write a program to determine what the boy is doing, worki.原创 2021-06-22 10:39:58 · 1130 阅读 · 0 评论 -
给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出和为目标值 target 的那两个整数, 并返回它们的数组下标
#include<stdio.h>#define MAXSIZE 5#define OK 1#define NotFound -1#define ERROR -2typedef short Status;Status Resolution(short *nums, short Size, short target, short *x, short *y);Status InitArray(short *nums, short Size);Status Traverse(shor.原创 2021-06-21 12:12:58 · 1597 阅读 · 0 评论 -
C语言中的结构体
在C语言中, 为什么要引入结构体类型呢, 首先来看这样一个问题.原创 2021-06-15 18:03:49 · 180 阅读 · 0 评论 -
文件的随机读写与文件缓冲
1. 如何实现文件的随机读写: 2. 文件定位的三个函数: 接着我们重点学习fseek函数的功能及使用方法.3. 文件缓冲: 在程序中我们并不能看到文件缓冲的存在, 这项任务通常由操作系统来完成. 我们知道, 硬盘是一个机械性的装置, 它需要通过机械臂在硬盘上寻址而找到对应的数据, 这样就导致硬盘数据访问的速度较慢, 而内存的访问速度是比较快的, 这也就出现硬盘、内存访问速度不匹配的问题. 在我们操作文件的实际过程中, 写数据时...原创 2021-06-11 18:46:10 · 284 阅读 · 2 评论 -
格式化数据的文件读写与内存数据块的文件读写
我们继续学习另一种读写文件的方式——按数据块读写文件.原创 2021-06-11 16:25:12 · 360 阅读 · 1 评论 -
按行读写文件
t原创 2021-06-10 17:11:43 · 204 阅读 · 0 评论 -
fgetc()、fputc()函数的使用实例
#include<stdio.h>#include<stdlib.h>int main(){ FILE *fp;/* 定义文件指针fp */ char ch; if((fp = fopen("demo.txt", "w")) == NULL) { /* 打开文件时发生错误 */ printf("Failure to open demo.txt!\n"); exit(0); } ...原创 2021-06-10 14:47:30 · 272 阅读 · 0 评论 -
删除字符串s中所出现的与变量c相同的字符
#include<stdio.h>void Squeeze(char *s, char c);int main(){ char a[80], c, *s; s = a; gets(a); scanf("%c",&c); Squeeze(s, c); printf("%s\n", s); return 0;}/* */void Squeeze(char *s, char c){ int i, j; fo.原创 2021-06-08 21:15:28 · 1793 阅读 · 0 评论 -
文件的打开与关闭
程序通过文件打开操作将流与设备联系起来, 文件打开后, 可在程序和文件之间交换数据. 通常有这样几个步骤: 在上述操作过程中, 文件指针的作用是不可或缺的. 下面我们来看一下fopen函数的函数原型. 由于文件的打开不是一定会成功的, 所以在文件打开后一定要检查是否打开成功. 如果一个文件没有成功地打开, 即fopen()函数返回NULL, 此时我们继续对文件指针fp执行操作, 此时程序一定会出错. 为了避免这种错误的发生, 在使...原创 2021-06-06 21:12:18 · 132 阅读 · 0 评论 -
二进制文件、文本文件和标准输入输出流
计算机中有内部存储器和外部存储器, 在买电脑时我们常常纠结于选择更大容量的内存还是选择更大容量的硬盘: 更大的nei'run原创 2021-06-06 11:36:01 · 224 阅读 · 0 评论 -
字符串处理函数
常用的字符串操作有如下四种.原创 2021-06-04 20:55:16 · 133 阅读 · 0 评论 -
一元多项式求和
#include<stdio.h>#include<stdlib.h>struct Node{ double ceof; /* 系数 */ long exp; /* 指数 */ struct Node *next;};/* */void InitHeadNode(struct Node* &, struct Node* &);void InsertNode(struct Node* &, double, short);v...原创 2021-06-04 12:19:07 · 297 阅读 · 0 评论 -
字符串的表示与存储
本篇博文将和大家一起学习字符串的表示与存储.原创 2021-06-03 20:16:30 · 403 阅读 · 0 评论 -
字符串的输入和输出
这一篇博客我们一起来学习字符串的输入和输出. 在定义一个字符数组时, 一定要保证数组的长度比原创 2021-06-02 21:14:07 · 2990 阅读 · 0 评论 -
常见的内存错误及其对策(※)
指针是C语言最强大的特性之一, 但也是最危险的特性之一: 误用指针导致的错误通常难以定位, 且后果严重. 常见的内存异常错误主要有两类, 一类是非法内存访问错误, 即代码访问了不该访问的内存地址; 另外一类是由于持续的内存泄漏导致系统内存不足, 编译器往往不易发现这类错误, 在程序运行时才能捕捉到:这类错误通常是时隐时现的, 这就进一步增加了对这类错误的排错难度. 下面我们就来介绍一些常见的内存错误及其解决对策. 前四种错误都属于内存非法访问错误, 即代码访问了不该访问的内存地...原创 2021-06-01 10:14:28 · 1356 阅读 · 0 评论 -
动态数组的特点及其基本操作(代码实现)
1. 动态数组 vs 静态数组:2. 动态数组信息的确定:3. 动态数组的基本操作: 在下述程序中, 给出了动态数组最基本的几种操作. 由于此程序的目的在于帮助大家理解动态数组的基本操作流程和思想, 所以对用户输入数据的合法性没有过多的检测. 在Grow函数中, 我们重新申请了一块堆空间, 而没有直接在原有堆空间的基础上继续扩展, 这是因为很难确保在原有空间之后恰有一块合适的空间还没被占用. 另外, 新的堆空间内是空白的, 系统不会自动将原有数据拷贝过来, 这就需要我们...原创 2021-05-24 15:35:03 · 317 阅读 · 0 评论 -
C程序的内存映像与动态分配函数
1. C程序中变量的内存分配方式:2. 栈和堆的区别:[注] 栈对数据的操作形式为"后进先出", 即先进栈的元素后出栈: 随着程序的执行, 栈由高地址端向低地址端扩展, 可以说栈是"向下生长"的. 堆和栈不同, 当我们试图在堆中申请一块空间时, 系统从堆的低地址端开始查找, 当找到可以容纳下这块数据的存储空间后, 就将这片存储空间标记为"已占用", 并将数据存储于其中. 考虑下面的这种情况, 在程序开始时堆区无数据占用, 这时我们需要将大小为2bytes的数据dat...原创 2021-05-24 08:27:44 · 148 阅读 · 0 评论 -
有序表合并
给定两个递增排序的链表,请合并这两个链表并使新链表中的节点仍然是递增排序的,合并后的链表中不能包含重复的元素。本题要求用链表实现。输入两个递增排序的链表,其中所有元素均为整数,每个表均以数字-1作为输入结束标志。输出在单独的行中输出按要求合并后的结果。示例输入11 2 4 -1 1 3 4 -1 示例输出11 2 3 4输入示例21 -1 1 -1示例输出21[代码实现]#include<stdio.h>.原创 2021-05-20 21:30:17 · 240 阅读 · 0 评论 -
主元素(Version3.0, 算法执行效率较Version2.0提升)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-20 19:46:20 · 137 阅读 · 0 评论 -
主元素(Version2.0, 算法执行效率较Version1.0提升)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-20 19:32:01 · 162 阅读 · 0 评论 -
主元素(Version1.0)
已知一个整数序列A=(a0,a1,…,an−1),其中0≤ai≤n,0≤i<n)。若某元素在数据序列中重复出现的次数为m,且m≥n/2,则称x为A的主元素。如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设顺序表A中有n个元素,请设计算法,找出A的主元素,若存在主元素,则输出主元素;否则输出A中没有主元素的信息。输入每组数据有两行,第一行为一个整数n,代表数组中有n个元素。第二行为数组中的n个元素(元素之间原创 2021-05-19 22:31:41 · 724 阅读 · 0 评论 -
方阵(用一维数组代替二维数组实现问题的求解)
请编写一个程序,读取一个N(0 \lt N \le 50)N(0<N≤50)维方阵,并完成如下下操作:按列序输出方阵; 计算方阵的主对角线元素的均值。结果保留小数点后2位数字。输入输入的第一行为方阵的阶数NN,随后的NN行中,每行包含NN个整数(每个整数的绝对值不超过100),为方阵的各行的元素。输出先按列序输出方阵各列的元素,随后在单独的行中输出对角线元素的均值,结果保留两位小数。输入示例55 2 3 4 55 6 7 8 95 1 3 5原创 2021-05-19 21:24:57 · 367 阅读 · 0 评论 -
一维数组
设定包含若干个数值元素的集合,对给定的数值,查询其在集合中出现的次数。输入第一行为若干数值(不超过10^4104个),第二行为若干查询的值(不超过100个),所有整数都在32位整数范围之内。输出对每个查询的数值,在单独的行中输出形如x: y的答案,其中x为查询的数值,y为其在集合中出现的次数。示例输入1 5 3 1 2 3 7 16 3 90 1示例输出0: 01: 2[程序代码]#include<stdio.h>#define MaxSi.原创 2021-05-19 20:32:48 · 208 阅读 · 0 评论 -
求输入数据的个数(遇到文件结束符EOF时结束输入)
#include<stdio.h>int main(){ short length = 0; short x; while(scanf("%hd", &x) != EOF) { length ++; } printf("共输入%hd个数据.\n", length); return 0;}原创 2021-05-19 20:01:00 · 323 阅读 · 0 评论 -
单向链表的基本概念
1. 在结构体的定义中声明结构体指针变量:[注]在上面的定义中, 编译器不知道temp类型的变量占用多少内存空间(在定义pt时, temp类型还未完成定义), 所以无法为其分配存储空间. 在下面的定义中, 指针变量在内存中所占用的空间是确定的, 即便编译器并不知道temp类型为何物, 也可以为其分配存储空间.2. 单向链表中的结点:3. 单向链表实现思想简介:4. 建立一个单向链表:...原创 2021-05-17 17:14:59 · 258 阅读 · 0 评论 -
指针部分练习Ⅱ
1.子函数Fun的功能是比较形参变量x和y所指的内存单元中的数据大小,将两者中的最小值返回。以下程序执行后输出结果是7,8,7。按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。[题目程序]#include<stdio.h>int Fun(int *x,int *y){ /*如果形参变量x所指的内存单元中的数据小于y所指的内存单元中的数据,则返回该最小值*/ if(*x < *y) { return *x; }...原创 2021-05-17 16:42:09 · 487 阅读 · 0 评论 -
指针部分练习
1.以下程序运行后的输出结果是#include <stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; printf("%d",b); return 0;}[分析]由语句 p = &a[3] 可知, p指向数组元素a[3],p[5] <-> *(p + 5), p + 5指向数组元素a[8],-> ...原创 2021-05-16 23:31:51 · 137 阅读 · 0 评论 -
确定奥运参赛国的入场次序(程序查错并修改)
下面主函数调用函数SortString()按奥运会参赛国国名在字典中的顺序对其入场次序进行排序,请问程序错在哪里?#include<stdio.h>#include<string.h>#define M 150 /* 最多的字符串个数 */void SortString(char *ptr[], int n);int main(){ int i, n; char *pStr[M]; printf("How many countries?");.原创 2021-05-16 21:11:31 · 1382 阅读 · 0 评论 -
用指针数组表示命令行参数
1. 什么是命令行参数:2. 命令行参数的作用及访问:3. 演示命令行参数与main函数形参间的关系:#include<stdio.h>int main(int argc, char* argv[]){ int i; printf("The number of command line arguments is %d.\n", argc); printf("The program name is %s.\n", argv[0]); .原创 2021-05-16 20:22:25 · 323 阅读 · 0 评论 -
用指针数组表示多个字符串
1. 存储一个字符串集合的最佳方式是什么:[注]如果使用二维数组存储字符串集合, 数组的列数最少为这些字符串中的最大长度+1. 如此看来, 在一般情况下, 随着字符串数量的增加, 主存空间的浪费现象就越发严重(特别是当只有个别字符串较长而其他字符串只有几个字符时). 显然, 使用二维数组存储字符串集合并不是最佳方案.[注]使用二维数组存储字符串集合就好比用许多容量相同的文件夹存放文件, 当存放的文件大小相差较大时, 文件夹的空间就没有得到很好的利用. 而使用字符指针数组实现字符串集合的存储就原创 2021-05-16 19:52:28 · 1396 阅读 · 0 评论 -
山地训练
题目内容:为了能在下一次跑步比赛中有好的发挥,小白在一条山路上开始了她的跑步训练。她希望能在每次训练中跑得尽可能远,不过她也知道农场中的一条规定:女孩子独自进山的时间不得超过M秒(1 <= M <= 10,000,000)。假设整条山路划分成T个长度相同的路段(1 <= T <= 100,000),并且小白用si表示第i个路段的路况,用u、f、d这3个字母分别表示第i个路段是上坡、平地、下坡。小白跑完一段上坡路的耗时是U秒(1 <= U <= 100),跑完一段平地的原创 2021-05-14 19:56:03 · 161 阅读 · 0 评论 -
子串判断
题目内容:从键盘输入两个长度小于80的字符串A和B,且A的长度大于B的长度,编程判断B是不是A的子串,如果是,则输出”Yes”,否则输出”No”。这里所谓的该串的子串是指字符串中任意多个连续的字符组成的子序列。程序运行结果示例1:Input the first string: Abcdefghijk123↙Input the second string: 123↙Yes程序运行结果示例2:Input the first string: abefsfl↙Input the seco原创 2021-05-14 18:44:06 · 232 阅读 · 0 评论 -
星期查找
题目内容:任意输入英文的星期几,通过查找如图所示的星期表,输出其对应的数字,若查到表尾,仍未找到,则输出错误提示信息。提示:用一个二维字符数组weekDay来存放如图所示的星期表的内容(字符串)。输入待查找的字符串,然后在星期表中顺序查找与输入字符串相匹配的字符串。找到的字符串在星期表数组中的第一维下标(行号)即为题目所求。程序运行结果示例1:Please enter a string:Friday↙Friday is 5程序运行结果示例2:Please enter a s.原创 2021-05-14 17:56:37 · 721 阅读 · 0 评论