当前位置:文档之家› c语言上机试题1(数学计算)

c语言上机试题1(数学计算)

c语言上机试题1(数学计算)
c语言上机试题1(数学计算)

1整型、实型

1.1实型四舍五入

请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.57;实型数为1234.564, 则函数返回1234.56。注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

int NONO(void);

float fun ( float h ) {

}

int main(void) {

float a;

printf ("Enter a: ");

scanf ( "%f", &a );

printf ( "The original data is : " );

printf ( "%f \n\n", a );

printf ( "The result : %f\n", fun ( a ) );

NONO( );

return 1;

}

int NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用fun 函数,输出数据,关闭文件。*/ int i ;

float a ;

FILE *rf, *wf ;

rf = fopen("./05/in.dat","r") ;

wf = fopen("./05/out.dat","w") ;

for(i = 0 ; i < 20 ; i++) {

fscanf(rf, "%f", &a) ;

fprintf(wf, "%f\n", fun(a)) ;

}

fclose(rf) ;

fclose(wf) ;

return 1;

}

答案1:

long i=h*1000;

if(i%10<5)

return (i/10)/100.0;

else

return (i/10+1)/100.0;

答案2:

long temp=a*1000,temp2;

temp2=temp/10;

temp=temp%10;

float result; //被除数定义成float if(temp>4)

result=temp2+1;

else

result=temp2;

return result/100;

1.2根据公式求圆周率

#include

#include

double fun ( double eps) {

}

main( ) {

double x;

printf("Input eps:") ;

scanf("%lf",&x);

printf("\neps = %lf, PI=%lf\n", x, fun(x));

NONO();

}

NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ;

int i ;

double x ;

fp = fopen("c:\\test\\in.dat","r") ;

wf = fopen("c:\\test\\out.dat","w") ;

for(i = 0 ; i < 10 ; i++) {

fscanf(fp, "%lf", &x) ;

fprintf(wf, "%lf\n", fun(x)) ;

}

fclose(fp) ;

fclose(wf) ;

}

答案1:

double i=1,a=1,b=1,c=1,s=0;

while(c>=eps) {

s+=c;

a*=i;

b*=2*i+1;

c=a/b;

i++;

}

return s*2;

答案2:

double n=1.0,m,s1,s2;

m=2*n+1;

s1=n;

s2=m;

double temp=s1/s2,sum=0.0;

while(temp>=eps){

sum+=temp;

n+=1;

m+=2;

s1*=n;

s2*=m;

temp=s1/s2;

}

return (sum+1)*2;

1.3求阶乘

#include

float fun(int m, int n) {

}

int main(void) /* 主函数*/ {

printf("P=%f\n", fun (12,8));

//NONO();

return 1;

}

int NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ;

int i, m, n ;

float s;

fp = fopen("c:\\test\\in.dat","r") ;

wf = fopen("c:\\test\\out.dat","w") ;

for(i = 0 ; i < 10 ; i++) {

fscanf(fp, "%d,%d", &m, &n) ;

s = fun(m, n) ;

fprintf(wf, "%f\n", s) ;

}

fclose(fp) ;

fclose(wf) ;

return 1;

}

答案:

float result;

int x,y,z,o=1,p=1,q=1;

for(x=1;x<=m;x++){

o=o*x;

}

for(y=1;y<=n;y++){

p=p*y;

for(z=1;z<=m-n;z++){

q=q*z;

}

result=o/(p*q);

return result;

尝试建立一个专门求阶乘的函数。

1.4求公式

#include

double fun( int n ) {

}

int main(void) /* 主函数*/ {

printf("%f\n", fun(10));

//NONO();

return 1;

}

int NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ;

int i, n ;

double s ;

fp = fopen("c:\\test\\in.dat","r") ;

wf = fopen("c:\\test\\out.dat","w") ;

for(i = 0 ; i < 10 ; i++) {

fscanf(fp, "%d", &n) ;

s = fun(n) ;

fprintf(wf, "%f\n", s) ;

}

fclose(fp) ;

fclose(wf) ;

return 1;

}

int i;

double m,sum=0.0;

for(i=1;i<=n;i++){

m=i*(i+1);

sum+=1/m;

}

return sum;

1.5整数分解

函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12。调用该函数后,c=5241。注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT 中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include

void NONO(void);

long fun(int a, int b) {

}

int main(void) {

int a,b;

long c;

printf("Input a, b:");

scanf("%d%d", &a, &b);

c=fun(a, b);

printf("The result is: %ld\n", c);

NONO();

return 0;

}

void NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE *rf, *wf ;

int i, a,b ;

long c ;

rf = fopen("./44/in.dat","r") ;

wf = fopen("./44/out.dat","w") ;

for(i = 0 ; i < 10 ; i++) {

fscanf(rf, "%d,%d", &a, &b) ;

fun(a, b, &c) ;

fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;

}

fclose(rf) ;

fclose(wf) ;

}

答案:

long i1=(a%10)*1000;

printf("aa=%d,bb=%d",b%10,b/10);

long i2=(b%10)*100;

long i3=a/10*10;

long i4=b/10;

//return a%10*1000+b%10*100+a/10*10+b/10; return i1+i2+i3+i4;

1.6数学公式

#include

/************found************/

fun(int m){

double y = 0, d;

int i ;

/************found************/

for( i = 100;i < m;i += 100 ) {

d = (double)i * (double)i ;

y += 1.0 / d ;

}

return (y);

}

main( ) {

int n = 2000 ;

printf( "\nThe result is %lf\n", fun ( n ) ) ;

}

答案:

double fun ( int m ) {

for( i = 100;i <=m;i += 100 ) {

1.7数学公式

修正:

当k=1时,第一项为4/1*3

#include

#include

float fun(int k){

}

main ( ) {

printf("%f\n", fun (10));

}

答案1:

int n;

float s, w, p, q;

n = 1;

s = 1.0;

while ( n <= k ) {

w = 2.0 * n;

p = w - 1.0;

q = w + 1.0;

s = s * w *w/p/q; n++;

}

return s;

改错:

int i;

float sum=1.0;

for(i=2;i<=k;i++){

sum*=(2*i * 2*i)/((2*i+1)*(2*i-1)); //注意数据类型

}

return sum;

1.8最小公倍数

给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。例如,给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include

/************found************/

fun(int x, y, z ) {

int j,t ,n ,m;

j = 1 ;

t=j%x;

m=j%y ;

n=j%z;

while(t!=0||m!=0||n!=0) {

j = j+1;

t=j%x;

m=j%y;

n=j%z;

}

/************found************/

return i;

}

main( ) {

int x1,x2,x3,j ;

printf("Input x1 x2 x3: ");

scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d, x2=%d, x3=%d \n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("The minimal common multiple is : %d\n",j);

}

答案:

int fun(int x,int y,int z){

return j;

编程:

#include

//求三个数的最大数

int max(int x,int y,int z){

}

//求三个数最小公倍数

int fun(int x, int y, int z ) {

}

main( ) {

int x1,x2,x3,j ;

printf("Input x1 x2 x3: ");

scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d, x2=%d, x3=%d \n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("The minimal common multiple is : %d\n",j);

}

答案:

int temp;

if (x>y) temp=x;

else temp=y;

if(temp >z) return temp;

else return z;

int temp=max(x,y,z);

int result=temp;

while(1){

if(result%x==0 && result%y==0 && result%z==0) return result;

result=result+temp;

}

1.9n!改错

给定程序MODI1.C中函数fun 的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

double fun ( int n ) {

double result = 1.0 ;

/************found************/

if n = = 0 return 1.0 ;

while( n >1 && n < 170 )

/************found************/

result *= n--

return result ;

}

main ( ) {

int n ;

printf("Input N:") ;

scanf("%d", &n) ;

printf("\n\n%d! =%lf\n\n", n, fun(n)) ;

}

答案:

if(n==0) return 1.0;

result*=n--;

1.10数学公式

#include

double fun(int n){

}

main( ) {

int n = 5;

printf( "\nThe value of function is: %lf\n", fun ( n ) ); }

答案:

int a, b, c, k;

double s;

s = 0.0;

b = 1;

for ( k = 1; k <= n; k++ ) {

s=s+(double)a/b;

c = a;

a = a + b;

b = c;

}

return s;

1.11数列

已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。例如,当n =10时,程序的输出结果应为:23.197745。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

double fun(int n){

}

main ( ) {

int n;

printf("Input N=");

scanf("%d", &n);

printf("%f\n", fun(n) );

}

答案:

double sum, s0, s1, s2, s;

int k;

sum = 1.0;

if (n <= 2) sum = 0.0;

s0 = 0.0;

s1 = 0.0;

s2 = 1.0;

for (k = 4; k <= n; k++) {

s = s0 + s1 + s2;

sum += sqrt(s);

s1 = s2;

s2 = s;

}

return sum;

1.12数学公式

#include

/************found************/

int fun ( int n ) {

float A=1;

int i;

/************found************/

for (i=2; i

return A ;

}

main( ) {

int n ;

printf("\nPlease enter n: ") ;

scanf("%d", &n ) ;

printf("A%d=%f\n", n, fun(n) ) ;

}

答案:

float fun(int n){

if(2<=n) return 1.0/(1+fun(n-1));//递归

或:for (i=2; i<=n; i++) A=1.0/(1+A);//另一种

1.13数学公式

给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值。

#include

double fun ( int m ) {

double y = 1.0 ;

int i ;

/**************found**************/

for(i = 2 ; i < m ; i++)

/**************found**************/

y -= 1 /(i * i) ;

return( y ) ;

}

main( ) {

int n = 5 ;

printf( "\nThe result is %lf\n", fun ( n ) ) ;

}

答案:

for(i=2;i<=m;i++)

y -=1.0/(i*i);

1.14数学公式

#include

#include

double fun(double eps) {

double s,t;

int n=1;

s=0.0;

/************found************/

t=0;

while( t>eps) {

s+=t;

t=t * n/(2*n+1);

n++;

}

/************found************/

return (s);

}

main() {

double x;

printf("\nPlease enter a precision: ");

scanf("%lf",&x);

printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));

}

答案:

t=1.0;

return(s*2);

1.15素数

给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

int fun(int m) {

int i, k ;

for (i = m + 1 ; ; i++) {

for (k = 2 ; k < i ; k++)

/**************found**************/

if (i % k != 0) break ;

/**************found**************/

if (k < i) return(i);

}

}

void main() {

int n ;

n = fun(20) ;

printf("n=%d\n", n) ;

}

答案:

if(i%k==0)break;

if(k==i)return (i);

1.16整数处理

给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

/************found************/

//void fun (long s, long t) {

void fun(long s,long *t){

long sl=10;

s /= 10;

*t = s % 10;

/************found************/

//while ( s < 0) {

while(s>0){

s = s/100;

*t = s%10*sl + *t;

sl = sl * 10;

}

}

main(){

long s, t;

printf("\nPlease enter s:");

scanf("%ld", &s);

fun(s, &t);

printf("The result is: %ld\n", t);

}

1.17自然数

给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。请改正程序中的错误,使程序能输出正确的

结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include

int fun( int k ) {

int m=0, mc=0, j ;

while ((k >= 2) && (mc < 10)) {

/************found************/

if ((k%13 = 0) || (k%17 = 0)) {

m = m+ k;

mc++;

}

k--;

}

return m;

/************found************/

_____

}

main ( ) {

printf("%d\n",fun (500));

}

if(k%13 == 0 || k%17 == 0){

//____

C语言上机试题

1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能就是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2:第2题请编写函数fun,它的功能就是:求出1到100之内能北7或者11整除,但不能同时北7与11整除的所有证书,并将她们放在a所指的数组中,通过n返回这些数的个数。 3:第3题请编写函数void fun(int x,int pp[],int *n),它的功能就是:求出能整除x且不就是偶 数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4:第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"至U "z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5:第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能就是:将大于整数m且 紧靠m的k各素数存入xx所指的数组中。 6:第6题请编写一个函数void fun(char a[],char[],int n),其功能就是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 7:第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下 标并存放在k所指的储存单元中。 8:第8题编写函数fun,功能就是:根据以下攻势计算s,计算结果作为函数值返回『通过形参 传入。S=1 + 1/(1+2)+1/(1+2+3)+ ??…、+1/(1+2+3+4+ ??…+n) 9:第9题编写一个函数fun,它的功能就是:根据以下公式求p的值,结果由函数值带回。M 与n为两个正整数,且要求m>n。p=m!/n!(m-n)! 10:第10题编写函数fun,它的功能就是:利用以下的简单迭代方法求方程cos(x)-x=0的一个 实根。 迭代步骤如下:(1)取x1初值为0、0;⑵x0=x1,把x1的值赋各x0; (3) x1=cos(x0),求出一个新的x1; (4) 若x0-x1的绝对值小于0、000001,则执行步骤(5),否则执行步骤(2); (5) 所求x1就就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0、739085。 11:第11题下列程序定义了nx n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能就是:使数组左下半三角元素中的值全部置成0。 12:第12题下列程序定义了n x n的二维数组,并在主函数中赋值。请编写函数fun,函数的 功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13:第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt 指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。 14:第14题请别写函数fun,函数的功能使求出二维数组周边元素之与,作为函数值返回。二 维数组中的值在主函数中赋予。 15:第15题请编写一个函数unsigned fun(unsigned w),w 使一个大于10的无符号整数,若w 使n(n>2)位的整数,则函数求出w后n-1位的数作为函数值返回。 16:第16题请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树, 并对第三位进行四舍五入(规定h中的值位正数)。 17:第17题请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。 18:第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。 19:第19题编写函数fun,该函数的功能就是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。20:第20题编写函数int fun(int lim,int aa[max]),该函数的功能就是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。 21:第21题请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。

最新数学表达式计算(c语言实现)演示教学

一、设计思想 计算算术表达式可以用两种方法实现: 1.中缀转后缀算法 此算法分两步实现:先将算术表达式转换为后缀表达式,然后对后缀表达式进行计算。具体实现方法如下: (1)中缀转后缀 需要建一个操作符栈op和一个字符数组exp,op栈存放操作符,字符数组用来存放转换以后的后缀表达式。首先,得到用户输入的中缀表达式,将其存入str数组中。 对str数组逐个扫描,如果是数字或小数点,则直接存入exp数组中,当扫描完数值后,在后面加一个#作为分隔符。 如果是操作符,并且栈为空直接入栈,如果栈不为空,与栈顶操作符比较优先等级,若比栈顶优先级高,入栈;如果比栈顶优先级低或相等,出栈将其操作符存到exp数组中,直到栈顶元素优先等级低于扫描的操作符,则此操作符入栈;如果是左括号,直接入栈,如果是右括号,出栈存入exp数组,直到遇到左括号,左括号丢掉。然后继续扫描下一个字符,直到遇到str中的结束符号\0,扫描结束。结束后看op栈是否为空,若不为空,继续出栈存入exp数组中,直到栈为空。到此在exp数组最后加结束字符\0。 我们就得到了后缀表达式。 (2)后缀表达式计算 此时需要一个数值栈od来存放数值。对exp数组进行逐个扫描,当遇到数字或小数点时,截取数值子串将其转换成double类型的小数,存入od栈中。当遇到操作符,从栈中取出两个数,进行计算后再放入栈中。继续扫描,知道扫描结束,此时值栈中的数值就是计算的结果,取出返回计算结果。 2.两个栈实现算法 此算法需要两个栈,一个值栈od,一个操作符栈op。将用户输入的数学表达式存入str数组中,对其数组进行逐个扫描。 当遇到数字或小数点,截取数值子串,将其转换成double类型的数值存入od栈中; 当遇到左括号,直接入op栈;遇到右括号,op栈出栈,再从值栈od中取出两个数值,计算将其结果存入值栈中,一直进行此操作,直到操作符栈栈顶为左括号,将左括号丢掉。 如果遇到操作符,若op栈为空,直接入栈;若栈不为空,与栈顶元素比较优先等级,若比栈顶操作符优先等级高,直接入op栈,如果低于或等于栈顶优先等级,op栈出栈,再从值栈中取出两个数值,计算将其结果存入值栈中,一直进行此操作,直到栈顶优先等级低于扫描的操作符等级,将此操作符入op栈。继续扫描直到遇到str中的结束字符\0,扫描结束。此时看操作符栈是否为空,若不为空,出栈,再从值栈中取出两个数值进行计算,将其结果存入值栈,一直进行此操作,直到操作符栈为空。此时把值栈中的数值取出,即为所得的最终计算结果。 二、算法流程图 第一种算法:中缀转后缀算法

C语言上机考试题

考试时间120分钟题目中所有要求统计或输出的地方都要用printf函数输出相关内容要求:新建一个以自己中文姓名命名的文件夹,将如下题目的答案保存在该文件夹中,各题命名要求Exam1.c,Exam2.c,Exam3.c,Exam4.c,Exam5.c 只需提交每个题目的源文件 1.定义一个字符数组s[50],从键盘输入如下字符串给s数组中,统计其中数字字符的个数和英文字母的个数以及特殊字符的个数。(要求:输入的字符为:“123ABCDhijkop#&%*&!”)(本题5分) 输入功能,3个统计 2.从键盘输入10个元素给数组a,然后将这些元素逆向复制到数组b中(要求:输入的这10个数为:1,2,3,4,5,6,7,8,9,10)。(本题5分) 输入,逆序2个功能,错一个扣2分 3.使用循环嵌套,打印输出如下图形结果(提示使用两次循环嵌套)。 (本题5分) 没有中文后面扣1分 实现一半扣2分 4.从键盘上输入一个字符,如果是’M’,输出Mondey,’T’输出Tuesday,’W’输出Wednesday,’R’输出Tursday,’F’输出Friday,’S’输出Saturday,’U’输出Sunday,否则输出Error(本题5分)输入字符,switch语句,细节有错扣0.5 5.从键盘上输入10个学生的数学成绩,使用冒泡排序实现对成绩的排序功能(排序后的成绩按从低到高排列,效果如下), 输出排序后的学生成绩,输出最高成绩,输出最低成绩,将55-60之间的成绩(含55,不含60)修改为60,并统计被修改的成绩个数,统计及格人数,统计95(含95,优秀)分以上的学生成绩人数,输出及格率和优秀率(>=60,及格,>=95优秀)。(要求:输入的10个

C语言上机试题

1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 6: 第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n 中存放指定的下标。 7: 第7题请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。 8: 第8题编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 9: 第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)! 10: 第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0; (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0.739085。 11: 第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 12: 第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 13: 第13题请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数

C语言中的22个数学函数

C语言的22个数学函数 在使用C语言数学函数时候,应该在该源文件中使用以下命令行: #include 或#include "math.h",这里的<>跟""分别表示:前者表示系统到存放C库函数头文件所在的目录寻找需要包含的文件,这是标准方式;后者表示系统先在拥护当前目录中寻找要包含的文件,若找不到,再按前者方式查找。为节省时间,在使用自己编写的文件时使用的是“”,自己编写的文件一般是在当前目录下。 22个数学函数中只有abs的数据类型是:”整型“,”int“。 log10、logE中的10与E是在log的左下角位置。其余求弧度函数需要看清楚是不是指数。排列方式如下:函数名:函数功能参数介绍,返回值,说明。函数原型。 1.abs: 求整型x的绝对值,返回计算结果。 int abs(int x); 2.acos:计算COS-1(x)的值,返回计算结果,x应在-1到1范围内。 doubleacos(double x); 3.asin: 计算SIN-1(x)的值,返回计算结果,x应在-1到1范围内。 doubleasin(double x); 4.atan: 计算TAN-1(x)的值,返回计算结果。double atan(double x); 5.atan2: 计算TAN-1/(x/y)的值,返回计算结果。 double atan2(double x,double y); 6.cos: 计算COS(x)的值,返回计算结果,x的单位为弧度。 double cos(double x); 7.cosh: 计算x的双曲余弦COSH(x)的值,返回计算结果。 double cosh(double x); 8.exp: 求e x的值,返回计算结果。 double exp(double x); 9.fabs: 求x的绝对值,返回计算结果。 duoblefabs(fouble x); 10.floor: 求出不大于x的最大整数,返回该整数的双精度实数。 double floor(double x); 11.fmod: 求整除x/y的余数,返回该余数的双精度。 doublefmod(double x,double y);

C语言期末上机考试题及答案

C语言上机考试题—01 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include main() { int k,m,s=0,i,b=0; for(k=10000;k<=20000;k++ ) { if(k%10==7) { for(i=2,b=0;i main() { int a; printf("请输入一个需要判 断的年份:\n"); scanf("%d",&a); if(a%4==0&&a%100!=0) printf("是闰年\n"); else if(a%400==0) printf("是闰年 \n"); else printf("不是闰 年\n"); } C语言上机考试题—02 1. //#include #include double fun( int n ) { double sum=0,a=1; for(;n>0;n--,a++) sum=sum+1/(a*(a+1)); return sum; } main() { // clrscr(); printf("%f\n", fun(10)); } 2. #include fun(int n) { int i,j=0; for(i=2;i #include main() { char str[81]; int i,j=0,w=1,s=0; printf("请输入一串字符: \n"); gets(str); for(i=0;i

c语言上机试题1(数学计算)

1整型、实型 1.1实型四舍五入 请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.57;实型数为1234.564, 则函数返回1234.56。注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include int NONO(void); float fun ( float h ) { } int main(void) { float a; printf ("Enter a: "); scanf ( "%f", &a ); printf ( "The original data is : " ); printf ( "%f \n\n", a ); printf ( "The result : %f\n", fun ( a ) ); NONO( ); return 1; } int NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用fun 函数,输出数据,关闭文件。*/ int i ; float a ; FILE *rf, *wf ; rf = fopen("./05/in.dat","r") ; wf = fopen("./05/out.dat","w") ; for(i = 0 ; i < 20 ; i++) { fscanf(rf, "%f", &a) ; fprintf(wf, "%f\n", fun(a)) ; } fclose(rf) ; fclose(wf) ; return 1; }

c语言中求绝对值的数学函数

1、在C语言中,求绝对值的数学函数是( A )。 A、fabs() B、exp() C、pow() D、sqrt() 2、C语言可以使用printf函数实现输出,该函数在头文件( A )中定义。 A、stdio.h B、lib.h C、math.h D、printf.h 3、以下关于变量定义错误的是(A )。 A、char for; B、float USS; C、double int_; D、int _int; 4、在C语言中,求平方根的数学函数是( B )。 A、exp() B、sqrt() C、pow() D、fabs() 5、在C语言中,用printf函数输出float型数据时,可以使用格式控制符( B )。 A、%d B、%f C、%c D、%lf 6、以下说法正确的是( B )。 A、do-while语句构成的循环必须用break语句才能退出 B、do-while语句构成的循环,当循环条件为假时结束循环 C、do-while语句构成的循环,当循环条件为真时结束循环 D、不能使用do-while语句构成的循环 7、执行语句for(i=1;i<=10;i++) continue;后,i值为( C )。 A、9 B、无穷 C、11 D、10 8、C语言程序的基本控制结构是( B )。 A、循环结构

B、顺序、分支、循环 C、分支结构 D、顺序结构 9、float x ; 该语句将变量x定义为(B )类型。 A、双精度实型 B、单精度实型 C、字符型 D、整型 10、C 语言可以使用getchar()函数实现输入,该函数在系统头文件( D )中定义。 A、string.h B、用户自定义函数 C、math.h D、stdio.h 11、设x、y、z都是整型变量,x、y的初值都是5,执行z=(++x)+(y--)+1后,x、y、z三变量的值按顺序是( D )。 A、6,5,11 B、5,5,11 C、6,4,11 D、6,4,12 12、C语言中,三条边a、b、c能构成三角形的逻辑表达式是( D )。 A、a+b>c B、a>b>c C、a-bb D、a+b>c &&a+c>b &&b+c>a 13、下面有关for循环的正确描述是( D )。 A、for循环的循环体不能为空语句 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 14、使用系统提供的输出函数printf()时,实现换行功能的字符是(D )。 A、'/n' B、'\b' C、'\r' D、'\n' 15、从键盘输入一个整数给变量get,下列正确的语句是( B )。 A、printf("%d",&get); B、scanf("%d",&get); C、scanf("%d",get) ; D、printf("%d",get); 16、变量a、b分别声明为int型和double型,a的初值为5,如果b获得a的一半值,可使用哪条语句( C )。 A、b=a/2; B、b=sqrt(a); C、b=a/2.0;

C语言程序设计课程C语言上机考试题—2014

1、从键盘输入10个整数,对这10个数排序(由小到大)后输出。 2、从键盘输入10个整数,对这10个数排序(由大到小)后输出。 3、对于一个自然数,如果该数的所有因子之和正好等于该数,则该数称为完数。统计1000以内的完数个数。 4、编写主函数和一个函数int diff(int year, int m1, int d1, int m2, int d2)。(1)函数diff计算year年的m1月d1日至m2月d2日之间相隔的天数(假设m1<=m2);(2)主函数中输入某年的两个日期,调用diff函数计算它们之间相隔的天数,并输出。 5、编写主函数和一个函数void merge(int a[], int b[], int c[])。要求是:(1)函数merge对两个已是升序的数组a、b进行归并,归并后的结果仍然是升序的,并通过形参c返回;(2)主函数:定义长度为5的数组a,并升序初始化;定义长度为8的数组b,并升序初始化;调用merge函数对数组a、b进行归并,输出归并结果。 6、从键盘输入一个0~99999之间的整数。 ①判断它是一个几位数; ②将该数的各位数字按逆序输出。 7、输入一行字符,统计其中有多少个单词并输出,单词之间用空格符分隔开。 8、输入10个整数,判断它们是否为素数。要求:编写一个函数int prime(int m)来判断形参变量m是否为素数,如果是素数则返回1,否则返回0。 9、输入10个学生的成绩,求平均成绩。要求控制成绩输入的正确性,即控制输入的成绩必须为0~100分。 10、编写主函数和一个函数int monthDay(int year, int month)。(1)函数monthDay 计算year年month月的天数,并返回;(2)在主函数中输入一个日期(年、月、日),计算该日是当年的第几天(说明:需要调用monthDay函数)。 11、写两个函数int gcd(int m, int n)和int lcm(int m, int n),分别求两个正整数m 和n的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数的值在主函数中从键盘输入。 12、有0、1、2、3、4五个数字,能组成多少个互不相同且无重复数字的三位数?并计算这些三位数之和。 13、输出2至1000之间的所有同构数,所谓同构数是指它出现在它的平方数的右端。例如,5、6、25的平方分别等于25、36、625,所以5、6和25都是同构数。 14、编写一个函数,将一个数插入到已是升序的数组中,且插入后该数组仍是升序数组。已是升序数组的内容由主函数给出,待插入的数在主函数中输入。 15、编写一个程序,查找某数是否在给定的升序数组中,如果在则输出“Find success!”并输出它是第几个数,否则输出“No find!”。 16、有4个学生,每个学生有5门课程的成绩,编写一个程序计算每一个学生5门课程的平均成绩。 17、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一个学生有几门不及格的课程。 18、有4个学生,每个学生有5门课程的成绩,编写一个程序计算每一门课程4个学生的平均成绩。 19、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一门课程有几个不及格的学生。

C语言上机考试经典试题(3套)

四川省普通高等学校计算机应用知识和能力 第二十八次等级考试 二级(C与C++语言) 笔试试卷 时间: 2008年4月19 日 上午9:00—11:00 第一部分 软件技术基础 (共15分) 一、是非判断题(每小题1分,共10分) ( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B ) 1. 在程序设计中,常用一维数组来表示线性表的顺序存储空间。( 1 ) 2. 数据在计算机内存中的表示是指数据的存储结构。( 2 ) 3. Windows是多用户多任务操作系统。( 3 ) 4. 能影响中断响应次序的技术是中断优先级和中断屏蔽。( 4 ) 5. 链表可以随机访问任意一个结点,而顺序表则不能。( 5 ) 6. 作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。( 6 ) 7. 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。 ( 7 ) 8. 中断控制方式适用于外存同CPU之间进行大量数据交换。( 8 ) 9. 提供没有错误的程序是提高软件的可维护性的基本措施。( 9 ) 10.软件结构是以指令为基础而组成的一种控制层次结构。( 10 ) 二、选择题(每小题1分,共5分) 1. 数据流图是用于描述结构化方法中(11 )工作阶段的工具。 11 (A) 可行性分析(B) 程序编码 (C) 详细设计(D) 需要分析 2. 若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能的出栈序列是(12 )。 12 (A) 1,4,3,2 (B) 3,1,4,2 (C) 2,3,4,1 (D) 3,4,2,1 3. 任何两个并发进程之间(13 )。 13 (A) 可能存在同步或互斥关系(B) 一定存在同步关系 (C) 一定彼此独立无关(D) 一定存在互斥关系 4. 以下的哪个特征不是分时操作系统的主要特征(14 )。 14 (A) 分时性(B) 独占性 (C) 交互性(D) 多路性 5. 需求分析中开发人员主要从用户那里了解(15 )。 15 (A) 软件的维护(B) 软件的结构 (C) 软件做什么(D) 软件的测试

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

c语言上机考试训练题库及答案

上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

大学本科C语言上机考试题

C语言程序设计上机考试题 班级:姓名:学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {inta,b,c,e,d,f,g; printf("请输入三个数\n"); scanf("%d,%d,%d",&a,&b,&c); d=(a>b?a:b); e=(d>c?d:c); printf("Max is %d\n",e); f=(a int main() {float score; char grade; printf("请输入学生成绩:"); scanf("%f",&score); while(score>100||score<0)); {printf("\n输入有误,请输入); scanf("%f",&score); } switch((int)(score/10)) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break;

case 5: case 4: case 3: case 2: case 1: case 0:grade='E'; } printf("成绩是%5.1f,相应的等级是%c\n",score.grade); return 0; } 3、编写一个四则运算程序,输出计算结果。 #include int main() {intc,d,e; floata,b,f; printf("请输入两个数"); scanf("%f,%f",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b; printf("加法结果为%d\n",c); printf("减法结果为%d\n",d); printf("乘法结果为%d\n",e); printf("除法结果为%f\n",f); return 0; } 4.100以内的素数 从键盘输入一个正整数,判断该整数是否为素数。 #include int main() { intn,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

C语言上机试题答案

//vc1 //prog1.cpp //设计一个程序,从键盘输入三个整数,按由小到大的顺序输出。#include"stdio.h" main() { int a[3],i,j,t; for(i=0;i<3;i++) { scanf("%d",&a[i]); } for(i=0;i<9;i++) /*此处的i可以小于任意一个大于6的整数*/ { for(j=0;j<2;j++) { if(a[j]>a[j+1]) t=a[j],a[j]=a[j+1],a[j+1]=t; } } printf("The three data from small to big is:"); for(i=0;i<3;i++) printf("%d ",a[i]); } //vc1 //prog2.cpp //求1+3+5+...+95+97+99的和。 #include"stdio.h" main() { int i,sum=0; for(i=1;i<100;i=i+2) sum+=i; printf("1+3+5+....+99=%d\n",sum); } //vc1 //prog3.cpp //写一个函数,从键盘输入一个整数,如果该整数为素数,则输出“此

整数为素数”,否则输出“整数非素数”。(注:要求从主函数输入整数)#include"stdio.h" main() { int i,j,k,l=2; printf("输入一个大于3的整数:"); scanf("%d",&i); for(j=2;j=0;i--) printf("%d ",a[i]); for(i=0;i<10;i++) sum+=a[i]; printf("The total is:%d\n",sum); } //vc2 //prog2.cpp //输入N个国家的英文名,要求按字母的先后顺序排列,并按照顺序输出。

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

C语言上机测试题

01.编写程序,从键盘输入一个正数,判断它是否既是5又是7的倍数。若是,则输出yes,否则输出no。 02.编写程序,从键盘输入一个五分制成绩,将其转换成百分制成绩输出。 03.编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为'+','-','*','/'(用switch语句实现)。 04.从键盘输入一行字符,统计并输出其中的单词个数,单词间用空格间隔。如输入: I am a student 结果显示:word=4。 05.从键盘输入3个字符串,要求找出最大的字符串并输出。 06.某班有多个同学,请编程实现输出该班高数课程的最高分、高低分和全班平均分。 07.输入两个正整数,求其最大公约数和最小公倍数。 08.从键盘输入10个实型数据,用查找数组中是否存在某一数据,存在则输出"Find",否则输出"NO Find"。 09.从键盘输入若干个字符(以回车结束输入),若为大写字母则转换为小写,并将结果显示输出。 10.将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 11.编写函数prime,判断一个整数是否是素数。在主函数输入一个数,调用prime函数判断这个数是否是素数,然后在主函数中输出是否为素数的信息。 12.编写一个fun函数:long fun(char s[]),将一个数字字符串转换为一个整数(不得调用标准库函数)。例如,若输入字符串"9876",则函数把它转换为整数值9876。

13.编写一个fun函数:void fun(long num, char s[]),将一个长整型数据转换为数字串。 14.编写一个求字符串长度的函数,在主函数中输入字符串,并输出其长度(不得调用标准库函数)。 15.编写程序,输出100~200之间的全部素数。 16.编写程序,按每行5个,输出100以内的全部素数。 17.编写程序,在屏幕上显示九九乘法表。 18.编写一个fun函数:void fun(char s[]),将一个字符串中的小写字母转换为大写(不得调用标准库函)。 19.从键盘输入10个整数,按降序排列后输出(要求用自义函数排序)。 20.输入一个3行3列的9个数据,再输出最大元素及所在的行号、列号。 21.试编写一个C程序:输入10个同学的单科成绩,要求按由大到小的顺序输出。 22.从键盘输入一个字符串(<80个字符),删除其中的数字字符。 23.给出一个百分制成绩,要求输出成绩等级 A,B,C,D,E。90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 24.从键盘输入一个不多于5位的正整数,要求:①分别打印出每一位数字;②按逆序打印出各位数字,例如原数是987,应输出789。 25.比较两个字符串S1和S2,如果S1>S2,输出1;如果S1=S2,输出0;如果S1

C语言程序:求常用圆形体的体积

求常用圆形体的体积 程序描述: 设计一个常用圆形体体积的计算器,采用命令方式输入1、2、3.分别选择计算球体、圆柱体、圆锥体的体积,并输入函数所需的相应参数。 样例输入: 1 2 样例输出: 1-计算球体体积 2-计算圆柱体积 3-计算圆锥体积 其他-退出程序运行 请输入计算命令:1 请输入求的半径:2 球体积为:33.51 出题人: 我们一起的痕迹 程序代码 #include #include #include #define PI 3.141592654

void cal(int sel); int main(void) { int sel; while(1){ printf("1-计算球体体积\n"); printf("2-计算圆柱体积\n"); printf("3-计算圆锥体积\n"); printf("其他-退出程序运行\n"); printf("请输入计算命令:"); scanf("%d",&sel); if(sel<1||sel>3) break; else cal(sel); } return 0; } void cal(int sel) { double vol_ball(void); double vol_cylind(void); double vol_cone(void); switch(sel){ case 1: printf("球体积为:%.2f\n",vol_ball()); break; case 2: printf("圆柱体积为:%.2f\n",vol_cylind()); break; case 3: printf("圆锥体积为:%.2f\n",vol_cone()); break; } } double vol_ball() { double r; printf("请输入球的半径:"); scanf("%lf",&r); return (4.0/3.0*PI*r*r*r); } double vol_cylind() {

相关主题
文本预览
相关文档 最新文档