学院比较奇葩,大一下期让学的VB,这学期就要学C++了,然后在开学的前三个周没有课,就由老师讲三个周的C语言,每天9:30~11:30听课,除去放假和双休日,实际听课时间一共是12天*2小时,下午是14:10~5:00,上机,不过每天下午有将近三个小时的上机时间。时间那么紧迫还要考试,今天上午得知考试题是从以下十道题中出,轻松了很多。题如下:

1.计算 ,并输出其结果。

2.求出n个学生一门课程中的最高成绩、最低成绩及高于平均成绩的人数。

3.有10个100内的整数,使用选择排序法从大到小排序。

4.有n个考生,每个考生有考号和一个总分成绩,如果录取m人(n>m),确定录取分数线,并输出该分数线上的考生的考号和成绩。

5.用过程实现:求两个正整数的最大公约数。

6.用过程实现:求两个正整数的最小公倍数。

7.用牛顿迭代法求一元方程 x5+2x3-x2+x+1=0在 0 附近的近似值。

8.找出 1000 以内最大的 3 个素数。

9.设计一个具有+、-、*、/、开方、阶乘、指数、正弦、余弦、正切、求余数功能的简易计算器。

10.利用文本编辑软件在外存上建立一个有n个学生的学号、姓名、系别、联系电话的数据文件。从键盘上输入一个学号,可以查寻到此人其他信息。并按姓名排序且输出。

 

代码如下:

第一题:

计算 ,并输出其结果。

#include<stdio.h> int mul(int n) { int num,i; num=1; for(i=1;i<=n;i++) num=num*i; return(num); } void main() { int i,sum=0; for(i=1;i<=10;i++) sum+=mul(i); printf("The sum is %d\n"
,sum);
}

 

改进:

输入n即可求从1到n的阶乘的和。

#include<stdio.h> int mul(int n) { int num,i; num=1; for(i=1;i<=n;i++) num=num*i; return(num); } void main() { int i,n,sum=0; printf("Enter the number:\n"); scanf("%d",&n); if(n<=0) printf("Error\n"); else { for(i=1;i<=n;i++) sum+=mul(i); printf("The sum is %d\n"

,sum);
}
}

第二题:

求出n个学生一门课程中的最高成绩、最低成绩及高于平均成绩的人数。

#include<stdio.h> int sort(int a[],int n) { int i,j,temp; for(i=0;i<n;i++) { for(j=0;j<=n-i-1;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } void main() { int i,k,sum=0,ave,n=4,a[5];//假设题中n=5,即有5名学生 for(i=0;i<=n;i++) { printf("Please enter number %d\n",i); scanf("%d",&a[i]); sum+=a[i]; } sort(a,n); printf("max is %d\n",a[0]); printf("min is %d\n",a[n]); ave=sum/n; for(k=0;k<=n&&a[k]>ave;) k++; printf("%d\n"

,k);
}

第三题:

有10个100内的整数,使用选择排序法从大到小排序。

#include<stdio.h> int sort(int a[],int n) { int i,j,temp; int min; for(i=1;i<=n;i++) { min=i; for(j=0;j<=n;j++) { if(a[j]<a[min]) { min=j; } if(min!=i) { temp=a[j]; a[j]=a[min]; a[min]=temp; } } } } void main() { int i,k,n=9,a[10]; for(i=0;i<=n;i++) { printf("Please enter number(<100) %d\n",i); scanf("%d",&a[i]); // if(a[k]<0||a[k]>100) // goto end; } sort(a,n); for(k=0;k<=n;k++) printf("%4d",a[k]); printf("\n"); //end:printf("Error\n"); }

第四题:

有n个考生,每个考生有考号和一个总分成绩,如果录取m人(n>m),确定录取分数线,并输出该分数线上的考生的考号和成绩。

#include<stdio.h> int sort(int a[],int n) { int i,j,temp; for(i=0;i<n;i++) { for(j=0;j<=n-i-1;j++) { if(a[j]<a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } void main() { int i,m,n=4,a[5];//假设题中n=5,即有5名学生 for(i=0;i<=n;i++) { printf("Please enter number %d\n",i); scanf("%d",&a[i]); } sort(a,n); printf("Please enter number m \n"); scanf("%d",&m); for(i=0;i<m;i++) printf("考号和成绩分别是%d %d\n"

,i,a[i]);
}

第五题:

用过程实现:求两个正整数的最大公约数。

#include<stdio.h> void main(){ int a,b; int min,max,tmp; printf("Enter tne number a b:\n"); scanf("%d%d",&a,&b); a>b?(max=a,min=b):(max=b,min=a); while(tmp=(max%min)) { max=min; min=tmp; } printf("GCF is %d\n"

,min);
}

 

 

 

 

 

第六题:

用过程实现:求两个正整数的最小公倍数。

#include<stdio.h> void main(){ int a,b,lcm; int min,max,tmp; printf("Enter tne number a b:\n"); scanf("%d%d",&a,&b); a>b?(max=a,min=b):(max=b,min=a); while(tmp=(max%min)) { max=min; min=tmp; } lcm=a*b/min; printf("LCM is %d\n"

,lcm);
}

第七题:

用牛顿迭代法求一元方程 x5+2x3-x2+x+1=0在 0 附近的近似值。

#include <stdio.h>

#include 

<math.h>//x5+2x3-x2+x+1=0 double F1(int,int,int,int,int,int,double); //原函数 double F2(int,int,int,int,int,int,double); //原函数的一阶导数 double Newton(int,int,int,int,int,int,double, double); int main() { /* int a,b,c,d,e,f; double x,x0 = 0; double g = pow(10,-5);//精度10^-5 printf("please input a b c d e f\n"); scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f); x = Newton(a,b,c,d,e,f,x0,g); double g = pow(10,-5);*/ double x; x = Newton(1,0,2,-1,1,1,0,pow(10,-5));//精度10^-5 printf("the result is x = %f\n",x); } double F1(int a, int b, int c, int d, int e, int f,double x) { return a*x*x*x*x*x + b*x*x*x*x + c*x*x*x + d*x*x +e*x +f; } double F2(int a, int b, int c, int d, int e, int f, double x) { return 5*a*x*x*x*x + 4*b*x*x*x + 3*c*x*x +2*d*x +e; } double Newton(int a, int b, int c, int d,int e, int f,double x, double g) { double x0; do

{
x0

= x; x = x0 - F1(a,b,c,d,e,f,x0) / F2(a,b,c,d,e,f,x0); }while (fabs(x0 - x) > g); return

 x;
}

第八题:

找出 1000 以内最大的 3 个素数。

#include<stdio.h>

#include

<math.h> int sort(int x) { int i,sx; sx=(int)sqrt(x); for(i=2;i<=sx;i++) { if(x%i==0) break; if(i==sx) return(x); } return(0); } void main() { int n=999,i,a[3];// 3个 for(i=0;i<3;i++) { a[i]=sort(n); if(a[i]==0) i--; else

printf(

"第%d个素数是%d\n",i+1,a[i]); n=n-1

;
}
}

第九题:

设计一个具有+、-、*、/、开方、阶乘、指数、正弦、余弦、正切、求余数功能的简易计算器。

#include<stdio.h>

#include

<math.h> #define PI 3.14159026 int add(int x,int y) { return(x+y); } int sub(int x,int y) { return(x-y); } int mul(int x,int y) { return(x*y); } double div(double x,double y) { if(y==0) return (0); else return(x/y); } int fac(int x) { int num,i; num=1; for(i=1;i<=x;i++) num=num*i; return(num); } int mod(int x,int y) { return(x%y); } void main() { // int (* oper[11])(int,int); int m,n,temp1; double x,y,temp2; char i; char c[]={'+','-','*','/','q','!','^','s','c','t','%'};//+、-、*、/、开方、阶乘、指数、正弦、余弦、正切、余数 printf("Enter 0 for + \n"); printf("Enter 1 for - \n"); printf("Enter 2 for * \n"); printf("Enter 3 for / \n"); printf("Enter 4 for 开方 \n"); printf("Enter 5 for 阶乘 \n"); printf("Enter 6 for 指数 \n"); printf("Enter 7 for 正弦 \n"); printf("Enter 8 for 余弦 \n"); printf("Enter 9 for 正切 \n"); printf("Enter a for 余数 \n"); i=getchar(); if(i=='0'||i=='1'||i=='2'||i=='6'||i=='a') { printf("Enter m n: \n"); scanf("%d%d",&m,&n); switch(i) { case '0':printf("%d+%d=%d\n",m,n,add(m,n));break; case '1':printf("%d-%d=%d\n",m,n,sub(m,n));break; case '2':printf("%d*%d=%d\n",m,n,mul(m,n));break; case '6':temp1=(int)pow(m,n);printf("%d^%d=%d\n",m,n,temp1);break;//pow case 'a':printf("%d%%%d=%d\n",m,n,mod(m,n));break; } } else if(i=='3'||i=='4') { printf("Enter x y: \n"); scanf("%lf%lf",&x,&y); // printf("%lf %lf\n",x,y); switch(i) { case '3':printf("%lf/%lf=%lf\n",x,y,div(x,y));break; case '4':temp2=pow(x,1/y);printf("%lf开%lf次方=%lf\n",x,y,temp2);break;//pow } } else if(i='5') { printf("Enter m: \n"); scanf("%d",&m); printf("%d!=%d\n",m,fac(m)); } else if(i=='7'||i=='8'||i=='9') { printf("Enter x: \n"); scanf("%lf",&x); x=x*PI/180; // printf("Enter x is %f\n: ",x); switch(i) { case '7':printf("sin(%lf)=%f\n",x,sin(x));break; case '8':printf("cos(%lf)=%f\n",x,cos(x));break; case '9':printf("tan(%lf)=%f\n",x,tan(x));break; } } else

        printf(

"Error!\n"

);
}

第十题:(非原创)

利用文本编辑软件在外存上建立一个有n个学生的学号、姓名、系别、联系电话的数据文件。从键盘上输入一个学号,可以查寻到此人其他信息。并按姓名排序且输出。

#include <stdio.h>

#include 

<stdlib.h> #define M 3 struct data /*定义结构体 */

{
int

idno; char name[10]; char telno[15]; }; struct data person[M]; /* 定义结构体数组 */ void personlist() /* 建立学生表函数*/

{
int

i; FILE * fp; fp = fopen("student.txt","r");//打开文件 if(fp==NULL) exit(0); for(i=0;i<M;i++) { fscanf(fp,"%d%s%s",&person[i].idno,person[i].name,person[i].telno);//读取记录 fprintf(stdout,"\n 学号:%d,姓名:%s,电话号码: %s\n",person[i].idno,person[i].name,person[i].telno); } fclose(fp);//关闭文件 } void main() { int i,no,yes=0; personlist(); printf("\n 请输入要查找信息的id号: "); scanf("%d",&no); for (i=0;i<M;i++) { if (person[i].idno==no) { printf("\n 姓 名: %s",person[i].name); printf("\n 电话号码: %s\n",person[i].telno); yes=1; break; } } if(!yes) printf("\n 没找到相应资料!\n"

);
}

 

 

最新文章

  1. ps如何裁剪掉图片的不规则区域
  2. linux glances的基本使用
  3. 企业号查询部门id(改版后)
  4. &lt;&lt;&lt; ajax在jsp中对于https跨域不能访问
  5. .framework使用注意、静态库配置及构架合成
  6. umeng社交分享最新版5.0的跨进程使用崩溃的问题及解法-Android
  7. 深入浅出设计模式——中介者模式(Mediator Pattern)
  8. 微信第三方 授权方账户信息 API文档错误
  9. atitit.技术选型方法总结为什么java就是比.net有前途
  10. js 当前日期及时间
  11. WPF Binding INotifyPropertyChanged 多线程 深入理解
  12. Java并发编程概要
  13. Dos操作
  14. 在ubuntu上面配置nginx实现反向代理
  15. ASP.net 的URL路由选择(System.Web.Routing.dll)
  16. Oracle系列之函数
  17. maven常用技巧
  18. 一段SQL代码的压缩:从974行到96行,十倍压缩
  19. Mac 下安装配置Mysql
  20. Jenkins构建时间Poll Scm的设置

热门文章

  1. sorted函数
  2. iBeacon 开发笔记
  3. 10_控制线程_线程让步yield
  4. LA 2965 Jurassic Remains (中途相遇法)
  5. android hander 线程用法
  6. 【转】SQL2008清除日志
  7. margin系列之keyword auto
  8. Universal-Image-Loader(UIL)使用方法&amp;流程图&amp;源码分析 ----- 未完
  9. 【gitlab】版本管理工具
  10. 【JPA】表达条件查询的关键字