学院比较奇葩,大一下期让学的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"

);
}

 

 

C语言考试解答十题的更多相关文章

  1. 中国MOOC_零基础学Java语言_期末考试的编程题_1二进制的前导的零

    期末考试的编程题 返回   这是期末考试的编程题,在60分钟内,你可以多次提交,直到正确为止. 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止 ...

  2. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  3. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

  4. Java实习生常规技术面试题每日十题Java基础(四)

    目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...

  5. Java实习生常规技术面试题每日十题Java基础(三)

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

  6. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  7. Java实习生常规技术面试题每日十题Java基础(一)

    目录 1.Java 的 "一次编写,处处运行"如何实现? 2.描述JVM运行原理. 3.为什么Java没有全局变量? 4.说明一下public static void main(S ...

  8. MT【256】2016四川高考解答压轴题

    (2016四川高考数学解答压轴题)设函数$f(x)=ax^2-a-\ln x,a\in R$. 1)讨论$f(x)$的单调性;2)确定$a$的所有可能值,使得$f(x)>\dfrac{1}{x} ...

  9. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

随机推荐

  1. C#学习笔记15:字符串、文件、目录的操作方法

    字符串:不可变性 String str=”abcdf”; 将字符串转换为char数组:ToCharArray(); Char[] ch=str.ToCharAarray(); 将char数组转换为字符 ...

  2. VMWare中安装CentOS6.6不能上网的解决办法

    1.首先在虚拟机中将网络配置设置成NAT 2.在windows系统,我的电脑-管理-服务 中开启VMware NAT service和VMware DHCP service. 3.在CentOS里面打 ...

  3. C# 调试程序弹出 没有可用于当前位置的源代码 对话框

    解决方案: 1.右键点击解决方案->属性->通用属性->调试源文件. 2.看看你的程序有没有被增加到“不查找这些源文件”这个框里. 3.如果有删除,然后重新编译即可调试,解决问题.

  4. HTML5标签及使用方法描述

    HTML 5 作为新一代的超文本标记语言,增加了许多标签.这些标签不但更有语义,而且功能强大.具体有以下标签: <article> 定义外部的内容.比如来自一个外部的新闻提供者的一篇新的文 ...

  5. Objective-C 学习笔记(Day 1)

    -------------------------------------------- Hello World //引入头文件 //c中的引入头文件的方式 //#include <stdio. ...

  6. NOIP200701

    题是这样的: 试题描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再 ...

  7. 轻松解决fedora21装完NVIDIA显卡驱动后无法进入gnome问题

    本来打算昨天写的,最近感冒了,打点滴,耽搁了! 我用的是联想14寸笔记本,装好了fedora21后,想装个NVIDIA显卡驱动试试,结果和很多人一样无法进入gnome界面,搞了三四个小时终于搞定.下面 ...

  8. C#序列化/反序列化

    序列化:将实体类以二进制或者XML的形式保存到磁盘或者内存中. 反序列化:将序列化的二进制文件和XML文件解析成实体类. 例如下面的二进制序列化与反系列化: using System; using S ...

  9. .net Remoting 的工作原理是什么?

    webservice和.net remoting都是用来通信的框架,它们最大的优点是可以像调用本地对象一样调用远程对象 区别:1.webservice是用的应用层协议http封装的,所以它可以被很多其 ...

  10. Express框架学习总结

    最近学了Express框架,在学习的过程中,参考了一些资料,感觉Express框架比原生Node.js好用多了.下面我将我学习总结的内容如下: Express中文网     http://www.ex ...