首页 > 代码库 > C语言考试

C语言考试

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

1.计算 并输出其结果。

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

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

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即可求从1n的阶乘的和。

#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);
}

**********************************华丽的分割线************************************

第三题:

10100内的整数,使用选择排序法从大到小排序。

#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语言考试