C语言
简单的c语言小程序
game-man
学习分享
展开
-
C语言 分解质因数
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)#include<stdio.h>#include<math.h>int ss(int x){ int i; if((x==1)||(x==2))return 1; for(i=2;i<x;i++) if(x%i==0)return 0; e原创 2020-09-16 21:10:01 · 1198 阅读 · 0 评论 -
C语言 矩阵乘法
问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22输入格式 第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开#include<stdio.h>int原创 2020-09-16 10:56:46 · 1311 阅读 · 0 评论 -
C语言 矩形面积交
问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。#include<stdio.h>int main(){ double min(double,double); double ma原创 2020-08-14 21:34:32 · 1221 阅读 · 0 评论 -
C语言 数的读法
问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi qian原创 2020-08-14 16:12:05 · 1595 阅读 · 0 评论 -
C语言 Sine之舞
问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+…sin(n))…) Sn=(…(A1+n)A2+n-1)A3+…+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。输入格式 仅有一个数:N<201。输出格式 请输出相应的表达式S原创 2020-08-14 12:30:09 · 293 阅读 · 0 评论 -
C语言 芯片测试
问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。 每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。 给出所有芯片的测试结果,问哪些芯片是好芯片。输入格式 输入数据第一行为一个整数n,表示芯片个数。 第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯原创 2020-08-14 11:26:54 · 909 阅读 · 0 评论 -
C语言 龟兔赛跑预测
问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而原创 2020-08-08 15:47:14 · 661 阅读 · 2 评论 -
C语言 回形取数
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。#include<stdio.h>int main(){ int n,m,count; scanf("%d%d",&n,&原创 2020-08-08 14:02:16 · 942 阅读 · 1 评论 -
C语言 2n皇后问题
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 输出格式 输出一个整数,表示总共有多少种放法。#inc原创 2020-07-26 09:28:25 · 1004 阅读 · 2 评论 -
C语言 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。 2. 重复步骤1,直到{pi}中只剩下一个数。 在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。 本题任务:对于给原创 2020-07-11 09:39:15 · 214 阅读 · 0 评论 -
C语言 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[原创 2020-06-28 17:44:27 · 1303 阅读 · 1 评论 -
C语言 01字串
问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。#include<stdio.h>int main(){ int a,b,c,d,e,i; for(i=0;i<100000;i++) {a=i/10000; b=i%10000/1000; c=i%1000/100; d=i%100/10; e=i%10; if((a==1||原创 2020-05-23 12:15:02 · 1992 阅读 · 0 评论 -
C语言 用指向数组的指针作函数参数
有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。#include<stdio.h>int main(){ void average(float*p,int n); void search(float(*p)[4],int n); float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; average(*score,12);//求12个分数的平均分 search(score,2);//求序号原创 2020-05-22 18:05:11 · 969 阅读 · 0 评论 -
C语言 字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。#include<stdio.h>#include<math.h>int main(){ int m,n; scanf("%d%d",&n,&m); int i,j; for(i=0;i<n;i++)原创 2020-05-22 16:57:58 · 1705 阅读 · 2 评论 -
C语言 数列特征
问题描述给出n个数,找出这n个数的最大值,最小值,和。#include<stdio.h>int main(){ int n,i,max,min,sum=0; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); max=a[0];min=a[0]; for(i=0;i<n;i++) { if(a[i]>max){ max=a[i];} if(a[i]<min)原创 2020-05-20 13:25:45 · 805 阅读 · 0 评论 -
C语言 通过指针引用多维数组
输出二维数组任一行任一列元素的值。#include<stdio.h>int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};//定义二维数组并进行初始化 int(*p)[4],i,j;//指针变量p指向包含4个整型元素的一维数组 p=a;//p指向二维数组的0行 printf("please enter row and colum:"); scanf("%d,%d",&i,&j);//输入要求输出的元素原创 2020-05-19 11:26:47 · 151 阅读 · 0 评论 -
C语言 查找整数
问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。#include<stdio.h>int main(){ int n,i,m,k; scanf("%d",&n); int a[n]; for(i=0;i<n;原创 2020-05-19 11:07:13 · 2569 阅读 · 5 评论 -
C语言 通过指针引用多维数组
有一个3x4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值.#include<stdio.h>int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p<a[0]+12;p++) {if((p-a[0])%4==0)printf("\n"); printf("%4d",*p); } printf("\n"); return 0;}...原创 2020-05-17 14:20:17 · 342 阅读 · 0 评论 -
C语言 杨辉三角形
问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。#include<stdio.h>int main(){ int i,j,n; scanf("%d",&n); int a[n][n]; for(i=0;i<n;i++)原创 2020-05-17 14:06:45 · 419 阅读 · 0 评论 -
C语言 通过指针引用多维数组
输出二维数组的有关数据(地址和元素的值)#include<stdio.h>int main(){ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; printf("%d,%d\n",a,*a);//0行起始地址和0行0列元素地址 printf("%d,%d\n",a[0],*(a+0));//0行0列元素地址 printf("%d,%d\n",&a[0],&a[0][0]);// 0行起始地址和0行0列元素地址 printf原创 2020-05-15 19:51:30 · 202 阅读 · 0 评论 -
C语言 特殊的数字
问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。#include<stdio.h>int main(){ int i,a,b,c; for(i=100;i<1000;i++) {a=i/100; b=i%100/10; c=i%10; if(i==a*a*a+b*b*b+c*c*c) printf("%d\n",i); } return 0;}...原创 2020-05-15 19:04:53 · 1848 阅读 · 0 评论 -
C语言 回文数
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式 按从小到大的顺序输出满足条件的四位十进制数。#include<stdio.h>int main(){int i,a,b,c,d;for(i=1000;i<10000;i++){a=i/1000;b=i%1000/100;c=i%100/10;d=i%10;if(a==d&&b==c)printf("%d\n",i);}return 0;原创 2020-05-14 09:13:50 · 321 阅读 · 0 评论 -
C语言 特殊回文数
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。#include<stdio.h>int main(){ int n,i,j,a,b,c,d,e,f; scanf("%d",&n); for(i=10000;i<100000;i++) { a = i/10000;//万位 b = i%10000/1000;//千位原创 2020-05-13 19:15:21 · 901 阅读 · 1 评论