当前位置:文档之家› C语言机试题(整理版)

C语言机试题(整理版)

C语言机试题(整理版)
C语言机试题(整理版)

试卷编号:8603

━━━━━━━━━━━━━━━━

【程序填空】

━━━━━━━━━━━━━━━━

功能:找出数组中最大值和此元素的下标,数组元素的值由键盘输入。

#include

void main()

{

int a[10],*p,*s,i;

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

/***********SPACE***********/

scanf("%d", 【?】);

/***********SPACE***********/

for(p=a,s=a;【?】<10;p++)

/***********SPACE***********/

if(*p【?】*s) s=p;

/***********SPACE***********/ printf("max=%d,index=%d\n",【?】,s-a);

}

=======(答案1)=======

a + i

=========或=========

&a[i]

=======(答案2)=======

p-a

=======(答案3)=======

>

=======(答案4)=======

*s

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

━━━━━━━━━━━━━━━━

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。

#include

void fun()

{

int a[3][3],sum;

int i,j;

/**********FOUND**********/

a=0;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

/**********FOUND**********/

scanf("%d",a[i][j]);

for(i=0;i<3;i++)

/**********FOUND**********/

sum=sum+a[i][j];

/**********FOUND**********/ printf("sum=%f\n",sum);

}

main()

{

fun();

}

答案:

=======(答案1)=======

sum=0;

=======(答案2)=======

scanf("%d",&a[i][j]);

=======(答案3)=======

sum= sum + a[i][i] ;

=========或=========

sum+=a[i][i];

=======(答案4)=======

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

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)

━━━━━━━━━━━━━━━━

功能:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用’.’结束输入。

#include

#include "string.h"

int fun(char *c,int status)

{

/**********Program**********/

/********** End **********/

}

main()

{

int flag=1;

char ch;

printf("请输入一字符串,用点号结束输入!\n") ;

do

{

ch=getchar();

flag=fun(&ch, flag);

putchar(ch);

}while(ch!='.');

printf("\n");

}

答案:----------------------

if (*c== ' ') return 1;

else

{

if(status && *c <= 'z' && *c >= 'a')

*c += 'A' - 'a';

return 0;

}

试卷编号:8604

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

━━━━━━━━━━━━━━━━

功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。

-------------------------------------------------------*/ #include

main()

{

int m,n,k,i=0;

for(m=100;m<=1000;m++)

{

/***********SPACE***********/ 【?】;

n=m;

do

{

/***********SPACE***********/

k=k+【?】;

n=n/10;

}

/***********SPACE***********/ 【?】;

if (k%15==0)

{

printf("%5d",m);i++;

/***********SPACE***********/

if(i%10==0) 【?】;

}

}

}

=======(答案1)=======

k=0

=======(答案2)=======

n%10

=========或=========

n-n/10*10

=========或=========

n-10*(n/10)

=======(答案3)=======

while(n>0)=或=while(0

=while(n!=0)=或=while(0!=n)

=======(答案4)=======

printf("\n")

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

━━━━━━━━━━━━━━━━

功能:将s所指字符串的反序和正序进行连接形成一个新串放在

t所指的数组中。

例如:当s所指的字符串的内容为"ABCD"时,t所指数组中的内容为"DCBAABCD"。------------------------------------------------------*/ #include

#include

#include

/**********FOUND**********/

void fun (char s, char t)

{

int i, d;

/**********FOUND**********/

d = len(s);

/**********FOUND**********/

for (i = 1; i

t[i] = s[d - 1 - i ];

for (i = 0; i

t[ d + i ] = s[i];

/**********FOUND**********/ t[2*d] = '/0';

}

main()

{

char s[100], t[100];

printf("\nPlease enter string S:"); scanf("%s", s);

fun(s, t);

printf("\nThe result is: %s\n", t);

}

=======(答案1)=======

void fun (char s[],char t[])

=========或=========

void fun (char *s,char *t)

=======(答案2)=======

d = strlen(s);

=======(答案3)=======

for (i = 0; i

=========或=========

for (i = 0; d>i; i++)

=========或=========

for (i = 0; i<=d-1; i++)

=========或=========

for (i = 0; d-1>=i; i++)

=======(答案4)=======

t[ 2 * d ] = '\0';

=========或=========

t[ i + d ] = '\0';

=========或=========

t[ i + d ] =NULL;

=========或=========

t[ 2 * d ] = NULL;

=========或=========

t[ 2 * d ] = 0;

=========或=========

t[ i + d ] = 0;

━━━━━━━━━━━━━━━━三、程序设计共1题(共计40分)难度:易

━━━━━━━━━━━━━━━━功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。

例如:若m=9,则应输出:4.121185

------------------------------------------------*/

#include

#include"math.h"

double fun(int m)

{

/**********Program**********/

/********** End **********/

}

main()

{

int n;

printf("Enter n: ");

scanf("%d", &n);

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

}

答案:----------------------

double y=0;

y=sin(m)*10;

return(y);

----------------------

试卷编号:8605

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:以下程序的功能如(图1)。

-------------------------------------------------------*/

#include

/***********SPACE***********/

【?】

main()

{

double x,f;

scanf("%f",&x);

/***********SPACE***********/

if(x<0) 【?】;

/***********SPACE***********/

else if(【?】)

f=2*x+1;

else

f=sin(x)+5;

/***********SPACE***********/

printf("x=%f,y=%f\n", 【?】);

}

=======(答案1)=======

#include "math.h"

=========或=========

#include

=======(答案2)=======

f=fabs( x + 1 )

=======(答案3)=======

x<=5=或5>=x或x<6

或6>x或x>=0&&x<=5或

0<=x&&x<=5或x>=0&&5>=x

或0<=x&&5>=x或!(x>5)

=======(答案4)=======

x,f

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

难度:易

━━━━━━━━━━━━━━━━

功能:读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。

例如:若输入“i am a student to take the examination.”,则应输出“i aM A studenT tO takE thE examination.”。

------------------------------------------------------*/

#include "conio.h"

#include

#include "ctype.h"

#include "string.h"

up1st ( char *p )

{

/**********FOUND**********/

integer k = 0;

for ( ; *p; p++ )

if ( k )

{

/**********FOUND**********/

if ( *p = ' ' )

{

k = 0;

/**********FOUND**********/

*(p -1 ) = toupper( *( p - 1 );

}

}

else if ( *p != ' ' ) k = 1;

*( p-1 ) = toupper( *(p-1) );

}

main( )

{

char chrstr[81];

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

gets ( chrstr );

printf( "\n\nBefore changing:\n %s", chrstr );

up1st( chrstr );

printf( "\nAfter changing:\n %s", chrstr ); }

=======(答案1)=======

int k=0;

=======(答案2)=======

if ( *p == ' ' )

=======(答案3)=======

*(p -1 ) = toupper( *( p - 1 ));

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)

难度:易

━━━━━━━━━━━━━━━━

功能:找出一批正整数中的最大的偶数。------------------------------------------------*/

#include

int fun(int a[],int n)

{

/**********Program**********/

/********** End **********/

}

main()

{

int a[]={1,2,9,24,35,18},k;

k=fun(a,6);

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

}

答案:----------------------

int i,amax=-1;

for(i=0;i

if(a[i]%2==0)

if (a[i]>amax) amax=a[i];

return amax;

试卷编号:8606

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。

-------------------------------------------------------*/ #include

void strcopy(char *str1,char *str2,int m) {

char *p1,*p2;

/***********SPACE***********/ 【?】;

p2=str2;

while(*p1)

/***********SPACE***********/ 【?】;

/***********SPACE***********/ 【?】;

}

main()

{

int m;

char str1[80],str2[80];

gets(str1);

scanf("%d",&m);

/***********SPACE***********/ 【?】;

puts(str1);puts(str2);

}

=======(答案1)=======

p1= str1 + m

=======(答案2)=======

*p2++=*p1++ =========或=========

*(p2++)=*(p1++)

=========或=========

*p2=*p1,p2++,p1++

=========或=========

*p2=*p1++,p2++

=========或=========

*p2++=*p1,p1++

=======(答案3)=======

*p2='\0'

=========或=========

*p2=0

=========或=========

*p2=NULL

=======(答案4)=======

strcopy(str1,str2,m)

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:求如下表达式:

1 1 1

S = 1 + ——+ ———+ ...... + ———————

1+2 1+2+3 1+2+3+......+n

------------------------------------------------------*/

#include

main()

{

int n;

double fun();

printf("Please input a number:");

/**********FOUND**********/

print("%d",n) ;

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

}

/**********FOUND**********/

fun(int n)

{

int i,j,t;

double s;

s=0;

/**********FOUND**********/ while(i=1;i<=n;i++);

{

t=0;

for(j=1;j<=i;j++)

t=t+j;

/**********FOUND**********/

=s+1/t;

}

return s;

}

=======(答案1)=======

scanf("%d",&n);

=======(答案2)=======

double fun(int n)

=======(答案3)=======

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

=========或=========

for(i=1;n>=i;i++)

=========或=========

for(i=1;i

=========或=========

for(i=1;n+1>i;i++)

=======(答案4)=======

s+=1.0/t;

=========或=========

s= s + 1.0 /(float)t;

=========或=========

s= s + 1.0 /t;

=========或=========

s+=1.0/(float)t;

=========或=========

s+=1.0/(double)t;

=========或=========

s= s + 1.0 /(double)t;

━━━━━━━━━━━━━━━━三、程序设计共1题(共计40分)难度:中━━━━━━━━━━━━━━━━

题目:从键盘输入10个学生的成绩,统计及格(60分及其60分以上)的人数。请编fun函数。

-------------------------------------------------------*/

#include "stdio.h"

void wwjt();

int fun (int a[])

{

/**********Program**********/

/********** End **********/

}

void main()

{

int a[10], i, s;

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

scanf("%d", &a[i]);

s=fun(a);

printf("%d", s);

}

答案:int i, count = 0;

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

if(a[i] >= 60)

count ++;

return count ;

试卷编号:8607 ━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。------------------------------------------------------- #include

main()

{

/***********SPACE***********/

【?】;

int i,j,k;

int a[10];

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

a[i]=random(61)+30;

for(i=0;i<9;i++)

{

/***********SPACE***********/

【?】;

for(j=i+1;j<10;j++)

/***********SPACE***********/

if(【?】) k=j;

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

/***********SPACE***********/

for(【?】)

printf("%5d",a[i]);

printf("\n");

}

=======(答案1)=======

int t

=======(答案2)=======

k=i

=======(答案3)=======

a[k]>a[j]

=========或=========

a[j]

=======(答案4)=======

i=0;i<10;i++

=========或=========

i=0;10>i;i++

=========或=========

i=0;i<=9;i+=1

=========或=========

i=0;9>=i;i++

=========或=========

i=0;i<10;i+=1

=========或=========

i=0;10>i;i+=1

=========或=========

i=0;i<=9;i++

=========或=========

i=0;9>=i;i+=1

=========或=========

i=0;i<10;++i

=========或=========

i=0;10>i;++i

=========或=========

i=0;9>=i;++i

=========或=========

i=0;i<=9;++i

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*m

------------------------------------------------------ #include

double fun(int m)

{

/**********FOUND**********/

double y=0

int i;

/**********FOUND**********/

for(i=1; i

{

/**********FOUND**********/

y=+1.0/(2*i*i);

}

return(y);

}

main()

{

int n;

printf("Enter n: ");

scanf("%d", &n);

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

}

=======(答案1)=======

double y=0;

=======(答案2)=======

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

=======(答案3)=======

y+=1.0/(2*i*i);

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:中

━━━━━━━━━━━━━━━━功能:编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。调用该函数找出100~200之间满足条件的所有数。

------------------------------------------------*/

#include

int sub(int m)

{

/**********Program**********/

/********** End **********/

}

main()

{

int i;

for(i=100;i<=200;i++)

if(sub(i)==1)

printf("%4d",i);

}

答案:----------------------

int k,s=0;

do

{s=s+m%10;

m=m/10;

}while(m!=0);

if(s%7==0)k=1;

else k=0;

return(k);

试卷编号:8608

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:难

━━━━━━━━━━━━━━━━功能:用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根,其中X^n代表X的n次方。

#include

# include

main()

{

float x0,x1,x2,fx0,fx1,fx2;

do

{

printf("Enter x1&x2:");

scanf("%f,%f",&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

/***********SPACE***********/

}while (fx1*fx2【?】);

do

{

x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

/***********SPACE***********/

if(fx0*fx1【?】)

{

x2=x0;

fx2=fx0;

}

else

{

x1=x0;

fx1=fx0;

}

}

/***********SPACE***********/

while(【?】>=1e-5);

printf("x=%6.2f\n",x0);

}

=======(答案1)=======

>0

=======(答案2)=======

<0

=======(答案3)=======

fabs(fx0)

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难

度:中

━━━━━━━━━━━━━━━━功能:根据整型形参m,计算某一数据项的值。

y=1/(100*100)+1/(200*200)+1/(300*300)+ …… +1/(m*m)

例如:若m = 2000,则应输出:0.000160。

------------------------------------------------------

#include

#include

/**********FOUND**********/

fun ( int m )

{

double y = 0, d ;

int i ;

/**********FOUND**********/

for( i = 100, i <= m, i += 100 )

{

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

/**********FOUND**********/

y += 1.0 \ d ;

}

return( y ) ;

}

main( )

{

int n = 2000 ;

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

}

=======(答案1)=======

double fun ( int m )

=======(答案2)=======

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

=======(答案3)=======

y += 1.0 / d ;

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:中

━━━━━━━━━━━━━━━━功能:编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。

------------------------------------------------*/

#include

int fun(int array[], int n)

{

/**********Program**********/

/********** End **********/

}

main()

{

int a[10],i;

printf("请输入数组a中的十个数:\n");

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

scanf("%d",&a[i]);

fun(a,10);

printf("由大到小的排序结果是:\n");

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

printf("%4d",a[i]);

printf("\n");

}

答案:----------------------

int k,j,t;

for (k=0;k

for (j=k+1;j

if (array[k]

{

t=array[k];

array[k]=array[j];

array[j]=t;

}

试卷编号:8609

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能:输出两个整数中大的那个数,两个整数由键盘输入。

------------------------------------------------------

#include

#include

void main()

{

int *p1,*p2;

/***********SPACE***********/

p1=【?】malloc(sizeof(int));

p2=(int*)malloc(sizeof(int));

/***********SPACE***********/

scanf("%d%d",【?】,p2);

if(*p2>*p1) *p1=*p2;

free(p2);

/***********SPACE***********/

printf("max=%d\n",【?】);

}

=======(答案1)=======

(int *)

=======(答案2)=======

p1

=======(答案3)=======

*p1

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:易

━━━━━━━━━━━━━━━━

功能:编写函数fun计算下列分段函数的值:

x*x+x x<0且x≠-3

f(x)= x*x+5x 0≤x<10且x≠2及x≠3 x*x+x-1 其它

------------------------------------------------------ #include

double fun(float x)

{

/**********FOUND**********/

double y

/**********FOUND**********/

if (x<0 ||x!=-3.0)

y=x*x+x;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x+5*x;

else

y=x*x+x-1;

/**********FOUND**********/

return x;

}

main()

{

double f;

float x;

printf("input x=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

}

=======(答案1)=======

float y;

=======(答案2)=======

if (x<0 && x!=-3.0)

=======(答案3)=======

return y;

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:难

━━━━━━━━━━━━━━━━

功能:编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。

例如:3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。

------------------------------------------------*/

#include

long int fun(int d,int n)

{

/**********Program**********/

/********** End **********/

}

main()

{

int d,n;

long sum,fun();

printf("d=");

scanf("%d",&d);

printf("n=");

scanf("%d",&n);

sum=fun(d,n);

printf("sum=%ld\n",sum);

}

答案:----------------------

long int s=0,t=0;

int i;

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

{ t=t+d;

s=s+t;

d=d*10;

}

return s;

试卷编号:8610

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

难度:中

━━━━━━━━━━━━━━━━

功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。

------------------------------------------------------- #include

#include

/***********SPACE***********/

int fun(【?】)

{

int m=0, mc=0;

/***********SPACE***********/

while (k >= 2 &&【?】)

{

/***********SPACE***********/

if (k%13 == 0 || 【?】)

{

m=m+k;

mc++;

}

k--;

}

/***********SPACE***********/ 【?】;

}

main ( )

{

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

}

=======(答案1)=======

int k

=======(答案2)=======

mc < 10

=========或=========

10 > mc

=========或=========

mc <= 9

=========或=========

9 >= mc

=======(答案3)=======

k%17 == 0

=========或=========

!(k%17)

=========或=========

k/17*17 == k

=======(答案4)=======

return m

=========或=========

return (m)

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

━━━━━━━━━━━━━━━━

难度:易

功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。

#include

void main()

{

float x,y;

char operate1;

printf("Arithmetic expression\n");

/**********FOUND**********/

scanf("%f",x);

/**********FOUND**********/

while((operate1==getchar())!='=')

{

printf("result=");

scanf("%f",&y);

/**********FOUND**********/

switch(y)

{

case '+':

x+=y;

break;

case '-':

x-=y;

break;

case '*':

x*=y;

break;

case '/':

x/=y;

break;

}

}

printf("%f",x);

}

=======(答案1)=======

scanf("%f",&x);

=======(答案2)=======

while((operate1=getchar())!='=')

=======(答案3)=======

switch(operate1)

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:中

━━━━━━━━━━━━━━━━

功能:求一个n位自然数的各位数字的积。(n 是小于10的自然数)

#include

#include"conio.h"

long fun(long n)

{

/**********Program**********/

/********** End **********/

}

main()

{

long m;

printf("Enter m: ");

scanf("%ld", &m);

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

}

答案:----------------------

long d,s=1;

while (n>0)

{d=n%10;

s*=d;

n/=10;

}

return s;

试卷编号:8611

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━

题目:下列给定程序中,函数fun的功能是计算下式如"图片1"直到如"图片2",并将计算结果作为函数值返回。

例如:若形参e的值为1e-3,函数的返回值为2.985678。

double fun(double e)

{

int i;

double s, x;

s=0;

/***********SPACE***********/

i=【?】;

x=1.0;

while(x>e)

{

/***********SPACE***********/

【?】;

/***********SPACE***********/

x=(2.0*i-1)/(【?】);

s=s+x;

}

return s;

}

main()

{

double e=1e-3;

printf("\nThe result is: %f\n",fun(e));

}

=======(答案1)=======

=======(答案2)=======

i ++

=========或=========

i=i+1

=========或=========

i+=1

=======(答案3)=======

( 2.0 * i) * ( 2.0 * i )

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能:输入两个双精度数,函数返回它们的平方和的平方根值。

例如:输入:22.936 和14.121,输出为:y = 26.934415。

#include

#include

#include

/**********FOUND**********/

double fun (double *a, *b)

{

double c;

/**********FOUND**********/

c = sqr(a*a + b*b);

/**********FOUND**********/

return *c;

}

main ( )

{

double a, b, y;

printf ( "Enter a, b : ");

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

y = fun (&a, &b);

printf ("y = %f \n", y );

}

=======(答案1)=======

double fun (double *a, double *b)

=======(答案2)=======

c = sqrt(*a * *a + *b * *b);

=======(答案3)=======

return c;

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:易

━━━━━━━━━━━━━━━━功能:统计出若干个学生的平均成绩,最高分以及得最高分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。

------------------------------------------------*/

#include

float Max=0;

int J=0;

float fun(float array[],int n)

{

/**********Program**********/

/********** End **********/

}

main( )

{

float a[10],ave;

int i=0;

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

scanf("%f",&a[i]);

ave=fun(a,10);

printf("ave=%f\n",ave);

printf("max=%f\n",Max);

printf("Total:%d\n",J);

}

答案:----------------------

int i;float sum=0,ave;

Max=array[0];

for(i=0;i

{ if(Max

sum=sum+array [i]; }

ave=sum/n;

for(i=0;i

if(array [i]==Max) J++;

return(ave);

试卷编号:8612

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━

功能:产生10个[30,90]区间上的随机整数,然后对其用选择法进行由小到大的排序。

#include

main()

{

/***********SPACE***********/ 【?】;

int i,j,k;

int a[10];

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

a[i]=random(61)+30;

for(i=0;i<9;i++)

{

/***********SPACE***********/

【?】;

for(j=i+1;j<10;j++)

/***********SPACE***********/

if(【?】) k=j;

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

/***********SPACE***********/

for(【?】)

printf("%5d",a[i]);

printf("\n");

}

=======(答案1)=======

int t

=======(答案2)=======

k=i

=======(答案3)=======

a[k]>a[j]

=========或=========

a[j]

=======(答案4)=======

i=0;i<10;i++

=========或=========

i=0;10>i;i++

=========或=========

i=0;i<=9;i+=1

=========或=========

i=0;9>=i;i++

=========或=========

i=0;i<10;i+=1

=========或=========

i=0;10>i;i+=1

=========或=========

i=0;i<=9;i++

=========或=========

i=0;9>=i;i+=1

=========或=========

i=0;i<10;++i

=========或=========

i=0;10>i;++i

=========或=========

i=0;9>=i;++i

=========或=========

i=0;i<=9;++i

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:易

━━━━━━━━━━━━━━━━

功能:编写一个程序模拟袖珍计算器的加、减、乘、除四则运算。

例如:输入3+5=或5-2=或3*4=或4/2=,求表达式结果。

#include

void main()

{

float x,y;

char operate1;

printf("Arithmetic expression\n");

/**********FOUND**********/

scanf("%f",x);

/**********FOUND**********/

while((operate1==getchar())!='=')

{

printf("result=");

scanf("%f",&y);

/**********FOUND**********/

switch(y)

{

case '+':

x+=y;

break;

case '-':

x-=y;

break;

case '*':

x*=y;

break;

case '/':

x/=y;

break;

}

}

printf("%f",x);

}

=======(答案1)=======

scanf("%f",&x);

=======(答案2)=======

while((operate1=getchar())!='=')

=======(答案3)=======

switch(operate1)

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:中

━━━━━━━━━━━━━━━━功能:求一个大于10的n位整数的后n-1位的数,并作为函数值返回。

#include

#include"conio.h"

int fun(int w)

{

/**********Program**********/

/********** End **********/

}

main()

{

int m;

printf("Enter m: ");

scanf("%d", &m);

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

}

答案:----------------------

int n=0;int i=1;

while(w>10)

{n=n+i*(w%10);

w/=10;

i*=10;}

return n;

试卷编号:8613

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)

━━━━━━━━━━━━━━━━功能:输出100到1000之间的各位数字之和能被15整除的所有数,输出时每10个一行。

#include

main()

{

int m,n,k,i=0;

for(m=100;m<=1000;m++)

{

/***********SPACE***********/ 【?】;

n=m;

do

{

/***********SPACE***********/

k=k+【?】;

n=n/10;

}

/***********SPACE***********/ 【?】;

if (k%15==0)

{

printf("%5d",m);i++;

/***********SPACE***********/

if(i%10==0) 【?】;

}

}

}

=======(答案1)=======

k=0

=======(答案2)=======

n%10

=========或=========

n-n/10*10

=========或=========

n-10*(n/10)

=======(答案3)=======

while(n>0)

=========或=========

while(0

=========或=========

while(n!=0)

=========或=========

while(0!=n)

=======(答案4)=======

printf("\n")

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n。

#include

#include "string.h"

main()

{

int n,s;

/**********FOUND**********/

s==n=0;

/**********FOUND**********/

while(s>1000)

{

++n;

s+=n*n;

}

/**********FOUND**********/

printf("n=%d\n",&n-1);

}

=======(答案1)=======

s=n=0;

=======(答案2)=======

while(s<=1000)

=======(答案3)=======

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

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:易

━━━━━━━━━━━━━━━━功能:统计出若干个学生的平均成绩,最高分以及得最高分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。

#include

float Max=0;

int J=0;

float fun(float array[],int n)

{

/**********Program**********/

/********** End **********/

}

main( )

{

float a[10],ave;

int i=0;

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

scanf("%f",&a[i]);

ave=fun(a,10);

printf("ave=%f\n",ave);

printf("max=%f\n",Max);

printf("Total:%d\n",J);

}

答案:----------------------

int i;float sum=0,ave;

Max=array[0];

for(i=0;i

{ if(Max

sum=sum+array [i]; }

ave=sum/n;

for(i=0;i

if(array [i]==Max) J++;

return(ave);

试卷编号:8614

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能:输入两个整数,求他们的按位与。

#include

void main()

{

int x,y,z=0,a,b,k=1;

scanf("%d,%d",&x,&y);

while(x>0&&y>0)

{

a=x%2;

/***********SPACE***********/

x=【?】;

b=y%2;

y=y/2;

/***********SPACE***********/

z=z+【?】;

k=k*2;

}

/***********SPACE***********/ 【?】("z=%d\n",z);

}

=======(答案1)=======

x/2

=======(答案2)=======

a*b*k

=========或=========

a *

b * k

=======(答案3)=======

printf

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:易

━━━━━━━━━━━━━━━━功能:将一个字符串中的大写字母转换成小写字母。

例如:输入aSdFG输出为asdfg。

#include

/**********FOUND**********/

bool fun(char *c)

{

if(*c<='Z'&&*c>='A')*c-='A'-'a';

/**********FOUND**********/

fun= c;

}

main()

{

/**********FOUND**********/

char s[81],p=s;

gets(s);

while(*p)

{

*p=fun(p);

/**********FOUND**********/

puts(*p);

p++;

}

putchar('\n');

}

=======(答案1)=======

char fun(char *c)

=======(答案2)=======

return *c;

=========或=========

return (*c);

=========或=========

return(*c);

=======(答案3)=======

char s[81],*p=s;

=======(答案4)=======

putchar(*p);

=========或=========

printf("%c",*p);

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:易

━━━━━━━━━━━━━━━━功能:用do-while语句求1~100的累计和。

#include

long int fun(int n)

{

/**********Program**********/

/********** End **********/

}

void main ()

{

int i=100;

printf("1~100的累加和为:%ld\n",fun(i));

}

答案:--------------------------------------

int i =1, sum =0;

do

{ sum = sum + i;

i++;

} while ( i <= n );

return sum;

试卷编号:8615

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能:输入一正整数n、打印1-n能够组成的所有自然数集合(包含空集)。

#include

#include

#define MAXSiZE 20

#define LOOP 1

void main(void)

{

int set[MAXSiZE];

int n, i;

int position;

char line[100];

printf("\nAll Possible Subsets Generation by Lexical Order");

printf("\n===================");

printf("\n\nNumber of Elements in the Set --> ");

gets(line);

n = atoi(line);

printf("\n{}");

position = 0;

set[position] = 1;

while (LOOP)

{

/***********SPACE***********/

printf("\n{%d", 【?】);

for (i = 1; i <= position; i++)

printf(",%d", set[i]);

printf("}");

if (set[position] < n)

{

/***********SPACE***********/

set[【?】] = set[position] + 1;

position++;

}

else if (position != 0)

set[--position]++;

else

/***********SPACE***********/ 【?】;

}

}

=======(答案1)=======

set[0]

=======(答案2)=======

position+1

=======(答案3)=======

break

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)难度:中

━━━━━━━━━━━━━━━━功能:输入两个双精度数,函数返回它们的平方和的平方根值。

例如:输入:22.936 和14.121,输出为:y = 26.934415。

#include

#include

#include

/**********FOUND**********/

double fun (double *a, *b)

{

double c;

/**********FOUND**********/

c = sqr(a*a + b*b);

/**********FOUND**********/

return *c;

}

main ( )

{

double a, b, y;

printf ( "Enter a, b : ");

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

y = fun (&a, &b);

printf ("y = %f \n", y );

}

=======(答案1)=======

double fun (double *a, double *b)

=======(答案2)=======

c = sqrt(*a * *a + *b * *b);

=======(答案3)=======

return c;

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:中

━━━━━━━━━━━━━━━━功能:对任意输入的x,用下式计算并输出y 的值。

5 x<10

y= 0 x=10

-5 x>10

#include

int fun(int n)

{

/**********Program**********/

/********** End **********/

}

void main ()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=fun(x);

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

}

答案:int m;

if(n<10)

m=5;

else

if(n==10) m=0;

else m=-5;

return m;

int m;

if(n>=10)

if(n>10)

m=-5;

else m=0;

else m=5;

return m;

试卷编号:8616

━━━━━━━━━━━━━━━━

一、程序填空共1题(共计30分)难度:易

━━━━━━━━━━━━━━━━

功能:用函数调用方式,实现字符串的复制。

#include

void string_copy(char *str_from, char

*str_to)

{

int i=0;

/***********SPACE***********/

for(; (*(【?】)=*(str_from+i))!='\0'; i++) ;

}

main()

{

static char array_str1[20]="i am a teacher.";

char array_str2[20];

/***********SPACE***********/ 【?】(array_str1, array_str2);

/***********SPACE***********/ 【?】("array_str2=%s\n",array_str2);

}

=======(答案1)=======

str_to+i

=========或=========

i+str_to

=======(答案2)=======

string_copy

=======(答案3)=======

printf

━━━━━━━━━━━━━━━━

二、程序改错共1题(共计30分)

━━━━━━━━━━━━━━━━难度:中

功能:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

#include

main()

{

int i,j,k;

/**********FOUND**********/

printf("\n")

/**********FOUND**********/

for(i=1;i<=5;i++)

for(j=1;j<5;j++)

for (k=1;k<5;k++)

{

/**********FOUND**********/

if (i!=k||i!=j||j!=k)

printf("%d,%d,%d\n",i,j,k);

}

}

=======(答案1)=======

printf("\n");

=======(答案2)=======

for(i=1;i<5;i++)

=========或=========

for(i=1;i<=4;i++)

=======(答案3)=======

if (i!=k&&i!=j&&j!=k)

━━━━━━━━━━━━━━━━

三、程序设计共1题(共计40分)难度:易

功能:编写函数fun计算下列分段函数的值:x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3

x^2-x-1 其它

#include

float fun(float x)

{

/**********Program**********/

/********** End **********/

}

main()

{

float x,f;

printf("input x=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

}

答案:----------------------

float y;

if (x<0 && x!=-3.0)

y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0

c语言机试题

(1)/*程序修改题目要求: 下列给定程序中,fun函数的功能是:求a=xx…xx-…-xx-xx-x (此处xx…xx表示n个x,x和n的值在1至9之间)。例如:x=3,a=6,则以上表达式为: a=333333-33333-3333-333-33-3 其值是296298。x和n是fun函数的参数,表达式的值作为函数值 传回main函数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的 结构。每处3分,共9分*/ #include #include long fun(int x,int n) { int j; /*********found*********/ long a=0,t=1; /*********found*********/ for(j=0;j<=n;j++) t=t*10+x; a=t; for(j=1;j main() { int i,count=0,a[11]={0,10,2,8,22,16,4,10,14, 20}; /******found*****/ while(__1__) { for(i=1;i<=10;i++) a[i-1]=a[i-1]/2+a[i]/2; a[10]=a[10]/2+a[0]; for(i=1;i<=10;i++) /******found*****/ if(__2__) a[i]++; for(i=1;i<10;i++) /******found*****/ if(a[i]!=a[i+1]) __3_; if(i==10) break; else { a[0]=0; count++; } } printf("count=%d number=%d\n",count,a[1]); } 答案: 1. 2. a[i]%2==1 3. break (3)/*编程题目要求: 请输入星期几的第一个字母来判断一下是星期 几, 如果第一个字母一样,则继续判断第二个字母。 注意:部分程序段已给出,请勿改动 仅在两个found中填入你编写的若干语句。本题14分*/ #include void main() { /*******found******/ 答案:char ch1,ch2; printf("请输入第一个字母:"); ch1 = getchar(); getchar(); // 吸收换行符 if(ch1 == 'S') { printf("请输入第二个字母:"); ch2 = getchar(); switch(ch2) { case 'a': printf("星期 六\n");break; case 'u': printf("星期 日\n");break; } } else if(ch1 == 'T') { printf("请输入第二个字母:"); ch2 = getchar(); switch(ch2) 1

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.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 2.计算1+2+3…+n的值,n是从键盘输入的自然数。 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中 各元素的值。 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面 值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。 6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,n从键盘输入。 例如若n为1000时,函数值应为:s=153.909064。 7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下 车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。 8.输入1~10之间的一个数字,输出它对应的英文单词。 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? 10.用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 11.用自然语言描述的程序逻辑为: ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 12.用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构 成)。 14.输入10个数,分别统计其中正数、负数、零的个数。 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式:26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a

C语言机试试题库

1.编写函数fun,它的功能是:计算并输出下列级数和 s= 1/(1*2)+1/(2*3)+...+1(n*(n+1)).例如,当n = 10时,函数值为:0.909091 2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几? 3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。 1. 编写函数fun,它的功能是:计算并输出下列级数和:s= 1/(1*2)+1/(2*3)+...+1(n*(n+1))。例如,当n = 10时,函数值为:0.909091 2. 回文数是指正读和反读都一样的自然数。例如,8, 121, 5445这三个数都是回文数。求: (1) [1,1000]之内既是回文数,又是素数的最大整数。 (2) [1,1000]以内既是回文数,又是素数的整数有多少个" 3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格。 1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如:当t =1000时,函数值为:1597。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和. 3. 编程:删除字符串中的数字字符。 1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。 例如若n为1000时,函数值应为:s = 153.909064。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 2.编程求出两个非零正整数的最大公约数. 3.请编写程序:根据以下公式求π(要求满足精度0.0005)的近似值:π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1)) 1.现矩阵(3行3列)的转置(即行列互换)。 例如,输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900

_《C语言》机试题(成-部分答案)

上机试题(一) 1 已知A,B为正整数, A2 试求F(1)+F(3)+F(5)+……+F(49)值。 提示:最好使用递推法求解,因为使用递归调用很可能超出某些语言的递归深度。答案:12586269025 ………………………………………………………………………………………………… 上机试题(四) 1设有6个十进制数字a,b,c,d, e,f ,求满足abcdf×e=fdcba条件的五位数abcdf(a≠0,e≠0,e≠1)的个数。 答案:16 2一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:6=1+2+3,则6就是一个完数。求出200到500之间所有的完数之和。 答案:496 ………………………………………………………………………………………………… 上机试题(五) 1 一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 答案:39 2 编写程序,求在5000以内能被17或者23整除的正整数的个数。 答案:499 ………………………………………………………………………………………………… 上机试题(六) 1 设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的所有四位数abcd的和。

大学本科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语言机试题汇总

第一部分-分支、循环部分 1、某一次考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。 2、从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。例如输入355和113, 输出3.14159. 3、用while循环结构编写程序打印ASCII码为33-127的字符 4、用do-while,for循环结构编写程序打印ASCII码为33-127的字符 5、用for循环结构编写程序打印ASCII码为33-127字符 6、在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构 7、输入一个整数将其倒着输出,如54321 8、计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4 9、从键盘输入一整数n,计算1*1+2*2+...+n*n的值 10、用while 循环计算1+2+……+100的和 11、用do while循环计算1+2+……+100的和 12、用for 循环计算1+2+……+100的和 13、输入一个小于等于10的整数n ,计算n! 14、输入两个正整数m和n,计算m!+n!,m和n的值均小于10。 15、用循环语句,计算1~100之间的所有3的倍数之和 16、用循环语句,计算100-200之间的所有7的倍数之和 17、输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数 18、输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数 19、输入一个整数,统计它有几位数 20、编写程序,输出1到50中间所有能被3整除的正整数 21、把100~200之间不能被3整除的输出 22、编程Y=1+3+5+7+ (111) 23、编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积 24、编程实现九九乘法表 25、求1到100奇数和 26、求1到100偶数和 27、编程求200以内所有质数(素数) 28、从键盘输入一个整数,求该数的绝对值 29、从键盘输入+、-、*、/中的任一个,输出对应的英文单词:plus、minus、mutiply、divide,如输入 的不是这4个字符中的任一个,则输出“sorry,you are wrong”。 30、从键盘输入一个字符,判断其是否为a,r,或f,并输出相应的信息(不区分大小写)。 31、编一程序,对于给定的一个百分制成绩,输出用像'A','B','C','D','E'表示的等级成 绩。设:90分以上为'A',80~89分为'B',70~79分为'C',60~69分'D',60分以下为'E'。(要求用switch语句编程)。 32、输入一个整数,判断它能否被3,5,7整除。 33、用整数1~12依次表示1~12月,由键盘输入一个月份数,输出对应的季节英文名称(12~2 月为冬季;3~5月为春季;6~8月为夏季;9~11月为秋季。要求用if嵌套实现)。 34、编写输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3 时显示b*c之积,a为4时取b/c之商,a为其他数值时不做任何操作的程序。

C语言上机测试题目(完整版)

1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #include void main() { int i,j,k; for(i=1;i<=4;i++) for(j=1;j<=4;j++) for(k=1;k<=4;k++) if(i!=j&&i!=k&&j!=k) printf("%d%d%d ",i,j,k); printf("\n"); } 2.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? #include main() { long i; float bonus, bon1, bon2, bon4, bon6, bon10; int c; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; printf("请输入利润i:"); scanf("%ld",&i); c=i/100000; if(c>10) c=10; switch(c) { case 0: bonus=1*0.1;break; case 1: bonus=bon1+(i-100000)*0.075;break; case 2 :

二级C语言上机题库及答案

第一套题 上机填空: #include double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=__3__/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); 第一处答案:3.0 第二处答案:> 第三处答案:(2*i+1)或者(t+1) 上机改错题: #include /************found************/ void fun ( int n )

{ int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); }

c语言上机考试题

上机考试:6月2日 13:30 不准携带:课本/参考书/参考资料/移动存储设备/草纸 一定要带:学生证/签字笔 1 用起泡法对N=10个整数由大到小排序。10个整数由键盘输入,排序后从屏幕输出结果 2 编写一函数,从实参传来一个字符串,分别统计其中数字、大写字母、小写字母和其它字符的个数,输入输出在main函数中完成 3 用一函数inv将一个字符串的字符逆序排列。输入输出在main函数中完成。要求在inv中用指针处理。4 求200之内的素数的和。从屏幕输出结果 5 从屏幕输入一行字符,将所有的大写字母转换为小写字母,所有的小写字母转换为大写字母,其它字符不变,从屏幕输出结果 6 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次落地后又反弹多高? 7 对N=20个字符由大到小排序。20个字符由键盘输入,排序后从屏幕输出结果 8 有一字符串,把其中的字母a和A去掉,成为一个新字符串。原字符串从键盘输入。从屏幕输出结果 9 求Fibonacci数列的前30项的和。从屏幕输出结果。Fibonacci数列为: F(1)=1,(n=1) F(2)=1,(n=2) F(n)=F(n-2)+F(n-1),(n>=3) 10 写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串 11 从键盘输入一个大于2的整数,判断是否是素数。从屏幕输出结果。要求用函数处理 12 从键盘输入月份,输出这个月有多少天。要求用函数处理 13 求两个数的最大公约数。要求用函数处理 14 求两个数的最小公倍数。要求用函数处理 15 从屏幕输入3个整数,按从小到大顺序输出,要求用指针进行处理 16

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

C语言程序设计上机考试题 班级::学号: 使用C语言编写下列程序(20分×5=100分) 1、输入3个整型数据,求出最大数和最小数。 #include int main() {int a,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() {int c,d,e; float a,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() { int n,i; printf("\n"); scanf("%d",&n); for (i=2;i<=n-1;i++) if(n%i==0) break; if(i

浙江大学C语言上机考试题库

上机考试练习题 20021程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0 int main(void) { int repeat, ri; double x, y; scanf("%d", &repeat); for(ri = 1; ri <= repeat; ri++){ scanf("%lf", &x); /*---------*/ if(x!=0) y=1/x; else y=0; printf("f(%.2f) = %.1f\n", x, y); } } 20022程序填空,不要改变与输入输出有关的语句。 输入华氏温度,输出对应的摄氏温度。计算公式:c = 5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。 输入输出示例:括号内为说明 输入 150 (fahr=150) 输出 celsius = 65 #include int main(void)

int celsius, fahr; /*---------*/ scanf(“%d”,&fahr); celsius=5.0*(fahr-32)/9; printf("celsius = %d\n", celsius); } 20023程序填空,不要改变与输入输出有关的语句。 输入存款金额 money、存期 year 和年利率 rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。 interest = money(1+rate)^year - money 输入输出示例:括号内为说明 输入 1000 3 0.025 (money = 1000, year = 3, rate = 0.025) 输出 interest = 76.89 #include #include int main(void) { int money, year; double interest, rate; /*---------*/ scanf(“%d%d%lf”,&money,&year,&rate); interest=money*pow((1+rate),year)-money; printf("interest = %.2f\n", interest); } 20024程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0= 0时,f(x) = x^0.5,当x小于0时,f(x) = (x+1)^2 + 2x + 1/x。 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 -0.5

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初值为;(2)x0=x1,把x1的值赋各x0; ( (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=。 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列的二维函数

C语言上机题

C 语言2-1 7.10求最大公约数。请使用递归算法计算正整数n 和m 的最大公约数GCD(n,m)。 GCD(n,m)=?? ???<=<=,其他,且)%,(),(0%n ,m n m GCD m n n m GCD m n m m #include int Gcd(int n,int m) { if (n int Fun(int n) { if (n==1 || n==2 ) { return 1; }else if (n%2==0) { return Fun(n-1)-Fun(n-2); }else { return Fun(n-1)+Fun(n-2); } }

7.8偶数分解。编写程序,输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数(只需找出第一对素数)并输出;如果输入的奇数,则输出“××× is odd number!”;输入为0时程序结束。只有1和它本身这两个因数的自然数叫做素数,0和1既不是素数也不是和数。 #include int Isprime(int n) { int i; for (i=2; i

华为C语言机试题面试题汇总

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #include main() { int num[50]={0}; int i,n; printf("请输入整型数组的长度(1~50):"); scanf("%d",&n); printf("请输入整型数组的元素:"); for (i=0;inum[j]) min_num=num[j]; } int sum=min_num+max_num; printf("数组中最大与最小值之和:%d\n",sum); return 0; } 2.求两个长长整型的数据的和并输出,例如输入1233333333333333 。。。 3111111111111111111111111.。。。,则输出。。。。 #include #include #include main() { char *num1,*num2; //两个长长整型数据 char *sum;

// int temp; int len_num1,len_num2; // 两个长长整型数据的长度 int len_max,len_min; num1=(char*)malloc(sizeof(char)); num2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scanf("%s",num1); printf("输入两个长长整型数据:"); scanf("%s",num2); len_num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1>=len_num2)? len_num1:len_num2; len_min=(len_num1<=len_num2)? len_num1:len_num2; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);//切忌初始化 for(;len_num1>0&&len_num2>0;len_num1--,len_num2--) { sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0')); } if(len_num1>0) { sum[len_max--]=num1[len_num1 - 1 ]-'0'; len_num1--; } if(len_num2>0) { sum[len_max--]=num1[len_num2 - 1]-'0'; len_num2--; } for(int j=len_max1;j>=0;j--) //实现进位操作 { // temp=sum[j]-'0'; if(sum[j]>=10) { sum[j-1]+=sum[j]/10; sum[j]%=10; } } char *outsum=(char*)malloc(sizeof(char)*len_max1); j=0; while(sum[j]==0) //跳出头部0元素 j++; for(int m=0;m

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