C语言考试试题及答案
printf("\nNumbers are: %d\n",n); }
8、在考生文件夹下,给定程序MODI.C的功能是: 学习优良奖的条件如下:所考5门课的总成绩在450分(含)以上;或者每门课都在88分(含)以上。输入某学生5门课的考试成绩,输出是否够学习优良奖的条件。
#include main() {
int score,sum=0; int i,n=0;
for(i=1;i<=5;i++)
{ scanf("%d",&score); sum+=score;
if(score<=88) n++;
}
if(sum>=450 && n==5 ) else
printf("The student is not very good!\n"); }
输出200~300之间的所有素数,要求每行输出8个素数。
#include #include main() {
int m,j,n=0,k;
for(m=200;m<=300;m++) {
k=sqrt(m);
for(j=2;j<=k;j++)
if(m%j==0) continue; if(j>k)
{ if(n%8==0) printf("\n"); /************found************/ printf("%d,",j); n++; } } }
10、在考生文件夹下,给定程序MODI.C的功能是: 求出a所指数组中最小数(规定最小数不在a[0]中),最小数和a[0]中的数对调。
例如数组中原有的数为:7、10、12、0、3、6、9、11、5、8,
输出的结果为:0、10、12、7、3、6、9、11、5、8。
#include #include #define N 20 main( ) {
int a[N]={7,10,12,0,3,6,9,11,5,8}, n=10, i, k,m,min,t; for ( i = 0; i
min= a[0]; m=0;
for ( k = 0; k < n; k++ )
/************found************/ if ( a[k]>min ) {
min = a[k]; m = k; }
/************found************/ t = a[0]; a[m]=a[0]; a[m] = t;
for ( i=0; i
例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The min is: 1,pos is: 0 。
#include #include main()
{ int a[10]={1,4,2,7,3,12,5,34,5,9},i,min,pos; /************found************/ min = 0;
pos = 0;
for ( i=1; i<10; i++) if (min > a[i]) { min = a[i];
/************found************/ pos = a[i]; }
printf("The min is: %d ,pos is: %d\n", min , pos); }
12、在考生文件夹下,给定程序MODI.C的功能是: 求一维数组a中值为偶数的元素之和。 例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9 , 程序的输出应为:The result is: 62。
#include #include sum ( int arr[ ],int n ) {
int i,s; s = 0;
for ( i=0; i
/************found************/ s = s + i; return (s); }
void main() {
int a[10]={10,4,2,7,3,12,5,34,5,9},s; sum( a ,2 );
}
求一维数组a中的最大元素及其下标。
例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is: 7 。
#include #include void main()
{ int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0;
for ( i=1; i<10; i++)
if (max > a[i]) {
max = a; pos =i; }
printf("The max is: %d ,pos is: %d\n", max , pos); }
14、在考生文件夹下,给定程序MODI.C的功能是: 求一维数组a中值为奇数的元素之和。
例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9, 21 ,19
程序的输出应为:The result is: 69。
#include #include int sum( int b[ ],int n ) {
int i,s = 0;
for ( i=0; i
/************found************/ s = s + b[i] return (s); }
main() {
int a[12]={10,4,2,7,3,12,5,34,5,9,21,19},n; sum(a,2);
} 求一维数组a中的最大元素及其下标。
例如,当一维数组a中的元素为:34,4,2,7,3,12,5,8,5,9, 程序的输出应为:The max is: 34,pos is: 0 。
#include #include int max;
maxarr(int arr[ ]) {
int pos,i;
/************found************/ max = 0;
pos = 0;
for ( i=1; i<10; i++) if (max < arr[i]) { max = arr[i]; pos = i; }
/************found************/ return (i); } main() {
int a[10]={34,4,2,7,3,12,5,8,5,9};
printf("The max is: %d ,pos is: %d\n", max , maxarr(a)); }
程序填空题(共15题)
1、在考生文件夹下,给定程序FILL.C的功能是: 求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注意:圆面积公式为:S=3.14159*r*r,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:2.5,输出为s=9.817469。
#include
{
return 3.14159 * r*r/2.0 ;
}
main()
{
float x;
printf ( "Enter x: ");
scanf ( "%f", ___2___ ); printf (" s = %f\n ", fun ( x ) ); }
2、在考生文件夹下,给定程序FILL.C的功能是: 计算并输出下列级数的前n项之和Sn,直到Sn大于q为止,q的值通过形参传入。
Sn = 2/1 + 3/2 + 4/3 + …… + (n+1)/n
例如,若q的值为50.0,则函数值为50.416691。
#include float fun( float q ) {
int n; float s; n = 2; s = 2.0;
/************found************/ while (s___1___q) {
s=s+(float)(n+1)/n;
/************found************/ ___2___; }
return s; }
main() {
printf("%f\n", fun(50)); } 3、在考生文件夹下,给定程序FILL.C的功能是:
统计整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。
#include int c1,c2,c3; void fun(long n) {
c1 = c2 = c3 = 0; while (n) {
/************found************/
switch(___1___) {
case 1: c1++; break; /************found************/ case 2: c2++;___2___; case 3: c3++;
}
n /= 10; } }
main() {
int n=123114350; fun(n);
printf("\nn=%d c1=%d c2=%d c3=%d\n",n,c1,c2,c3); }
4、在考生文件夹下,给定程序FILL.C的功能是:
程序的功能是计算y = 0! + 1! + 2! + 3! + 4! + …… + n! 如输入n的值为5的话,则输出y值为154 #include int fun(int n) {
int i; int s; s=1; for (i=1; i<=n; i++)
/************found************/ s=___1___; return s; }
main() {
int s; int k,n;
scanf("%d",&n); s=0; for (k=0; k<=n; k++)
s=___2___; printf("%d\n", s);
5、在考生文件夹下,给定程序FILL.C的功能是: 计算并输出下列多项式的值。
S = 1 + 1/(1+2) + 1/(1+2+3) + …… + 1/(1+2+3+……+50) 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。 #include
/************found************/ ___1___ fun(int n)
{
int i,j;
double sum=0.0, t; for(i=1;i<=n;i++) {
t=0.0; T=T+J; T+=J; for(j=1;j<=i;j++)
/************found************/ t+= ___2___; sum+= 1.0/t; }
return sum; }
main() {
int n; double s; printf("\nInput n: "); scanf("%d",&n); s=fun(n);
printf("\n\ns=%f\n\n",s); }
6、在考生文件夹下,给定程序FILL.C的功能是:
计算两个整数n和m(m<1000)之间所有数的和。n和m从键盘输入。例如,当n=1,m=100时,sum=5050,当n=100,m=1000时,sum=495550。 #include #include main() {
int n,m; int sum;
___1___; printf("\nInput n,m\n"); scanf("%d,%d",&n,&m); while( n<=m ) {
___2___; n++; }
printf("sum=%d \n",sum); 7、在考生文件夹下,给定程序FILL.C的功能是:
计算N*N矩阵的主对角线元素和副对角线元素之和,并作为函数值返回。(要求:先累加主对角线元素中的值,然后累加副对角线元素中的值。)
例如,若N=3,有下列矩阵: 1 2 3
4 5 6
7 8 9
fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 #include #define N 3
fun(int t[][N], int n) {
int i, sum;
___1___; for(i=0; i
sum+=___2___ ; for(i=0; i
sum+= t[i][n-i-1] ; return sum; }
main() {
int t[][N]={1,2,3,4,5,6,7,8,9},i,j; for(i=0; i
for(j=0; j
printf("%4d",t[i][j]); printf("\n"); }
printf("The result is: %d\n",fun(t,N)); }
8、在考生文件夹下,给定程序FILL.C的功能是:
打印出1至1000中满足其个位数字的立方等于其本身的所有整数。本题的结果为:1 64 125 216 729。 #include main() {
int i,g;
for(i=1;i<1000;i++) {
g=i___1___10; if(___2___) }
printf("\n");
把数组a(大小为M)中前M-1个元素中的最小值放入a的最后一个元素中
#include #define M 11 void main() { int a[M],i;
for(i=0;i
for(i=1; ___(1)___;i++)
if(___(2)___)
a[M-1]=a[i];
printf("Max is %d\n",a[M-1]); }
10、在考生文件夹下,给定程序FILL.C的功能是: 统计一维数组a中素数的个数。
例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13, 则程序的输出应为:prime number(s) is(are): 6。
#include #include #include prinum( int a[]) { int count,i,j,k; count = 0;
for ( i=0; i<10; i++) {
k=a[i]-1;
for ( j=2; j<=k; j++) if (a[i] % j == 0) break;
if(j >= k+1) count++; }
____(1)____;
}
void main()
{ int a[10]={2,3,5,7,8,9,10,11,12,13},n; /************found************/ n = ____(2)____;
printf("prime number(s) is(are): %d\n", n ); 求一维数组a中素数之和。
例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,15,17, 则程序的输出应为:Sum is: 58。
#include #include #include void main()
{ int a[12]={2,3,5,7,8,9,10,11,12,13,15,17},i,j,k,s; ___(1)___; for ( i=0; i<12; i++) {
k=(int)sqrt(a[i]); for ( j=2;j <= k; j++) if (a[i] % j == 0) break; if( j>k )
/************found************/ s=s+__(2)__; }
printf("Sum is: %d\n",s); }
12、在考生文件夹下,给定程序FILL.C的功能是: 从键盘上输入两个正整数x,y,求它们的最大公约数。 例如:如果从键盘上输入24,36, 程序的输出应为:max is : 12。
#include #include #include void main() { int x,y,t,i;
printf("Please enter two numbers:"); scanf("%d,%d",&x,&y); if(x < y)
/************found************/ {t = x; ____(1)____ ; y = t;} t = x % y; while( t ) { x = y; y=t;
t = x % y; }
/************found************/ printf("max is : %d\n",____(2)____);
求一维数组a中非素数之和。
例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,15,17, 则程序的输出应为:Sum is: 54。
#include #include #include void main()
{ int a[12]={2,3,5,7,8,9,10,11,12,13,15,17},i,j,k,s;
____(1)____;
for ( i=0; i<12; i++)
{
k=sqrt(a[i]);
for ( j=2;j <= k; j++) if (a[i] % j == 0) break; if( j<=k )
/************found************/ s=s+____(2)____; }
printf("Sum is: %d\n",s); }
14、在考生文件夹下,给定程序FILL.C的功能是: 查找n在数组a中最后一次出现的位置(数组首元素的位置为零)。
例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0, 当n=5时,程序的输出结果为:5 is No.3 。
当n=10时,程序的输出结果应为:10 not found !。
#include void main( )
{ int a[10]={1,5,2,5,6,8,7,4,3,0}; int i,k,n,f=0; scanf("%d",&n); for(i=0;i<10;i++)
/************found************/ if(___(1)___) { f=1;
/************found************/ ___(2)___; } if(f)
printf("%d is No. %d\n", n,k); else
printf(" %d not found !\n",n); 求两个正整数x,y的最大公约数和最小公倍数。 例如:如果x=24,y=36,程序的输出应为: max is : 12 min is : 72 。
#include #include #include void main()
{ int x,y,t,max,min,i,n1,n2;
printf("Please enter two numbers:"); scanf("%d,%d",&x,&y); if(x > y)
{t = x; x = y; y = t;} n1=x; n2=y; t = n2 % n1;
while( ____(1)____ ) {
n2 = n1 ; n1 = t ;
t = n2 % n1; }
/************found************/ max = ____(2)____ ; min = x * y / max ;
printf("max is : %d\n",max); printf("min is : %d\n",min); }
程序设计题(共15题)
1、在考生文件夹下,要求程序PROG.C的功能是: 将字符串中所有的大写字母转换为小写,其它字符不变(不使用转换函数)。
例如,当字符串为"This Is a c Program" 输出:"this is a c program"
#include void fun(char str1[]) {
/************end************/ }
void main() {
void NONO( );//函数声明 char str1[80];
printf("Please input a string:\n"); gets(str1); fun(str1);
printf("Result is: %s\n",str1); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i;
char s[80];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=2;i++) { fgets(s,80,fr); fun(s);
fprintf(fw,"%s",s);} fclose(fr); fclose(fw); } 2、在考生文件夹下,要求程序PROG.C的功能是: 求[1,1000]之间既不能被7整除也不能被5整除的整数之和,将结果存入变量s中。
#include "stdio.h" #include "math.h" #include "stdlib.h" void main() {
void NONO( int y);//函数声明 int s; int i;
/************end************/ printf("s=%d\n",s); NONO(s); }
void NONO( int y) { FILE *f;
f=fopen("PROGOUT.DAT","w"); fprintf(f,"The Result is :%d\n",y); fclose(f); }
3、在考生文件夹下,要求程序PROG.C的功能是: 统计字符串中元音字母’a’、’e’、’i’、’o’、’u’的个数并输出。
例如,当字符串为"This Is a c Program" 输出:Result is: 4
#include #include int fun(char str[]) {
/************end************/ }
void main() {
void NONO( );//函数声明 char str1[80];
int n;
printf("Enter str1 :\n"); gets(str1); n=fun(str1);
printf("Result is: %d\n",n); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i;
char s[80];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { fgets(s,80,fr);
fprintf(fw,"TheResult is:%d\n",fun(s)); }
fclose(fr); fclose(fw); } 4、在考生文件夹下,要求程序PROG.C的功能是: 统计字符串中英文字母的个数并输出。 例如,当字符串为"This Is a c Program" 输出:Result is:15
#include #include fun(char str1[]) {
/************end************/ }
void main() {
void NONO( );//函数声明 char str1[80]; int n;
printf("Enter str1:\n"); gets(str1); n=fun(str1);
printf("Result is: %d\n",n); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i;
char s[80];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { fgets(s,80,fr);
fprintf(fw,"TheResultis:%d\n",fun(s)); }
fclose(fr); fclose(fw); }
5、在考生文件夹下,给定程序PROG.C的功能是: fclose(fr); 求N*N矩阵的第2行(以下标为行数)元素的和并输出。 fclose(fw); 例如,当矩阵为:
} 1 2 3 4
5 6 7 8 9 10 11 12 13 14 15 16
则第2行元素是:9,10,11,12。第2行元素之和为:42 #include #define N 4
int fun(int a[N][N]) {
/************end************/ }
void main() {
void NONO( ); //函数声明 int
a[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i,j,sum;
printf("array is:\n"); for(i=0;i
for(j=0;j
printf("%5d",a[i][j]); printf("\n"); }
sum=fun(a);
printf("Result is:%d\n",sum); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,j,x[N][N];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { for(j=0;j
fscanf(fr,"%d,%d,%d,%d",&x[j][0],&x[j][1],&x[j][2],&x[j][3]);
fprintf(fw,"Result is: %d\n",fun(x));
求字符串的长度并输出。
例如,当字符串1为"This Is a c Program" 则应输出:Result is: 19
#include int fun(char str[]) {
/************end************/ }
void main()
{
void NONO( ); //函数声明
char str1[80]="This Is a c Program"; int count;
printf("String is: %s\n",str1); count=fun(str1);
printf("Result is: %d\n",count); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,j;
char s1[80];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { fscanf(fr,"%s",s1);
fprintf(fw,"%d\n",fun(s1)); }
fclose(fr); fclose(fw); }
求[m,n]之间所有不能被3整除的整数之和,m,n的值由键盘输入。
例如,如果输入3和12,则输出结果为:45
#include "stdio.h" int fun(int m,int n) {
/***********begin***********/
/***********end***********/ }
void main( ) {
void NONO( ); //函数声明 int m,n;
printf("Enter m, n: \n"); scanf("%d,%d",&m,&n); printf("s=%d\n",fun(m,n)); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,x,y;
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++)
{ fscanf(fr,"%d%d",&x,&y);
fprintf(fw,"%d:%d\n",i,fun(x,y));} fclose(fr); fclose(fw); }
按下面的公式求sum的值。
sum = m + (m+1) + (m+2) + (m+3) + …… + (n-1) + n 例如,如果m和n的值分别为1和100,则计算结果为5050。
#include "stdio.h" int fun( int m, int n) {
/************end************/ }
void main() {
void NONO( );//函数声明 int m, n, t;
printf("请输入m,n:\n"); scanf("%d,%d",&m,&n); if(m>n)
{ t=m; m=n; n=t; }
printf("sum=%d\n",fun(m,n)); NONO( ); }
void NONO( ) { FILE *fr, *fw; int i, m, n;
fr = fopen("PROGIN.DAT", "r"); fw = fopen("PROGOUT.DAT","w") ; for(i=1; i<=4; i++)
{ fscanf(fr,"%d,%d", &m,&n);
fprintf(fw,"sum = %d\n",fun(m,n));} fclose(fr); fclose(fw); } 将字符串逆序存放并输出。
例如,当字符串为"This Is a c Program" 输出:"margorP c a sI sihT"
#include #include void fun(char str1[]) {
/************end************/ }
void main() {
void NONO( );//函数声明 char str1[80];
printf("Enter Str1: \n"); gets(str1); fun(str1);
printf("Result is: %s\n",str1); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i;
char s[80];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { fscanf(fr,"%s",s); fun(s);
fprintf(fw,"%s\n",s);} fclose(fr); fclose(fw); }
求[m,n]之间既不能被7整除也不能被5整除的整数之和,m和n的值由键盘输入。
例如,如果m和n的值分别为10和20,则计算结果为:106。
#include "stdio.h" int fun(int m,int n) {
/***********begin***********/
/************end************/ }
void main() {
void NONO( );//函数声明 int s; int m,n;
printf("Enter m n:\n"); scanf("%d %d",&m,&n); s=fun(m,n);
printf("s=%d\n",s); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,x,y;
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++)
{ fscanf(fr,"%d,%d",&x,&y);
fprintf(fw,"The Result is :%d***\n",fun(x,y));} fclose(fr); fclose(fw); }
按下面的公式求sum的值。
sum = 1 - 2 + 3 - 4 + 5 - 6 + …… + 99 - 100
#include "stdio.h" #include "stdlib.h"
void main() {
void NONO( int x);//函数声明 int sum;
/***********begin***********/
/************end************/ printf("sum=%d\n",sum); NONO(sum); }
void NONO( int x) { FILE *f;
f = fopen("PROGOUT.DAT","w") ; fprintf(f,"sum=%d\n",x); fclose(f);
}
求两个整数m和n的最大公约数,m和n的值由键盘输入。
#include "stdio.h" int fun(int m,int n) {
/************end************/ }
void main() {
void NONO( );//函数声明 int m,n,i,t;
printf("Enter m,n :\n"); scanf("%d,%d",&m,&n); if(m>n) { t=m; m=n; n=t; }
printf("The Highest Common Divisor of %d
and %d is %d\n",m,n,fun(m,n));
NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,m,n;
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++)
{ fscanf(fr,"%d,%d",&m,&n);
fprintf(fw,"Maximal Common Divisor Of %d and %d is %d\n",m,n,fun(m,n));}
fclose(fr); fclose(fw); }
所有的水仙花数保存到一维数组a中。 (所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。
例如:153=1*1*1+5*5*5+3*3*3)
#include void main() {
void NONO( );//函数声明 int a[10]={0},i;
/************end************/ printf("水仙花数为:\n"); for(i=0;i<10;i++)
if(a[i]!=0) printf("%d\n",a[i]); NONO(a ); }
void NONO(int a[]) { FILE *fw; int i;
fw=fopen("PROGOUT.DAT","w"); for(i=0;i<10;i++)
if(a[i]!=0) fprintf(fw,"%d\n",a[i]); fclose(fw); }
求3*3矩阵的最大值并输出。 例如,当矩阵为:
1 2 3 4 9 5 7 8 6 则最大值为:9
#include int fun(int a[3][3]) {
/***********begin***********/
/************end************/ }
void main() {
void NONO( );//函数声明 int a[3][3]={1,2,3,4,9,5,7,8,6}; int i,j,max;
printf("array is:\n"); for(i=0;i<3;i++) {
for(j=0;j<3;j++)
printf("%5d",a[i][j]); printf("\n"); }
max=fun(a);
printf("Result is: %d\n",max); NONO( ); }
void NONO( ) { FILE *fr,*fw; int i,j,k,m,a[3][3];
fr=fopen("PROGIN.DAT","r"); fw=fopen("PROGOUT.DAT","w"); for(i=1;i<=5;i++) { for(j=0;j<3;j++)
for(k=0;k<3;k++)
fprintf(fw,"%4d",a[j][k]);} fprintf(fw,"Max = %d\n",fun(a));} fclose(fr); fclose(fw); }
15、 在考生文件夹下,要求程序PROG.C的功能是:求一维数组a中所有元素的平均值。 部分源程序存在文件PROG.C中,请将计算结果存入变量av中。
#include "stdio.h" #define N 20 void main()
{ int a[N]={1,20,8,14,7,12,2,19,19,15,13,14,20,10,16, 20,7,6,12,12 }; double av; FILE *f;
/***********begin***********/
/************end************/ printf("Aver=%f\n",av);
f=fopen("PROGOUT.DAT","w"); fprintf(f,"Average = %.2f\n",av); fclose(f);
}
【C语言考试试题及答案】相关文章: