C语言经典例题目解析
各种C语言经典例题,讲解,免费

#include<stdio.h>
void main()
{
int hcf(int,int); /*函数声明*/
int lcd(int,int,int); /*函数声明*/
int u,v,h,l;
printf("Please input two numbers:\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=6;j++)
printf("%c",picture[i][j]);
printf("\n");
}
}
9.打印以下图案:
*
**
***
****
#include<stdio.h>
void main()
while((r=u%v)!=0)
{u=v;v=r;}
return(v);
}
int lcd(int u,int v,int h)
{
return(u*v/h);
}
2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include<stdio.h>
int letter,digit,space,others;
sum+=stu[i].score[j];
stu[i].avr=sum/2;
average+=stu[i].avr;
}
average/=N;
printf(" Name score1 score2 average\n");
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语言编程实例100题(带解析适合新手超经典)

C语言程序实例100个(一)【程序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;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语言经典习题实例及讲解

8 10 16 20 27
while(str[i]!='\0')
{ nc=str[i];
if(nc!=' '&& pc==' ') num++;
t h e i s d o \0
pc=nc; i++;
}
printf("\nThe number of words is:%d",num);
num=3
}
程 序 示 例(六)
例6 将一个数插入到升序的数列中,使插入后的数列仍然有 序。
printf("Input %d number:\n",N); for (i=0;i<N;i++) scanf("%d",&array[i]); printf("\n"); for (i=0;i<N-1;i++) { k=i;
for (j=i+1;j<N;j++) if(array[j]<array[k]) k=j; if (i!=k)
is:a[%d][%d]=%d\n",i,c,a[i][c]); i++; } if(find==0)printf("not been found"); }
18 12 19 13 79 65 52 38 63 88 71 49
rmax= 19 find=1
运行结果: The matrix is: 18 12 19 13 79 65 52 38 63 88 71 49 The saddle pointer is: a[0][2]=19
c语言习题及详解答案

c语言习题及详解答案C语言习题及详解答案C语言作为一种广泛应用的编程语言,对于程序员来说是必备的基础知识。
在学习C语言的过程中,练习习题是非常重要的,可以帮助我们更好地理解语言的特性和使用方法。
本文将为大家提供一些常见的C语言习题及详解答案,希望对大家的学习有所帮助。
1. 编写一个程序,输出"Hello, world!"。
```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```解析:这是一个非常简单的程序,使用printf函数输出字符串"Hello, world!",并在末尾加上换行符"\n"。
2. 编写一个程序,计算两个整数的和并输出结果。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}```解析:这个程序使用scanf函数从用户输入中获取两个整数,然后计算它们的和并输出结果。
3. 编写一个程序,判断一个数是否为素数并输出结果。
```c#include <stdio.h>int isPrime(int n) {if (n <= 1) {return 0;}for (int 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;}```解析:这个程序定义了一个函数isPrime,用于判断一个数是否为素数。
c语言经典习题及答案

c语言经典习题及答案C语言经典习题及答案C语言是一门广泛应用于计算机科学领域的编程语言,具有简洁、高效的特点。
作为一名学习C语言的学生或者程序员,经典习题的练习是非常重要的。
本文将介绍几个C语言的经典习题,并给出相应的答案。
习题一:编写一个程序,判断一个整数是否为素数。
解答:素数是只能被1和自身整除的整数。
我们可以用一个循环来判断一个数是否为素数。
具体代码如下:```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i <= num / 2; i++) {if (num % 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;}```习题二:编写一个程序,输入一个整数n,输出1到n之间所有的完数。
解答:完数是指除了它本身以外的所有因子之和等于它本身的数。
我们可以用一个循环来判断每个数是否为完数。
具体代码如下:```c#include <stdio.h>int isPerfectNumber(int num) {int sum = 0;for (int i = 1; i <= num / 2; i++) {if (num % i == 0) {sum += i;}}if (sum == num) {return 1;} else {return 0;}}int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d到%d之间的完数有:", 1, n); for (int i = 1; i <= n; i++) {if (isPerfectNumber(i)) {printf("%d ", i);}printf("\n");return 0;}```习题三:编写一个程序,输入一个正整数n,输出n的阶乘。
C语言编程实例100题(带解析汇报适合新手超经典)

C语言程序实例100个(一)【程序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;bonus=bonus1+(i-100000)*0.;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语言经典例题

c语言经典例题C语言是一种通用的、面向过程的计算机编程语言,广泛应用于系统软件、应用软件、嵌入式软件等领域。
学习C语言的过程中,解决经典的例题是提高编程能力和深入理解语法规则的有效途径。
下面将介绍几个C语言的经典例题,通过解析这些例题,读者可以更好地掌握和运用C语言。
例题一:整数求和【题目描述】输入两个整数,计算它们的和并输出。
【示例】输入:53输出:8【思路分析】定义两个整型变量a和b,通过scanf函数从输入流中读取两个整数,并使用加法运算符将它们相加,最后使用printf函数输出计算结果。
【代码实现】```c#include <stdio.h>int main() {int a, b;scanf("%d", &a);scanf("%d", &b);int sum = a + b;printf("%d\n", sum);return 0;}```【题目解析】这个例题主要考察了C语言的基本输入输出操作以及算术运算符的应用。
通过读取用户输入的两个整数并将其相加,最后输出结果。
需要注意的是,整数求和的过程中不需要考虑溢出问题。
例题二:判断奇偶【题目描述】输入一个正整数,判断它是奇数还是偶数,并输出相应的提示信息。
【示例】输入:6输出:6是偶数【思路分析】定义一个整型变量num,通过scanf函数从输入流中读取用户输入的正整数。
然后,使用取余运算符判断num是否能被2整除。
如果余数为0,则num是偶数;否则,num是奇数。
最后,使用printf函数输出判断结果。
【代码实现】```c#include <stdio.h>int main() {int num;scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```【题目解析】这个例题主要考察了C语言中的条件判断语句和取余运算符的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、猴子吃桃子:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子#include <stdio.h>main(){int s=1,i;for(i=9;i>=1;i--)s=(s+1)*2;printf("s=%d\n",s); }2、鸡兔同笼:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。
问笼中各有几只鸡和兔?#include <stdio.h>main(){int a,b;for(a=1;a<=40;a++)/* 120只脚如果全是鸡的话60只,但是总头是40,所以循环到40 */ for (b=1;b<=30;b++) /* 同理如果全是兔的话最多120/4=30 所以循环到30 */{if((a==40-b)&&(a==60-2*b)) /* 同时满足总头数40总脚数120 */printf("There are %d chichens \nThere are %d rabbits",a,b);}}3、百钱买百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?#include <stdio.h>main( ){int cocks,hens,chicks;cocks=0;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3==100&&chicks%3==0)printf("%d,%d,%d\n",cocks,hens,chicks);hens=hens+1;}cocks=cocks+1;}}#include <stdio.h>main(){int x,y,z;for(x=0;x<=20;x++)for(y=0;y<=33;y++){z=100-x-y;if(15*x+9*y+z==300)printf("x=%d y=%d z=%d\n",x,y,z);}}4、百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?#include <stdio.h>void main(){int i,j,k,n;for(i=0;i<=33;i++) /*大马至多为100/3匹*/for(j=0;j<=50;j++) /*中马至多为100/2=50匹*/for(k=0;k<=100;k++){if((i+j+k==100) &&(3*i+2*j+k/2==100))printf("i=%d,j=%d,k=%d \n",i,j,k);}}5、打印Fibonacci数列(兔子数列)的前n项,每10个换一行。
Fibonacci数列中前两项为1,1,以后每一个数都是其前两个数之和。
如1,1,2,3,5,8,13,21,34,…。
#include<stdio.h>void main(){long f,f1,f2;int i,n;printf("Enter n : ");scanf("%d",&n);f1=1;f2=1;printf("%10d%10d",f1,f2);for(i=1;i<=n;i++){f=f1+f2;printf("%10d",f);f1=f2;f2=f;if(i%10==0)printf("\n");}}6、汉诺塔问题:有三根杆子A,B,C。
A杆上有若干碟子;每次移动一块碟子,小的只能叠在大的上面;把所有碟子从A杆全部移到C杆上。
7、打印下三角的九九乘法表#include <stdio.h>main(){int i,j;for(i=1;i<=9;i++){for(j=i;j<=9;j++)printf("%2d*%2d=%2d",i,j,i*j);printf("\n");}}8、输入n值,打印n行杨辉三角:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#include<stdio.h>void main(){int i,j,n,k;printf("Enter n:");scanf("%d",&n);for(i=1;i<=n;i++){k=1;for(j=1;j<i;j++){printf("%3d",k);k=k*(i-j)/j;}//每次要打印的下一个数等于前一个数乘以其所在行数和列数的差在处以其列数printf("%3d",k);printf("\n");}}9.输出各种菱形图案:A 1A B A S S SA B C B A 2 2 2 2 2A B C D C B A S S S S S S SA B C D E D C B A 3 3 3 3 3 3 3 3 3A B C D C B A S S S S S S SA B C B A 2 2 2 2 2A B A S S SA 110、约瑟夫问题:n个人坐一圈,从1到n给每个人编号。
从s个人开始报数,数到第m个人,让他出局。
然后从出局后下一个人开始报数,同样是第m个人,再让它出局,如此反复,直到剩下一个人。
问题求剩下一个人编号是多少。
#include <stdio.h>main(){int n, m, i, s=0;printf ("Enter n: m: ");scanf("%d%d", &n, &m);for (i=2; i<=n; i++) s=(s+m)%i;printf ("The winner is %d\n", s+1); }11、搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一块砖(小孩不分性别),问有多少男人,多少女人,多少小孩?#include <stdio.h>main( ){ int i,j,k;for(i=1;i<=36/4;i++)for(j=1;j<=36/3;j++)for(k=2;k<=36*2;k+=2)if(36==4*i+3*j+k/2)printf("%2d,%d,%2d ",i,j,k);}12、爱因斯坦的阶梯问题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
请问该阶梯至少有多少阶。
编写一个C程序解决该问题。
#include <stdio.h>main( ){int x;for(x=7; ;x+=14)if(x%3==2&&x%5==4&&x%6==5) break;printf("The number of the ladders is:%d\n",x);}13、递增的牛群:若一头小母牛,从第四年开始每年生一头母牛,按些规律,第n年时有多少头母牛?#include <stdio.h>main(){int i,year,f,f1,f2,f3;printf("Enter year:");scanf("%d",&year);for(i=1;i<=year;i++){if(i<4)f=f1=f2=f3=1;else{f=f1+f3;f3=f2;f2=f1;f1=f;}printf("i=%2d n=%3d\n",i,f);}}14、换零钱:将一元钱换成1分、2分、5分、1角、2角、5角的零钱若干,一共有多少种兑换方法?#include <stdio.h>void main(){int i,j,n,k,m,h,s=0;for(i=0;i<=20;i++)for(j=0;j<=50;j++)for(n=0;n<=100;n++)for(k=0;k<=10;k++)for(m=0;m<=5;m++)for(h=0;h<=2;h++)if( 5*i+2*j+1*n+10*k+20*m+50*h==100){printf("%2d %2d个, %2d %2d个, %2d %2d ,%2d %2d个 ,%2d %2d 个 ,%2d %2d个",5,i,2,j,1,n,10,k,20,m,50,h);printf("\n");s++;}printf("一共有%d种方法",s);}15.海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?#include<stdio.h>main(){int i,m,j,k,count;for(i=4;i<10000;i+=4){count=0;m=i;for(k=0;k<5;k++){j=i/4*5+1;i=j;if(j%4==0)count++;else break;}i=m;if(count==4) {printf("%d\n",j);break;}}}16.印度国王的奖励:相传古印度宰相达依尔,是国际象棋的发明者。
有一次,国王因为他的贡献要奖励他,问他想要什么。
达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。
”国王一想,这还不容易,让人扛了一袋麦子,但很快用完了,再扛出一袋还是不够,请你为国王算一下总共给达依尔多少小麦?(设1平方米小麦约1.4*108颗)17、水仙花数:水仙花数是指一个 n 位数( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。