C语言小题一练
Yangmila
愿努力能撑起所愿。
展开
-
统计各位数字之和是5的数
题目内容本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。函数接口定义:int is( int number );void count_sum( int a, int b );函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式count =原创 2021-01-15 16:37:59 · 3032 阅读 · 0 评论 -
使用函数统计指定数字的个数
题目内容本题要求实现一个统计整数中指定数字的个数的简单函数。函数接口定义int CountDigit( int number, int digit );其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。裁判测试程序样例#include <stdio.h>int CountDigit( int number, int digit );int main(){ int number原创 2021-01-15 16:35:31 · 915 阅读 · 0 评论 -
统计素数并求和
题目内容:本题要求统计给定整数M和N区间内素数的个数并对它们求和。输入格式:输入在一行中给出两个正整数M和N(1≤M≤N≤500)。输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。源程序:#include<stdio.h>#include<math.h>int main(){ int a,b,i,m,l=0,sum=0,num=0; scanf("%d %d",&a,&b); fo原创 2020-12-18 23:44:22 · 181 阅读 · 1 评论 -
水仙花数
题目内容:水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。源程序:#include<stdio.h>int p(int a,int b);int main(){ int N,a=1,n,sum=0,de,i; scanf("%d",&N); for(i=p(10,N-1);i<p(10,N);原创 2020-12-18 23:42:49 · 170 阅读 · 1 评论 -
验证“哥德巴赫猜想”
题目内容:数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。输入格式:输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。输出格式:在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。源程序:#inclu原创 2020-12-18 23:40:22 · 265 阅读 · 1 评论 -
求e的近似值
题目内容:自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。输入格式:输入第一行中给出非负整数 n(≤1000)。输出格式:在一行中输出部分和的值,保留小数点后八位。源程序#include<stdio.h>int main(){ int n,i; double b=1,sum=0; scanf("%d",&n); for(i=1;i<=n;i++)原创 2020-12-18 23:38:36 · 790 阅读 · 1 评论 -
求奇数分之一序列前N项和
题目内容:计算序列 1 + 1/3 + 1/5 + … 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。源程序#include<stdio.h>int main( ){ int i, d, n; double sum; scanf("%d", &n); sum=0; i=1; d=1;原创 2020-12-16 17:25:27 · 2719 阅读 · 0 评论 -
找完数
题目内容:所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。输入格式:输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。源程序:#include<stdi原创 2020-12-16 17:23:36 · 1171 阅读 · 0 评论 -
打印菱形图案
题目内容:打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。源程序#include <stdio.h>int main(void){ int n=0; scanf("%d",&n); int row=(n/2)+1; for(int i=1;i<=row;i++){ for(int j=row-i;j>0;j--){原创 2020-12-15 22:24:30 · 155 阅读 · 0 评论 -
输出三角形字符阵列
题目内容:输出n行由大写字母A开始构成的三角形字符阵列。输入格式:输入在一行中给出一个正整数n(1≤n<7)。输出格式:输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。源程序:#include<stdio.h>#include<math.h>int main(){ char c='A'; int n; scanf("%d",&n); while(n) {原创 2020-12-15 22:21:35 · 1322 阅读 · 0 评论 -
求整数的位数及各位数字之和
题目内容:对于给定的正整数N,求它的位数及其各位数字之和。输入格式:输入在一行中给出一个不超过10的9次方的正整数N。输出格式:在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。源程序:#include <stdio.h>int main(void) { int number, temp, i = 0, sum = 0; scanf("%d", &number); temp = number; while (temp) {原创 2020-12-15 22:18:54 · 1164 阅读 · 0 评论 -
最大公约数和最小公倍数
题目内容:本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。源程序:#include<stdio.h>int main(){ int a, b, c, m, n; scanf("%d %d", &m, &n); if(m<n){ c=m;原创 2020-12-14 22:46:48 · 134 阅读 · 0 评论 -
猜数字游戏
题目内容:猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Ov原创 2020-12-14 22:44:38 · 204 阅读 · 0 评论 -
统计字符
题目内容:输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。输出格式:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。源程序:#include<stdio.h>int main(void){ int letter, blank, digit, i , other;原创 2020-12-14 22:42:08 · 5229 阅读 · 0 评论 -
求交错序列前N项和
题目内容:计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,结果保留三位小数。源程序#include <stdio.h>int main(){ int N; double sum = 0; int sign = 1; int i; scanf("%d", &N); for(i=1; i<=N;i++){原创 2020-12-14 22:39:47 · 3083 阅读 · 1 评论 -
逆序的三位数
题目内容程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。输入格式:每个测试是一个3位的正整数。输出格式:输出按位逆序的数源程序# include <stdio.h> int main( ) { int c, b, i; int a[3]={0}; scanf("%d", &c); for (i=0; i<3; i++) { a原创 2020-12-03 21:39:02 · 278 阅读 · 0 评论 -
三子棋小游戏——C语言实现
游戏规则使用3x3的棋盘, 一个用户下X, 一个用户下O你一下,我一下,直到有三个字符连续且相同,则表示有一方赢了;最后如果没有位置了,则平局源程序及运行结果#include <stdio.h>#include <stdlib.h>#include <float.h>#include <time.h>#include <windows.h>void init(char arry[][3], int x, int y){ fo原创 2020-11-21 20:56:21 · 200 阅读 · 0 评论 -
计算一个数的每位之和
题目内容写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19输入:1729,输出:19源程序及运行结果#include <stdio.h>int DigitSum(int n){ int sum=0; int m=0; if(n!=0) { m=n%10; n=n/10; sum=m+DigitSum(n); } return sum;}int ma原创 2020-11-18 20:27:51 · 542 阅读 · 0 评论 -
字符串逆序
题目内容编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。源代码及运行结果#include <stdio.h>#include<stdlib.h>void reverse_string(char * string){ if(*string=='\0') { return ; } reverse_string(string+1); printf(原创 2020-11-18 20:24:57 · 192 阅读 · 0 评论 -
strlen的模拟
题目内容递归和非递归分别实现strlenstrlen函数strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。源程序及运行结果#include <stdio.h>int strlen(char *a){ if(*a!='\0') { return 1+strlen(a+1); }}int nostrlen(cha原创 2020-11-18 20:22:53 · 118 阅读 · 0 评论 -
求阶乘
题目内容递归和非递归分别实现求n的阶乘(不考虑溢出的问题)阶乘n!=1×2×3×…×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n源程序及运行结果#include<stdio.h>int digui(int n){ if(n==1) return 1; return n*digui(n-1);}int feidigui(int n){ int i,result; for(i=1;i<=n;++i) { result*=i;原创 2020-11-16 22:03:45 · 1486 阅读 · 0 评论 -
乘法口诀表
题目内容实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定如:输入9,输出99口诀表,输出12,输出1212的乘法口诀表。源程序及运行结果#include<stdio.h>void chengfa(int n){ int i,j,result; for(i=1;i<=n;++i) { for(j=1;j<=i;++j) { result=i*j; printf("%d*%d=%d\t",j,i,result); } printf(原创 2020-11-16 21:59:55 · 296 阅读 · 0 评论 -
素数的打印
题目内容:写一个代码:打印100~200之间的素数素数:只能被1和它本身整除的数。算法思想:首先使用双层循环语句,第一层循环控制循环的次数,第二层循环从2开始,到上个数能被这个数整除就跳出循环,然后用分支语句判断,若两个数相等则输出,否则不输出。源程序及运行结果:#include<stdio.h>int sushu(int n){ int i; for(i=2;i<n;++i) { if(n%i==0) return 0; } return 1;}原创 2020-11-15 16:58:27 · 157 阅读 · 0 评论 -
最大公约数
题目内容:给定两个数,求这两个数的最大公约数最大公约数:指两个或多个整数共有约数中最大的一个。辗转相除法:用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。源程序与运行结果:#include<stdio.h>int gys(int n,int m){ int tmp,ret; if(n<m) { tmp=n;原创 2020-11-15 16:40:48 · 930 阅读 · 0 评论