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。
c 算法笔试题及答案
c 算法笔试题及答案C算法笔试题及答案在计算机科学中,算法是解决问题的方法和步骤的有序集合。
C语言是一种广泛应用于系统编程和嵌入式开发中的高级编程语言。
C算法的笔试题常常涉及到对程序的设计和实现,以及对基本数据结构和算法的理解与运用。
本文将介绍一些常见的C算法笔试题,并为每个问题提供答案。
一、排序算法1. 冒泡排序(Bubble Sort):通过相邻元素的比较和交换,每轮将最大(或最小)的元素移动到序列的最末端。
答案:具体的冒泡排序算法实现可参考如下代码:```cvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```2. 快速排序(Quick Sort):通过选择一个基准元素,将序列分成小于基准的部分和大于基准的部分,然后递归地对两个部分进行排序。
答案:具体的快速排序算法实现可参考如下代码:```cint partition(int arr[], int low, int high) {int pivot = arr[high];int i = (low - 1);for (int j = low; j <= high - 1; j++) {if (arr[j] < pivot) {i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return (i + 1);}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}}```二、查找算法1. 二分查找(Binary Search):对于已排序的数组,通过比较给定值与数组中间元素的大小,将查找范围缩小一半,直到找到目标元素或查找范围为空。
C语言编程题带答案
C语言编程题带答案题目 1:求两个整数的最大值```cinclude <stdioh>int max(int num1, int num2) {if (num1 > num2) {return num1;} else {return num2;}}int main(){int num1 = 10, num2 = 20;int maxValue = max(num1, num2);printf("最大值为: %d\n", maxValue);return 0;}```分析:在这个程序中,我们定义了一个名为`max` 的函数,它接受两个整数参数`num1` 和`num2` 。
通过使用条件判断语句`if` 来比较这两个数的大小,如果`num1` 大于`num2` ,则返回`num1` ,否则返回`num2` 。
在`main` 函数中,我们给定了两个整数`num1` 和`num2` 的值,并调用`max` 函数来获取它们中的最大值,最后使用`printf` 函数将最大值输出到控制台。
题目 2:计算一个整数数组的平均值```cinclude <stdioh>float average(int arr, int size) {int sum = 0;for (int i = 0; i < size; i++){sum += arri;}return (float)sum / size;}int main(){int arr ={10, 20, 30, 40, 50};int size = sizeof(arr) / sizeof(arr0);float avg = average(arr, size);printf("平均值为: %2f\n", avg);return 0;}```分析:在这个程序中,首先在`average` 函数里,我们初始化一个变量`sum` 为 0 ,用于存储数组元素的总和。
C语言程序设计习题答案
C语言程序设计习题答案C 语言作为一门基础的编程语言,在计算机科学领域中具有重要地位。
通过做 C 语言程序设计的习题,我们可以更好地掌握这门语言的语法、逻辑和算法。
下面是一些常见 C 语言程序设计习题的答案及详细解析。
一、基础语法题例如:计算两个整数的和。
```cinclude <stdioh>int main(){int num1, num2, sum;printf("请输入第一个整数:");scanf("%d",&num1);printf("请输入第二个整数:");scanf("%d",&num2);sum = num1 + num2;printf("两数之和为:%d\n", sum);return 0;}```这道题主要考查了 C 语言中基本的输入输出和算术运算。
通过`scanf` 函数获取用户输入的两个整数,然后使用`+`运算符计算它们的和,最后使用`printf` 函数输出结果。
二、控制结构题比如:判断一个数是否为偶数。
```cinclude <stdioh>int main(){int num;printf("请输入一个整数:");scanf("%d",&num);if (num % 2 == 0) {printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}```在此题中,使用了`ifelse` 语句来判断输入的数除以 2 的余数是否为 0,如果余数为 0 则为偶数,否则为奇数。
三、数组与循环题像这样的题目:求一个整数数组中所有元素的平均值。
```cinclude <stdioh>int main(){int arr ={12, 34, 56, 78, 90};int size = sizeof(arr) / sizeof(arr0);int sum = 0;for (int i = 0; i < size; i++){sum += arri;}float average =(float)sum / size;printf("数组的平均值为:%2f\n", average);return 0;}```这里使用了循环遍历数组的每个元素,将它们累加求和,最后计算平均值并输出。
c语言经典算法——猴子偷桃问题
c语⾔经典算法——猴⼦偷桃问题题⽬:海滩上有⼀堆桃⼦,五只猴⼦来分。
第⼀只猴⼦把这堆桃⼦凭据分为五份,多了⼀个,这只猴⼦把多的⼀个扔⼊海中,拿⾛了⼀份。
第⼆只猴⼦把剩下的桃⼦⼜平均分成五份,⼜多了⼀个,它同样把多的⼀个扔⼊海中,拿⾛了⼀份,第三、第四、第五只猴⼦都是这样做的,问海滩上原来最少有多少个桃⼦?算法分析://初始桃⼦数为sum第⼀次:sum=5*x1+1第⼆次:4*x1=5*x2+1第三次:4*x2=5*x3+1第四次:4*x3=5*x4+1第五次:4*x4=5*x5+1第五次分配结束:剩下4*x5个桃⼦,⽽x5>=1,故i=4*x5>=4 。
每次向上推j=(i/4)*5+1;i=j;每次上推结束后判断j%4是否等于0,如果为0则继续上推,否则更新i,直到找到能够完成五次上推的整数i,最后可以得到最初的桃⼦数。
C语⾔程序:1 #include<stdio.h>2int main(int agrc, char*agrv[])3 {4int i, m, j, k, count;5for (i = 4; i<10000; i += 4)6/*i为5个猴⼦分配桃⼦后最后剩余的桃⼦,必须为4的倍数,然后以此为基础,7向上推5次,如果刚好能够推到第五次,则此剩余的桃⼦数i是满⾜条件的,否则换⼀个8剩余的桃⼦数,直到找到符合条件的最⼩剩余桃⼦数*/9 {10 count = 0;11 m = i;12for (k = 0; k<5; k++)13 {14 j = i / 4 * 5 + 1;15 i = j;16if (j % 4 == 0)17 count++;18else19break;20 }21 i = m;22if (count == 4)23 {24 printf("原来最少的桃⼦数为:%d\n", j);25break;26 }27 }28 system("pause");29return0;30 }。
C语言经典编程实例100题答案
C语言经典编程实例100题答案1. 打印Hello World!#include <stdio.h>int main() {printf("Hello World!");return 0;}2. 计算两个数的和#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个数的和为:%d", sum);return 0;}3. 输入一个数,判断是否为正数、负数或零#include <stdio.h>int main() {int num;printf("请输入一个数:"); scanf("%d", &num);if (num > 0) {printf("正数");}else if (num < 0) {printf("负数");}else {printf("零");}return 0;}4. 判断一个数是否为素数#include <stdio.h>int main() {int num, i, flag = 0;printf("请输入一个数:");scanf("%d", &num);for (i = 2; i <= num / 2; ++i) { if (num % i == 0) {flag = 1;break;}}if (flag == 0)printf("%d是素数", num); elseprintf("%d不是素数", num); return 0;}5. 求斐波那契数列的第n项#include <stdio.h>int fibonacci(int n) {if (n <= 1)return n;return fibonacci(n - 1) + fibonacci(n - 2);}int main() {int n;printf("请输入要求第几项:");scanf("%d", &n);printf("第%d项的值为:%d", n, fibonacci(n));return 0;}6. 判断一个数是否为回文数#include <stdio.h>int main() {int num, reversedNum = 0, remainder, originalNum; printf("请输入一个数:");scanf("%d", &num);originalNum = num;while (num != 0) {remainder = num % 10;reversedNum = reversedNum * 10 + remainder; num /= 10;}if (originalNum == reversedNum)printf("%d是回文数", originalNum);elseprintf("%d不是回文数", originalNum);return 0;}7. 打印九九乘法表#include <stdio.h>int main() {int i, j;for (i = 1; i <= 9; ++i) {for (j = 1; j <= i; ++j) {printf("%d * %d = %d\t", j, i, j * i);}printf("\n");}return 0;}8. 输入一个数,判断是否为偶数#include <stdio.h>int main() {int num;printf("请输入一个数:");scanf("%d", &num);if (num % 2 == 0)printf("偶数");elseprintf("奇数");return 0;}9. 冒泡排序#include <stdio.h>void bubbleSort(int array[], int size) { int i, j, temp;for (i = 0; i < size - 1; ++i) {for (j = 0; j < size - i - 1; ++j) {if (array[j] > array[j + 1]) {temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}int main() {int array[] = {5, 2, 8, 12, 1};int size = sizeof(array) / sizeof(array[0]); bubbleSort(array, size);printf("排序后的数组:");for (int i = 0; i < size; ++i) {printf("%d ", array[i]);}return 0;}10. 判断一个数是否为完数#include <stdio.h>int main() {int num, i, sum = 0;printf("请输入一个数:");scanf("%d", &num);for (i = 1; i < num; ++i) {if (num % i == 0) {sum += i;}}if (sum == num)printf("%d是完数", num); elseprintf("%d不是完数", num); return 0;}......(一共100题答案)这些是C语言经典编程实例的部分答案,希望对您有所帮助。
c语言编程习题及答案
c语言编程习题及答案C语言是一种广泛使用的计算机编程语言,以其高效性和灵活性而闻名。
以下是一些C语言编程习题及其答案,供学习者练习和参考。
习题1:求两个数的和编写一个C程序,输入两个整数,输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("%d + %d = %d\n", num1, num2, sum);return 0;}```习题2:计算圆的面积编写一个C程序,输入圆的半径,计算并输出圆的面积。
```c#include <stdio.h>#define PI 3.14159int main() {double radius, area;printf("请输入圆的半径:");scanf("%lf", &radius);area = PI * radius * radius;printf("圆的面积是:%.2f\n", area);return 0;}```习题3:判断一个数是奇数还是偶数编写一个C程序,输入一个整数,判断并输出它是奇数还是偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d 是偶数。
\n", num);} else {printf("%d 是奇数。
C语言题目及答案
目录1.Climb the Taishan Mountain(II)2.Peach3.逆序输出数列4.逆序数5.计算高度6.分解质因数7.输出数字8.Problem B:数字之和9.换零钱10.素数求和11.求阶乘和11.Problem F:求一批正整数中的偶数和12.统计各种字符个数13.求最大公约数14.求最大公约数15.零起点学算法101——统计字母数字等个数16.网站泄密17.老外买瓷砖18.堆瓷砖19.新年大酬宾20.定制瓷砖21.句子比较大小22.鹦鹉学舌3——C语言初学者百题大战之十三23.鹦鹉学舌2——C语言初学者百题大战之十二24.百鸡问题25.零起点学算法89——程序设计竞赛26.零起点学算法89——程序设计竞赛27.Problem A:计算数列和28.找钱问题29.Median30.素月31.输入任意N个数,求和32.多项式求和33.人口问题34.数字菱形Climb the Taishan Mountain(II)Time Limit:1000MS Memory Limit:65536KTotal Submit:753 Accepted:495DescriptionLabor day is coming.Since the holiday is long,Many students are planning to have a tour. The Taishan Mountain is very beautiful, so WangPeng and his classmates want to climb the Taishan Mountain. Mountaineering sports is WangPeng's avocation, so he is very excited. Suddenly, a very amusing idea comes to him. The Taishan Mountain has many stairs, and he can climb the mountain one step by 2 stairs or by 1 stairs. How many ways does he have to climb the mountain? For example, the stairs is 2, he has 2 ways.The first one is the first step by 1 stair, and the next step by 1 stair.And the second way is only one step by 2 stairs.InputThe input is including many test cases. Every line is one test case with a integer number N(N<=40). N is the stairs of the Taishan Mountain.OutputYou should output how many ways WangPeng can climb the mountain, each case output a line.Sample Input123Sample Output123#include<stdio.h>int main(){int n,i,j,a[41];while(scanf("%d",&n)!=EOF){a[0]=1;a[1]=2;{a[i]=a[i-1]+a[i-2];}printf("%d\n",a[n-1]);}}PeachTime Limit:1000MS Memory Limit:65536KTotal Submit:689 Accepted:495DescriptionAlmost all young man know Monkey Sun whose name is Sun Wukong. One day he steals many peaches from the kingdom of heaven. First day, he ate a half of the peaches, then ate another one of the left peaches.The next day, he ate a half of the left peaches, then another one.Until the n-th day ,before he ate he found only one peach. Please help Sun Wukong to calculate how many peaches he took from the kingdom of heaven.InputThe input file contains one or more test cases, each line is the days N(1 < n < 30). OutputFor each test case, output a line indicating the number of peaches Monkey Sun had the first day.Sample Input24Sample Output422#include<stdio.h>int main(){int n,t,i,s;while(scanf("%d",&n)!=EOF){t=1;s=0;{s=(t+1)*2;t=s;}printf("%d\n",t);}}循环练习a+b——C语言初学者百题大战之二十二Time Limit:1000MS Memory Limit:65536KTotal Submit:3739 Accepted:2513Description终于到循环结构了。
C语言经典算法100例
【程序21】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/x2=x1;day--;}printf("the total is %d\n",x1);}==============================================================【程序22】题目:两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:main(){char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/for(i='x';i<='z';i++)for(j='x';j<='z';j++){if(i!=j)for(k='x';k<='z';k++){ if(i!=k&&j!=k){ if(i!='x'&&k!='x'&&k!='z')printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);}}}}==============================================================【程序23】题目:打印出如下图案(菱形)【程序31】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
C语言算法经典习题及其答案详解
break; if(i>k) return 1; else return 0; } 五、排序问题 1、选择法排序(升序) 基本思想: 1)对有 n 个数的序列(存放在数组 a[n]中),从中选出最小的数,与第 1 个数交 换位置; 2)除第 1 个数外,其余 n-1 个数中选最小的数,与第 2 个数交换位置; 3)依次类推,选择了 n-1 次后,这个数列已按升序排列。 程序代码如下: #include<stdio.h> #include<math.h> #define N 10 void main() { int i,j,imin,s,a[N]; printf("input 10 numbers:"); for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) { imin=i; for(j=i+1;j<N;j++) if(a[imin]>a[j]) imin=j; if(i!=imin) 6 { s=a[i]; a[i]=a[imin]; a[imin]=s; } } for(i=0;i<N;i++) printf("%4d",a[i]); printf("\n"); } 2、冒泡法排序(升序) 基本思想:(将相邻两个数比较,小的调到前头) 1)有 n 个数(存放在数组 a(n)中),第一趟将每相邻两个数比较,小的调到前头,
printf("please input the second array:"); for(i=0;i<10;i++) scanf("%d",&b[i]); ia=0; ib=0; ic=0; while(ia<10&&ib<10) { if(a[ia]<b[ib]) { c[ic]=a[ia]; ia++; } else { c[ic]=b[ib]; ib++; } ic++; } while(ia<=9) { c[ic]=a[ia]; ia++; ic++; } 8 while(ib<=9) { c[ic]=b[ib]; ib++; ic++; } for(i=0;i<20;i++) printf("%2d",c[i]); printf("\n"); } 六、查找问题 1、顺序查找法(在一列数中查找某数 x) 基本思想:一列数放在数组 a[1]---a[n]中,待查找的数放在 x 中,把 x 与 a 数组 中的元素从头到尾一一进行比较查找。用变量 p 表示 a 数组元素下标,p 初值为 1,使 x 与 a[p]比较,如果 x 不等于 a[p],则使 p=p+1,不断重复这个过程;一旦 x 等于 a[p]则退出循环;另外,如果 p 大于数组长度,循环也应该停止。 程序代码如下:
c语言练习题及答案
c语言练习题及答案C语言练习题及答案C语言作为一门经典的编程语言,广泛应用于软件开发和系统编程领域。
对于初学者来说,练习题是巩固所学知识和提升编程能力的重要途径。
本文将介绍一些常见的C语言练习题,并给出相应的答案,希望对读者有所帮助。
一、基础练习题1. 编写一个程序,输出1到100之间所有的偶数。
#include <stdio.h>int main() {int i;for (i = 1; i <= 100; i++) {if (i % 2 == 0) {printf("%d ", i);}}return 0;}2. 编写一个程序,计算1到100之间所有奇数的和。
#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("奇数的和为:%d\n", sum);return 0;}3. 编写一个程序,判断一个数是否为素数。
#include <stdio.h>int isPrime(int n) {int i;if (n <= 1) {return 0;}for (i = 2; i * i <= n; i++) {if (n % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数。
\n", num);} else {printf("%d不是素数。
\n", num);}return 0;}二、进阶练习题1. 编写一个程序,实现冒泡排序算法对一个整数数组进行升序排序。
- 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之间有多少个素数,并输出所有素数。