数学科学学院C语言复习资料
1、下列程序是输入三角形的三边长(设为整数),判断是否能构成三角形?能构成等腰三角形?若不能构成三角形,则输出0;若能构成三角形,则输出1;若能构成等腰三角形,则再输出2;请填写程序中缺少的内容。 main() {int a,b,c;
scanf(“%d,%d,%d”,&a,&b,&c);
if ((a+b<=c)||(a+c<=b))||(b+c<=a)) printf(“0\\n”); else
{ printf(“1\\n”);
if ( ) printf(“2\\n”); } }
2、下列程序的主要功能是输出下列图形,请填写程序中缺少的内容 ** **** ****** ******** main() {int i,j;
for(i=1;i<5;i++)
{for(j=1;j<= ;j++) printf(“%c”,? ?); for(j=1; ;j++) printf(“%c%c”,?*?,?*?); printf(“\\n”); } }
3、下列程序的主要功能是输入一个正整数,统计并输出其所有的因子(不含1,但包含重复因子),填写缺少的内容。 main() {int x,p=2;
do scanf(“%d”,&x); while (x<=0); while (x!=1)
{if ( ) {printf(“%d\\n”,p);
36
数学科学学院C语言复习资料
x=x/p;
} p++; }
}
4、下列程序可求出矩阵a的两条对角线之和,请填空。 main()
{int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)
if (i= =j) sum1=sum1+a[i][j]; for(i=0;i<3;i++)
for( ; ;j--) if (i+j= =2) sum2=sum2+a[i][j]; printf(“sum1=%d,sum2=%d\\n”,sum1,sum2); }
5、以下程序的功能是求数组num中小于0的数据之和,请填空。 main()
{int num[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22, 90,-45,20} int sum=0,i;
for(i=0;i<=19;i++)
if ( ) sum= ; printf(“sum=m”,sum); }
6、下面程序可将十进制整数转换为n进制,请填空。 main()
{int i=0,base,n,j,num[20];
printf(“Enter data that will be converted \\n ”); scanf(“%d”,&n);
printf(“Enter base\\n”); scanf(“%d”,&base);
37
数学科学学院C语言复习资料
do {i++;
num[i]=n base; n=n base; } while (n!=0);
printf(“The data %d has been converted into the %d—base data:\\n ”,n,base); for ( ) printf(“%d”,num[j]); }
7、下列程序将输出computer,请填空。 main() {int i,j=0;
char c[]=”it?s a computer”; for(i=0; ;i++) { ;printf(“%c”,c[j]);} } 8、输入一行字符, 统计其中英文字母, 空格, 数字和其它字符的个数. 其程序如下:
#include
char c;
___________________________________________ printf(\ while((c = getchar()) != '\\n') {
if(c >= 'a' && c <= 'z' || c >= 'A' && c < 'Z') letter++; else if(c == ' ') space++;
else if(c >= '0' && c <= '9') digit++; else other++;
38
数学科学学院C语言复习资料
}
printf(\= %d, Spaces = %d, Digits = %d, Others = %d\\n\letter, space, digit, other); }
9、求出所有“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。其程序如下: #include
int i, j, k, n;
printf(\水仙花数' 是: \ for(n = 100; n < 1000; n++) {
i = n/100;
_____________ k = n;
if(n == i*i*i + j*j*j + k*k*k) printf(\ }
printf(\}
10、求一分数序列前50项之和。该分数序列为
21,,,,...,325385FnFn?1,...
,其中Fn为Fibonacci数。其程序如下: #include
int i, t, n = 50;
double a = 2, b = 1, s =0; for(i = 1; i <= n; i++) {
s = s + a/b; t = a;
39
数学科学学院C语言复习资料
a = a + b; __________ }
printf(\}
11、以下程序中的函数fun是计算 S=1+1/2!+1/3!+…+1/n! 请填空。 main()
{int a;double sum=0.0; double fun(int); scanf(\sum=fun(a);
printf(\}
double fun(int n)
{double s=0.0,fac=1.0;int i; for(i=1;i<=n;i++) {fac=fac ; s=s+fac; }
return s; }
12、下面程序的作用是将以下给出的字符按其格式读入数组ss中,然后输出行、列号之和为3的数组元素,请在____处填入正确内容。 A a f c B d e b c g f D main() {
static char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'}; int x,y,z;
for(x=0; 【1】 ;x++) for(y=0; 【2】 ;y++)
40