天津大学C语言程序设计
天津大学C语言程序设计
第一组:
一、编程题
1、编写程序。任意输入 10 个数,输出这 10 个数中正数的平均值并将这 10 个数按相
反的次序并输出。
2 、编写程序。自定义函数重复输出给定的一个字符 n 次,调用该函数输出给定的字符和
输出的次数。
二、程序填空。在程序中的序号处填上正确的内容。
1 、程序用于输出以下图形。
#include
void main( )
{ inti, j;
for (i=1; i<10; i++)
{ for( j=1; j<=12-i; j++)
_____ _____;
for (j=1; _____ _____; j++)
printf(“M”,_____ _____);
_____ _____;
}
}
2 、将 1 到 100 各数的平方根按照每行 5 个数存到磁盘的 file.dat 文件中。
#include
#include
#define Null 0
void main()
{ FILE *p1;
inti=1;
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9
if((p1=_____ _____)==Null)
{ printf( “Can’t open file\n ”); exit(0) ; }
while(i<=100)
{ fprintf(p1, ”.3 ”,sqrt((double)(i)));
if(_____ _____) fprintf(p1, ”\n ”);
_____ _____;
}
_____ _____;
}
3 、用公式计算π的值,直到最后一项的绝对值<10 -6。
#include
#include
void main()
{ int s; float n, t, pi;
t=1; n=1.0; pi=0; s=1;
while(_____ _____)
{ pi=pi+t; n+=2; s=_____ _____; t=_____ _____; }
_____ _____;
printf(“pi=.6f\n”, pi);
}
三、写出程序的执行结果
1 、
#include
int sum(int p[ ],int a);
void main()
{ int data[ ][3]={{3,2,1},{1,2,3},{4,5,6}};
for(ints,i=0; i<3; i++)
7
1
5
1
3
1
1
4
{ printf("%ds=%d\n", sum(data[i],s),s); }
}
int sum(int p[ ], inta)
{inti, k=0;
static int s=0;
for(i=0; i<3; i++) { s+=p[i]; k+=p[i]; }
a=k; return s;
}
2 、
#include
void pp(int x[]);
void main ( )
{ inti ,a[ ]={1,2,3,4,5,6};
pp(a);
for (i=0;i<6;i++)
printf(“=”,a[i]);
}
void pp(int x[ ])
{ int k;
for (k=0;k<6;k++)
x[k]=x[k]*x[k];
return;
}
3 、
#include
void main()
{ int a[6][6],i,j;
for(i=1;i<6;i++)
for(j=1;j<6;j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{ for(j=1;j<6;j++)
printf("-",a[i][j]);
printf("\n");
}
}
第二组:
一、编程题
1、编写程序。定义数组 sco 存放 30 名学生的成绩。将成绩由高到低排序,并输出排序结
果和所有高于平均分数的成绩(结果保留两位小数)。
2、编写程序。先编写一个子函数求 x
n
,再通过主函数调用该子函数,对输入的一个数 y,
求 y
5
并输出。
二、程序填空。在程序中的序号处填上正确的内容。
1 、程序用于求两个数的和与差。
#include
int fun(inta,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
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("M", a[i][j]);
__________; }
}
3 、输出所有的水仙花数。所谓的水仙花数是指一个 3 位数,其各位数字立方和等于该
数本身。例如 153 是一水仙花数,因为 153=13+53+33
#include
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);
}
}
三、写出程序的执行结果
1 、
#include
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(“M”,i);
printf(“\n”);
}
}
2 、
#include
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
void sub (intx,inty,int *z)
{ *z=x-y; }
void main()
{ inta,b,c;
sub(10,6,&c);
sub(8,c,&b);
sub(c,b,&a);
printf(“%d %d %d\n”,a,b,c);
}
第三组:
一、编程题
1、 、编写程序。通过级数求 的值并输出(要求精度为 10 -6 ,即追后一项的绝对值小于 10 -6 )。
2 、编写程序。写一个求 n!的子函数,再利用 main( )调用该函数分别计算并输出 5!和 10!。
二、程序填空。在程序中的序号处填上正确的内容。
1 、程序用于求输入的 10 个实数的最大值以及第一个最大值的下标并输出。
#include
void main()
{ inti, 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)
{ inti; ______ ______;
for(i=1;______ ______; i++)
z=______ ______;
______ ______;
}
3 、程序用于输出以下图形。
A A
BB
CCC DDDD
EEEEE
FFFFFF
#include
void main ( )
{ inti,j;
for(i=1;i<= ______ ______;i++)
{ for(j=1; j<= 9-i ;______ ______)
printf (" ");
for(j=1;j<=i;j++)
printf("%c", ______ ______ );
______ ______;
}
}
三、写出程序的执行结果
1 、
#include
void f(int m[ ], int n)
{ int i;
for(i=0; i
}
void main()
{ inti,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
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("M",s );
}
}
3 、
#include
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);
}