C语言经典算法题目及答案
c语言100道经典逻辑算法题

c语言100道经典逻辑算法题.txt你无法改变别人,但你可以改变自己;你无法改变天气,但你可以改变心情;你无法改变生命长度,但你可以拓展它的宽度。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
经典练习C语言编程的题目及答案整理

1.逆序输出正三位数#include <stdio.h>int main(){int input,output= 0;scanf("%d",&input);while(input != 0){output = output*10 + input%10; input /= 10;}printf("%d\n",output);return 0;}2.百元找零函数#include <stdio.h>int main(){int amount=100;int price=0;printf("请输入金额(元)");scanf("%d",&price);printf("请输入票面");scanf("%d",&amount);int change=amount-price;printf("找您%d元。
\n",change);return 0;}3.求平均数#include <stdio.h>int main(){int a,b;scanf("%d %d",&a,&b);double c=(a+b)/2.0;/*scanf("%d",&amount);这是注释,我随便放的,没意义int change=amount-price;*/printf("%d和%d的平均值是%f\n",a,b,c);return 0;}4.写出程序的输出:int i=1;switch(i/3){case0:printf("zero");case1:printf("one");case2:printf("two");}正确答案是:zeroonetwo。
c题库及详解答案

c题库及详解答案根据您提供的标题“c题库及详解答案”,正文内容可以是:C题库及详解答案C语言是一种广泛使用的计算机编程语言,以其高效、灵活和功能强大而著称。
以下是一些常见的C语言编程题目及其详解答案,供学习者参考和练习。
1. 题目:求两个数的最大公约数解答:使用辗转相除法(欧几里得算法)可以求得两个数的最大公约数。
以下是一个C语言程序示例:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数是:%d\n", gcd(num1, num2));return 0;}```2. 题目:实现字符串反转解答:通过遍历字符串并使用数组的索引特性,可以轻松实现字符串的反转。
以下是C语言程序示例:```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int length = strlen(str);for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串是:%s\n", str);return 0;}```3. 题目:计算一个数的阶乘解答:阶乘可以通过递归或循环来计算。
c语言习题集及答案

C语言习题集及答案导言C语言是一门广泛应用于系统开发和嵌入式编程的高级编程语言。
为了帮助学习者更好地掌握C语言的各个方面,提供一系列的习题集是非常有必要的。
本文档将为您提供一些常见的C语言习题,并提供相关的答案和解析。
希望本文档可以帮助您提高C语言的编程技能。
习题集1. 求阶乘编写一个C函数,输入一个正整数n,计算并返回n的阶乘。
int factorial(int n) {if (n == 0) {return1;} else {return n * factorial(n - 1);}}2. 反转字符串编写一个C函数,输入一个字符串,将字符串中的字符反转,并返回反转后的字符串。
void reverse_string(char *str) {int length = strlen(str);int i, j;char temp;for (i = 0, j = length - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}3. 数组排序编写一个C函数,输入一个整型数组,将数组中的元素按升序排序,并返回排序后的数组。
void sort_array(int *arr, int length) {int i, j, temp;for (i = 0; i < length - 1; i++) {for (j = 0; j < length - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}4. 查找最大元素编写一个C函数,输入一个整型数组,找到数组中的最大元素,并返回该元素的值。
int find_max(int *arr, int length) {int i;int max = arr[0];for (i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}答案解析1. 求阶乘递归是一种简洁的解决阶乘问题的方法。
C语言经典例题以及答案

作业一一、求一个任意边长的矩形面积。
#include<stdio.h>voidmain(){intw,h,sum;scanf("%d%d",&w,&h);sum=w*h;printf("area=%d\n",sum);}二、求一个任意半径的圆的面积及周长。
#definePI#include<stdio.h>voidmain(){floatr,area,c;scanf("%f",&r);area=PI*r*r;c=2*PI*r;printf("area=%f\ncircle=%f\n",area,c);}三、已知:w=5,y=4,z=2, 求表达式:w*y/z的值,并输出。
##include<stdio.h>voidmain(){intw,y,z,r;w=5;y=4;z=2;r=w*y/z;printf("%5d",r);}作业二一、从键盘上输入三个数,求出其中的最大值,并输出。
#include<stdio.h>voidmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("max=%d\n",max);}二、求sin300。
+sin600+cos300+cos600之和。
(注意:)#include<stdio.h>#definePI#include<math.h>voidmain(){floata,b,sum;a=30*PI/180;b=60*PI/180;sum=sin(a)+sin(b)+cos(a)+cos(60);printf("total=%f\n",sum);}三、比较两个数的大小。
C语言算法经典习题及其答案详解

C语言算法经典习题及其答案详解C语言是一门广泛应用于计算机科学和工程领域的编程语言。
在学习C语言的过程中,算法是一个重要的部分。
通过进行算法习题的练习,不仅可以加深对C语言的理解,还可以提高编程能力。
本文将介绍一些经典的C语言算法习题,并提供详细的答案解析。
一、习题一:求两个数的和题目描述:给定两个整数,要求编写程序计算它们的和,并输出结果。
解析:这是一个非常简单的题目,只需要使用加法运算符即可完成。
示例代码如下:```#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);int sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;```二、习题二:计算阶乘题目描述:给定一个正整数n,计算n的阶乘,并输出结果。
解析:阶乘的计算需要使用循环结构。
我们可以使用for循环从1到n逐个相乘,得到n的阶乘。
示例代码如下:```#include <stdio.h>int main() {int n;printf("请输入一个正整数:");scanf("%d", &n);int factorial = 1;for (int i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘是:%d\n", n, factorial);return 0;}三、习题三:判断一个数是否为素数题目描述:给定一个正整数n,判断它是否为素数,并输出结果。
解析:素数的定义是只能被1和自身整除的数。
我们可以使用循环进行判断,若n能被2到n-1之间的任何一个数整除,则说明它不是素数;否则,它是素数。
C语言必背的典型程序设计题目 -选择、循环- 答案

选择结构必背经典程序(参考答案)1、输入3个整数,排序后输出。
#include <stdio.h>void main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;} /*交换x,z的值*/if(y>z){t=y;y=z;z=t;} /*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);}2、求解一元二次方程ax2+bx+c=0。
#include <stdio.h>#include <math.h>void main(){double a,b,c,deta,x1,x2;printf("Enter a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);if(fabs(a)>1e-6){deta=b*b-4*a*c;if(deta>0){x1=-b/(2*a)+sqrt(deta)/(2*a);x2=-b/(2*a)-sqrt(deta)/(2*a);;printf("有两个不同的实根:x1=%.2f ,x2=%.2f\n",x1,x2);}else if(deta==0){x1=x2=-b/(2*a);printf("有两个相同的根:x1=x2=%.2f\n",x1);}else{x1=-b/(2*a);x2=sqrt(-deta)/(2*a);printf("有两个虚根:x1=%.2f + %.2f*i,x2=%.2f - %.2f*i\n",x1,x2,x1,x2);}}elseprintf("二次项系数为0,不是一元二次方程!");}3、已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
c语言算术运算符20题与答案(较难)

1. 复杂表达式计算题目:计算的结果。
答案:132. 复合运算符和优先级题目:计算的结果。
答案:73. 自增运算符在表达式中的使用题目:如果那么的值是多少?答案:124. 自减运算符在表达式中的使用题目:如果那么的值是多少?答案:25. 结合性运算题目:计算的结果。
答案:66. 复合赋值运算符和优先级题目:如果那么的值是多少?答案:-107. 类型转换的陷阱题目:如果那么和的值分别是多少?答案:a = 2, b = 2.08. 强制类型转换题目:如果那么的值是多少?答案:2.09. 浮点数计算题目:计算的结果。
答案:6.010. 复合赋值运算符题目:如果那么的值是多少?答案:2011. 递增和递减混合使用题目:如果那么的值是多少?答案:812. 复杂的混合类型运算题目:计算的结果。
答案:5.513. 运算符优先级和结合性题目:计算的结果。
答案:1014. 递增和复合赋值题目:如果那么的值是多少?答案:1115. 复合运算符和优先级题目:如果那么的值是多少?答案:416. 复杂的复合赋值运算题目:如果那么的值是多少?答案:1517. 运算符结合性题目:计算的结果。
答案:718. 自增运算和优先级题目:如果那么的值是多少?答案:719. 类型转换在复合表达式中的作用题目:计算的结果。
答案:20.020. 递增和递减与赋值题目:如果那么的值是多少?答案:5。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k)printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
请看具体分析:2.程序源代码:#include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++){ x=sqrt(i+100);y=sqrt(i+268);if(x*x==i+100&&y*y==i+268)printf("\n%ld\n",i);}}==============================================================【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:main(){int day,month,year,sum,leap;printf("\nplease input year,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;--------------------------------------------------------------------------------2 经典C源程序100例case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;if(year%400==0||(year%4==0&&year%100!=0))leap=1;elseleap=0;if(leap==1&&month>2)sum++;printf("It is the %dth day.",sum);}==============================================================【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y 的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;}if(x>z){t=z;z=x;x=t;}if(y>z){t=y;y=z;z=t;}printf("small to big: %d %d %d\n",x,y,z);}============================================================== 【程序6】题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:#include "stdio.h"main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");}============================================================== 【程序7】题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:#include "stdio.h"main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);}============================================================== 【程序8】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:#include "stdio.h"main(){int i,j,result;printf("\n");for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);}printf("\n");}}==============================================================【程序9】题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:#include "stdio.h"main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf("%c%c",219,219);elseprintf(" ");printf("\n");}}==============================================================【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:#include "stdio.h"main(){int i,j;printf("\1\1\n");for(i=1;i<11;i++){for(j=1;j<=i;j++)printf("%c%c",219,219);printf("\n");}}--------------------------------------------------------------------------------3 回复:经典C源程序100例【程序11】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");f1=f1+f2;f2=f1+f2;}}==============================================================【程序12】题目:判断101-200之间有多少个素数,并输出所有素数。