首页 > 代码库 > C语言考试
C语言考试
学院比较奇葩,大一下期让学的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);
}
C语言考试