当前位置:文档之家› C语言程序简单例子讲解学习

C语言程序简单例子讲解学习

实验二参考答案1.输入两个整型数字,输出他们的和。

#include<stdio.h>main(){int a, b, sum;scanf(“%d%d ”, &a, &b);sum=a+b;printf(“a+b=%d ”, sum);}2.输入两个实型数,输出他们的和与乘积。

#include<stdio.h>main(){float a, b, sum, product;scanf(“%f%f ”, &a, &b);sum=a+b;product=a*b;printf(“a+b=%5.2f, a*b =%5.2f ”, sum, product);}3.求方程02=++c bx ax 的根(设042≥-ac b )(其中a ,b ,c 的值由键盘输入)。

#include<stdio.h>#include<math.h>main(){float a, b, c, dt, x1, x2;scanf(“%f%f%f ”, &a, &b, &c);dt=sqrt(b*b-4*a*c);x1=(-b+dt)/(2*a);x2=(-b-dt)/(2*a);printf(“x1=%5.2f, x2 =%5.2f ”, x1, x2);}4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数)#include<stdio.h>main(){int h, f, x,y;scanf(“%d%d”, &h, &f);x=2*h-f/2;y=f/2-h;printf(“x=%d, y =%d”, x, y);}实验三参考答案1.输入三个数a、b、c,要求按由小到大的顺序输出。

#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}printf(“%f,%f,%f”,a,b,c);}2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。

(1)#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}if(a+b>c){if(a==b||b==c){if(a==c) printf(“等边三角型”);else if(c*c==a*a+b*b) printf(“等腰直角三角形”);else printf(“一般等腰三角形”);}else if(c*c==a*a+b*b) printf(“一般直角三角形”);else printf(“一般三角形”);}else printf(“不构成三角形”);}(2)#include<stdio.h>main(){float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a>b){t=a; a=b; b=t;}if(a>c){t=a; a=c; c=t;}if(b>c){t=b; b=c; c=t;}if(a+b<=c) printf(“不构成三角形”);else if(a==b && b==c && a==c) printf(“等边三角型”);else if(a==b && c*c==a*a+b*b) printf(“等腰直角三角形”);else if (a==b) printf(“一般等腰三角形”);else if(c*c==a*a+b*b) printf(“一般直角三角形”);else printf(“一般三角形”);}3.编程实现下列函数x (x<1)y= 2x-1 (10≤x)1<|3x-11| (10x)#include<stdio.h>#include<math.h>main(){int x,y;printf("input x=:");scanf("%d",&x);if(x<1) y=x;else if(x<10) y=2*x-1;else y=abs(3*x-11);printf("x=%d y=%d\n",x,y);}4.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。

方法一:用if语句#include<stdio.h>main(){float score;char grade;scanf("%f", &score);if(score>100||score<0) printf("\ninput error!");else{if(score>=90) grade='A';else if(score>=80) grade='B';else if(score>=70) grade='C';else if(score>=60) grade='D';else grade='E';}printf("the student grade=%c \n", grade);}方法二:用switch语句。

注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。

所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。

则由此可得把score除十取整,化为相应的常数。

#include<stdio.h>main(){float score,int s;char grade;scanf("%f", &score);s=score/10;if(s<0||s>10) printf("\ninput error!");else{switch (s){case 10:case 9: grade ='A'; break;case 8: grade ='B'; break;case 7: grade ='C'; break;case 6: grade ='D'; break;default: grade ='E';}printf("the student grade =%c \n ", ch);}}实验四参考答案1.编写程序,计算以下级数前n 项之和。

!/...!4/!3/!2/1432n x x x x x s u m n ++++++=#include<stdio.h>void main(){int i, n;float s=1.0, sum=1.0, x;scanf(“%d, %f ”, &n, &x);for(i=1; i<=n; i++){s=s*x/i;sum=sum+s;}printf(“sum=%5.2f ”, sum);}2.编程打印如下图案(书后习题第3题):********************************************************#include <stdio.h>main( ){int i, j, n;for(i=1; i<=7; i++){for(j=0; j<14-2*i; j++) printf(" ");for(j=0; j<2*i; j++) printf("*");printf("\n");}}3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。

(图中n=5)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 11#include <stdio.h>main( ){int i, j,n;scanf("%d", &n);for(i=1; i<n; i++){for(j=1; j<i; j++) printf(" %d", j);for(j=i; j>0; j--) printf(" %d", j);printf("\n");}for(i=n; i>0; i--){for(j=1; j<i; j++) printf(" %d", j);for(j=i; j>0; j--) printf(" %d", j);printf("\n");}}4.输出Fibonacci数列第n项。

其数列通项公式为F n=F n-1+F n-2,F1=1,F2=1。

方法一:#include<stdio.h>main(){float f, f1=1, f2=1;int i, n;scanf("%d", &n);for(i=3; i<=n; i++){f=f1+f2;f1=f2;f2=f;}printf("%10.0f \n", f );}方法二:#include <stdio.h>#define NUM 20void main(){int i;float f[NUM]={1,1};for(i = 2; i < NUM; i++)f[i] = f[i-2]+f[i-1];for(i = 0; i < NUM; i++)printf("%10.0f \n", f[i]); }实验五参考答案1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c#include <stdio.h>void main(){int a[3]={1,2,3}, b[3]={4,5,6}, c[3];int i;for(i=0;i<3;i++){c[i]=a[i]+b[i];printf("%d",c[i]);}}2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序)#include <stdio.h>#define NUM 10void main (){int a[NUM], i, j, temp, flag;printf ("input %d numbers: \n", NUM);for (i=0; i<NUM; i++)scanf ("%d", &a[i]);for (i=1; i<NUM; i++)for (j=0; j<NUM-i; j++){flag = 0;if (a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;flag = 1;}if (flag == 0) break;}printf ("the sorted numbers:\n");for (i=0; i<NUM; i++)printf ("%d ", a[i]);}3.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标#include <stdio.h>#define NUM 10void main(){ int a[NUM];int i,max, index;for(i=0; i<NUM;i++)scanf("%d",&a[i]);max=a[0];for(i=0; i<NUM;i++){if(max<a[i]){max=a[i];index=i;}}printf("max=%d, index=%d", max, index);}4.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。

相关主题