|
C语言程序设计
请在以下五组题目中任选一组作答,满分100分。
第一组:
一、编程题(每题20分,共40分)
1、 编写程序。从输入的若干个大于零的整数中选出最小值(输入-1时结束输入)。
2、编写程序。写一个子函数fac求n!,然后再编写main()调用fac函数分别输出1~5的阶乘。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、程序用于输出以下图形。
#include "stdio.h"
void main ( )
{ int i,j;
for(i=1;i<= ____①____;i++)
{ for(j=1; j<= 9-i ; ____②____)
printf (" ");
for(j=1;j<=i;j++)
printf("%c", ____③____ );
________④________;
}
}
2、程序由键盘输入10个整型数写入名为fdada.txt的文件
#include "stdio.h"
#include "process.h"
void main()
{ _____①_____ *fp;
int i,a;
if ((fp=fopen("_____②_____","w"))==NULL)
{ printf("文件不能打开!\n"); exit(1); }
else { printf("请输入10个整数\n");
for(i=1;i<=10;i++)
{ scanf("%d",&a); fprintf(____③____,"%d ",a);}
________④________ ;
}
}
3、输入4×5数组中所有元素,求所有元素的平均值并输出。
#include <stdio.h>
void main( )
{ int a[4][5],i,j,sum;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf(“%d”, _____①_____ );
_____②_____;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
sum=____ ③ ____;
printf(“average=%f\n”, ____④____ );
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
int x=10;
void f1()
{ int a=10;
static int b=10;
a+=10; b+=10; x+=10;
printf (“%d %d %d ”, a,b,x) ;
}
void main ( )
{ f1( ); f1( ); }
2、
#include <stdio.h>
void main()
{ int a[ ]={2,3,5,4},i;
for (i=0;i<4;i++)
switch(i%2)
{ case 0: switch(a[i]%2)
{ case 0: a[i]++;break;
case 1:a[i]--;
}break;
case 1:a[i]=0;
}
for (i=0;i<4;i++) printf("%2d ",a[i]);
printf("\n");
}
3、
#include <stdio.h>
void main()
{ int beta=10;
int *pointer,*q;
pointer=β
*pointer=20;
beta=*pointer+30;
q=β
printf("\n *q=%d ",*q);
}
第二组:
一、编程题(每题20分,共40分)
1、 编写程序。从键盘任意输入10个数,将这10个数按照由小到大的次序排序,输出
排序后的结果。(排序方法任意)
2、 编写程序。利用子函数fun求a数组中n个元素的平均值,再通过main()调用fun函数输出s数组中10个元素的平均值。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、程序用于输出以下图形。
#include <stdio.h>
void main()
{ int i, j;
for(i=1; i<10; i++)
{ _____①_____;
while (++j<=_____②_____)
printf(“%4d”, _____③_____);
_____④_____;
}
}
2、 程序用于求 方阵的主对角线元素的乘积,
#include <stdio.h>
void main()
{ int a[5][5],i,j,ss;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
_____ ① ___;
ss=_____②_____;
for(i=0;i<5;i++)
ss= _____③_____;
printf(“%d\n”, _____④_____);
}
3、 输入一个三位正整数,分离出它的个位、十位和百位数并输出。
#include <stdio.h>
void main()
{ int x,hundreds,tens,units;
scanf("%d",_____ ① _____);
hundreds=_____②_____;
tens=_____③_____;
units= _____④_____;
printf("units=%d,tens=%d,hundreds=%d\n",units,tens,hundreds);
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void main ( )
{ int i,j;
for(i=1;i<= 5;i++)
{ for(j=1; j<= 9-i ; j++ )
printf (" ");
for(j=1;j<=i;j++)
printf("%c", ’A’+i-1);
printf("\n");
}
}
2、
#include <stdio.h>
int x=100;
void f1()
{ int a=100;
a+=100; x+=100;
printf (“%4d %4d”, a, x) ;
}
void f2()
{ static int b=100;
b+=100; x+=100;
printf (“%4d %4d”, b , x);
}
void main ( )
{ f1( ); f1( ); f2( ); f2( ); }
3、
#include <stdio.h>
void main()
{ int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d",m,n,*p,*q);
}
第三组:
一、编程题(每题20分,共40分)
1、编写程序。通过级数 求 的值并输出(要求精度为10-6 ,即追后一项的绝对值小于10-6)。
2、编写程序。写一个求n!的子函数,再利用main( )调用该函数分别计算并输出5!和10!。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、程序用于求输入的10个实数的最大值以及第一个最大值的下标并输出。
#include <stdio.h>
void main()
{ int i, max_i=0;
double a[10];
for(i=0; i<10;i++) ______①______;
for(______②______)
if(a[i]>a[max_i]) ______③______;
printf("最大值=%6.2f ,位置是%d \n", ______④______, max_i );
}
2、函数用于求x的y次方。
double fun(double x, int y)
{ int i; ______①______;
for(i=1;______②______; i++)
z=______③______;
______④______;
}
3、程序用于输出以下图形。
#include <stdio.h>
void main ( )
{ int i,j;
for(i=1;i<= ______①______;i++)
{ for(j=1; j<= 9-i ; ______②______)
printf (" ");
for(j=1;j<=i;j++)
printf("%c", ______③______ );
______④______;
}
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void f(int m[ ], int n)
{ int i;
for(i=0; i<n; i++) m[i]=m[i]*10;
}
void main()
{ int i,a[ ]={1,2,3,4,5,6,7,8,9,10};
f(a,5);
for(i=0; i<10; i++) printf(“%d,”, a[i]);
}
2、
#include<stdio.h>
void main()
{ int a[3][3]={{1,2,3},{2,4,5},{3,5,7}},i,j,s;
for(i=0;i<3;i++)
{ s=0;
for(j=0;j<3;j++)
s=s+a[i][j];
printf("%4d",s );
}
}
3、
#include <stdio.h>
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
void main()
{ int a=3,s;
s=f(a);s=s+f(a);
printf("%d\n",s);
}
第四组:
一、编程题(每题20分,共40分)
1、编写程序。定义数组sco存放30名学生的成绩。将成绩由高到低排序,并输出排序结
果和所有高于平均分数的成绩(结果保留两位小数)。
2、编写程序。先编写一个子函数求x ,再通过主函数调用该子函数,对输入的一个数y,
求y 并输出。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、程序用于求两个数的和与差。
#include <stdio.h">
int fun(int a,int b, int *psub)
{ int sum;
sum=a+b;
_____①_____=a-b;
return sum;
}
void main( )
{ int x,y,s1,s2;
scanf(“%d%d”, _____②_____);
s1=fun(x,y, _____③_____);
printf(“sum=%d\n sub=%d\n”, _____④_____);
}
2、对于5×5的方阵,输出其下三角的元素。
1 2 3 4 5 1
2 3 4 5 6 2 3
3 4 5 6 7 3 4 5
4 5 6 7 8 4 5 6 7
5 6 7 8 9 5 6 7 8 9
#include<stdio.h>
void main()
{ int _____①_____,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]= _____②_____;
for(i=0;i<5;i++)
{ for(j=0; _____③_____;j++)
printf("%4d", a[i][j]);
_____④_____; }
}
3、输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33
#include <stdio.h>
void main()
{
int n, i, j, k;
for(n=100; n<= _____①_____; n++)
{
i = n/100; // 取出n的百位数
j = ___ __②_____; // 取出n的十位数
k = __ ___③_____; // 取出n的个位数
if(n==_____④_____)
printf("%d\n",n);
}
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void main( )
{ int i, j;
for (i=1; i<5; i++)
{ for( j=1; j<=12-i; j++)
printf(“ “);
for (j=1; j<=i; j++)
printf(“%4d”,i);
printf(“\n”);
}
}
2、
#include <stdio.h>
int a=5;
void fun(int b)
{ int a=10;
a+=b;
printf("%d ",a);
}
void main()
{ int c=20;
fun(c);a+=c;
printf("%d\n",a);
}
3、
#include <stdio.h>
void sub (int x,int y,int *z)
{ *z=x-y; }
void main()
{ int a,b,c;
sub(10,6,&c);
sub(8,c,&b);
sub(c,b,&a);
printf(“%d %d %d\n”,a,b,c);
}
第五组:
一、编程题(每题20分,共40分)
1、编写程序。输入一行字符(以回车符结束),分别统计其中字母、数字和其他符号的个数。
2、编写程序。要求编写子函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0,再调用该子函数求100以内的全部素数(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
二、程序填空。在程序中的序号处填上正确的内容。(每空4分,共48分)
1、按照公式 e=1+ + + +…+ 求e的近似值,至n=10为止。
#include < stdio.n>
void main ( )
{ float_____①_____;
int n=1, i;
for(_____②_____)
{ n=_____③_____;
e=_____④_____;
}
printf (“ e= %f\n” ,e);
}
2、将文件file1.dat中的内容复制到file2.dat中。
#include <stdio.h>
#define Null 0
void main()
{ FILE_____①_____;
char ch;
if((p1=fopen(“file1.dat”,”r”)= =Null)||(p2=fopen(“file2.dat”,”w”)= =Null ))
{ printf(“Can’t open file\n”); _____②_____; }
while(_____③_____)
{ ch=_____④_____; fputc(ch,p2); }
fclose(p1);
fclose(p2);
}
3、求二维数组a[5][4]中所有元素的平均值。
#include <stdio.h>
____ _①_ ____
void main ( )
{ int a[5][4],i ,j, pa;
for (i=0;i<5;i++)
for (j=0;j<4;j++)
scanf(“%d”, &a[i][j]);
pa= _____②_____;
printf (“average=%d\n”,pa);
}
int average (int s[ ][4] )
{ int i,j,aver=0;
for (i=0;i<5;i++)
for (j=0;j<4;j++) aver=aver+s[i][j];
aver=_____③_____;
_____④_____;
}
三、写出程序的执行结果(每题4分,共12分)
1、
#include <stdio.h>
void main()
{ int i, j, k=4;
for (int i=1;i<=k;i++)
printf("%c",’*’); printf("\n");
for (int i=1;i<=k-2;i++)
{ printf("%c",’*’);
for (j=1;j<= k-2;j++)
printf(" ");
printf("*\n");
}
for (i=1;i<=k;i++)
printf("%c",’*’); printf("\n");
}
2、
#include <stdio.h>
void fun(int s[ ]);
void main()
{ int a[ ]={1,2,3,4,5,6},k;
fun(a);
for(k=0;k<=5;k++) printf(“%d ”,a[k]);
printf(“\n”);
}
void fun(int s[ ])
{ int i=0;
while(i<3) { s[i]=s[i]+5; i++; }
}
3、
#include <stdio.h>
void main()
{ int j, a[ ]={1,2,3,4,10,12,13,15};
for( j=3; j>0; j--)
switch ( j )
{ case 1:
case 2: printf(“%d,”, a[j+4]); break;
case 3: printf(“%d,”, a[j-1]);
}
printf(“\n”);
}
要求:
1. 独立完成,作答时要写明题型、题号;
2. 作答方式:手写作答或电脑录入,使用A4格式白纸;
3. 提交方式:以下两种方式任选其一,
1) 手写作答的同学可以将作业以图片形式打包压缩上传;
2) 提交电子文档的同学可以将作业以word文档格式上传;
4. 上传文件命名为“中心-学号-姓名-科目.rar” 或“中心-学号-姓名-科目.doc”;
5. 文件容量大小:不得超过20MB。
|
|