![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
一只睡不醒的猪
目前是吉林大学20届研究生在读
展开
-
交换两个数字(不使用其他变量)
面试题—交换两个数字(不使用其他变量)一、题目要求:有两个整数变量a = 6, b = 100不使用其他变量,交换两个变量的值二、解法解法1(使用其他变量):#解法1–使用临时变量c = bb = aa = cprint(a)print(b)解法2(不使用其他变量):#解法2–不使用临时变量a = a + bb = a - ba = a - bprint(a)print(b)解法3(Python独有):#解法3---Python专有# 使用元组的方法进行交换原创 2020-10-19 20:54:33 · 522 阅读 · 0 评论 -
计算整数的位数,并逆序输出
如何计算整数的位数,并逆序输出?首先需要对该整数进行分解,获得每一位的数值,将其存放在数组里,然后输出其位数并逆序输出代码可直接使用,若要求不同,只需进行相应的修改即可#include<stdio.h>int main(){ int a[5],x,n,i; printf("输入一个数:"); scanf("%d",&x); a[0]=x%10;//获得个位 ...原创 2019-01-14 21:55:47 · 1386 阅读 · 0 评论 -
有15个数按从小到大的顺序存放在一个数组中。(折半查找)
有15个数按从小到大的顺序存放在一个数组中。输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,输出“不在表中”。折半查找法的原理是:对于一个升序数组,将中间的数和输入的数进行比较,若中间的数大,则选择数组的前半部分在进行该操作,若中间的数小,则选择数组的后半部分继续进行比较。例如一个数组a[1]~a[9],其值分别为:1 3 5 7 9 11 13 15 17如...原创 2019-01-20 11:11:20 · 22947 阅读 · 5 评论 -
将四个整数按照升序排序
如何将四个数按照从小到大进行排序?作者采用的是先输入四个数存入数组中,然后进行比较,最小的放在数组第一位,循环往复,数组内的值即为按升序排列,然后将数组值输出输入:7 4 9 2则输出: 2 4 7 9下面代码可直接使用#include<stdio.h>int main(){ int i,a[4],min,temp; printf("输入四个整数:"); for(i...原创 2019-01-15 13:35:39 · 5007 阅读 · 0 评论 -
有四个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1.这四个塔的高度为10米。塔以外无建筑物。今输入一个点的坐标,求该点的建筑高度(塔外的高度为0m)
有四个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1.这四个塔的高度为10米。塔以外无建筑物。今输入一个点的坐标,求该点的建筑高度(塔外的高度为0m)?首先将四个点表示出来,然后输入点坐标,计算到各个圆心的距离,只有当四个距离都大于1时,建筑高度为0,负责为10.代码已经过编译,可直接使用#include<stdio.h>int main()...原创 2019-01-15 13:54:22 · 17775 阅读 · 4 评论 -
输入百分制成绩,要求输出等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
输入百分制成绩,要求输出等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80到89分为‘B’,70到79分为‘C’,60到69分为‘D’,60分以下为‘E’。采用switch语句将分数分成从0~10共11个等级,然后进行赋值计算分数所处的等级来输出。代码已经过编译,可直接使用#include<stdio.h>int main(){ float score;...原创 2019-01-15 14:02:59 · 18500 阅读 · 4 评论 -
企业发放的奖金根据利润提成,从键盘输入当月利润I,求应发放奖金总额。
企业发放的奖金根据利润提成。利润I低于或等于100 000元时,奖金可提10%;利润高于100,000元,低于200 000(100 000<I<=200 000)元时,低于100 000元的可按照10%提成,高于100 000元的部分,可提成7.5%;200 000<I<=400 000时,高于200 000的部分可按5%提成;400 000<I<=600 0...原创 2019-01-15 14:18:13 · 11534 阅读 · 3 评论 -
输入两个正整数m和n,求其最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数最大公约数为两者的公共因子,可以用两者之间较大的数和较小的数取余求得最小公倍数可根据两者相乘再除以最大公约数得到代码已经过编译,可直接使用#include<stdio.h>int main(){ int m,n,temp,r,p; printf("请输入两个正整数:\n"); scanf("%d%d",&m,&a...原创 2019-01-15 14:53:51 · 21208 阅读 · 5 评论 -
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数首先需要判断各自所出的范围:中英文字母:a到z、A到Z空格:空一个字符数字:1~9然后则对一串字符进行逐个比较判断代码已经过编译,可直接使用#include<stdio.h>int main(){ int a=0,b=0,c=0,d=0;//a存储英文字母个数,b存储空格的个数,c存储数字的个数,d存储...原创 2019-01-15 15:02:52 · 38111 阅读 · 5 评论 -
求Sn=a+aa+aaa+...+aa..a之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入
求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入首先将n的每一次的值使用函数写出来,进行累加,从n=1循环直到n,得出最后结果结果已经过编译,可直接进行使用#include<stdio.h>int flag(int a,int n)//计算每一次的值 { int p=a; for(in...原创 2019-01-15 15:31:26 · 10952 阅读 · 0 评论 -
求n从1到20阶乘的和(即1+2!+3!+4!+...+20!)
求1+2!+3!+4!+…+20!首先需要一个大循环,从1到20,然后在小循环里计算N阶乘,使用到累加求和,即可得出最后结果代码已经过编译,可直接进行使用#include<stdio.h>float flag(int n)//求n阶乘 { float p=1; for(int i=n;i>0;i--) p=p*i; return p;}int main()...原创 2019-01-15 15:38:01 · 20736 阅读 · 0 评论 -
求k从1到100的累加和与1到50的平方累加和与1到10的倒数累加和
计算:代码已经过编译,可直接进行使用#include<stdio.h>int main(){ float s1=0,s2=0,s3=0,sum; int k; for(k=1;k<=100;k++) s1=s1+k; for(k=1;k<=50;k++) s2=s2+k*k; for(k=1;k<=10;k++) s3=s3+(1/k); ...原创 2019-01-15 15:51:30 · 9280 阅读 · 4 评论 -
输出所有的水仙花数
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。如:153=111+555+333代码已经过编译,可直接使用#include<stdio.h>int main(){ int n,x,y,z; for(n=100;n<1000;n++) { x=n%10; y=(n-x)/10%10; z=n/100; if(n==x*x...原创 2019-01-15 16:06:30 · 3540 阅读 · 1 评论 -
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和代码已经过编译,可直接进行使用#include&lt;stdio.h&gt;int main(){ float a=1,b=2,c,e,sum=0; for(int i=1;i&lt;=20;i++) { e=b/a; sum=sum+e; c=b; b=a+b; a=c;}p...原创 2019-01-16 17:44:39 · 48258 阅读 · 1 评论 -
给出年、月、日,计算该日是该年的第几天?
给出年、月、日,计算该日是该年的第几天?根据一般情况,每月的天数都是固定的(假设二月份28天),首先根据输入的月、日来计算天数,再判断该年是否是闰年,若是,天数加1,若不是,则不改变。#include<stdio.h>int flag(int year)//判断是否是闰年 { int s=0; if(year%4==0&&year%400!=0||year...原创 2019-01-29 11:25:59 · 15558 阅读 · 2 评论 -
判断某一年是否是闰年
判断某一年是否是闰年我们知道,只有当该年可以被4整除并且被100整除或者被100整除且被400整除,才为闰年代码可直接使用,若要求不同,只需进行相应的修改即可#include<stdio.h>//只有当该年可以被4整除并且被100整除或者被100整除且被400整除,才为闰年 int main(){ int n,k=0; printf("输入查询年份:\n");//输入 ...原创 2019-01-14 21:19:39 · 3517 阅读 · 0 评论 -
列举1990年到2000年间的闰年
列举1990年到2000年间的闰年代码可直接使用,若要求不同,只需进行相应的修改即可。#include<stdio.h>//只有当该年可以被4整除并且被100整除或者被100整除且被400整除,才为闰年 int main(){ printf("1990年到2000年间闰年有:\n"); for(int n=1900;n<=2000;n++) { if(n%4=...原创 2019-01-14 21:16:38 · 2790 阅读 · 0 评论 -
列举在100到200以内的质数
请列举在数100到200之间的质数(只能被1和本身整除)代码可直接使用,若要求不同,只需进行相应的修改即可。#include<stdio.h>int main(){ printf("100到200以内的质数为:\n"); for(int n=100;n<=200;n++) for(int i=2;i<=n/2;i++)//只需要比较n的一半次数,减少计算复杂...原创 2019-01-14 21:00:50 · 4404 阅读 · 0 评论 -
用迭代法求x=a^(1/2)
用迭代法求x=a^(1/2)。求平方根的迭代公式 Xn+1 = (Xn + a / Xn) / 2,要求前后二次求出的x的差的绝对值小于0.00001。#include<stdio.h>#include<math.h>int main(){ float x,y,a; printf("输入一个数:"); scanf("%f",&a); x=a/2; ...原创 2019-01-18 21:50:41 · 2627 阅读 · 0 评论 -
用牛顿迭代法求方程
用牛顿迭代法求方程2xxx-4xx+3x-6=0在1.5附近的根#include<stdio.h>#include<math.h>int main(){ float x1,x0,f0,f00; x1=1.5; do { x0=x1; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; f00=6*x0*x0-8*x0+3; x1=x0...原创 2019-01-18 21:55:54 · 1491 阅读 · 0 评论 -
用二分法求方程的根
用二分法求方程2xxx-4xx+3x-6=0在(-10,10)之间的根#include<stdio.h>#include<math.h>int main(){ float x1,x0,f0,f00; x1=1.5; do { x0=x1; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; f00=6*x0*x0-8*x0+3; x1...原创 2019-01-18 21:59:09 · 1346 阅读 · 4 评论 -
两个乒乓球队进行比赛
两个乒乓球队进行比赛,各出3人。甲队为A、B、C3人,乙队为X、Y、Z3人。已抽签决定比赛名单。有人向队友打听比赛的名单。A说他不和X比,C说他不和X、Y比。请编程求出3对赛手的名单。#include<stdio.h>int main(){ char i,j,k; for(i='X';i<='Z';i++) for(j='X';j<='Z';j++) for(...原创 2019-01-18 22:22:10 · 4354 阅读 · 1 评论 -
用筛选法求100以内的素数
用筛选法求100以内的素数所谓筛选法是指埃拉托色尼筛选。埃拉托色尼是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到1000的全部整数,然后逐个判断他们是否素数,找出一个非素数,就把他们挖掉,最后剩下的就是素数。用算法可以表示如下:(1)先将1挖去。(2)用2去除他后面的各个数,把能被2整出的数挖掉,即把2的倍数挖掉。(3)n=3,4,…,100/2,重复2步骤直到所求数的一半即可...原创 2019-01-19 18:23:18 · 20579 阅读 · 7 评论 -
用选择法对10个整数排序(从小到大)
用选择法对10个整数排序(从小到大)选择排序的思路:按照升序的排序,设有10个元素,从第一个开始和其余求个进行比较,最小的放在第一个数,再将第二个数和余下8个进行比较,再将最小的放在第二位,一直到排序结束。代码如下(已经过编译):#include<stdio.h>int main(){ int a[10],i,j,n; printf("输入10个数:"); for(...原创 2019-01-19 19:00:10 · 132637 阅读 · 33 评论 -
求一个3*3矩阵对角线元素之和
求一个3*3矩阵对角线元素之和#include<stdio.h>int main(){ int a[3][3],sum=0; int i,j; printf("输入一组3*3矩阵数据:"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]);//输入矩阵的值 printf("输出对角...原创 2019-01-19 19:16:27 · 43211 阅读 · 5 评论 -
有一个已经排好序的数组,今输入一个数,要求按照原来排序的规律将它插入数组中
有一个已经排好序的数组,今输入一个数,要求按照原来排序的规律将它插入数组中假设原数组是按照升序进行排序,那么需要将输入的值进行挨个比较,从第一个数开始,若小于输入的数,则和下一个数比较,直到大于输入的数,则将输入的值放在该位置,从大于他的数起往后移一位。#include<stdio.h>int main(){ int a[10]={1,3,5,7,9,11,13,15,17,...原创 2019-01-19 19:32:53 · 21570 阅读 · 18 评论 -
将一个数组中的值逆序重新放置
将一个数组中的值逆序重新放置,例如原来的顺序为:8,6,5,4,1.要求改为:1,4,5,6,8解决的思路就是从数组的中间元素为中心,将两边的元素进行调换即可。#include<stdio.h>int main(){ int i,j,N=5; int a[5]; printf("输入5个数:\n"); for(i=0;i<5;i++) scanf("%d",&a...原创 2019-01-19 19:41:19 · 5341 阅读 · 2 评论 -
输出杨辉三角形
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1…杨辉三角的规律为:(1)各行第一个数都是1(2)各行最后一个数都是1(3)从第3行起,除第一个和最后一个数,其余都是上一行同一列和前一列两个数之和。可以表示为:a(i)(j)=a(i-1)(j)+a(i-1)(j-1),i为行数,j为列数#include<stdio.h>int mai...原创 2019-01-19 20:09:03 · 613 阅读 · 0 评论 -
输出魔方阵
输出魔方阵魔方阵是指一个方阵(奇数),它的每一行、每一列和对角线之和均相等。例如:8 1 63 5 74 9 2魔方阵的排列规律:(1)将1放在第1行中间一列(2)从2开始直到n*n止各数依按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1.例如:4在第3行第1个,则5放在第2行第2个。(3)如果上一个数的行数为1,则下一个数的行数为n(最后一...原创 2019-01-19 20:45:13 · 4583 阅读 · 6 评论 -
找出一个二维数组中的鞍点
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。解题流程如下:对每行进行遍历。先找到每行的最大值,然后再确定该最大值是否是所在列的最小值,若满足,则为鞍点,遍历停止;否则,继续,若遍历完所有行之后依旧未找到,则表示该二维矩阵无鞍点。#include<stdio.h>int main(){ int a[4][5]; int i,j,k...原创 2019-01-19 21:01:35 · 36903 阅读 · 7 评论 -
C语言中,求三个数中最大数
C语言中,求三个数中最大数#include<stdio.h>//以下是进行正整数的最大之间的比较,其他类型只需进行相应的格式修改 int main(){ int a,b,c,max;//定义三个整数 printf("输入a,b,c :\n"); scanf("%d%d%d",&a,&b,&c);//输入三个数的值 max=a;//三...原创 2019-01-14 20:14:00 · 20147 阅读 · 3 评论 -
C语言中,三个数中求最大值
在C语言中,如何求三个数中最大的数#include<stdio.h>/*调用函数来实现三个数求最大值的方法 非整型只需将格式进行相应的需改*/ int max(int a,int b)//求两个数之间最大的数 { if(a<b) return b; else return a;}int main(){ int a,b,c,p; prin...原创 2019-01-14 20:34:00 · 12001 阅读 · 1 评论 -
猴子吃桃问题
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,有多吃了一个。第二个早上又将剩下的桃子又吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想在吃时,见只剩下一个桃子。求第一天共摘下多少桃子?原理:从最后一天开始进行倒着计算,一直到第一天。#include<stdio.h>int main(){ int n; n=1; for(...原创 2019-01-18 21:37:21 · 265 阅读 · 0 评论