C语言经典习题实例及讲解

合集下载

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

各种C语言经典例题,讲解,免费
1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#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语言经典例题目解析

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个换一行。

c语言 例题讲解

c语言 例题讲解

相减法 两个数中从大数中减去小数,所得的差若与小数相等,则该数为最大 公约数;若不等,对所得的差和小数,继续从大数中减去小数,直 到两个数相等为止。 main( ) { int x,y,a,b,t; scanf(“%d,%d”,&x,&y); a=x;b=y; while (a!=b) if (a>b) a=a-b; else b=b-a; printf(”%d,%d”,a,x*y/a); } 此题还可考虑如果输入时的m=0该如何处理
main() { int a, b, c, d, i=0, n; for (n=1000;n<=9999;n++) if(n%18==0) { a=n/1000; b=(n/100)%10; c=n%100/10; d=n%10; if(d==6&&a+b==b+c) i++; } printf(“%d”,i) }
P66/例26 把100以内的能被7整除的数输出 main() { int n,i=0; for(n=1;n<=100;n++) { if(n%7!=0) continue; i=i+1; printf(“%5d”,n); if(i%4==0) printf(“\n”); } }
P67/例27 求最大公约数和最小公倍数 思路:若已知整数X和Y的最大公约数是K,则它们的最小公倍数是x*y/k。 求解最大公约数有两种方法: (1)辗转相除法 两个数相除,若余数为0,则除数就是这两个数的最大公约数;若余数不为0,则以 除数作为新的被除数,以余数作为新的除数,继续相除,直到余数为0,除数就是最 大公约数。 main( ) { int p,r,n,m,temp; printf(“请输入两个整数n,m:”); scanf(“%d,%d”,&n,&m); if (n<m) {temp=n;n=m;m=temp;} p=n*m; while (m!=0) {r=n%m;n=m;m=r;} printf(“最大公约数是%d”,n); printf(“最小公倍数是%d”,p/n); }

C语言经典例题,讲解,免费

C语言经典例题,讲解,免费
}
54.编程判断对输入的任何一个年份是否是闰年,将结果输出。
#include <stdio.h>
void main()
{
int n;
printf("输入年份:");
scanf("%d",&n);
if (n%4==0&&n%100!=0||n%400==0) printf("闰年\n");
y=0,x=a||x=-a; y=sqrt(a*a-x*x), -a<x<a; y=x,x<-a||x>a.
#include <stdio.h>
#include <math.h>
void main()
{
float x,y,a;
printf("输入A值[A>0]:");
scanf("%f",&a);
for(i=0;i<n;i++)
{
if (a[i]%2==1)
{printf ("其中的奇数是%d\n",a[i]);
sum=sum+a[i];}
}printf ("奇数和是%d\n",sum);
}
66.有一个两位数XY,X是十位,Y是个位;给出X+Y的值和X*Y的值;编程实现让用户猜测这个两位数十多少?根据猜测给出不同的提示。
scanf("%f",&a[i]);
}
printf("\n");
printf("\n原始数据为:\n");

C语言经典编程100题(答案版)

C语言经典编程100题(答案版)

C语言经典程序100题(答案版)【程序1】题目:企业发放的奖金根据利润提成。

利润(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.程序源代码:1.#include"stdio.h"2.#include"conio.h"3.main()4.{5.long int i;6.int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;7.scanf("%ld",&i);8.bonus1100000*0.1;9.bonus2bonus1+100000*0.75;10.bonus4bonus2+200000*0.5;11.bonus6bonus4+200000*0.3;12.bonus10bonus6+400000*0.15;13.if(i<100000)14.bonus i*0.1;15.else if(i<200000)16.bonus bonus1+(i-100000)*0.075;17.else if(i<400000)18.bonus bonus2+(i-200000)*0.05;19.else if(i<600000)20.bonus bonus4+(i-400000)*0.03;21.else if(i<1000000)22.bonus bonus6+(i-600000)*0.015;23.else24.bonus bonus10+(i-1000000)*0.01;25.printf("bonus%d",bonus);26.getch();27.}【程序2】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

C语言编程实例100题(带解析适合新手超经典)

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语言经典习题实例及讲解

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语言的编程技巧,本文提供一些常见的C语言程序设计习题及其答案。

通过完成这些习题,学习者可以锻炼编程思维,加深对C语言的理解,并提高编程能力。

习题一:求两个整数的和题目描述:编写一个程序,计算两个整数的和并输出结果。

解答:```C#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```习题二:计算圆的周长和面积题目描述:编写一个程序,根据用户输入的半径,计算圆的周长和面积,并输出结果。

解答:```C#include <stdio.h>#define PI 3.14159int main() {double radius, circumference, area;printf("请输入圆的半径:");scanf("%lf", &radius);circumference = 2 * PI * radius;area = PI * radius * radius;printf("圆的周长为:%lf\n", circumference);printf("圆的面积为:%lf\n", area);return 0;}```习题三:判断一个数是否为素数题目描述:编写一个程序,判断用户输入的一个正整数是否为素数。

解答:```C#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; 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;}```习题四:计算两个矩阵的乘积题目描述:编写一个程序,计算两个3x3的矩阵的乘积并输出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4 7 2 8 12 5 10 3
i
jHale Waihona Puke 逆置后: 3 10 5 12 8 2 7 4
(1) i:0~N/2-1 j=N-i-1 (2) 交换:t=a[i]; a[i]=a[j]; a[j]=t;
程 序 示 例(二)
例2 将数组内容逆置重放。
#define N 6 main( ) { int a[N],i,j,p,t;
- 2 3 . 5 \0
if(s[i]=='.') i++; for(power=1;s[i]>='0'&&s[i]<='9';i++)
sign= -1
{val=10*val+s[i]-'0'; power*=10;}
val= 235
number=sign*val/power; printf("\nnumber=%f\n",number); }
2 4 7 10
运行结果: Input 4 numbers: 4 2 10 7 The sorted numbers: 2 4 7 10
程 序 示 例(二)
例2 将数组a的内容逆置重放。要求不得另外开辟数组,只 能借助于一个临时存储单元。
分析:
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
gets(s); i=0; sign=1; if(s[i]=='+'‖s[i]=='-')
-23.5 ↙ number=-23.500000
sign=(s[i++]=='+')? 1:-1;
for(val=0;s[i]>='0'&&s[i]<='9';i++)
val=10*val+s[i]-'0';
for(j=1;j<4;j++) if(rmax<a[i][j]) {rmax=a[i][j];c=j;} find=1; k=0; while(k<3&&find==1) { if(k!=i)
if(a[k][c]<=rmax) find=0; k++;} if(find==1)printf("The saddle pointer
printf("Input %d number to the array:\n",N);
for(i=0;i<N;i++) scanf("%d",&a[i]);
p=N/2-1; for(i=0;i<=p;i++) { j=N-i-1; t=a[i];a[i]=a[j];a[j]=t;} printf("\nThe array has been
into array:",x); for(i=0;i<m;i++)
printf(" %d",a[i]); }
运行结果: Input 4 sequential data: 8 10 20 27 ↙ Input an integer to insert: 16↙ Integer 16 has been Inserted into array:
#define N 4 main( ) { int array[N],i,j,k,t;
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;
(3)若rmax是c列上最小的元素,则找到,并打印。
(4)重复以上步骤,使i从第1行到第3行重复。
例:
3 5 18 14 1 4 6 18
5 9 12 13
程 序 示 例(四)
main( ) {int a[3][4],i,j,c,k,rmax,find;
printf("The matrix is:\n"); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); find=0; i=0; while(i<3&&(find==0)) { rmax=a[i][0]; c=0;
分析:
(1)先找到插入位置; (2)再将插入位置后的元素均向后移动一个位置; (3)最后将数插入到相应位置上。
8 10 20 27 插入数x=16 p
8 10 16 20 27
8 10 20 20 27 p
程 序 示 例(六)
#define N 4
main( )
{int a[N+1],p,i,x,m; printf("Input %d sequential data:",N); for(i=0;i<N;i++) scanf("%d",&a[i]);
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 将一个数插入到升序的数列中,使插入后的数列仍然有 序。
若数组中的元素个数为N,则需要进行N-1轮排序。例:
待排序数: 4 2 10 7 第一趟: 2 4 10 7 第二趟: 2 4 10 7 第三趟: 2 4 7 10
程 序 示 例(一)
例1 选择法排序。将数组中的整数按由小到大顺序输出。
#define N 4 main( ) { int array[N],i,j,k,t;
程 序 示 例(三)
例3 将字符串转换成相应的双精度浮点数。 例如:“-23.5 ” -23.5
分析:
(1) 先对字符串中的“+”和“-”进行处理; (2) 再处理‘.’前的部分,即将每一个数字字符转换成相应的数值
(方法:相应字符-’0’),并加权累加成相应的整数部分。 (3) 最后处理‘.’后的部分(若有的话)。最终 结果存放在变量
number中。
程 序 示 例(三)
例3 将字符串数转换成相应的双精度浮点数。
main( ) {char s[8]; int i,sign;
运行结果:
double val,power,number;
Input string of a
printf("Input string of a number:"); number:
程 序 示 例(五)
main( ) { char str[80],pc,nc;
int i,num;
运行结果: Input a text line:
printf("Input a text line:"); the is do ↙
gets(str); pc=' '; num=0; i=0;
The number of words is:3
for (j=i+1;j<N;j++) if(array[j]<array[k]) k=j; if (i!=k)
{t=array[k];array[k]=array[i];array[i]=t;} } printf("The sorted numbers:\n"); for (i=0;i<N;i++) printf(" %d",array[i]); }
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
例6 将一个数插入到升序的数列中,使插入后的数列仍然 有序。
程 序 示 例(一)
例1 用选择排序法对数组中的N个整数排序,按由小到大的 顺序输出。
分析:
选择排序法的思路是:先在a[0]~a[N-1]中选出最小的数,将 它与数组中的第一个元素对换;再将a[1]~a[N-1]中的最小的数与 a[1]对换…;每比较一轮,找出一个未经排序的数中最小的一个, 逐步缩小排序范围,直至完成排序。
习题课
程序示例演示
程序示例
例1 用选择排序法对数组中的N个整数排序,按由小到大的 顺序输出。
例2 将数组a的内容逆置重放。要求不得另外开辟数组,只 能借助于一个临时存储单元。
例3 将字符串转换成相应的双精度浮点数。 例4 输入3行4列的矩阵,找出在行上最大,在列上最小的 那个元素。若没有这样的元素,则打印出相应的信息。 例5 输入一个由若干单词组成的文本行(最多80个字 符),每个单词之间用若干空格隔开,统计文本行中单词 的个数。
相关文档
最新文档