《C 语言程序设计》课程作业适用层次:专升本 培养类型:理工科专业专业班级: 姓名: 学号:作业要求:题目可打印,答案要求手写,考试时交作业。
第1次:1.编写程序,分别计算1到100之间的奇数之和及偶数之和,并输出。
2.输入三角形的三条边a 、b 、c ,如果能构成一个三角形,则计算并输出三角形的周长和面积(结果保留两位小数);否则输出“无效的边长!”。
三角形面积计算公式为: s=))()((c x b x a x x ---,其中,x=(a+b+c)/2。
3.输入一个整数,求它的各位数字之和。
例如,123的各位数字之和为6,-63的各位数字之和为9。
4.使用格里高利公式求π的近似值,精确到最后一项的绝对值小于10-6。
+-+-=71513114π……5.中国古代数学史上著名的“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一。
百钱买百鸡,问翁、母、雏各几何?6.编写程序,键盘输入正整数n (0<n<10)的值,求s=1!+3!+5!+…+n !的值并输出。
第2次:1.编写程序,用冒泡排序对10个整数进行降序排列。
2.从键盘输入10个学生的高考总成绩,输出最高分。
3.输入20个学生的成绩,要求统计并输出优秀(大于85)、及格(60~84)和不及格(小于60)的学生人数。
4.求一个4*4矩阵主对角线元素之和与副对角线元素之和的差。
5.输入一个以回车键结束的字符串(少于80个字符),删除其中除英文字母以外的其它字符。
第3次:1.输入x ,计算并输出下列分段函数f(x)的值。
可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs()。
| 2x+5| x<0f(x)= (x+1)1/2 0<=x<23x+1 x>= 22. 编写一个函数prime(int n),判断一个整数是否是素数,若是素数,函数值返回1,否则返回0。
利用该函数找出100-200之间的所有素数。
素数是只能被1和自身整除的正整数,2是最小的素数。
3.写一函数int strlength(char *s)求一个字符串的长度。
主函数中输入一个字符串,调用函数strlength 求其长度并输出。
11:编程计算1到100之间的奇数之和及偶数之和。
#include <stdio.h>main(){ int even_sum,odd_sum,j,i;even_sum = odd_sum =0 ;for(i=0;i<=100;i+=2){ even_sum +=i;_j=i+1___;odd_sum +=j;}printf("sum of evens is %d\n", even_sum);printf("sum of odds is %d\n", odd_sum -101);#include <stdio.h>#include <math.h>main(){ float a,b,c,s,area;printf(“Input a,b,c:”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%.2f\n”,area);}elseprintf(“无效的边长!”);}13:输入一个整数,求它的各位数字之和及位数。
例如,34的各位数字之和是7,位数是2;-123的各位数字之和是6,位数是3。
#include <stdio.h>main(){int x,m,n=0,s=0;printf(" x= ");scanf("%d",&x);if(x<0)x=-x;do{m=x%10; /* 求出该数的个位数*/s=s+m;n++;x=x/10;}while(x!=0);printf(" 位数是:%d\n",n);printf(" 各位数字之和是:%d\n",s);}14:使用格里高利公式求π的近似值,精确到最后一项的绝对值小于10-6。
+-+-=71513114π……#include <stdio.h>#include <math.h>main( ){ int s;float n, t, pi;t=1; pi=0; n=1.0; s=1;while((fabs(t)) > = 1e-6){ pi = pi+t;n = n+2;s = -s;t = s/n;}pi=pi*4;printf(“pi =%10.6f\ n”, pi );}15:中国古代数学史上著名的“百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三,鸡雏三,值钱一。
百钱买百鸡,问翁、母、雏各几何?#include <stdio.h>main(){int cock,hen,chicken;for(cock =0; cock <=20; cock ++)for(hen =0; hen <=33; hen ++){ chicken =100- cock - hen;if((5* cock +3* hen + chicken /3)==100&&( chicken %3==0))printf("%5d%5d%5d\n", cock, hen, chicken);}}16:编写程序,键盘输入正整数n (0<n<10)的值,求s=1!+3!+5!+…+n !的值并输出。
#include<stdio.h>double fact(int n){double i,r=1;for(i=2;i<=n;i++)r *= i;return r;}main(){int i,n;double sum=0.0;scanf("%d",&n);for(i=1;i<=n;i++){sum += fact(2*i-1);}printf("sum=%.0lf\n",sum);}21. 编程,用冒泡排序对10个整数进行降序排列。
#include <stdio.h>main( ){ int a[10]; int i, j , t;/*输入10个整数到数组a中*/printf ("Input 10 numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf ("\n");/*用冒泡排序法对数组a中的10个数进行降序排序*/for(i=1; i<10; i++)for(j=0; j<=9-i; j++) /* a[0]到a[9-i]范围内的数进行一趟冒泡排序 */ if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}/*依次输出排序后的10个整数*/printf ( "The sorted numbers are:\n");for(i=0;i<10;i++)printf("%d _ _",a[i]);}22.已知10个学生的高考总成绩,输出最高分。
#include <stdio.h>main( ){float score[10], maxscore;int i;/*输入10个学生的高考总成绩到数组score中*/printf ("Input 10 scores:\n");for(i=0; i<10; i++)scanf("%f", &score[i]);/*变量maxscore赋值为第一个学生的成绩*/maxscore=score[0];/*求最高分*/for(i=1; i<10; i++)if( score[i]>maxscore) maxscore=score[i];/*输出最高分*/printf("maxscore=%6.1f\n",maxscore);}23.输入20个学生的成绩,要求统计并输出优秀(大于等于85)、及格(60~84)和不及格(小于60)的学生人数。
#include <stdio.h>main( ){int mark[20], g, p, f,i;g=p=f=0;printf("Enter scores:\n");for(i=0; i<20; i++)scanf ("%d", &mark[i]);/*统计优秀、及格和不及格的学生人数*/for(i=0; i<20; i++)if(mark[i] >= 85) g++;else if (mark[i] >= 60) p++;else f++;/*输出统计结果*/printf("优秀人数:%d\n", g);printf("及格人数:%d\n", p);printf("不及格人数:%d\n", f);}24.求一个4*4矩阵主对角线元素之和与副对角线元素之和的差#include<stdio.h>void main(){int i,j,sum1=0,sum2=0, a[4][4];printf("Input a 4*4 matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d", &a[i][j]);for(i=0;i<4;i++){sum1+=a[i][i];sum2+=a[i][3-i] }printf("差=%d\n", sum1- sum2);}25.输入一个以回车键结束的字符串(少于80个字符),删除其中除英文字母和数字字符以外的其它字符。
#include <stdio.h>main(){char str[80];int i,k=0;printf("Input a string:\n");gets(str);/*删除字符串中除英文字母和数字字符以外的字符*/for(i=0; str[i]!='\0'; i++)if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'||str[i]>='0'&&str[i]<='9'){str[k]=str[i]; /* 保留字符串中的英文字母和数字字符 */k++;}str[k]='\0';printf("Output new string:\n");puts(str);}31. 输入x,计算并输出下列分段函数f(x)的值。