![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言经典练习
率真的瓜子
自作聪明终作死,善积跬步将行远
展开
-
【C语言】PTA二分查找
本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};L是用户传入的一个线性表,其中ElementType元素可以通原创 2020-09-04 10:59:10 · 1732 阅读 · 0 评论 -
【C语言】求e的近似值(用到高精度乘法)
题目来源:浙大PTA自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。输入格式:输入第一行中给出非负整数 n(≤1000)。输出格式:在一行中输出部分和的值,保留小数点后八位。输入样例:10输出样例:2.71828180这道题要求计算1000的factorial,不管用int还是long都会溢出。因此采用高精度乘法。(我是参考别人的代码的,就当是做笔记了)以下代码参考博文:https://b原创 2020-08-09 16:04:40 · 8878 阅读 · 0 评论 -
【C语言】猜数字游戏
题目来源:浙大PTA猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“G原创 2020-08-08 14:36:41 · 4371 阅读 · 1 评论 -
【C语言】求给定精度的简单交错序列部分和
来源:浙大PTA本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。输入格式:输入在一行中给出一个正实数eps。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。输入样例1:4E-2输出样例1:sum = 0.854457输入样例2:0.02输出样例2:sum = 0.826310这道题的实际意思是输入最后一项的大小,求到这一项为止的和原创 2020-08-08 12:45:07 · 7539 阅读 · 2 评论 -
【C语言】三角形判断
题目来源浙大PTA给定平面上任意三个点的坐标,检验它们能否构成三角形。输入格式:输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1,y1,x2,y2,x3,y3x_1,y_1,x_2,y_2,x_3,y_3x1,y1,x2,y2,x3,y3。输出格式:若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。输入样例1:4 5 6 9 7 8原创 2020-08-08 10:24:47 · 3459 阅读 · 1 评论 -
【C语言】比较大小(排序啦啦)
题目来源:浙大PTA本题要求将输入的任意3个整数从小到大输出。输入格式:输入在一行中给出3个整数,其间以空格分隔。输出格式:在一行中将3个整数从小到大输出,其间以“->”相连。输入样例:4 2 8输出样例:2->4->8解答:#include<stdio.h>#define N 4void sort(int a[N]) /*一个排序算法,传入数组a[N]*/{ int n=0,i=0,j=0,k;原创 2020-08-07 19:57:41 · 1760 阅读 · 0 评论 -
【C语言】输出倒三角图案
来源:浙大版《C语言程序设计(第3版)》题目集本题要求编写程序,输出指定的由“*”组成的倒三角图案。输入格式:本题目没有输入。输出格式:按照下列格式输出由“*”组成的倒三角图案。* * * * * * * * * *思路是,分别按行和列打印,找到每一行打印数字的个数j与行数i的关系。解答:#include <stdio.h>int main(){ for(int i=0;i<4;i++) { for(int j=0;j原创 2020-08-06 15:48:57 · 18524 阅读 · 4 评论 -
【C语言】查找子串(采用两个循环查找)
题目来源:浙大PTA本题要求实现一个字符串查找的简单函数。函数接口定义:char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。裁判测试程序样例:#include <stdio.h>#define MAXS 30char *search(char *s, char *t);void ReadString( char s[] ); /* 裁判提供,细节不表 */int原创 2020-08-05 20:08:14 · 2066 阅读 · 0 评论 -
【C语言】指定位置输出字符串(采用指针方法)
题目来源:浙大PTA本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。函数接口定义:char *match( char *s, char ch1, char ch2 );函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。裁判测试程序样例:#include <stdio.h>#define MAXS 10char *match( char *s, char c原创 2020-08-05 11:51:57 · 4717 阅读 · 3 评论 -
【C语言】字符串的连接
本题要求实现一个函数,将两个字符串连接起来。函数接口定义:char *str_cat( char *s, char *t );函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXS 10char *str_cat( char *s, char *t );int main(){ char *p; char原创 2020-08-04 15:08:11 · 7030 阅读 · 0 评论 -
【C语言】计算最长的字符串长度
本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:int max_len( char *s[], int n );其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。裁判测试程序样例:#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXN 10#define MAXS 20int max_len( cha原创 2020-08-04 12:07:16 · 6424 阅读 · 0 评论 -
【C语言】查找星期(字符串查找)
题目来源:浙大PTA本题要求实现函数,可以根据下表查找到星期,返回对应的序号。序号 星期0 Sunday1 Monday2 Tuesday3 Wednesday4 Thursday5 Friday6 Saturday函数接口定义:int getindex( char *s );函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。裁判测试程序样例:#include <stdio.h>#include <string.原创 2020-08-04 10:38:20 · 5695 阅读 · 0 评论 -
【C语言】输出月份英文名
本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。裁判测试程序样例:#include <stdio.h>char *getmonth( int n );int main(){ int n; char *s; scanf("%d", &n); s原创 2020-08-04 08:52:36 · 9734 阅读 · 2 评论 -
【C语言】十进制转换二进制
题目来源:浙大PTA题库本题要求实现一个函数,将正整数n转换为二进制后输出。函数接口定义:void dectobin( int n );函数dectobin应在一行中打印出二进制的n。建议用递归实现。裁判测试程序样例:#include <stdio.h>void dectobin( int n );int main(){ int n; scanf("%d", &n); dectobin(n); return 0;}/*原创 2020-08-03 14:46:48 · 704 阅读 · 0 评论 -
【C语言】判断满足条件的三位数
题目来源:浙大PTA题库本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。函数接口定义:int search( int n );其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。裁判测试程序样例:#include <stdio.h>#include <math.h>int search( int n );int main(){原创 2020-08-03 10:52:53 · 4124 阅读 · 0 评论 -
【C语言】按等级统计学生成绩
题目来源:浙大PTA本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。函数接口定义:int set_grade( struct student *p, int n );其中p是指向学生信息的结构体数组的指针,该结构体的定义为:struct student{ int num; char name[20]; int score; char grade;};n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_gr原创 2020-08-03 09:57:38 · 2869 阅读 · 1 评论 -
【C语言】判断回文字符串
本题来源于浙大PTA题库这是一道简单的字符串处理题本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。裁判测试程序样例:#include <stdio.h>#include <string.h>#defin原创 2020-08-02 15:13:50 · 3710 阅读 · 0 评论 -
【C语言】一个删除字符串中的指定字符的简单函数
本题要求实现一个删除字符串中的指定字符的简单函数。函数接口定义:void delchar( char *str, char c );其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。裁判测试程序样例:#include <stdio.h>#define MAXN 20void delchar( char *str, char c );void ReadString( char s[] ); /* 由裁判实现,原创 2020-08-01 22:37:50 · 14507 阅读 · 9 评论 -
【C语言】使用函数实现字符串部分复制
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数接口定义:void strmcpy( char *t, int m, char *s );函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。裁判测试程序样例:#include <stdio.h>#define MAXN 20void strmcpy( char *t, int m, char *s原创 2020-08-01 09:30:52 · 11703 阅读 · 0 评论 -
【C语言】报数(报道某个数就出局)
报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上原创 2020-07-31 17:04:35 · 1032 阅读 · 0 评论 -
【C语言】数组循环右移
本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由 (a0,a1,...,an−1)(a_0,a_1,...,a_{n-1})(a0,a1,...,an−1) 变为 (an−m,...,an−1,a0,a1,...,an−m−1)(a_{n-m},...,a_{n-1},a_0,a_1,...,a_{n-m-1})(an−m,...,an−1,a0,a1,...,an−m−1) 即最后m个数循环移至最前原创 2020-07-31 08:33:21 · 14560 阅读 · 2 评论 -
【C语言】移动字母
本题要求编写函数,将输入字符串的前3个字符移到最后。函数接口定义:void Shift( char s[] );其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXS 10void Shift( char s[] );void GetString( char s[] ); /*原创 2020-07-30 23:17:19 · 3269 阅读 · 0 评论 -
【C语言】使用函数输出一个整数的逆序数
本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。裁判测试程序样例:#include <stdio.h>int reverse( int number );int main(){ int n; scanf("%d", &n); printf("%d\n", reverse(n)); return 0;}/*原创 2020-07-30 16:13:19 · 16343 阅读 · 2 评论 -
【C语言】使用函数输出指定范围内的Fibonacci数
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格原创 2020-07-20 23:02:58 · 4692 阅读 · 0 评论 -
【C语言】使用函数输出指定范围内的完数(格式化输出)
本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义:int factorsum( int number );void PrintPN( int m, int n );其中函数factorsum须返回int number的因子和;函数PrintPN要逐行输出给定范围[m, n]内每个完数的因子累加形式的分解式,每个完原创 2020-07-20 17:51:09 · 1943 阅读 · 0 评论 -
【C语言】使用函数求特殊a串数列和
要求给定两个均不超过9的正整数a和n,要求编写函数求a+aa+aaa++⋯+aa⋯a(n个a)之和。裁判测试程序样例#include <stdio.h>int fn( int a, int n );int SumA( int a, int n ); int main(){ int a, n; scanf("%d %d", &a, &n); printf("fn(%d, %d) = %d\n", a, n, fn(a,n));原创 2020-07-20 16:12:47 · 962 阅读 · 0 评论 -
【C语言】分类统计字符个数(多行输入字符串)
习题6-1 分类统计字符个数 (15分)本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。裁判测试样例:#include <stdio.h>#define MAXS 15void StringCount( char s[] );void ReadString( char s[] ); /* 由裁判实现,略去不表 */int main(){ char s[MAXS]; ReadString(s); StringCo原创 2020-07-20 12:29:52 · 9338 阅读 · 0 评论