c语言练习题
C语言优选练习题,主要包括题目,思路分析,要点总结,代码及结果截图。
WLM-?!
充电中......
展开
-
打印九九口诀表 — C语言
题目:下面是一个完整的下三角九九口诀表:1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49原创 2022-05-25 10:58:35 · 2635 阅读 · 0 评论 -
水仙花数 — C语言【每个位上的数字的N次幂之和等于它本身】
题目:水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。思路:1.接收位数n,先计算0-9的n次方,将其保存在数组中(计算n次幂之和时直接调用,节省时间)2.根据位数确定取值范围,遍历3.求出每一个可疑数的幂次和跟其本身数字比较,若相等则输出。代码:原创 2022-05-21 11:54:04 · 2606 阅读 · 0 评论 -
币值转换 — C语言【0在不同位置的读法——以万为界】
题目:输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。输入格式:输入在一行中给出一个不超过9位的非负整数。输出格式:在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。思路: 1.保存. 将数字保存在数组中(个位数字存放.原创 2022-05-17 12:14:05 · 1037 阅读 · 0 评论 -
打印沙漏 — C语言【图形对称---找规律】
题目:本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定原创 2022-05-14 17:13:39 · 666 阅读 · 0 评论 -
N个分数求和 — C语言【化简分式(含思路和化简规律)】
题目:本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分原创 2022-05-12 22:38:50 · 3063 阅读 · 4 评论 -
三角形判断 — C语言【实数—用double或float(勿用int)】
题目:给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。输入格式:输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3输出格式:若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。要点:1.注意这里输入的数字不一定都是整数,而是实数,故需要原创 2022-05-12 12:24:27 · 931 阅读 · 0 评论 -
字符串替换 — C语言【由特殊到一般,找规律,定公式】
题目:本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母 A Z B Y C X D W … … X C Y B Z A 输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。思路:由题意可知,26个大写字母中,可以分为前13个(A-M)和后13个(N-Z)两组,第一组的字母由小到大,第二组的字母由原创 2022-05-11 20:32:35 · 931 阅读 · 0 评论 -
打印菱形图案 — C语言【化简-找规律(含分析过程)】
题目:本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。分析过程:代码:#include<stdio.h>#include<math.h>int main(){ int num; scanf("%d",&num); for(int i=-(num-1)/2;i<=(num-1原创 2022-05-10 11:39:54 · 616 阅读 · 2 评论 -
求幂级数展开的部分和 — C语言【阶乘的灵活拆分】
题目:已知函数可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求的近似值,求和一直继续到最后一项的绝对值小于0.00001输入格式:输入在一行中给出一个实数x∈[0,5]输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。要点:灵活拆分,若先求出,再通过计算k!求出的值,可以发现,当x=5时,超出范围,最后一项的值越界成了负数,此时结果显然是错误的。解决方法:令第一项num1=x/1,num2=(x/1)原创 2022-05-09 22:27:41 · 3531 阅读 · 2 评论 -
求e的近似值 — C语言【巧用保留位数,拒绝最大值溢出】
题目:自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求出该级数的前 n+1 项和。输入格式:输入第一行中给出非负整数 n(≤1000)输出格式:在一行中输出部分和的值,保留小数点后八位注意:一开始,n按照输入格式中给定的条件设置为≤1000,,,果然数据溢出了,用long long int也拯救不了的那种,结果如下:然后想到用数组存下来,,更难了好吗o(╥﹏╥)o!!!突然,输出格式中保留小数点后八位,一原创 2022-05-09 19:37:48 · 5256 阅读 · 4 评论 -
求给定精度的简单交错序列部分和 — C语言【交错序列-巧用flag】
题目:本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps输入格式:输入在一行中给出一个正实数eps输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围代码:#include<stdio.h>int main(){ int flag=1; //用flag表正负 double num,sum=0,m=0,n=0;原创 2022-05-09 18:08:38 · 345 阅读 · 0 评论 -
输出华氏-摄氏温度转换表 — C语言【设置字符宽度、右对齐,保留位数】
题目:输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。输入格式:在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。输出格式:第一行输出:"fahr celsius"接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,原创 2022-05-09 16:44:44 · 2332 阅读 · 0 评论 -
Have Fun with Numbers(数字游戏)— C语言【都是默认值0惹的祸——已修正】
题目:Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a原创 2022-05-07 22:54:19 · 1513 阅读 · 0 评论 -
求组合数 — C语言【double类型取整数部分(%.0lf输出)】
题目:本题要求编写程序,根据公式 算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数m和n(m≤n),以空格分隔。输出格式:按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>double fact原创 2022-05-07 17:18:56 · 2580 阅读 · 0 评论 -
二进制的前导的零 — C语言【十进制转二进制分大于0,小于0和等于0】
题目:计算机内部用二进制来表达所有的值。一个十进制的数字,比如24,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。现在,你的任务是写一个程序,输入一个整数,输出在32位表达下它前导的零的个数。输入格式:一个整数,在32位的整数可以表达的范围内。输出格式:一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。代码:#defin原创 2022-05-07 16:22:13 · 544 阅读 · 0 评论 -
Shuffling Machine(洗牌机) — C语言【洗牌顺序和次数由你决定】
题目:Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "inside jobs" where employees collaborate with gamblers by performing inadequate shuffles, many casinos e原创 2022-05-07 12:04:21 · 1929 阅读 · 2 评论 -
找完数 — C语言【完数-恰好等于除自身外的因子之和】
题目:所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。输入格式:输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。代码:#define _C原创 2022-05-07 11:01:04 · 481 阅读 · 0 评论 -
整除光棍 — C语言【模拟手算除法(附过程图解)】
题目:这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数原创 2022-05-05 16:24:36 · 2212 阅读 · 8 评论 -
计算阶乘和 — C语言【 简化版(一次循环完成)】
题目:对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!输入格式:输入在一行中给出一个不超过10的正整数N。输出格式:在一行中输出S的值。代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main() { int n; scanf("%d", &n); if (n > 0 && n <= 10) { int su原创 2022-05-04 17:22:56 · 784 阅读 · 0 评论 -
输出整数各位数字 — C语言【递归函数-从高到低逐位分离】
题目:本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。代码:#include<stdio.h>void print_num(int num){ //利用递归函数将整数分离并输出 if(num>9){ print_num(num/10); printf("%原创 2022-05-03 17:29:09 · 5742 阅读 · 3 评论 -
统计给定区间内素数个数并求和 — C语言【素数的判定】
题目:统计给定整数M和N区间内素数的个数并对它们求和。输入格式:输入在一行中给出两个正整数M和N(1≤M≤N≤500)。输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include <math.h>int main() { int m = 1, n = 1, cout = 0,sum = 0; scanf(原创 2022-05-03 15:28:37 · 3532 阅读 · 0 评论 -
念数字 — c语言【递归函数-逐位分离,Switch语句-读数字】
题目:输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。输入格式:输入在一行中给出一个整数,如:1234。(整数包括负数、零和正数)输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>void readnum(int num) { //读数字,将数字转换成相应的拼音 switch (num)原创 2022-05-01 22:02:07 · 526 阅读 · 0 评论 -
二分法求多项式单根 — c语言
题目:编写程序,计算给定3阶多项式f(x)=a3x^3+a2x^2+a1x+a0在给定区间[a,b]内的根。原理:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0。步骤:检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则 如果f(a)f(b)<0,则计算中点的值f((a+b)/2); 如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则 如果f(原创 2022-05-01 21:02:37 · 635 阅读 · 0 评论 -
两个多项式相加 — c语言【数组下标—记幂次;符号位—有输出且下一项不为0才添加;1,-1,0—幂次,系数需特殊对待】
题目内容:一个多项式可以表达为x的各次幂与系数乘积的和,比如:2x6+3x5+12x3+6x+20 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出。程序要处理的幂最大为100。输入格式:总共要输入两个多项式,每个多项式的输入格式如下:每行输入两个数字,第一个表示幂次,第二个表示该幂次的系数,所有的系数都是整数。第一行一定是最高幂,最后一行一定是0次幂。注意第一行和最后一行之间不一定按照幂次降低顺序排列;如果某个幂次的系数为0,就不出现在输入原创 2022-04-30 22:19:38 · 352 阅读 · 1 评论