xx0010s

试卷编号:38
所属语言:C语言
试卷方案:20190527
试卷总分:2510分
共有题型:1种

一、程序填空 共251题 (共计2510分)
第1题 (10.0分) 题号:1 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:已定义一个含有30个元素的数组s,函数fun1的功能是按
顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序
每五个元素求一个平均值, 并将该值存放在数组w中。

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

include <stdio.h>

long int s[30];
float w[6];
void fun1(long int s[])
{
int k,i;
for(k=2,i=0;i<30;i++)
{
/SPACE/
【?】;
k+=2;
}
}
void fun2(long int s[],float w[])
{
float sum=0.0;
int k,i;
for(k=0,i=0;i<30;i++)
{
sum+=s[i];
/SPACE/
【?】
{
w[k]=sum/5;
/SPACE/
【?】;
k++;
}
}
}
void main()
{
int i;
fun1(s);
/SPACE/
【?】;
for(i=0;i<30;i++)
{
if(i%5==0) printf("\n");
printf("%5d",s[i]);
}
printf("\n");
for(i=0;i<6;i++)
printf("%8.2f",w[i]);
}

答案:

=(答案1)=
s[i]=k
==
s[i]=(i+1)*2

=(答案2)=
if( ( i + 1 )%5 == 0 )
==
if( ( i + 1 )/5*5 i+1)
==
if(i%5
4)
==
if(4==i%5)

=(答案3)=
sum=0
==
sum=0.0

=(答案4)=
fun2(s,w)

第2题 (10.0分) 题号:2 难度:易 第6章
/*-------------------------------------------------------
【程序填空】

功能:下面的程序是求1!+3!+5!+……+n!的和。

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

include <stdio.h>

main()
{
long int f,s;
int i,j,n;
/SPACE/
【?】;
scanf("%d",&n);
/SPACE/
for(i=1;i<=n; 【?】)
{
f=1;
/SPACE/
for(j=1; 【?】;j++)
/SPACE/
【?】;
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}

答案:

=(答案1)=
s=0

=(答案2)=
i+=2
==
i=i+2
==
i++,i++

=(答案3)=
j<=i
==
i>=j
==
j<i+1
==
i+1>j

=(答案4)=
f= f * j
==
f*=j

第3题 (10.0分) 题号:3 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:以下程序是用选择法对10个整数按升序排序。

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

include <stdio.h>

/SPACE/
【?】

main()
{
int i,j,k,t,a[N];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
{
/SPACE/
【?】;
/SPACE/
for(j=i+1; 【?】;j++)
if(a[j]<a[k]) k=j;
/SPACE/
if(【?】)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
printf("output the sorted array:\n");
for(i=0;i<=N-1;i++)
printf("%5d",a[i]);
printf("\n");
}

答案:

=(答案1)=

define N 10

=(答案2)=
k=i

=(答案3)=
j<N
==
N>j
==
j<=N-1
==
N-1>=j

=(答案4)=
k != i

第4题 (10.0分) 题号:4 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出
其和。

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

include <stdio.h>

include <conio.h>

main()
{
int i,n,sum;
sum=0;
/SPACE/
【?】;
/SPACE/
for(i=1; 【?】 ;i++)
/SPACE/
if(【?】)
if(i%2==0)
{
sum=sum+i;
n++;
printf("%6d",i);
/SPACE/
if(【?】)
printf("\n");
}
printf("\ntotal=%d",sum);
}

答案:

=(答案1)=
n=0

=(答案2)=
i<=300
==
i<300
==
300>=i
==
300>i

=(答案3)=
i%7 == 0 || i%17 == 0
==
!(i%7)||!(i%17)
==
!(i%17)||!(i%7)
==
!(i%7&&i%17)

=(答案4)=
n%5 == 0
==
!(n%5)
==
n/5*5==n

第5题 (10.0分) 题号:5 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

include <math.h>

main()
{
int f;
/SPACE/
【?】;
double t,pi;
t=1;pi=t;f=1;n=1.0;
/SPACE/
while(【?】 )
{
n=n+2;
/SPACE/
【?】;
t=f/n;
pi=pi+t;
}
/SPACE/
【?】;
printf("pi=%10.6f\n",pi);
}

答案:

=(答案1)=
float n
==
double n

=(答案2)=
fabs(t)>=1e-6
==
fabs(t)>=0.000001
==
1e-6<=fabs(t)
==
0.000001<=fabs(t)

=(答案3)=
f=-f
==
f=-1f
==
f=f
(-1)
==
f=f-1
==
f=(-1)
f

=(答案4)=
pi= pi * 4
==
pi*=4

第6题 (10.0分) 题号:6 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:求100-999之间的水仙花数
说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。
例如:153=13+53+3^3)。

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

include <stdio.h>

int fun(int n)
{ int i,j,k,m;
m=n;
/SPACE/
【?】;
for(i=1;i<4;i++)
{
/SPACE/
【?】;
m=(m-j)/10;
k=k+jjj;
}
if(kn)
/SPACE/
【?】;
else
return(0);}
main()
{
int i;
for(i=100;i<1000;i++)
/SPACE/
if(【?】
1)
printf("%d is ok!\n" ,i);
}

答案:

=(答案1)=
k=0

=(答案2)=
j=m%10
==
j=m-m/1010
==
j=m-10
(m/10)

=(答案3)=
return(1)
==
return 1

=(答案4)=
fun(i)

第7题 (10.0分) 题号:7 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:产生并输出如下形式的方阵。
1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1

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

include <stdio.h>

main()
{
int a[7][7];
int i,j;
for (i=0;i<7;i++)
for (j=0;j<7;j++)
{
/SPACE/
if (【?】) a[i][j]=1;
/SPACE/
else if (i<j&&i+j<6) 【?】;
else if (i>j&&i+j<6) a[i][j]=3;
/SPACE/
else if (【?】) a[i][j]=4;
else a[i][j]=5;
}
for (i=0;i<7;i++)
{
for (j=0;j<7;j++)
printf("%4d",a[i][j]);
/SPACE/
【?】;
}
}

答案:

=(答案1)=
i == j || i + j == 6

=(答案2)=
a[i][j]=2

=(答案3)=
i<j && i + j>6
==
j>i && i + j>6
==
i<j && i + 6<j
==
j>i && i + 6<j

=(答案4)=
printf("\n")

第8题 (10.0分) 题号:8 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:产生并输出杨辉三角的前七行。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

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

include <stdio.h>

main ( )
{
int a[7][7];
int i,j;
for (i=0;i<7;i++)
{
a[i][0]=1;
/SPACE/
【?】;
}
for (i=2;i<7;i++)
/SPACE/
for (j=1;j<【?】;j++)
/SPACE/
a[i][j]= 【?】;
for (i=0;i<7;i++)
{
/SPACE/
for (j=0; 【?】;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}

答案:

=(答案1)=
a[i][i]=1

=(答案2)=
i

=(答案3)=
a[i-1][j]+a[i-1][j-1]
==
a[i-1][j-1]+a[i-1][j]

=(答案4)=
j<=i
==
i>=j
==
j<i+1
==
i+1>j
==
j-1<i
==
i>j-1

第9题 (10.0分) 题号:9 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

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%150)
{
printf("%5d",m);i++;
/SPACE/
if(i%10
0) 【?】;
}
}
}

答案:

=(答案1)=
k=0

=(答案2)=
n%10
==
n-n/1010
==
n-10
(n/10)

=(答案3)=
while(n>0)
==
while(0<n)
==
while(n!=0)
==
while(0!=n)

=(答案4)=
printf("\n")

第10题 (10.0分) 题号:10 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作
为终止标记。

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

include <stdio.h>

main()
{
int x,i=0,j=0;
float s1=0,s2=0,av1,av2;
scanf("%d",&x);
/SPACE/
while(【?】)
{
if(x%2==0)
{
s1=s1+x;
i++;
}
/SPACE/
【?】
{
s2=s2+x;
j++;
}
/SPACE/
【?】;
}
if(i!=0)
av1=s1/i;
else
av1=0;
if(j!=0)
/SPACE/
【?】 ;
else
av2=0;
printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);
}

答案:

=(答案1)=
x != 0
==
x

=(答案2)=
else
==
else if(x%2==1)
==
else if(x%2!=0)
==
if(x%2)

=(答案3)=
scanf("%d",&x)

=(答案4)=
av2=s2/j

第11题 (10.0分) 题号:11 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

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]<a[k]

=(答案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

第12题 (10.0分) 题号:12 难度:易 第7章
/*-------------------------------------------------------
【程序填空】

功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘
输入。

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

include <stdio.h>

main()
{
char str[80],ch;
int i,k=0;
/SPACE/
gets(【?】);
ch=getchar();
/SPACE/
for(i=0;【?】;i++)
if(str[i]!=ch)
{
/SPACE/
【?】;
k++;
}
/SPACE/
【?】;
puts(str);
}

答案:

=(答案1)=
str

=(答案2)=
str[i]!='\0'
==
str[i]!=NULL
==
str[i]!=0
==
str[i]

=(答案3)=
str[k]=str[i]
==
(str+k)=(str+i)
==
str[k]=*(str+i)
==
*(str+k)=str[i]

=(答案4)=
str[k]='\0'
==
*(str+k)='\0'
==
str[k]=NULL
==
str[k]=0
==
*(str+k)=0
==
*(str+k)=NULL

第13题 (10.0分) 题号:13 难度:易 第6章
/*-------------------------------------------------------
【程序填空】

功能:将一个数组中的元素按逆序存放。

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

include <stdio.h>

define N 7

main ()
{
static int a[N]={12,9,16,5,7,2,1},k,s;
printf("\n the origanal array:\n");
for (k=0;k<N;k++)
printf("%4d",a[k]);
/SPACE/
for (k=0;k<N/2; 【?】 )
{
s=a[k];
/SPACE/
【?】 ;
/SPACE/
【?】 ;
}
printf("\n the changed array:\n");
for (k=0;k<N;k++)
/SPACE/
【?】 ("%4d",a[k]);
}

答案:

=(答案1)=
k++
==
k= k + 1
==
k+=1
==
++k

=(答案2)=
a[k]=a[N-k-1]
==
a[k]=a[N-1-k]
==
a[k]=a[6-k]
==
(a+k)=(a+N-k-1)
==
(a+k)=(a+N-1-k]
==
a[k]=a[-1+N-k]
==
a[k]=a[-1-k+N]
==
a[k]=a[-k-1+N]
==
a[k]=a[-k+N-1]
==
(a+k)=(a+N-k-1)
==
a[6-k]=s

=(答案3)=
a[N-k-1]=s
==
a[N-1-k]=s
==
a[6-k]=s
==
a[N -k -1]=s
==
*(a +N -k -1)=s

=(答案4)=
printf

第14题 (10.0分) 题号:14 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。

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

include <stdio.h>

include "string.h"

JOIN(s1,s2)
char s1[80],s2[40];
{
int i,j;
/SPACE/
【?】;
/SPACE/
for (i=0; 【?】'\0';i++)
s1[i+j]=s2[i];
/SPACE/
s1[i+j]= 【?】 ;
}

main ( )
{
char str1[80],str2[40];
gets(str1);gets(str2);
puts(str1);puts(str2);
/SPACE/
【?】;
puts(str1);
}

答案:

=(答案1)=
j=strlen(s1)
==
for(j=0;s1[j]!='10';j++);
==
for(j=0;s1[j];j++);

=(答案2)=
s2[i]!=
==
*(s2 + i)!=

=(答案3)=
'\0'
==
NULL
==
0

=(答案4)=
JOIN(str1,str2)

第15题 (10.0分) 题号:15 难度:易 第6章
/*-------------------------------------------------------
【程序填空】

功能:求两个非负整数的最大公约数和最小公倍数。

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

include <stdio.h>

main()
{
int m,n,r,p,gcd,lcm;
scanf("%d%d",&m,&n);
if(m<n) {p=m,m=n;n=p;}
p=m*n;
r=m%n;
/SPACE/
while(【?】 )
{
/SPACE/
m=n;n=r; 【?】;
}
/SPACE/
gcd=【?】;
lcm=p/gcd;
/SPACE/
printf("gcd=%d,lcm=%d\n", 【?】);
}

答案:

=(答案1)=
r != 0
==
r

=(答案2)=
r=m%n
==
r=m-m/n*n

=(答案3)=
n

=(答案4)=
gcd,lcm
==
n,lcm

第16题 (10.0分) 题号:16 难度:易 第7章
/*-------------------------------------------------------
【程序填空】

功能:将一个字符串中的前N个字符复制到一个字符数组中去,
不许使用strcpy函数。

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

include <stdio.h>

main ( )
{
char str1[80],str2[80];
int i,n;
/SPACE/
gets(【?】);
scanf("%d",&n);
/SPACE/
for (i=0; 【?】 ;i++)
/SPACE/
【?】;
/SPACE/
【?】;
printf("%s\n",str2);

}

答案:

=(答案1)=
str1

=(答案2)=
i<n
==
n>i
==
i<=n-1
==
n-1>=i

=(答案3)=
str2[i]=str1[i]
==
(str2+i)=(str1+i)
==
(str2+i)=str1[i]
==
str2[i]=
(str1+i)

=(答案4)=
str2[n]='\0'
==
str2[i]='\0'
==
str2[n]=0
==
str2[i]=0
==
*(str2+n)='\0'
==
*(str2+i)='\0'
==
*(str+n)=0
==
*(str2+i)=0

第17题 (10.0分) 题号:17 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:打印以下图形。





*****

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

include <stdio.h>

main ( )
{

char a[5][9]={" "};
int i,j;
for (i=0;i<5;i++)
/SPACE/
for(j=i; 【?】;j++)
a[i][j]='*';
/SPACE/
for(【?】;i<5;i++)
{
for(j=0;j<9;j++)
/SPACE/
printf("%c", 【?】 );
/SPACE/
【?】;
}
}

答案:

=(答案1)=
j< i + 5
==
i + 5 >j
==
j<= i + 4
==
i + 4 >j

=(答案2)=
i=0

=(答案3)=
a[i][j]

=(答案4)=
printf("\n")

第18题 (10.0分) 题号:18 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:求一个二维数组中每行的最大值和每行的和。

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

include <stdio.h>

main()
{
int a[5][5],b[5],c[5],i,j,k,s=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(40)+20;
for(i=0;i<5;i++)
{
/SPACE/
k=a[i][0]; 【?】 ;
for(j=0;j<5;j++)
{
/SPACE/
if(k<a[i][j]) 【?】 ;
s=s+a[i][j];
}
b[i]=k;
/SPACE/
【?】 ;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
/SPACE/
printf("%5d", 【?】 );
printf("%5d%5d",b[i],c[i]);
printf("\n");
}
}

答案:

=(答案1)=
s=0

=(答案2)=
k=a[i][j]

=(答案3)=
c[i]=s

=(答案4)=
a[i][j]

第19题 (10.0分) 题号:19 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素
数)因子的形式。
例如:当N=150时,可分解成1×2×3×5×5;
当N=-150时,可分解为-1×2×3×5×5。
下边程序能实现这种分解过程。当N=150,输出以下分解结
果:N= 1* 2* 3* 5* 5

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

include <stdio.h>

include <stdlib.h>

main()
{
int n,i,r;
scanf("%d",&n);
if (n0)
{
printf ("data error \n");
exit(0);
}
/SPACE/
else if (【?】)
printf("n=1");
else
{
printf("n=-1");
n=-n;
}
/SPACE/
for(【?】;i<=n;i++)
{
/SPACE/
【?】 ;
while(r
0)
{
printf("*%d",i);
/SPACE/
【?】 ;
r=n%i;
}
}
printf("\n");
}

答案:

=(答案1)=
n>0
==
0<n

=(答案2)=
i=2

=(答案3)=
r=n%i

=(答案4)=
n=n/i
==
n/=i

第20题 (10.0分) 题号:20 难度:易 第5章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

/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 <math.h>

=(答案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

第21题 (10.0分) 题号:21 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:统计一个字符串中的字母、数字、空格和其它字符的个数。

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

include <stdio.h>

void fun(char s[],int b[])
{
int i;
for (i=0;s[i]!='\0';i++)
if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')
b[0]++;
/SPACE/
else if (【?】)
b[1]++;
/SPACE/
else if (【?】 )
b[2]++;
else
b[3]++;
}

main ()
{
char s1[80];int a[4]={0};
int k;
/SPACE/
【?】;
gets(s1);
/SPACE/
【?】;
puts(s1);
for(k=0;k<4;k++)
printf("%4d",a[k]);
}

答案:

=(答案1)=
'0'<=s[i] && s[i]<='9'
==
s[i]>='0' && s[i]<='9'
==
'0'<=s[i] && '9'>=s[i]
==
s[i]>='0' && '9'>=s[i]
==
48<=s[i] && s[i]<=57
==
s[i]>=48 && s[i]<=57
==
48<=s[i] && 57>=s[i]
==
s[i]>=48 && 57>=s[i]
==
!( s[i] < 48 || s[i] > 57 )
==
!( s[i] < '0' || s[i] > '9' )

=(答案2)=
s[i] == ' '
==
s[i] == 32

=(答案3)=
void fun(char s[],int b[])

=(答案4)=
fun(s1,a)

第22题 (10.0分) 题号:22 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:将十进制数转换成十六进制数。

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

include <stdio.h>

include "string.h"

c10_16(char p[],int b)
{
int j,i=0;
/SPACE/
while (【?】)
{
j=b%16;
if(j>=0&&j<=9)
/SPACE/
【?】;
else p[i]=j+55;
b=b/16;
i++;
}
/SPACE/
【?】;
}

main ()
{
int a,i;
char s[20];
printf("input a integer:\n");
scanf("%d",&a);
c10_16(s,a);
/SPACE/
for(【?】;i>=0;i--)
printf("%c",s[i]);
printf("\n");
}

答案:

=(答案1)=
b>0
==
0<b
==
b!=0
==
0!=b
==
b

=(答案2)=
p[i]= j + '0'
==
p[i]= j + 48
==
*(p+i)= j + '0'
==
*(p+i)= j + 48

=(答案3)=
p[i]='\0'
==
p[i]=0
==
p[i]=NULL
==
*(p+i)='\0'
==
*(p+i)=0
==
*(p+i)=NULL

=(答案4)=
i=strlen(s)-1
==
i=-1+strlen(s)

第23题 (10.0分) 题号:23 难度:易 第7章
/*-------------------------------------------------------
【程序填空】

功能:输入字符串,再输入一个字符,将字符串中与输入字符相
同的字符删除。

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

include <stdio.h>

void fun(char a[],char c)
{
int i,j;
/SPACE/
for(i=j=0; 【?】;i++)
if(a[i]!=c) a[j++]=a[i];
/SPACE/
【?】;
}
main()
{
char a[20],cc;
gets(a);
/SPACE/
【?】;
/SPACE/
【?】;
puts(a);
}

答案:

=(答案1)=
a[i] != '\0'
==
a[i]
==
a[i]!=NULL

=(答案2)=
a[j]='\0'
==
a[j]=NULL
==
a[j]=0

=(答案3)=
cc=getchar()
==
scanf("%c",&cc)

=(答案4)=
fun(a,cc)

第24题 (10.0分) 题号:24 难度:易 第7章
/*-------------------------------------------------------
【程序填空】

功能:用冒泡法对数组a 进行由小到大的排序。

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

include <stdio.h>

void fun(int a[],int n)
{
int i,j,t;
/SPACE/
for (j=0; 【?】;j++)
/SPACE/
for (i=0; 【?】;i++)
/SPACE/
if(【?】)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main()
{
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
/SPACE/
【?】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}

答案:

=(答案1)=
j<=n-1
==
n-1>=j
==
j<=-1+n
==
-1+n>=j
==
j<n
==
n>j
==
j<n-1

=(答案2)=
i<n-j-1
==
n-j-1>i
==
i<n-1-j
==
n-1-j>i
==
i<=n-j-2
==
i<=n-2-j

=(答案3)=
a[i]>a[ i + 1 ]
==
a[ i + 1 ]<a[i]

=(答案4)=
fun(a,10)

第25题 (10.0分) 题号:25 难度:易 第6章
/*-------------------------------------------------------
【程序填空】

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

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

include <conio.h>

include <stdio.h>

/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)

第26题 (10.0分) 题号:26 难度:易 第8章
/*-------------------------------------------------------
【程序填空】

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

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

include <conio.h>

include <stdio.h>

/SPACE/
double f(【?】)
{
/SPACE/
【?】;
/SPACE/
if (【?】)
y=2.0xx+3.0x+4.0;
else
y=-2.0
xx+3.0x-4.0;
/SPACE/
【?】;
}

main ( )
{
printf("%f\n", f(f(-1.0)+f(5.0)));
}

答案:

=(答案1)=
float x
==
double x

=(答案2)=
double y

=(答案3)=
x<=2
==
2>=x

=(答案4)=
return y
==
return (y)

第27题 (10.0分) 题号:27 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

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

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

include <conio.h>

include <stdio.h>

/SPACE/
double fun(【?】, int n)
{
/SPACE/
【?】;
double xa=0, s;
for (j=0; j<n; j++ )
xa += x[j]/n;
/SPACE/
【?】;
for (j=0; j<n; j++ )
s += (x[j]-xa)*(x[j]-xa)/n;
/SPACE/
【?】;
}
main ( )
{
double x[100] = {193.199, 195.673, 195.757, 196.051, 196.092,196.596,196.579, 196.763};
printf("%f\n", fun (x, 8));
}

答案:

=(答案1)=
float x[]
==
float *x
==
double x[]
==
double *x

=(答案2)=
int j

=(答案3)=
s = 0
==
s = 0.0

=(答案4)=
return s
==
return(s)

第28题 (10.0分) 题号:28 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

功能:计算并输出high以内最大的10个素数之和,high由主函数传
给fun函数,若high的值为100,则函数的值为732。

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

include <conio.h>

include <stdio.h>

include <math.h>

int fun( int high )
{
int sum = 0, n=0, j, yes;
/SPACE/
while ((high >= 2) && (【?】))
{
yes = 1;
for (j=2; j<=high/2; j++ )
/SPACE/
if (【?】)
{
yes=0;
break;
}
if (yes)
{
sum +=high;
n++;
}
high--;
}
/SPACE/
【?】;
}

main ( )
{
printf("%d\n", fun (100));
}

答案:

=(答案1)=
n<10
==
10>n
==
n<=9
==
9>=n

=(答案2)=
high%j == 0
==
!(high%j)

=(答案3)=
return sum
==
return (sum)

第29题 (10.0分) 题号:29 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

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

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

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

include <stdio.h>

double fun(double e)
{
int i, k;
double s, t, x;
s=0; k=1; i=2;
/SPACE/
x=【?】/4;
/SPACE/
while(x 【?】e)
{
s=s+kx;
k=k
(-1);
t=2i;
/SPACE/
x=【?】/(t
t);
i++;
}
return s;
}
main()
{
double e=1e-3;
printf("\nThe result is: %f\n",fun(e));
}

答案:

=(答案1)=
3.0
==
(double)3

=(答案2)=

=(答案3)=
(t + 1)

第30题 (10.0分) 题号:30 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。
如“图片1”。

例如:当形参n的值为10时,函数返回值为9.612558。

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

include <stdio.h>

double fun(int n)
{
int i;
double s, t;
/SPACE/
s=【?】;
/SPACE/
for(i=1; i<=【?】; i++)
{
t=2.0i;
/SPACE/
s=s+(2.0
i-1)(2.0i+1)/【?】;
}
return s;
}
main()
{
int n=-1;
while(n<0)
{
printf("Please input(n>0): ");
scanf("%d",&n);
}
printf("\nThe result is: %f\n",fun(n));
}

答案:

=(答案1)=
0

=(答案2)=
n

=(答案3)=
(t*t)

第31题 (10.0分) 题号:31 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放
到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所
指数组中的数据为:9、1、3、5、7,返回值为5。

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

include <stdio.h>

define N 9

int fun(int a[], int n)
{
int i,j;
j = 0;
for (i=0; i<n; i++)
/SPACE/
if (a[i]%2==【?】)
{
/SPACE/
a[j] = a[i]; 【?】;
}
/SPACE/
return 【?】;
}
main()
{
int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
printf("\nThe original data :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
n = fun(b, N);
printf("\nThe number of odd : %d \n", n);
printf("\nThe odd number :\n");
for (i=0; i<n; i++) printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
1

=(答案2)=
j++
==
++j

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

第32题 (10.0分) 题号:32 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原
来从高位到低位相反的顺序组成一个新数,作为函数值返回。

例如:输入一个整数27638496,函数返回值为64862。

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

include <stdio.h>

unsigned long fun(unsigned long n)
{
unsigned long x=0; int t;
while(n)
{
t=n%10;
/SPACE/
if(t%2==【?】)
/SPACE/
x=【?】+t;
/SPACE/
n=【?】;
}
return x;
}
main()
{
unsigned long n=-1;
while(n>99999999||n<0)
{
printf("Please input(0<n<100000000): ");
scanf("%ld",&n);
}
printf("\nThe result is: %ld\n",fun(n));
}

答案:

=(答案1)=
0

=(答案2)=
10 * x

=(答案3)=
n/10

第33题 (10.0分) 题号:33 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,
接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放
在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。

例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,
数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。

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

include <stdio.h>

define N 9

void fun(int a[], int n)
{
int i,j, max, min, px, pn, t;
for (i=0; i<n-1; i+=2)
{
/SPACE/
max = min = 【?】;
px = pn = i;
for (j=i+1; j<n; j++)
{
/SPACE/
if (max<【?】)
{
max = a[j]; px = j;
}
/SPACE/
if (min>【?】)
{
min = a[j]; pn = j;
}
}
if (pn != i)
{
t = a[i]; a[i] = min; a[pn] = t;
if (px == i) px =pn;
}
if (px != i+1)
{
t = a[i+1]; a[i+1] = max; a[px] = t;
}
}
}
main()
{
int b[N]={9,1,4,2,3,6,5,8,7}, i;
printf("\nThe original data :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
a[i]

=(答案2)=
a[j]

=(答案3)=
a[j]

第34题 (10.0分) 题号:34 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是进行数字字符转换。若形参ch中是数字字
符'0'~'9',则将'0'转换成'9','1'转换成'8','2'转换成'7',……,'9'转换
成'0';若是其它字符则保持不变;并将转换后的结果作为函数值返回。

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

include <stdio.h>

/SPACE/
char fun(【?】)
{
/SPACE/
if (ch>='0' && 【?】)
/SPACE/
return '9'- (ch-【?】);
return ch ;
}
main()
{
char c1, c2;
printf("\nThe result :\n");
c1='2'; c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='8'; c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='a'; c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
}

答案:

=(答案1)=
char ch

=(答案2)=
ch<='9'

=(答案3)=
'0'

第35题 (10.0分) 题号:35 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非
数字字符之后,并保持数字字符串和非数字字符串原有的次序。

例如:所指的字符串为"def35adh3kjsdf7",执行后结果为"defadhajsdf3537"。

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

include <stdio.h>

void fun(char *s)
{
int i, j=0, k=0; char t1[80], t2[80];
for(i=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
{

                    t2[j]=s[i]; 

/SPACE/
【?】;
}
else t1[k++]=s[i];
t2[j]=0; t1[k]=0;
for(i=0; i<k; i++)
/SPACE/
【?】;
/SPACE/
for(i=0; i<【?】; i++)
s[k+i]=t2[i];
}
main()
{
char s[80]="ba3a54j7sd567sdffs";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

答案:

=(答案1)=
j=j+1
==
j ++
==
j+=1
==
++j

=(答案2)=
s[i]=t1[i]

=(答案3)=
j

第36题 (10.0分) 题号:36 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将形参a所指数组中的前半部分元素中的值与
后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的
元素不动。

例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则调换后
为:6、7、8、9、5、1、2、3、4。

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

include <stdio.h>

define N 9

void fun(int a[], int n)
{
int i, t, p;
/SPACE/
p = (n%2==0)?n/2:n/2+【?】;
for (i=0; i<n/2; i++)
{
t=a[i];
/SPACE/
a[i] = a[【?】];
/SPACE/
【?】 = t;
}
}
main()
{
int b[N]={1,2,3,4,5,6,7,8,9}, i;
printf("\nThe original data :\n");
for (i=0; i<N; i++)
printf("%4d ", b[i]);
printf("\n");
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i<N; i++)
printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
1

=(答案2)=
p + i

=(答案3)=
a[ p + i ]
==
*( a + p + i )

第37题 (10.0分) 题号:37 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:逆置数组元素中的值。

例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则逆置后依
次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。

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

include <stdio.h>

void fun(int a[], int n)
{
int i,t;
/SPACE/
for (i=0; i<【?】; i++)
{
t=a[i];
/SPACE/
a[i] = a[【?】];
/SPACE/
【?】 = t;
}
}
main()
{
int b[9]={1,2,3,4,5,6,7,8,9}, i;
printf("\nThe original data :\n");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("\n");
fun(b, 9);
printf("\nThe data after invert :\n");
for (i=0; i<9; i++)
printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
n/2

=(答案2)=
n -1 -i

=(答案3)=
a[n -i -1 ]

第38题 (10.0分) 题号:38 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将N×N矩阵主对角线元素的值与反向对角线
对应位置上元素的值进行交换。

例如:若N=3,有下列矩阵:1  2  3
4  5  6
7  8  9

  交换后为:3  2  1
            4  5  6
            9  8  7

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

include <stdio.h>

define N 4

/SPACE/
void fun(int 【?】 , int n)
{
int i,s;
/SPACE/
for(i=0;【?】; i++)
{
s=t[i][i];
t[i][i]=t[i][n-i-1];
/SPACE/
t[i][n-1-i]=【?】;
}
}
main()
{
int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%d ",t[i][j]);
printf("\n");
}
fun(t,N);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%d ",t[i][j]);
printf("\n");
}
}

答案:

=(答案1)=
t[][N]

=(答案2)=
i<N

=(答案3)=
s

第39题 (10.0分) 题号:39 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各
位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回。

例如:当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、
140、203、212、221、230、302、311、320、401、410、500,共有15个。
当x值为27时,各位数字之和为27的整数是:999,只有1个。

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

include <stdio.h>

int fun(int x)
{
int n, s1, s2, s3, t;
n=0;
t=100;
/SPACE/
while(t<=【?】)
{
s1=t%10;
/SPACE/
s2=(【?】)%10;
s3=t/100;
/SPACE/
if(s1+s2+s3==【?】)
{
printf("%d ",t);
n++;
}
t++;
}
return n;
}
main()
{
int x=-1;
while(x<0)
{
printf("Please input(x>0): ");
scanf("%d",&x);
}
printf("\nThe result is: %d\n",fun(x));
}

答案:

=(答案1)=
999

=(答案2)=
t/10

=(答案3)=
x

第40题 (10.0分) 题号:41 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

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

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

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

include <stdio.h>

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)=
0

=(答案2)=
i ++
==
i=i+1
==
i+=1

=(答案3)=
( 2.0 * i) * ( 2.0 * i )

第41题 (10.0分) 题号:42 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插
入一个*号。

例如:形参s所指的字符串为"def35adh3kjsdf7",执行后结果为"def35adh3kjsdf7"

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

include <stdio.h>

void fun(char s)
{
int i, j, n;
for(i=0; s[i]!='\0'; i++)
/SPACE/
if(s[i]>='0' 【?】 s[i]<='9')
{
n=0;
/SPACE/
while(s[i+1+n]!= 【?】)
n++;
for(j=i+n+1; j>i; j--)
/SPACE/
s[j+1]= 【?】;
s[j+1]='
';
i=i+1;
}
}
main()
{
char s[80]="def35adh3kjsdf7";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

答案:

=(答案1)=
&&

=(答案2)=
0
==
'\0'

=(答案3)=
s[j]
==
*(s+j)
==
*(j+s)

第42题 (10.0分) 题号:43 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:下面的程序是求1!+3!+5!+……+n!的和。

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

include <stdio.h>

main(){
long int f,s;
int i,j,n;
/SPACE/
【?】;
scanf("%d",&n);
/SPACE/
for(i=1;i<=n; 【?】) {
f=1;
/SPACE/
for(j=1; 【?】;j++)
/SPACE/
【?】;
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}

答案:

=(答案1)=
s=0

=(答案2)=
i+=2
==
i=i+2
==
i++,i++

=(答案3)=
j<=i
==
i>=j j<i+1
==
i+1>j

=(答案4)=
f = f * j
==
f*=j

第43题 (10.0分) 题号:44 难度:易 第1章
/*-------------------------------------------------------
【程序填空】

功能:用冒泡法对数组a 进行由小到大的排序。

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

include <stdio.h>

void fun(int a[],int n){
int i,j,t;
/SPACE/
for (j=0; 【?】;j++)
/SPACE/
for (i=0; 【?】;i++)
/SPACE/
if(【?】) {
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main(){
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
/SPACE/
【?】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}

答案:

=(答案1)=
j<=n-1
==
n-1>=j
==
j<=-1+n
==
-1+n>=j
==
j<n
==
n>j
==
j<n-1

=(答案2)=
i<n-j-1
==
n-j-1>i
==
i<n-1-j
==
n-1-j>i
==
i<=n-j-2
==
i<=n-2-j

=(答案3)=
a[i]>a[ i + 1 ]
==
a[ i + 1 ]<a[i]

=(答案4)=
fun(a,10)

第44题 (10.0分) 题号:45 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:求100以内个位数为6且能够被3整除的所有数

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

include<stdio.h>

void main()
{
int i,j;
/SPACE/
for(i=0;【?】;i++)
{
j=i*10+6;
/SPACE/
if(【?】)
continue;
printf("%d\t",j);
}
}

答案:

=(答案1)=
i<10
==
i<=9

=(答案2)=
j%3 !=0
==
(j/3) * 3 != j

第45题 (10.0分) 题号:46 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:计算100-1000之间有多少个数,其各位数字之和是5

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

include<stdio.h>

void main()
{
int i,s,k,count=0;
for(i=100;i<1000;i++)
{
s=0;
k=i;
/SPACE/
while(【?】)
{
s=s+k%10;
/SPACE/
k=【?】;
}
if(s!=5)
/SPACE/
【?】;
else
{
count++;
printf("%d %d\n",count,i);
}
}
printf("个数为:%d\n",count);
}

答案:

=(答案1)=
k>0
==
k
==
k>=1
==
k!=0

=(答案2)=
k/10

=(答案3)=
continue

第46题 (10.0分) 题号:47 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:用冒泡法对数组a 进行由小到大的排序。

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

include <stdio.h>

void fun(int a[],int n){
int i,j,t;
/SPACE/
for (j=0; 【?】;j++)
/SPACE/
for (i=0; 【?】;i++)
/SPACE/
if(【?】) {
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
main(){
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
/SPACE/
【?】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}

答案:

=(答案1)=
j<=n-1
==
n-1>=j
==
j<=-1+n
==
-1+n>=j
==
j<n
==
n>j
==
j<n-1

=(答案2)=
i<n-j-1
==
n-j-1>i
==
i<n-1-j
==
n-1-j>i
==
i<=n-j-2
==
i<=n-2-j

=(答案3)=
a[i]>a[ i + 1 ]
==
a[ i + 1 ]<a[i]

=(答案4)=
fun(a,10)

第47题 (10.0分) 题号:48 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:输入整数a和b,交换a和b后输出。

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

include <stdio.h>

void main()
{
int a,b,temp;
printf("输入整数a,b:");
scanf("%d%d",&a,&b);
temp=a;
/SPACE/
【?】;
/SPACE/
【?】;
printf("a=%d b=%d\n",a,b);
}

答案:

=(答案1)=
a=b

=(答案2)=
b=temp

第48题 (10.0分) 题号:49 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:以下程序段输出2行3列数组a各元素的值。要求先输出第二行元素,
再输出第一行,且输出每行元素后要求换行。请填空。

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

include <stdio.h>

void main()
{
int m,n,i,j;
int a[2][3];

    for (m=1;m>=0;m-- ) {
            for(n=0;n<3;n++)
                    scanf("%d",&a[m][n]);
    }

/SPACE/
for (【?】) {
for(j=0;j<3;j++)
printf("%d",a[i][j]);
/SPACE/
【?】;
}
}

答案:

=(答案1)=
i=1;i>=0;i--

=(答案2)=
printf("\n")

第49题 (10.0分) 题号:50 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:下面程序的功能是用do-while语句求1至1000之间满足
"用3除余2;且用5除余3"的数,且一行只打印五个数。

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

include <stdio.h>

main()
{
int i=1,j=0;
do{
/SPACE/
if(【?】)
{
printf("%4d",i);
j=j+1;
/SPACE/
if(【?】) printf("\n");
}
i=i+1;
}while(i<1000);
}

答案:

=(答案1)=
i%32&&i%53

=(答案2)=
j%5==0

第50题 (10.0分) 题号:51 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列程序的功能是输入一个正整数,判断是否能被3或7整除,若不能被3或7整除,
就输出"YES",否则就输出"NO"。请填空。

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

include <stdio.h>

void main( )

{ int k;
/SPACE/
scanf ("%d",【?】);
/SPACE/
if (【?】)
printf("YES\n");
else
printf ("NO\n");
}

答案:

=(答案1)=
&k

=(答案2)=
!((k%30)||(k%70))
==
(k%3!=0)&&(k%7!=0))
==
!(k%30||k%70)

第51题 (10.0分) 题号:52 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:某等差数列的第一项a=2,公差d=3。
下面程序的功能是在前n(1≤n≤10)项和中,
输出所有项的和能被4整除者。请填空。

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

include <stdio.h>

    void main()
    {
            int a,d,sum,n,i;

/SPACE/
a=2; d=3;i=1;sum=【?】;
scanf("%d",&n);
do{
sum+=a;
i++;
/SPACE/
【?】;
/SPACE/
if(【?】)
printf("%d\n",sum);
}while(i<=n);
}

答案:

=(答案1)=
0

=(答案2)=
a+=d
==
a+=3
==
a= a + d
==
a= a + 3

=(答案3)=
sum%4==0

第52题 (10.0分) 题号:53 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:输入一个5位数,判断它是不是回文数。
例如12321是回文数,即个位与万位相同,
十位与千位相同。请填空。

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

include <stdio.h>

void fun(long x)
{ long ge,shi,qian,wan;
wan=x/10000;
/SPACE/
qian=【?】;
/SPACE/
shi=【?】;
ge=x%10;
/SPACE/
if (【?】)
printf("this number is a huiwen\n");
else printf("this number is not a huiwen\n");
}

void main()
{
fun(12321);
}

答案:

=(答案1)=
x%10000/1000
==
x/1000%10

=(答案2)=
x%100/10
==
x/10%10

=(答案3)=
gewan && shiqian
==
wange&&qianshi
==
wange && shiqian
==
gewan && qianshi

第53题 (10.0分) 题号:54 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:从键盘输入一个大写字母赋给c1,要求改用小写字母输出。

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

include <stdio.h>

void main()
{
char c1,c2;
/SPACE/
c1= 【?】;
/SPACE/
c2= 【?】;
printf("%c,%c",c1,c2);
}

答案:

=(答案1)=
getchar()

=(答案2)=
c1+32
==
c1+'a'-'A'

第54题 (10.0分) 题号:55 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下面rotate函数的功能是:将n行n列的矩阵A转置为A’,
例如:当n=5时,如图片所示。

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

include <stdio.h>

define N 4

/SPACE/
void rotate(int 【?】 )
{
int i,j,t;
for(i=0;i<N;i++)
/SPACE/
for(j=0; 【?】 ; j++)
{
t=a[i][j];
/SPACE/
【?】
a[j][i]=t;
}
}

void main( )
{
int i,j;
int a[N][N];
for(i=0;i<N;i++)
for(j=0; j<N ; j++)
scanf("%d",&a[i][j]);
rotate(a );
for(i=0;i<N;i++)
{
for(j=0; j<N ; j++)
printf("%d ",a[i][j]);
printf("\n");
}

}

答案:

=(答案1)=
a[][N]
==
a[N][N]

=(答案2)=
j<=i

=(答案3)=
a[i][j]=a[j][i] ;

第55题 (10.0分) 题号:56 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:以下mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回.

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

include <stdio.h>

int mystrlen( char *str)
{
int i;
/SPACE/
for(i=0;【?】!='\0';i++) ;
/SPACE/
return(【?】);
}

void main( )
{
char *str="abcdefg";
printf("%d\n",mystrlen(str));

}

答案:

=(答案1)=
*(str+i)
==
str[i]

=(答案2)=
i

第56题 (10.0分) 题号:57 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

功能:下面程序输出3×3矩阵的周边元素之和。

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

include <stdio.h>

void main( )
{ int a[ ][3]={9,7,5,3,1,2,4,6,8};
int i, j, s1=0, s2=0;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
s1+=a[i][j];
for(i=1; i<2; i++)
for(j=1; j<2; j++)
/SPACE/
【?】 ;
/SPACE/
printf( "%d\n ",【?】) ;
}

答案:

=(答案1)=
s2+=a[i][j]
==
s2= s2 + a[i][j]

=(答案2)=
s1-s2

第57题 (10.0分) 题号:58 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:以下程序求100~200之内的素数。

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

include <stdio.h>

include "math.h"

void sushu(int m)
{
int k;
int i;
/SPACE/
【?】
for(i=2;i<=k;i++)
/SPACE/
【?】
if(i>=k+1) printf("%4d",m);
}
void main()
{
int m;
for ( m=101;m<=200;m++)
/SPACE/
【?】;
}

答案:

=(答案1)=
k=(int)sqrt(m);
==
k=sqrt(m);

=(答案2)=
if(m%i==0) break ;

=(答案3)=
sushu(m)

第58题 (10.0分) 题号:59 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下面程序通过函数average计算数组中各元素的平均值。

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

include <stdio.h>

float average(int *pa, int n)
{
int i;
float avg=0.0;
/SPACE/
for(i=0;i<n;i++) avg=avg+ 【?】 ;
/SPACE/
avg=【?】 ;
/SPACE/
return 【?】 ;
}

void main()
{
int i, a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf("mean=%f\n",mean);
}

答案:

=(答案1)=
*(pa+i)
==
pa[i]

=(答案2)=
avg/n

=(答案3)=
avg

第59题 (10.0分) 题号:60 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

说明:下面程序的功能是将一个字符串str的内容颠倒过来,请填写
程序所缺内容。

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

include "string.h"

include "stdio.h"

void main( )
{
int i, j, k ;
char str[ ]= "1234567";
for(i=0, j=strlen(str);i<j;i++,j--)

    {    
    /***********SPACE***********/
         【?】;  
    /***********SPACE***********/
         【?】;  
          str[j-1]=k;
    }
   /***********SPACE***********/
          puts(【?】);

}

答案:

=(答案1)=
k=str[i]

=(答案2)=
str[i]=str[j-1]

=(答案3)=
str

第60题 (10.0分) 题号:61 难度:易 第1章
/*-------------------------------------------------------
【程序填空】

说明:fun函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填写
程序所缺内容。

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

include "stdio.h"

double fun(int n)
{
double s=0.0,fac=1.0;
int i;
for(i=1; i<=n; i++)

{
/SPACE/
fac=fac * 【?】;

/***********SPACE***********/
  s=【?】;

}
return s;
}

void main()
{
double fun(int n);
double s;
int t;
scanf("%d",&t);
s=fun(t);
printf("s=%f\n",s);
}

答案:

=(答案1)=
1.0/i
==
1/i
==
i

=(答案2)=
s + fac
==
s + 1/fac

第61题 (10.0分) 题号:62 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

说明:下面程序的功能是打印出所有的“水仙花数”,请填写
程序所缺内容。
注:水仙花数是指一个三位数的各位数字的立方和是这个数本身。

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

include"stdio.h"

void f( int n)
{
int i,j,k;
i=n/100;
/SPACE/
j=【?】;
k=n%10;
/SPACE/
if(【?】)
{
printf("%5d\n",n);
}
}

void main()
{
void f(int n);
int i;
for(i=100;i<1000;i++)
f(i);
}

答案:

=(答案1)=
n/10%10
==
n%100/10

=(答案2)=
i100 + j10 + k == iii + jjj + kkk
==
n == iii + jjj + kkk

第62题 (10.0分) 题号:63 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

说明:sum函数的功能为计算1+2+3+……+n的累加和,请填写程序
所缺内容。

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

include"stdio.h"

int sum(int n)

{
/SPACE/
int i,【?】;
for(i=1;i<=n;i++)
/SPACE/
【?】;
return(sum) ;
}

void main()
{
int sum(int n);
int a,b;
scanf("%d",&a);
b=sum(a);
printf("%d\n",b);
}

答案:

=(答案1)=
sum=0

=(答案2)=
sum= sum + i
==
sum+=i

第63题 (10.0分) 题号:64 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

说明:下面程序的功能是输出数组s中最大值元素的下标,请填写
程序所缺内容。

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

include"stdio.h"

void main( )
{
int k, p;
int s[ ]={1,9,7,2,10,3};
/SPACE/
for(p=0,k=p; p<6; 【?】)
/SPACE/
if(s[p]>s[k]) 【?】;
printf("%d\n" ,k);
}

答案:

=(答案1)=
p++

=(答案2)=
k=p

第64题 (10.0分) 题号:65 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列程序的功能为:输出100以内能被4整除且个位数为8的所有整数;
请填写适当的符号或语句,使程序实现其功能。

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

include <stdio.h>

main()
{ int i,j;

/SPACE/
for(i=0;【?】; i++)
{ j=i*10+8;
/SPACE/
if ( 【?】)
/SPACE/
【?】;
printf("%d",j);
}
}

答案:

=(答案1)=
i<10
==
i<=9

=(答案2)=
j%4!=0

=(答案3)=
continue

第65题 (10.0分) 题号:66 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查
找结果。请填写适当的符号或语句,使程序实现其功能。
如输入5输出为:找到位置为6
如输入10输出为:10未找到

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

include "stdio.h"

define N 10

main()
{
int a[ ]={0,1,2,3,4,5,6,7,8,9},k;
int low=0,high=N-1,mid,find=0;
printf("请输入欲查找的值:\n");
scanf("%d",&k);
while (low<=high)
{
/SPACE/
mid=【?】;
if(a[mid]==k)
{
printf("找到位置为:%d\n",mid+1);find=1;
}
if(a[mid]<k)
/SPACE/
【?】;
else
/SPACE/
【?】;
}
if(!find) printf("%d未找到\n",k);
}

答案:

=(答案1)=
( low + high )/2

=(答案2)=
low= mid + 1

=(答案3)=
high=mid-1

第66题 (10.0分) 题号:67 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:以下程序输入n和n个大于1的正整数,输出其中素数。
如输入:5 19 93 11 37 15 则输出:19 11 37
例示说明:先输入n为5,再输入5个正整数,输出5个整数中的素数

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

include <stdio.h>

void main()
{
int n, a, i, j, ct;
scanf( "%d", &n );
/SPACE/
for ( i=0;【?】; i++ )
{
/SPACE/
【?】;
scanf( "%d", &a );
for( j=2; j<a; j++ )
/SPACE/
if (【?】)
ct++;
if ( ct==0 )
printf( "%d ", a );
}
printf( "\n" );
}

答案:

=(答案1)=
i<n

=(答案2)=
ct=0

=(答案3)=
a%j==0

第67题 (10.0分) 题号:68 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。

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

include <stdio.h>

/SPACE/
【?】
main()
{ int x;
double y,z;
/SPACE/
scanf("【?】",&x,&y);
z=2xsqrt(y);
/SPACE/
printf("z=【?】",z);
}

答案:

=(答案1)=

include<math.h>

==

include "math.h"

=(答案2)=
%d%lf

=(答案3)=
%.2lf

第68题 (10.0分) 题号:69 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

题目: 以下程序按每行5个数的格式输出1至n范围内能被7或17 整除的整数,并求出其和。
如输入:50 则输出:
7 14 17 21 28
34 35 42 49
Sum=247

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

include <stdio.h>

void main()
{
int i, n, ct=0, sum=0;
scanf( "%d", &n );
for ( i=1; i<=n; i++ )
/SPACE/
if (【?】)
{
printf( "%d\t", i );
/SPACE/
【?】;
ct++;
/SPACE/
if (【?】)
printf( "\n" );
}
printf( "\nSum=%d\n", sum );
}

答案:

=(答案1)=
i%70 || i%170

=(答案2)=
sum+=i
==
sum=sum+i

=(答案3)=
ct%5==0

第69题 (10.0分) 题号:70 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

题目:下列程序从键盘输入一字符串(可以含有空格),再从键盘输入一个该字符串中的字
符,删除该字符后重新输出字符串。

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

include<stdio.h>

include<string.h>

void main()
{char line[80] ;
char ch;
int i,j;
int len;
printf("输入一行字符 \n");
/SPACE/
【?】;
printf("输入要删除字符 ");
ch=getchar();
i=0;
/SPACE/
while(【?】)
{
while( line[i]!=ch&&line[i]!='\0')
i++;
len=strlen(line);
for(j=i;j<len-1;j++)
/SPACE/
【?】;
line[j]='\0';
}
puts(line);
}

答案:

=(答案1)=
gets(line)

=(答案2)=
line[i]!='\0'
==
i<strlen(line)

=(答案3)=
line[j]=line[ j + 1 ]

第70题 (10.0分) 题号:71 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元
素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线
元素中的值。

例如:若N=3,有下列矩阵: 1  2  3
4  5  6
7  8  9
首先累加1、5、9,然后累加3、5、7,函数返回值为30。

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

include <stdio.h>

define N 4

fun(int t[][N], int n)
{
int i, sum;
/SPACE/
【?】;
for(i=0; i<n; i++)
/SPACE/
sum+=【?】;
for(i=0; i<n; i++)
/SPACE/
sum+= t[i][n-i-【?】] ;
return sum;
}
main()
{
int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%4d",t[i][j]);
printf("\n");
}
printf("The result is: %d",fun(t,N));
}

答案:

=(答案1)=
sum=0

=(答案2)=
t[i][i]

=(答案3)=
1

第71题 (10.0分) 题号:72 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:找出100到x(x≤999)之间各位上的数字之和
为15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。

例如:当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、
258、267、276、285、294、339、348、357、366、375、384、393、429、438、
447、456、465、474、483、492。共有26个。

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

include <stdio.h>

int fun(int x)
{
int n, s1, s2, s3, t;
/SPACE/
n=【?】;
t=100;
/SPACE/
while(t<=【?】)
{
s1=t%10;
s2=(t/10)%10;
s3=t/100;
if(s1+s2+s3==15)
{
printf("%d ",t);
n++;
}
/SPACE/
【?】;
}
return n;
}
main()
{
int x=-1;
while(x>999||x<0)
{
printf("Please input(0<x<=999): ");
scanf("%d",&x);
}
printf("\nThe result is: %d\n",fun(x));
}

答案:

=(答案1)=
0

=(答案2)=
x

=(答案3)=
t++
==
t=t+1
==
t+=1

第72题 (10.0分) 题号:73 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放
到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除奇数后a所指数组中的
数据为:4,2,6,8,返回值为4。

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

include <stdio.h>

define N 9

int fun(int a[], int n)
{
int i,j;
j = 0;
for (i=0; i<n; i++)
/SPACE/
if (【?】== 0)
{
/SPACE/
【?】 = a[i]; j++;
}
/SPACE/
return 【?】;
}
main()
{
int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
printf("\nThe original data :\n");
for (i=0; i<N; i++)
printf("%4d ", b[i]);
printf("\n");
n = fun(b, N);
printf("\nThe number of even :%d\n", n);
printf("\nThe even :\n");
for (i=0; i<n; i++)
printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
a[i]%2

=(答案2)=
a[j]

=(答案3)=
j

第73题 (10.0分) 题号:74 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大
写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其他字
符则保持不变;并转换后的结果作为函数值返回。

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

include <stdio.h>

include <ctype.h>

char fun(char ch)
{
/SPACE/
if ((ch>='a')【?】(ch<='z'))
return ch -'a' + 'A';
if ( isupper(ch) )
/SPACE/
return ch +【?】 ;
/SPACE/
return 【?】;
}
main()
{
char c1, c2;
printf("\nThe result :\n");
c1='w';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='W';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='8';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
}

答案:

=(答案1)=
&&

=(答案2)=
'a' - 'A'
==
32

=(答案3)=
ch

第74题 (10.0分) 题号:75 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:计算如“图片1”的前n项之和。
若x=2.5,n=15时,函数值为1.917914。

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

include <stdio.h>

include <math.h>

double fun(double x, int n)
{
double f, t;
int i;
/SPACE/
f = 【?】;
t = -1;
for (i=1; i<n; i++)
{
/SPACE/
t = (【?】)x/i;
/SPACE/
f += 【?】;
}
return f;
}
main()
{
double x, y;
x=2.5;
y = fun(x, 15);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f\n", x, y);
}

答案:

=(答案1)=
1.0

=(答案2)=
-1

=(答案3)=
t

第75题 (10.0分) 题号:76 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:计算如“图片1”直到“图片2” 。
若x=2.5,函数值为1.917915。

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

include <stdio.h>

include <math.h>

double fun(double x)
{
double f, t; int n;
f = 1.0 + x;
/SPACE/
t=【?】;
n = 1;
do
{
n++;
/SPACE/
t=(-1.0)x/【?】;
f += t;
}
/SPACE/
while(【?】 >=1e-6);
return f;
}
main()
{
double x, y;
x=2.5;
y = fun(x);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f\n", x, y);
}

答案:

=(答案1)=
x

=(答案2)=
n

=(答案3)=
fabs(t)

第76题 (10.0分) 题号:77 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:计算如“图片1”的前n项。
若x=2.5,函数值为12.182340。

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

include <stdio.h>

double fun(double x, int n)
{
double f, t;
int i;
f = 1.0;
/SPACE/
t=【?】;
/SPACE/
for(i=【?】;i<n;i++)
{
/SPACE/
t*=x/【?】;
f += t;
}
return f;
}
main()
{
double x, y;
x=2.5;
y = fun(x, 12);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f\n", x, y);
}

答案:

=(答案1)=
1.0
==
1

=(答案2)=
1

=(答案3)=
i

第77题 (10.0分) 题号:78 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,
素数的个数作为函数值返回。

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

include <stdio.h>

int fun(int n)
{
int i,j, count=0;
printf("\nThe prime number between 3 to %d\n", n);
for (i=3; i<=n; i++)
{
/SPACE/
for (【?】; j<i; j++)
/SPACE/
if (【?】 == 0)
break;
/SPACE/
if (【?】>=i)
{
count++;
printf( count%15? "%5d":"\n%5d",i);
}
}
return count;
}
main()
{
int n=20, r;
r = fun(n);
printf("\nThe number of prime is : %d\n", r);
}

答案:

=(答案1)=
j=2

=(答案2)=
i%j

=(答案3)=
j

第78题 (10.0分) 题号:79 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并用
外部(全局)变量c1、c2、c3返回主函数。

例如:当n=123114350时,结果应该为:c1=3 c2=1 c3=2。

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

include <stdio.h>

int c1, c2, c3;

void fun(long n)
{
c1=c2=c3=0;
while(n)
{
/SPACE/
switch(【?】)
{
case 1:
/SPACE/
c1++;【?】;
case 2:
/SPACE/
c2++;【?】;
case 3:
c3++;
}
n/=10;
}
}

main()
{
long n=123114350L;
fun(n);
printf("\nThe result: \n");
printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3);
}

答案:

=(答案1)=
n % 10

=(答案2)=
break

=(答案3)=
break

第79题 (10.0分) 题号:80 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将
所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找
下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数
等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,…

函数fun的作用是:用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。

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

include <stdio.h>

int fun(int n)
{
int a[10000], i,j, count=0;
for (i=2; i<=n; i++)
a[i] = i;
i = 2;
while (i<n)
{
/SPACE/
for (j=a[i]*2; j<=n; 【?】)
a[j] = 0;
i++;
/SPACE/
while (【?】==0)
i++;
}
printf("\nThe prime number between 2 to %d\n", n);
for (i=2; i<=n; i++)
/SPACE/
if (a[i]!=【?】)
{
count++;
printf( count%15?"%5d":"\n%5d",a[i]);
}
return count;
}
main()
{
int n = 20, r;
r = fun(n);
printf("\nThe number of prime is : %d\n", r);
}

答案:

=(答案1)=
j+=a[i]
==
j= j + a[i]

=(答案2)=
a[i]

=(答案3)=
0

第80题 (10.0分) 题号:81 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:甲乙丙丁4人同时开始放鞭炮,甲每隔t1 s放一次,乙每隔t2 s放一次,
丙每隔t3 s放一次,丁每隔t4 s放一次,每人各放n次。
函数fun的功能是根据形参炸响,只算一次响声,第一次响声是在第0s。

例如:若t1=7,t2=5,t3=6,t4=4,n=10,则总共可听到28次鞭炮声。

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

include <stdio.h>

/SPACE/

define OK(i, t, n) ((【?】==0) && (i/t<n))

int fun(int t1, int t2, int t3, int t4, int n)
{
int count, t , maxt=t1;
if (maxt < t2) maxt = t2;
if (maxt < t3) maxt = t3;
if (maxt < t4) maxt = t4;
count=1; /* 给count赋初值 /
/SPACE/
for(t=1; t< maxt
(n-1); 【?】)
{
if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) )
count++;
}
/SPACE/
return 【?】;
}
main()
{
int t1=7, t2=5, t3=6, t4=4, n=10, r;
r = fun(t1, t2, t3, t4, n);
printf("The sound : %d\n", r);
}

答案:

=(答案1)=
i % t

=(答案2)=
t++

=(答案3)=
count

第81题 (10.0分) 题号:82 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:给定程序中,函数fun的功能是:在3×4的矩阵中找出在行上最大、在列上最小
的那个元素,若没有符合条件的元素则输出相应信息。

例如:有下列矩阵:1  2  13  4
7  8  10  6
3  5  9   7

程序执行结果为:find:a[2][2]=9

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

include <stdio.h>

define M 3

define N 4

void fun(int (*a)[N])
{
int i=0,j,find=0,rmax,c,k;
while( (i<M) && (!find))
{
rmax=a[i][0];
c=0;
for(j=1; j<N; j++)
if(rmax<a[i][j])
{
rmax=a[i][j];
/SPACE/
c= 【?】 ;
}
find=1; k=0;
while(k<M && find)
{
if (k!=i && a[k][c]<=rmax)
/SPACE/
find= 【?】;
k++;
}
if(find)
printf("find: a[%d][%d]=%d\n",i,c,a[i][c]);
/SPACE/
【?】 ;
}
if(!find)
printf("not found!\n");
}
main()
{
int x[M][N],i,j;
printf("Enter number for array:\n");
for(i=0; i<M; i++)
for(j=0; j<N; j++)
scanf("%d",&x[i][j]);
printf("The array:\n");
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
printf("%3d",x[i][j]);
printf("\n\n");
}
fun(x);
}

答案:

=(答案1)=
j

=(答案2)=
0

=(答案3)=
i ++

第82题 (10.0分) 题号:83 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处
于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在
主函数中输出处理后的数据序列,并将中间数作为函数值返回。

例如:有9个正整数:1 5 7 23 87 5 8 21 45 按升序排列时的中间数为:8
处理后主函数中输出的数列为:8 8 8 23 87 8 8 21 45

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

include <stdio.h>

define N 9

int fun(int x[])
{
int i,j,k,t,mid,b[N];
for(i=0;i<N;i++)
b[i]=x[i];
for(i=0;i<=N/2;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(b[k]>b[j])
k=j;
if(k != i )
{
t=b[i];
/SPACE/
b[i]=【?】;
b[k]=t;
}
}
/SPACE/
mid=b[【?】];
for(i=0; i<N; i++)
/SPACE/
if(x[i] 【?】 mid)
x[i]=mid;
return mid;
}
main()
{
int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++)
printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++)
printf("%d ",x[i]);
printf("\n");
}

答案:

=(答案1)=
b[k]

=(答案2)=
4
==
N/2

=(答案3)=
<

第83题 (10.0分) 题号:84 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。

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

include <stdio.h>

include <stdlib.h>

void fun( int *a, int n )
{
int i;
for(i=0; i<n; i++)
{
/SPACE/
if( 【?】==0 )
/SPACE/
printf("【?】");
/SPACE/
printf("%d ",【?】);
}
}
main()
{
int a[100]={0}, i,n;
n=22;
for(i=0; i<n;i++)
a[i]=rand()%21;
fun( a, n);
printf("\n");
}

答案:

=(答案1)=
i%5

=(答案2)=
\n

=(答案3)=
a[i]
==
*(a+i)

第84题 (10.0分) 题号:85 难度:易 第1章
/*-------------------------------------------------------
【程序填空】

题目:给定程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到
数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,…… a[9]存放9
出现的次数。

例如:若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,

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

include <stdio.h>

void fun( long m, int a[10])
{
int i;
for (i=0; i<10; i++)
/SPACE/
【?】= 0;
while (m > 0)
{
/SPACE/
i = 【?】;
a[i]++;
/SPACE/
m = 【?】;
}
}
main()
{
long m;
int a[10],i;
printf("请输入一个整数 : ");
scanf("%d", &m);
fun(m, a);
for (i=0; i<10; i++)
printf("%d,",a[i]);
printf("\n");
}

答案:

=(答案1)=
a[i]

=(答案2)=
m%10

=(答案3)=
m/10

第85题 (10.0分) 题号:86 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙
队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比
赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
三队赛手的名单。

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

include <stdio.h>

main()
{
char i,j,k;/i是a的对手,j是b的对手,k是c的对手/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
/SPACE/
if(【?】)
/SPACE/
for(k='x';【?】;k++)
{
/SPACE/
if(【?】)
{
/SPACE/
if(i!='x'&&k!=【?】)
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}

答案:

=(答案1)=
i!=j
==
i != j

=(答案2)=
k<='z'
==
'z'>=k

=(答案3)=
i!=k&&j!=k
==
i != k && j != k

=(答案4)=
'z'&&k!='x'
==
'z'&&'x'!=k
==
'x'&&k!='z'

第86题 (10.0分) 题号:87 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:打印出如下图案(菱形)






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

include <stdio.h>

main()
{
int i,j,k;
/SPACE/
for(i=0;【?】;i++)
{
for(j=0;j<=4-i;j++)
printf(" ");
/SPACE/
for(k=1;k<=【?】;k++)
printf("");
printf("\n");
}
/SPACE/
for(【?】;j<3;j++)
{
for(k=0;k<j+3;k++)
printf(" ");
for(k=0;k<5-2
j;k++)
printf("*");
printf("\n");
}
}

答案:

=(答案1)=
i<=3
==
i<4
==
3>=i
==
4>i

=(答案2)=
2i+1
==
i
2+1
==
1+2i
==
1+i
2

=(答案3)=
j=0

第87题 (10.0分) 题号:88 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:输入某年某月某日,判断这一天是这一年的第几天?

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

include <stdio.h>

main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
/SPACE/
case 4:【?】;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
/SPACE/
【?】;
/SPACE/
if(year%400==0||(【?】)
leap=1;
else
leap=0;
/SPACE/
if(【?】)
sum++;
printf("it is the %dth day.",sum);
}

答案:

=(答案1)=
sum=90

=(答案2)=
sum=sum+day
==
sum= sum + day

=(答案3)=
year%4 == 0 && year%100 != 0)

=(答案4)=
leap==1&&month>2
==
leap == 1 && month>2
==
leap == 1 && 2<month

第88题 (10.0分) 题号:89 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:输入三个整数x,y,z,请把这三个数由小到大输出。

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

include <stdio.h>

main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
/SPACE/
if (x>y){【?】}
/SPACE/
if(x>z){【?】}
/SPACE/
if(y>z){【?】}
printf("small to big: %d %d %d\n",x,y,z);
}

答案:

=(答案1)=
t=x;x=y;y=t;
==
t=y;y=x;x=t;

=(答案2)=
t=z;z=x;x=t;
==
t=x;x=z;z=t;

=(答案3)=
t=y;y=z;z=t;
==
t=z;z=y;y=t;

第89题 (10.0分) 题号:90 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:输出9*9口诀。

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

include <stdio.h>

main()
{
int i,j,result;
printf("\n");
/SPACE/
for (i=1;【?】;i++)
{
/SPACE/
for(j=1;j<10;【?】)
{
result=ij;
/SPACE/
printf("%d
%d=%-3d",i,j,【?】);
}
printf("\n");
}
}

答案:

=(答案1)=
i<10
==
10>i

=(答案2)=
j++
==
++j
==
j=j+1

=(答案3)=
result

第90题 (10.0分) 题号:91 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。

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

include<stdio.h>

void main()
{
float a,b,c,d,e,f;
printf("输入第一个复数的实部与虚部:");
scanf("%f, %f",&a,&b);
printf("输入第二个复数的实部与虚部:");
scanf("%f, %f",&c,&d);
/SPACE/
【?】;
f=b+d;
printf("相加后复数:实部:%f,虚部:%f\n",e,f);
e=ac-bd;
/SPACE/
【?】;
printf("相乘后复数:实部:%f,虚部:%f\n",e,f);
e=(ac+bd)/(cc+dd);
/SPACE/
【?】;
printf("相除后复数:实部:%f,虚部:%f\n",e,f);
}

答案:

=(答案1)=
e=a+c
==
e=c+a

=(答案2)=
f=ad+bc
==
f= ad + bc
==
f= a * d + b * c

=(答案3)=
f=(bc-ad)/(cc+dd)
==
f=(bc-ad) / (cc+dd)
==
f=( b * c - a * d ) / ( c * c + d * d )

第91题 (10.0分) 题号:92 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:要求输出结果为:
A,B
65,66

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

include<stdio.h>

void main()
{
/SPACE/
char a,【?】;
/SPACE/
a=【?】;
b='b';
a=a-32;
/SPACE/
b=b-【?】;
printf("%c, %c\n%d,%d\n",a,b,a,b);
}

答案:

=(答案1)=
b

=(答案2)=
'a'
==
97

=(答案3)=
32

第92题 (10.0分) 题号:93 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

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

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

include<stdio.h>

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)=
abk
==
a * b * k

=(答案3)=
printf

第93题 (10.0分) 题号:94 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:通过函数的递归调用计算阶乘。

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

include <stdio.h>

long power(int n)
{
long f;
if(n>1)
/SPACE/
f=【?】;
else
f=1;
return(f);
}
main()
{
int n;
long y;
printf("input a inteager number:\n");
/SPACE/
scanf("%d",【?】);
y=power(n);
/SPACE/
printf("%d!=%ld\n",n,【?】);
}

答案:

=(答案1)=
power(n-1)n
==
power( n - 1 ) * n
==
n
power(n-1)

=(答案2)=
&n

=(答案3)=
power(n)
==
y

第94题 (10.0分) 题号:95 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:数组名作为函数参数,求平均成绩。

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

include <stdio.h>

float aver(float a[ ]) /定义求平均值函数,形参为一浮点型数组名/
{
int i;
float av,s=a[0];
for(i=1;i<5;i++)
/SPACE/
s+=【?】[i];
av=s/5;
/SPACE/
return 【?】;
}

void main()
{
float sco[5],av;
int i;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++)
/SPACE/
scanf("%f",【?】);
/SPACE/
av=aver(【?】);
printf("average score is %5.2f\n",av);
}

答案:

=(答案1)=
a

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

=(答案3)=
&sco[i]
==
sco+i

=(答案4)=
sco

第95题 (10.0分) 题号:96 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显
示出来。

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

include <stdio.h>

define M 5 /定义符号常量 人数为5/

define N 4 /定义符号常量 课程为4/

main()
{
int i,j;
void aver(float sco[M+1][N+1]);
static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{69,60,50,72}};
aver(score);
printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n");
for(i=0;i<M;i++)
{
printf("学生%d\t",i+1);
/SPACE/
for(j=0;j<【?】;j++)
printf("%6.1f\t",score[i][j]);
printf("\n");
}
for(j=0;j<8*(N+2);j++)
printf("-");
printf("\n课程平均");
for(j=0;j<N+1;j++)
printf("%6.1f\t",score[i][j]);
printf("\n");
}

void aver(float sco[][N+1])
{
int i,j;
/SPACE/
for(i=0;i<【?】;i++)
{
for(j=0;j<N;j++)
{
sco[i][N] += sco[i][j];
sco[M][j] += sco[i][j];
sco[M][N] += sco[i][j];
}
/SPACE/
sco[i][N] 【?】 N;
}
for(j=0;j<N;j++)
/SPACE/
sco[M][【?】] /= M;
sco[M][N]=sco[M][N]/M/N;
}

答案:

=(答案1)=
N+1
==
1+N
==
5

=(答案2)=
M
==
5

=(答案3)=
/=

=(答案4)=
j

第96题 (10.0分) 题号:97 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:利用全局变量计算长方体的体积及三个面的面积。

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

include <stdio.h>

int s1,s2,s3;
int vs(int a,int b,int c)
{
int v;
/SPACE/
v=【?】;
s1=ab;
/SPACE/
s2=【?】;
s3=a
c;
return v;
}

main()
{
int v,l,w,h;
printf("\ninput length,width and height: ");
/SPACE/
scanf("%d%d%d",【?】,&w,&h);
/SPACE/
v=【?】;
printf("v=%d s1=%d s2=%d s3=%d\n",v,s1,s2,s3);
}

答案:

=(答案1)=
abc
==
a * b * c

=(答案2)=
b*c
==
b * c

=(答案3)=
&l

=(答案4)=
vs(l,w,h)
==
vs( l , w , h )

第97题 (10.0分) 题号:98 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:考查字符串数组的应用。输出26个大写英文字母。

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

include <stdio.h>

void main (void)
{
char string[256];
int i;
/SPACE/
for (i = 0; i < 26; 【?】)
/SPACE/
string[i] = 【?】;
string[i] = '\0';
/SPACE/
printf ("the arrary contains %s\n",【?】);
}

答案:

=(答案1)=
i++
==
++i
==
i=i+1
==
i+=1

=(答案2)=
'A' + i
==
i+'A'
==
65 + i
==
i+65

=(答案3)=
string

第98题 (10.0分) 题号:99 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:输出结果为(参见样张图片):



* * * * *
  * * * * * 
    * * * * *

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

include <stdio.h>

main()
{
/SPACE/
static char 【?】={'','','','',''};
int i,j,k;
char space=' ';
for(i=0;i<5;i++)
{
printf("\n");
for(j=1;j<=3
i;j++)
/SPACE/
printf("%1c",【?】);
/SPACE/
for(k=0;k<【?】;k++)
printf("%3c",a[k]);
}
printf("\n");;
}

答案:

=(答案1)=
a[5]
==
a[]

=(答案2)=
space
==
' '

=(答案3)=
5
==
=4

第99题 (10.0分) 题号:101 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中
马驮2担,两匹小马驮一担,求大、中、小马各多少匹?

说明:不能用穷举

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

include <stdio.h>

main()
{
int hb,hm,hl,n=0;
/SPACE/
for(hb=0;hb<=100;hb+=【?】)
/SPACE/
for(hm=0;hm<=100-hb;hm+=【?】)
{
/SPACE/
hl=100-hb-【?】;
/SPACE/
if(hb/3+hm/2+2【?】==100)
{
n++;
printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2
hl);
}
}
printf("n=%d\n",n);
}

答案:

=(答案1)=
3

=(答案2)=
2

=(答案3)=
hm

=(答案4)=
hl

第100题 (10.0分) 题号:102 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:百鸡问题:100元买100只鸡,公鸡一只5元钱,母鸡一只3
元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡
各多少只?

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

include <stdio.h>

main()
{
int cocks,hens,chicks;
cocks=0;
while(cocks<=19)
{
/SPACE/
【?】=0;
/SPACE/
while(hens<=【?】)
{
chicks=100-cocks-hens;
if(5cocks+3hens+chicks/3==100)
printf("%d,%d,%d\n",cocks,hens,chicks);
/SPACE/
【?】;
}
/SPACE/
【?】;
}
}

答案:

=(答案1)=
hens

=(答案2)=
33

=(答案3)=
hens++
==
++hens
==
hens=hens+1

=(答案4)=
cocks++
==
++cocks
==
cocks=cocks+1
==
cocks= cocks + 1

第101题 (10.0分) 题号:103 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:输入一个学生的生日(年:y0、月:m0、日:d0),并输
入当前日期(年:y1、月:m1、日:d1)。求出该学生的
年龄(实足年龄)。

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

include <stdio.h>

main()
{int age,y0,y1,m0,m1,d0,d1;
printf("输入生日日期(年,月,日)");
/SPACE/
【?】("%d,%d,%d",&y0,&m0,&d0);
printf("输入当前日期(年,月,日)");
scanf("%d,%d,%d",&y1,&m1,&d1);
age=y1-y0;
/SPACE/
if(m0【?】m1)age--;
/SPACE/
if((m0【?】m1)&&(d0>d1))age--;
printf("age=%3d",age);
}

答案:

=(答案1)=
scanf

=(答案2)=

=(答案3)=

第102题 (10.0分) 题号:104 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:从读入的整数数据中,统计大于零的整数个数和小于零的
整数个数。用输入零来结束输入,程序中用变量i统计大于
零的整数个数,用变量j统计小于零的整数个数。

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

include <stdio.h>

main()
{
int n,i,j;
printf("Enter iNT number,with 0 to end\n");
i=j=0;
scanf("%d",&n);
while(n!=0)
{
/SPACE/
if(n>0)i=【?】;
/SPACE/
if(n<0)j=【?】;
/SPACE/
scanf("%d",【?】);
}
printf("i=%4d\n",i,j);
}

答案:

=(答案1)=
i + 1

=(答案2)=
j + 1

=(答案3)=
&n

第103题 (10.0分) 题号:105 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:计算一元二次方程的根。

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

include <stdio.h>

/SPACE/

include 【?】

main()
{
double x1,x2,imagpart;
float a,b,c,disc,realpart;
scanf("%f%f%f",&a,&b,&c);
printf("the equation");
/SPACE/
if(【?】<=1e-6)
printf("is not quadratic\n");
else
disc=bb-4ac;
if(fabs(disc)<=1e-6)
printf("has two equal roots:%-8.4f\n",-b/(2
a));
/SPACE/
else if(【?】)
{
x1=(-b+sqrt(disc))/(2a);
x2=(-b-sqrt(disc))/(2
a);
printf("has distinct real roots:%8.4f and %.4f\n",x1,x2);
}
else
{
realpart=-b/(2a);
imagpart=sqrt(-disc)/(2
a);
printf("has complex roots:\n");
printf("%8.4f=%.4fi\n",realpart,imagpart);
printf("%8.4f-%.4fi\n",realpart,imagpart);
}
}

答案:

=(答案1)=
<math.h>

=(答案2)=
fabs(a)

=(答案3)=
fabs(disc) > 1e-6
==
1e-6 <fabs(disc)

第104题 (10.0分) 题号:106 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:计算圆周率的近似值。 pi/4=1-1/3+1/5-1/7......

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

include <stdio.h>

include <math.h>

main()
{
int s,n;
/SPACE/
double 【?】,t;
t=1;pi=0;n=1;s=1;
/SPACE/
while(【?】>=2e-6)
{
pi+=t;n+=2;s=-s;t=s/n;
}
/SPACE/
pi*=【?】;
printf("pi=%.6f\n",pi);
}

答案:

=(答案1)=
pi

=(答案2)=
fabs(t)

=(答案3)=
4

第105题 (10.0分) 题号:107 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:计算平均成绩并统计90分以上人数。

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

include <stdio.h>

main()
{
int n,m;
float grade,average;
average=0.0;
/SPACE/
n=m=【?】;
while(1)
{
/SPACE/
【?】("%f",&grade);
if(grade<0) break;
n++;
average+=grade;
/SPACE/
if(grade<90)【?】;
m++;
}
if(n) printf("%.2f%d\n",average/n,m);
}

答案:

=(答案1)=
0

=(答案2)=
scanf

=(答案3)=
continue

第106题 (10.0分) 题号:108 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:将字母转换成密码,转换规则是将当前字母变成其后的第
四个字母,但W变成A、X变成B、Y变成C、Z变成D。小写字
母的转换规则同样。

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

include <stdio.h>

main()
{
char c;
/SPACE/
while((c=【?】)!='\n')
{
/SPACE/
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))【?】;
/SPACE/
if((c>'Z'【?】c<='Z'+4)||c>'z') c-=26;
printf("%c",c);
}
}

答案:

=(答案1)=
getchar()

=(答案2)=
c+=4
==
c=c+4
==
c=4+c

=(答案3)=
&&

第107题 (10.0分) 题号:109 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:要求输出如下结果:
b=-1 a=65535
a=65534
a=30 b=6 c=5
按要求在空中填入合适的变量完善程序。

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

include <stdio.h>

main()
{
/SPACE/
int b=-1,【?】;unsigned a;
/SPACE/
a=【?】;
printf("b=%d a=%u\n",b,a);
/SPACE/
【?】+=b;
printf("a=%u\n",a);
/SPACE/
b=(a=30)/【?】;
printf("a=%d b=%d c=%d\n",a,b,c);
}

答案:

=(答案1)=
c
==
c=5

=(答案2)=
b
==
65535

=(答案3)=
a

=(答案4)=
(c=5)
==
c

第108题 (10.0分) 题号:110 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:求出二维数组中的最大元素值。

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

include <stdio.h>

max_value(m,n,array)
/SPACE/
int m,n,【?】;
{
int i,j,max;
max=array[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
/SPACE/
if(max<array[i][j])【?】;
return(max);
}

void main()
{
int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
/SPACE/
printf("max value is %d\n",【?】);
}

答案:

=(答案1)=
array[][4]
==
array[3][4]

=(答案2)=
max=array[i][j]

=(答案3)=
max_value(3,4,a)

第109题 (10.0分) 题号:111 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:1982年我国第三次人口普查,结果全国人口为10.3亿,假
如人口增长率为5%。编写一个程序求在公元多少年总人口
翻了一番。

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

include<stdio.h>

void main()
{
double p1=10.3,p2,r=0.05;
int n=1;
/SPACE/
p2=p1【?】;
/SPACE/
while(p2<=【?】)
{
n++;
/SPACE/
p2=p2
【?】;
}
/SPACE/
n=【?】;
printf("%d年人口总数翻了一番,即为%g亿人\n",n,p2);
}

答案:

=(答案1)=
(1+r)
==
(r+1)

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

=(答案3)=
(1+r)
==
(r+1)

=(答案4)=
n+1982
==
1982+n

第110题 (10.0分) 题号:112 难度:中 第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 <stdio.h>

main()
{
long int i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=1000000.1;bonus2=bonus1+1000000.75;
bonus4=bonus2+2000000.5;
bonus6=bonus4+200000
0.3;
bonus10=bonus6+4000000.15;
if(i<=100000)
bonus=i
0.1;
/SPACE/
else if(【?】)
bonus=bonus1+(i-100000)0.075;
/SPACE/
else if(【?】)
bonus=bonus2+(i-200000)
0.05;
/SPACE/
else if(【?】)
bonus=bonus4+(i-400000)0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)
0.015;
else
bonus=bonus10+(i-1000000)*0.01;
/SPACE/
【?】("bonus=%d",bonus);
}

答案:

=(答案1)=
i<=200000
==
200000>=i

=(答案2)=
i<=400000
==
400000>=i

=(答案3)=
i<=600000
==
600000>=i

=(答案4)=
printf

第111题 (10.0分) 题号:113 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:编程求任意给定的n个数中的奇数的连乘积,偶数的平方和
以及0的个数,n通过scanf()函数输入。

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

include <stdio.h>

main()
{
int r=1,s=0,t=0,n,a,i;
printf("n=");scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("a=");
/SPACE/
scanf("%d",【?】);
/SPACE/
if(【?】!=0)
/SPACE/
【?】=a;
else if(a!=0)
/SPACE/
s+=【?】;
else
t++;
}
printf("r=%d,s=%d,t=%d\n",r,s,t);
}

答案:

=(答案1)=
&a

=(答案2)=
a%2

=(答案3)=
r*

=(答案4)=
a*a

第112题 (10.0分) 题号:114 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:编程求某年第n天的日期。用数组表示月天数。

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

include <stdio.h>

include <stdlib.h>

main()
{
int y,m,f,n;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("y,n=");
scanf("%d,%d",&y,&n);
/SPACE/
f=y%40&&y%100!=0【?】y%4000;
/SPACE/
a[1]【?】f;
if(n<1||n>365+f)
{
printf("error!\n");exit(0);
}
/SPACE/
for(m=1;n【?】a[m-1];n-=a[m-1],m++);
printf("y=%d,m=%d,d=%d\n",y,m,n);
}

答案:

=(答案1)=
||

=(答案2)=
+=
==
=a[1]+

=(答案3)=

第113题 (10.0分) 题号:115 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:已知一个数列,它的头两项分别是0和1,从第三项开始以
后的每项都是其前两项之和。编程打印此数,直到某项的
值超过200为止。

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

include <stdio.h>

main()
{
int i,f1=0,f2=1;
/SPACE/
for(【?】;;i++)
{
printf("5%d",f1);
/SPACE/
if(f1>【?】) break;
printf("5%d",f2);
if(f2>200) break;
if(i%2==0) printf("\n");
f1+=f2;
/SPACE/
f2+=【?】;
}
printf("\n");
}

答案:

=(答案1)=
i=1

=(答案2)=
200

=(答案3)=
f1

第114题 (10.0分) 题号:116 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:已知X、Y、Z分别表示0~9中不同的数字,编程求出使算式
XXXX+YYYY+ZZZZ=YXXXZ成立时X、Y、Z的值,并要求打印该
算式。

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

include <stdio.h>

include <stdlib.h>

main()
{
int x,y,z;
/SPACE/
for(x=0;【?】;x++)
for(y=0;y<10;y++)
{
if(yx) continue;
for(z=0;z<10;z++)
{
/SPACE/
if(z
x【?】zy) continue;
/SPACE/
if(1111*(x+y+z)
【?】+1110x+z)
{
printf("x=%d,y=%d,z=%d\n",x,y,z);
/SPACE/
printf("%d+%d+%d=%d\n",1111
x,1111y,1111z,【?】);
exit(0);
}
}
}
}

答案:

=(答案1)=
x<10
==
10>x

=(答案2)=
||

=(答案3)=
10000y
==
y
10000

=(答案4)=
10000y+1110x+z
==
10000 * y + 1110 * x + z

第115题 (10.0分) 题号:117 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:算式:?2*7?=3848中缺少一个十位数和一个个位数。编
程求出使该算式成立时的这两个数,并输出正确的算式。

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

include <stdio.h>

include <stdlib.h>

main()
{
int x,y;
/SPACE/
for(x=1;【?】;x++)
/SPACE/
for(【?】;y<10;y++)
/SPACE/
if(【?】==3848)
{
/SPACE/
printf("%d*%d=3848\n",【?】);
exit(0);
}

}

答案:

=(答案1)=
x<10
==
10>x
==
x<=9
==
9>=x

=(答案2)=
y=0

=(答案3)=
(10x+2)(70+y)
==
( 10 * x + 2 ) * ( 70 + y )

=(答案4)=
10*x+2,70+y
==
10 * x + 2 , 70 + y

第116题 (10.0分) 题号:118 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:一个40磅重的板碎成4块,每块正好是一个整数磅,且用这
4块当砝码能称出1~40磅的整数重量的物体。编程求这4块
的各自重量。

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

include <stdio.h>

include <stdlib.h>

main()
{
int i,j,k,l,p,t1,t2,t3,t4;
for(i=1;i<38;i++)
/SPACE/
for(【?】;j<38-i;j++)
/SPACE/
for(k=j;k<【?】;k++)
{
l=40-i-j-k;
for(p=1;p<40;p++)
{
for(t1=-1;t1<2;t1++)
for(t2=-1;t2<2;t2++)
for(t3=-1;t3<2;t3++)
for(t4=-1;t4<2;t4++)
/SPACE/
if(【?】p) goto next;
break;
/SPACE/
next:if(p
【?】)
{
printf("%d,%d,%d,%d\n",i,j,k,l);
exit(0);
}
}
}
printf("error.");
}

答案:

=(答案1)=
j=i

=(答案2)=
39-i-j
==
39 -i -j

=(答案3)=
it1+jt2+kt3+lt4
==
i * t1 + j * t2 + k * t3 + l * t4

=(答案4)=
39

第117题 (10.0分) 题号:119 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:编程求任意给两个日期(Y0年M0月DO日和Y1年M1月D1日)
相差的天数。

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

include <stdio.h>

include <stdlib.h>

int f(int y)
{
return(y%40&&y%100!=0||y%4000);
}

int mday(int y,int m)
{
return(31-((m4)+(m6)+(m9)+(m11))-(3-f(y))*(m==2));
}

int yday(int y,int m,int d)
{
return(d+31((m>1)+(m>3)+(m>5)+(m>7)+(m>8)+(m>10))+30((m>4)+(m>6)+(m>9)+(m>11))+(28+f(y))*(m>2));
}

int yend(int y,int m,int d)
{
return(365+f(y)-yday(y,m,d));
}

main()
{
int y1,m1,d1,y2,m2,d2,n,i;
printf("y1,m1,d1=");
scanf("%d,%d,%d",&y1,&m1,&d1);
/SPACE/
if(m1<1||m1>12||d1<1||d1>【?】) exit(0);
printf("y2,m2,d2=");scanf("%d,%d,%d",&y2,&m2,&d2);
/SPACE/
if(m2<1||m2>12||d2<1||d2>【?】) exit(0);
if(y1>y2||y1y2&&m1>m2||y1y2&&m1==m2&&d1>d2)
{
n=y1;
y1=y2;
y2=n;
n=m1;
m1=m2;
m2=n;
n=d1;
d1=d2;
d2=n;
}
else
{
/SPACE/
n=yend(y1,m1,d1)+【?】;
/SPACE/
for(i=【?】;i<y2;i++) n+=365+f(i);
}
printf("%d.%d.%d--->%d.%d.%d:n=%d\n",y1,m1,d1,y2,m2,d2,n);
}

答案:

=(答案1)=
mday(y1,m1)

=(答案2)=
mday(y2,m2)

=(答案3)=
yday(y2,m2,d2)

=(答案4)=
y1+1
==
1+y1

第118题 (10.0分) 题号:121 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:用等分法在有序的循环数组中,找到最小元素的位置。

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

include <stdio.h>

int cyclic_min(int x[], int n)
{
int left = 0;
int right = n - 1;
int mid;
/SPACE/
while (【?】)
{
mid = (left + right)/2;
if (x[mid] < x[right])
/SPACE/
【?】;
else
/SPACE/
【?】;
}
return left;
}

include <stdio.h>

void main(void)
{
int x[] = { 20, 23, 28, 35, 39, 40, 42, 8, 10, 15, 17, 19};
int n = sizeof(x)/sizeof(int);
int loc, i;

 printf("\nFind Cyclic Minimum");
 printf("\n===================");
 printf("\n\nGiven Array Sorted in Cyclic Fashion :\n");
 for (i = 0; i < n; i++)
      printf("%3d", x[i]);
 loc = cyclic_min(x, n);
 printf("\n\nMinimum is located at x[%d] = %d", loc, x[loc]);

}

答案:

=(答案1)=
left < right
==
right>left

=(答案2)=
right = mid

=(答案3)=
left = mid + 1
==
left = 1+mid

第119题 (10.0分) 题号:122 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为
1~100分。选手最后得分为:去掉一个最高分和一个最低分
后其余8个分数的平均值。请编写一个程序实现。

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

include<stdio.h>

void main()
{
int score,i,max,min,sum;
max=-32768;
min=32767;
sum=0;
for(i=1;i<=10;i++)
{
printf("input number %d=",i);
/SPACE/
scanf("%d",【?】);
sum+=score;
/SPACE/
if(【?】) max=score;
/SPACE/
if(【?】) min=score;
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
/SPACE/
printf("Average score:%d\n",【?】);
}

答案:

=(答案1)=
&score

=(答案2)=
score>max
==
max<score

=(答案3)=
score<min
==
min>score

=(答案4)=
(sum-max-min)/8
==
(sum -max - min )/8

第120题 (10.0分) 题号:123 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

include <stdlib.h>

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

第121题 (10.0分) 题号:124 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:输入一奇数n,打印由1->n*n构成的魔方矩阵。魔方矩阵的
行列及对角线的和都相等。
魔方矩阵:8 1 6
3 5 7
4 9 2

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

include <stdio.h>

include <stdlib.h>

define MAXSiZE 20

void main(void)
{
int matrix[MAXSiZE][MAXSiZE];
int count;
int row;
int column;
int n;
char line[100];
printf("\nOdd n Magic Square Generator");
printf("\n================================");
printf("\n\nn Please --> ");
gets(line);
n = atoi(line);
if (n > MAXSiZE)
printf("\n*** ERROR *** n should be <= %d", MAXSiZE);
else if (n % 2 == 0)
printf("\n*** ERROR *** n must be an odd integer");
else
{
row = 0;
column = n/2;
for (count = 1; count <= n*n; count++)
{
matrix[row][column] = count;
/SPACE/
if (【?】 == 0)
row++;
else
{
/SPACE/
row= (row == 【?】) ? n - 1 : row - 1;
/SPACE/
column = (column == 【?】) ? 0 : column + 1;
}
}
printf("\n\nMagic Square of n %d :\n\n", n);
for (row = 0; row < n; row++)
{
for (column = 0; column < n; column++)
printf("%4d", matrix[row][column]);
printf("\n");
}
}
}

答案:

=(答案1)=
count % n

=(答案2)=
0

=(答案3)=
n-1
==
n -1

第122题 (10.0分) 题号:125 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

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

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

include <stdio.h>

include <math.h>

main()
{
float x0,x1,x2,fx0,fx1,fx2;
do
{
printf("Enter x1&x2:");
scanf("%f,%f",&x1,&x2);
fx1=x1((2x1-4)x1+3)-6;
fx2=x2
((2x2-4)x2+3)-6;
/SPACE/
}while (fx1*fx2【?】);

do
{
x0=(x1+x2)/2;
fx0=x0((2x0-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)

第123题 (10.0分) 题号:126 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能: 对一数组进行逐步累加求和,prefix代表从前向后累加值,
suffix代表从后向前累加值,问在此过程中prefix与suffix
有几次值相同?

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

include <stdio.h>

int head_tail(int x[], int n)
{
int prefix = 0, suffix = 0;
int prefix_idx = 0, suffix_idx = n-1;
int count = 0;
while (suffix_idx >= 0 && prefix_idx <= n-1)
/SPACE/
if ( 【?】)
prefix += x[prefix_idx++];
else if (prefix > suffix)
/SPACE/
suffix += x[【?】];
else
{
/SPACE/
【?】;
prefix += x[prefix_idx++];
suffix += x[suffix_idx--];
}
return count;
}

include <stdio.h>

void main(void)
{
int x[] = { 3, 6, 2, 1, 4, 5, 2};
int n = sizeof(x)/sizeof(int);
int i;
printf("\nHead Sum == Tail Sum Counting Program");
printf("\n=====================================\n");
printf("\nGiven Array 😊;
for (i = 0; i < n; i++)
printf("%5d", x[i]);
printf("\n\nThere are %d equal Prefix-Suffix sum pairs.",head_tail(x, n));
}

答案:

=(答案1)=
prefix < suffix
==
suffix>prefix

=(答案2)=
suffix_idx--
==
suffix_idx= suffix_idx -1
==
--suffix_idx

=(答案3)=
count++
==
count=count+1

第124题 (10.0分) 题号:127 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:用递归法将一个整数n转换成字符串,例如输入483,应输出
对应的字符串"483"。n的位数不确定,可以是任意位数的整
数。

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

include <stdio.h>

void convert(int n)
{
int i;
/SPACE/
if((【?】)!=0)
convert(i);
/SPACE/
putchar(n%10+【?】);
}

main()
{
int number;
printf("\ninput an integer:");
scanf("%d",&number);
printf("Output:");
if(number<0)
{
putchar('-');
/SPACE/
【?】;
}
convert(number);
}

答案:

=(答案1)=
i=n/10

=(答案2)=
'0'

=(答案3)=
number=-number

第125题 (10.0分) 题号:128 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]|
的最小值是多少 ?

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

include <stdio.h>

include <limits.h>

/SPACE/

define min(x, y) (【?】)

int min_distance(int x[], int y[], int m, int n)
{
int minimum = INT_MAX;
int index_x = 0, index_y = 0;
while (index_x < m && index_y < n)
/SPACE/
if (【?】)
{
minimum = min(minimum, x[index_x]-y[index_y]);
index_y++;
}
else
{
minimum = min(minimum, y[index_y]-x[index_x]);
/SPACE/
【?】;
}
return minimum;
}

include <stdio.h>

void main(void)
{
int x[] = { 1, 3, 7, 11, 18};
int m = sizeof(x)/sizeof(int);
int y[] = { 4, 5, 8, 13, 22};
int n = sizeof(y)/sizeof(int);
int i, min_distance(int [], int [], int, int);
printf("\nCompute Minimum Distance Between Two Sorted Arrays");
printf("\n==================================================");
printf("\n\nGiven Array #1 😊;
for (i = 0; i < m; i++)
printf("%5d", x[i]);
printf("\n\nGiven Array #2 😊;
for (i = 0; i < n; i++)
printf("%5d", y[i]);
printf("\n\nMinimum Distance = %d", min_distance(x, y, m, n));
}

答案:

=(答案1)=
x<y?x:y
==
y>x?x:y

=(答案2)=
x[index_x] >= y[index_y]
==
y[index_y]<=x[index_x]

=(答案3)=
index_x++
==
index_x=index_x+1
==
++index_x

第126题 (10.0分) 题号:129 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:给出一个正整数,找到一组连续的数,使之累加和等于给
定的正整数。输出存在多少组这样连续的数,及每组的左
右边界。
例如:15=1+2+3+4+5
15=4+5+6
15=7+8
所以结果有3组值分别是1->5, 4->6, 7->8

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

include <stdio.h>

include <stdlib.h>

void main(void)
{
long left, right;
long sum;
long GiVEN;
int count = 0;
char line[100];
printf("\nConsecutive sum to a fixed given number");
printf("\n=======================================\n");
printf("\nYour number (> 0) please ---> ");
gets(line);
GiVEN = atol(line);
for (sum = 0, right = 1; sum < GiVEN; sum += right, right++)
;
for (left = 1, right--; left <= GiVEN/2; )
if (sum > GiVEN)
{
sum -= left;
/SPACE/
【?】;
}
else
{
if (sum == GiVEN)
{
printf("\n%ld = sum from %ld to %ld",
GiVEN, left, right);
/SPACE/
【?】;
}
/SPACE/
【?】;
sum += right;
}
if (count > 0)
printf("\n\nThere are %d solutions in total.", count);
else
printf("\n\nSorry, there is NO solution at all.");
}

答案:

=(答案1)=
left++
==
left=left+1
==
++left

=(答案2)=
count++
==
count=count++
==
++count
==
count=count+1

=(答案3)=
right++
==
right=right++
==
++right
==
right=right+1

第127题 (10.0分) 题号:130 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:现有两组有序数组(增序),x[i]、y[j]代表数组x、y的
任一元素,问满足x[i]>y[i]的元素对有多少个?

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

include <stdio.h>

int dominance_count(int f[], int g[], int m, int n)
{
int index_f, index_g;
int count;
count = index_f = index_g = 0;
while (index_f < m && index_g < n)
if (f[index_f] <= g[index_g])
index_f++;
else
{
index_g++;
/SPACE/
count += 【?】;
}
/SPACE/
【?】;
}

include <stdio.h>

void main(void)
{
int x[] = { 1, 6, 8 };
int nx = sizeof(x)/sizeof(int);
int y[] = { 4, 5, 7 };
int ny = sizeof(y)/sizeof(int);
int dominance_count(int [], int [], int, int), i;
printf("\nDominance Count of two increasing Arrays\n");
printf("\n # Array 1 Array 2");
printf("\n -- ------- -------");
for (i = 0; i < nx; i++)
printf("\n%3d%10d%10d", i, x[i], y[i]);
printf("\n\nThere are %d Dominance Pairs.",
/SPACE/
【?】);
}

答案:

=(答案1)=
m - index_f
==
m - index_f

=(答案2)=
return count

=(答案3)=
dominance_count(x, y, nx, ny)

第128题 (10.0分) 题号:131 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:输出1到100之间每位数的乘积大于每位数的和的数。
例如:数字26,数位上数字的乘积12大于数字之和8。

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

include <stdio.h>

main()
{
int n,k=1,s=0,m;
for(n=1;n<=100;n++)
{
k=1;
s=0;
/SPACE/
【?】 ;
/SPACE/
while( 【?】 )
{
k*=m%10;
s+=m%10;
/SPACE/
【?】;
}
if(k>s)
printf("%d ",n);
}
}

答案:

=(答案1)=
m=n

=(答案2)=
m>0
==
0<m
==
m!=0
==
m

=(答案3)=
m=m/10
==
m/=10

第129题 (10.0分) 题号:132 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:不用第三个变量,实现两个数的对调操作。

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

include <stdio.h>

main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("a=%d,b=%d\n",a,b);
/SPACE/
a= 【?】 ;
/SPACE/
b= 【?】 ;
/SPACE/
a= 【?】 ;
printf("a=%d,b=%d\n",a,b);
}

答案:

=(答案1)=
a + b

=(答案2)=
a-b
==
a -b

=(答案3)=
a-b
==
a -b

第130题 (10.0分) 题号:133 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:编写程序,输出 1000 以内的所有完数及其因子。
说明:所谓完数是指一个整数的值等于它的因子之和。
例如“ 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是
一个完数。

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

include <stdio.h>

main()
{
int i,j,m,s,k,a[100] ;
for(i=1 ; i<=1000 ; i++ )
{
m=i ; s=0 ; k=0 ;
for(j=1 ; j<m ; j++)
/SPACE/
if(【?】)
{
s=s+j ;
/SPACE/
【?】=j ;
}
if(s!=0&&s==m)
{
/SPACE/
for(j=0 ; 【?】 ; j++)
printf("%4d",a[j]) ;
printf(" =%4d\n",i) ;
}
}
}

答案:

=(答案1)=
m%j == 0

=(答案2)=
a[k++]

=(答案3)=
j<k
==
k>j

第131题 (10.0分) 题号:134 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:如果整数A的全部因子(包括1,不包括A本身)之和等
于B;且整数B的全部因子 ( 包括1,不包括B本身 )
之和等于A,则将整数A和B称为亲密数。求 3000 以内
的全部亲密数。

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

include <stdio.h>

include <stdio.h>

main( )
{
int a, i, b, n ;
printf("Friendly-numbers pair samller than 3000:\n") ;
for(a=1 ; a<3000 ; a++)
{
for(b=0,i=1 ; i<=a/2 ; i++ )
/SPACE/
if(!(a%i)) 【?】 ;
for(n=0,i=1 ; i<=b/2 ; i++)
/SPACE/
if(!(b%i)) 【?】 ;
/SPACE/
if(【?】 && a<b)
printf("%4d~%4d\n",a,b) ;
}
}

答案:

=(答案1)=
b+=i
==
b=b+i

=(答案2)=
n+=i
==
n=n+i

=(答案3)=
n == a

第132题 (10.0分) 题号:135 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:十个小孩围成一圈分糖果,老师分给第一个小孩 10 块,第二
个小孩 2 块,第三个小孩 8 块,第四个小孩 22 块,第五个
小孩16 块,第六个小孩 4块,第七个小孩 10 块,第八个小孩
6 块,第九个小孩 14 块,第十个小孩20 块。然后所有的小孩
同时将自己手中的糖分一半给左边的小孩;糖块数为奇数的人
可向老师要一块。问经过这样几次调整后大家手中的糖的块数
都一样?每人各有多少块糖?

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

include <stdio.h>

main()
{
int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20} ;
/SPACE/
while(【?】)
{
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++)
/SPACE/
if(【?】) a[i]++ ;
for(i=1 ; i<10 ; i++)
/SPACE/
if(a[i]!=a[i+1]) 【?】;
if(i==10)
break ;
else
{
a[0]=0 ;
count++ ;
}
}
printf("count=%d number=%d\n",count,a[1]) ;
}

答案:

=(答案1)=
1

=(答案2)=
a[i]%2 == 1

=(答案3)=
break

第133题 (10.0分) 题号:136 难度:难 第2章
/*-------------------------------------------------------
【程序填空】

功能:输出Fibonacci数列的前15项,要求每行输出5项。
Fibonacci数列:1,1,2,3,5,8,13...........

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

include <stdio.h>

main()
{
/SPACE/
int 【?】[14],i;
fib[0]=1;fib[1]=1;
for (i=2;i<15;i++)
/SPACE/
fib[i]=【?】;
for(i=0;i<15;i++)
{
printf("%d\t",fib[i]);
/SPACE/
if ( 【?】 ) printf("\n");
}
}

答案:

=(答案1)=
fib

=(答案2)=
fib[i-2]+fib[i-1]
==
fib[i-2] + fib[i-1]

=(答案3)=
i%5 == 4
==
(i+1)%5 == 0

第134题 (10.0分) 题号:137 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:一个自然数被 8 除余 1 ,所得的商被 8 除也余 1 ,再
将第二次的商被8 除后余7 ,最后得到一个商为a。又知这
个自然数被17除余4 ,所得的商被17除余15,最后得到一
个商是a的2倍。编写程序求这个自然数。

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

include <stdio.h>

main( )
{
int i,n,a ;
i=0 ;
while(1)
{
if(i%81)
{
n=i/8 ;
if(n%8
1)
{
n=n/8 ;
/SPACE/
if(n%87) 【?】 ;
}
}
if(i%17
4)
{
n=i/17 ;
if(n%1715) n=n/17 ;
}
if(2*a
n)
{
printf("result=%d\n",i) ;
/SPACE/
【?】 ;
}
/SPACE/
【?】;
}
}

答案:

=(答案1)=
a=n/8

=(答案2)=
break

=(答案3)=
i++
==
++i
==
i=i+1

第135题 (10.0分) 题号:138 难度:中 第2章
/*-------------------------------------------------------
【程序填空】

功能:对数组 A 中的N( 0 <N<100)个整数从小到大进行连续编
号,输出各个元素的编号。要求不能改变数组A中元素的
顺序,且相同的整数要具有相同的编号。
例如:数组是: A=(5,3,4,7,3,5,6)
则输出为:(3,1,2,5,1,3,4)

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

include <stdio.h>

main()
{
int i,j,k,n,m=1,r=1,a[2][100]={0} ;
printf("Please enter n:") ;
scanf("%d",&n) ;
for(i=0 ; i<n ; i++)
{
printf("a[%d]= ",i) ;
scanf("%d",&a[0][i]) ;
}
/SPACE/
while(【?】)
{
for(i=0 ; i<n ; i++)
if(a[1][i]0)
/SPACE/
【?】 ;
k=i ;
for(j=i ; j<n ; j++)
/SPACE/
if(a[1][j]
0 && a[0][j]<a[0][k]) 【?】 ;
a[1][k]=r++ ;
m++ ;
for(j=0 ; j<n ; j++)
if(a[1][j]0 && a[0][j]a[0][k])
{
a[1][j]=a[1][k] ;
m++ ;
}
}
for(i=0 ; i<n ; i++)
printf("a[%d]=%d, %d\n",i,a[0][i],a[1][i]) ;
}

答案:

=(答案1)=
m<=n
==
n>=m

=(答案2)=
break

=(答案3)=
k=j

第136题 (10.0分) 题号:139 难度:易 第2章
/*-------------------------------------------------------
【程序填空】

功能:识别输入的字符串,每个单词输出一行

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

include <stdio.h>

include <string.h>

void main()
{
int c;
int inspace;
/SPACE/
【?】;
while((c = getchar()) != '\n')
{
if(c == ' ' || c == '\t' || c == '\n')
{
/SPACE/
if(【?】)
{
inspace = 1;
putchar('\n');
}
}
else
{
inspace = 0;
/SPACE/
【?】;
}
}
}

答案:

=(答案1)=
inspace = 0

=(答案2)=
inspace == 0

=(答案3)=
putchar(c)

第137题 (10.0分) 题号:140 难度:难 第6章
/*-------------------------------------------------------
【程序填空】

功能:输入一个整数,计算它可能是哪两个整数的平方和,并打印
结果数据。
如:34是5和3或3和5的平方和。

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

include <stdio.h> /* for i/O functions */

include <stdlib.h> /* for atoi() */

include <math.h> /* for sqrt() */

void main(void)
{
int given; /* the given number /
int row, column; /
row and column indicators/
int count; /
number of solutions /
char line[100];
printf("\nRepresenting a Given Number as the Sum of Two Squares");
printf("\n=====================================================\n");
printf("\nAn integer Please ---> ");
gets(line);
given = atoi(line);
printf("\nCount X Y");
printf("\n----- ----- -----");
row = 1; /
starts from far enough /
column = (int) (sqrt((double) given) + 0.5);
count = 0; /
so solution yet /
while (row <= given && column > 0) /
scan down... /
if (row
row + columncolumn == given)
{
/SPACE/
【?】;
printf("\n%5d%7d%7d", count, row, column);
row++;
column--;
}
else if (row
row + column*column > given)
/SPACE/
【?】;
else
/SPACE/
【?】;
if (count == 0)
printf("\n\nSorry, NO ANSWER found.");
else
printf("\n\nThere are %d possible answers.",count);
}

答案:

=(答案1)=
count++
==
++count
==
count=count+1

=(答案2)=
column--
==
--column
==
column=column-1

=(答案3)=
row++
==
++row
==
row= row + 1

第138题 (10.0分) 题号:141 难度:难 第8章
/*-------------------------------------------------------
【程序填空】

功能:h_sequence 是一组由0和1组成的数列,它定义如下:
= 0
= 1
利用函数检测输入的字符串是否是h_sequence数列

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

include <stdio.h>

include <string.h>

define YES 1

define NO 0

int h_sequence(char x[])
{
/SPACE/
int length = 【?】;
int count;
int i;
for (count = 1, i = 0; count != 0 && i < length; i++)
switch (x[i])
{
case '0':count--;
break;
case '1':count++;
break;
default:return NO;
}
/SPACE/
return 【?】&& i >= length;
}

include <stdio.h>

void main(void)
{
char line[100];
printf("\n\ninput a string of 0 and 1 --> ");
gets(line);
/SPACE/
if (【?】 == YES)
printf("\n*** input is a H sequence ");
else
printf("\n
input is NOT a H sequence ***");
}

答案:

=(答案1)=
strlen(x)

=(答案2)=
count == 0

=(答案3)=
h_sequence(line)

第139题 (10.0分) 题号:142 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:利用函数计算连续的数组元素累加和的最大值。如果最大
值是负数则返回0;

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

include <stdio.h>

/SPACE/
int max_sum( 【?】, int n)
{
int max_ending_here = 0;
int max_so_far = 0;
int i;
for (i = 0; i < n; i++)
{
if (max_ending_here + x[i] < 0)
/SPACE/
【?】;
else
max_ending_here += x[i];
if (max_ending_here > max_so_far)
max_so_far = max_ending_here;
}
/SPACE/
【?】;
}

include <stdio.h>

void main(void)
{
int x[] = { 2, -3, 1, -1, 3, -2, -3, 3};
int n = sizeof(x)/sizeof(int);
int i;
printf("\nMaximum Consecutive Elements Sum Program");
printf("\n========================================");
printf("\n\nGiven Array 😊;
for (i = 0; i < n; i++)
printf("%4d", x[i]);
printf("\n\nMaximum Sum is %d", max_sum(x, n));
}

答案:

=(答案1)=
int x[]

=(答案2)=
max_ending_here = 0

=(答案3)=
return max_so_far

第140题 (10.0分) 题号:143 难度:易 第5章
/*-------------------------------------------------------
【程序填空】

题目:以下程序是实现输出 x,y,z 三个数中的最大者。

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

include<stdio.h>

main()
{
int x = 4, y = 6,z = 7;
/SPACE/
int u ,【?】;
if(x>y)
/SPACE/
【?】;
else u = y;
if(u>z)
v = u;
else
v=z;
printf("the max is %d",v );
}

答案:

=(答案1)=
v

=(答案2)=
u=x

第141题 (10.0分) 题号:144 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:下面程序的功能是用递归法求n!。
-------------------------------------------------------*/

include <stdio.h>

void main()
{
/SPACE/
【?】;
int n;
long y;
printf("input an integer number:");
scanf("%d",&n);
/SPACE/
y=【?】;
printf("%d!=%ld\n",n,y);
}

long fac(int n)
{
long f;
if(n<0)
printf("n<0,data error!");
else if(n0,n1)
f=1;
else
/SPACE/
f=【?】;
return(f);
}

答案:

=(答案1)=
long fac(int n)

=(答案2)=
fac(n)

=(答案3)=
fac(n-1)*n
==
n *fac(n-1)

第142题 (10.0分) 题号:145 难度:易 第6章
/*-------------------------------------------------------
【程序填空】

题目:有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)       
s=s+1.0/(k*(k+1)); 
printf("s=%f\n\n",s); 

请填空,使下面用//////....//////标识的程序段的功能与
之完全相同。

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

include <stdio.h>

main()
{
double s;
int k,n=10;
/SPACE/
【?】;
k=1;
/SPACE/
while(【?】)
{
s=s+1.0/(k*(k+1));
/SPACE/
【?】;
}
printf("s=%f\n\n",s);
}

答案:

=(答案1)=
s=1.0
==
s=1

=(答案2)=
k<=n

=(答案3)=
k++
==
k=k+1

第143题 (10.0分) 题号:146 难度:易 第4章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是:输出a、b、c三个变量中的最小值。

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

include <stdio.h>

main()
{
int a,b,c,t1,t2;
/SPACE/
scanf("%d%d%d",&a,&b, 【?】);
t1=a<b? a:b;
/SPACE/
t2=c<t1? 【?】;
printf("%d\n",t2);
}

答案:

=(答案1)=
&c

=(答案2)=
c:t1

第144题 (10.0分) 题号:147 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

功能:有一整数数组x(正序排列),判断是否有数组元素x[i]=i
的情况发生。

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

include <stdio.h>

int index_search(int x[], int n)
{
int first = 0;
int last = n-1;
int middle, index;
index = -1;
while (first <= last)
{
middle = (first + last) / 2;
/SPACE/
if (【?】)
{
index = middle;
break;
}
/SPACE/
else if (【?】)
last = middle - 1;
else
first = middle + 1;
}
return index;
}

include <stdio.h>

void main(void)
{
int x[] = { -1, 0, 1, 3, 5, 7, 9, 10};
int n = sizeof(x)/sizeof(int);
int answer, i;
printf("\nindex Search Program");
printf("\n====================");
printf("\n\nGiven Array 😊;
for (i = 0; i < n; i++)
printf("%5d", x[i]);
/SPACE/
【?】;
if (answer >= 0)
printf("\n\nYES, x[%d] = %d has been found.", answer, answer);
else
printf("\n\nNO, there is no element with x[i] = i");
}

答案:

=(答案1)=
x[middle] == middle

=(答案2)=
x[middle] > middle
==
middle<x[middle]

=(答案3)=
answer = index_search(x, n)

第145题 (10.0分) 题号:148 难度:易 第20章
/*-------------------------------------------------------
【程序填空】

功能:下面程序是计算 sum=1+(1+1/2)+(1+1/2+1/3)+...
(1+1/2+...1/n)的值。
例如:当n=3,sum=4.3333333

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

include <stdio.h>

double f(int n)
{
int i;
double s;
s=0;
for(i=1;i<=n;i++)
/SPACE/
【?】;
return s;
}
main()
{
int i,m=3;
double sum=0;
for(i=1;i<=m;i++)
/SPACE/
【?】;
/SPACE/
printf("【?】\n",sum);
}

答案:

=(答案1)=
s+=1.0/i
==
s+=1/i
==
s= s + 1.0/i
==
s= s + 1/i

=(答案2)=
sum+=f(i)
==
sum= sum + f(i)

=(答案3)=
%lf

第146题 (10.0分) 题号:149 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

功能:调用函数fun计算m=1-2+3-4+……+9-10,并输出结果。

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

include <stdio.h>

int fun( int n)
{
int m=0,f=1,i;
/SPACE/
for(i=1;【?】;i++)
{
m+=i*f;
/SPACE/
【?】;
}
/SPACE/
return 【?】;
}

main()
{
printf("m=%d\n", fun(10));
}

答案:

=(答案1)=
i<=n

=(答案2)=
f= -f
==
f= -1f
==
f=f
-1

=(答案3)=
m

第147题 (10.0分) 题号:150 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:从键盘输入的字符中统计数字字符
的个数,用换行符结束循环。请填空。
例如:
输入:CADX2012JSJ0623
输出:8

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

include<stdio.h>

void main()
{
int n=0,c;
c=getchar();
/SPACE/
while(【?】)
{
/SPACE/
if(【?】)
n++;
c=getchar();
}
printf("%d",n);
}

答案:

=(答案1)=
c!='\n'

=(答案2)=
c>='0' && c<='9'

第148题 (10.0分) 题号:151 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:数组ss已按指定格式初始化,输出
行列号之和为3的数组元素。请填空。

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

include <stdlib.h>

include <stdio.h>

void main() /注意:请不要修改或删除程序行/
{
static char ss[4][3]={'A','a','f','c','B','d','e','b','C','g','f','D'};
int x,y,z;
/SPACE/
for(x=0; 【?】; x++)
/SPACE/
for(y=0; 【?】; y++)
{
z=x+y;
/SPACE/
if(【?】)
printf("%c",ss[x][y]);
}
}

答案:

=(答案1)=
x<=3
==
x<4

=(答案2)=
y<=2
==
y<3

=(答案3)=
z==3

第149题 (10.0分) 题号:152 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,sum(int n)函数的功能是:递归调用计算1~n的
累加和。请填空。
例如:
输入:100
输出:5050

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

include "stdio.h"

int sum(int n)
{
if(n==1)
/SPACE/
【?】;
else
/SPACE/
【?】;
}
void main()
{
int m;
scanf("%d",&m);
printf("%d",sum(m));
}

答案:

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

=(答案2)=
return( sum(n-1) + n )
==
return sum(n-1) + n

第150题 (10.0分) 题号:153 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

请编写程序,从键盘输入10个整数,确认第1个数在后面的数中
是否存在;若存在则输出第二次出现的位置(数组元素下标);
若不存在则输出-1。请填空。
输入:8 2 4 7 8 12 6 8 5 7
输出:4
输入:3 2 4 7 8 12 6 8 5 7
输出:-1

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

include "stdio.h"

void main()
{
int a[10],i,f=-1;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
/SPACE/
if(【?】==a[0])
{
/SPACE/
【?】;

break;

}
printf("%d",f);
}

答案:

=(答案1)=
a[i]

=(答案2)=
f=i

第151题 (10.0分) 题号:154 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:假设a数组中的数据已按由大到小的
顺序存放,以下程序可把a数组中相同的数据删的只剩一个,然后
输出a数组。请填空。
例如:输入:110 90 90 5 5 3 3 3 1 1
删除后结果为:110 90 5 3 1

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

include "stdio.h"

define M 10

void main()
{
int a[M],i,j,n;
for(i=0;i<M;i++)
scanf("%d",&a[i]);
n=M-1;
for(i=M-1;i>0;i--)
{
if (a[i]== a[i-1])
{
/SPACE/
for(j= 【?】;j<=n;j++)
/SPACE/
a[j-1]= 【?】 ;
n--;
}
}
for(i=0;i<=n;i++)
/SPACE/
printf("%3d",【?】);
}

答案:

=(答案1)=
i

=(答案2)=
a[j]

=(答案3)=
a[i]

第152题 (10.0分) 题号:155 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:输出2个字符串中长度较短的串的
长度。请填空。
例如:
输入:Sunday
Monthday
输出:6

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

include <string.h>

include <stdio.h>

void main() /注意:请不要修改或删除程序行/
{
char a1[20],a2[20];
int l1,l2,num;
gets(a1);
gets(a2);
/SPACE/
l1=【?】;
/SPACE/
l2=【?】;
/SPACE/
num=(【?】)?l1:l2;
printf("%d",num);
}

答案:

=(答案1)=
strlen(a1)

=(答案2)=
strlen(a2)

=(答案3)=
l2 > l1
==
l1 < l2

第153题 (10.0分) 题号:156 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:求矩阵的转置。请填空。

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

include <stdlib.h>

include <stdio.h>

void main()
{
int a[2][4]={1,3,5,7,2,4,6,8},b[4][2];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<4;j++)
/SPACE/
b[j][i]=【?】;
/SPACE/
for(i=0;i<【?】;i++)
printf("%2d %2d\n",b[i][0],b[i][1]);
}

答案:

=(答案1)=
a[i][j]

=(答案2)=
4

第154题 (10.0分) 题号:157 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:输出100以内能被3整除且个位数为6
的所有正整数。请填空。

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

include "stdio.h"

void main()
{
int i,j;
/SPACE/
for(i=0;【?】; i++)
{
j=i*10+6;
/SPACE/
if(【?】)
continue;
printf("%d ",j);
}
}

答案:

=(答案1)=
i<10
==
i<=9

=(答案2)=
i%3!=0
==
j%3!=0

第155题 (10.0分) 题号:158 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:从键盘输入的字符中统计数字字符
的个数,用换行符结束循环。请填空。
例如:
输入:12ab34cd
输出:4

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

include<stdio.h>

void main()
{
int n=0,c;
c=getchar();
/SPACE/
while(【?】)
{
/SPACE/
if(【?】)
n++;
c=getchar();
}
printf(" %d个数字\n",n);
}

答案:

=(答案1)=
c!='\n'

=(答案2)=
c>='0' && c<='9'
==
'0'<=c && c<='9'
==
'0'<=c && '9'>=c
==
c>='0' && '9'>=c

第156题 (10.0分) 题号:159 难度:易 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:由键盘输入10个整数,计算这10个
整数中的奇数和与偶数和。请填空。

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

include <stdio.h>

void main()
{
int a,b,c,i;
a=c=0;
for(i=1;i<=10;i++)
{
scanf("%d",&b);
/SPACE/
if(【?】)
a=a+b;
else
/SPACE/
【?】;
}
printf("偶数的和=%d\n",a);
printf("奇数的和=%d\n",c);
}

答案:

=(答案1)=
b%2==0

=(答案2)=
c=c+b
==
c=b+c

第157题 (10.0分) 题号:160 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

给定程序中,程序的功能是:输入2个字符串,输出2个字符串中
较短串的长度。请填空。

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

include <string.h>

include <stdio.h>

void main() /注意:请不要修改或删除程序行/
{
char a1[20],a2[20];
int l1,l2,num;
gets(a1);
gets(a2);
/SPACE/
l1=【?】;
/SPACE/
l2=【?】;
/SPACE/
num=(【?】)?l1:l2;
printf("%d",num);
}

答案:

=(答案1)=
strlen(a1)

=(答案2)=
strlen(a2)

=(答案3)=
l1<l2
==
l2>l1

第158题 (10.0分) 题号:161 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通
过变量num传入函数fun()。请补充函数fun(),该函数的

功能是:从数组xx中找出个位和百位的数字相等的所有无符号整
数,结果保存在数组yy中,其个数由函数fun()返回。

例如:当xx[8]={135,787,232,222,424,333,141,541}时,
bb[6]={787,232,222,424,333,141}。

注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数
fun()的横线上填入所编写的若干表达式或语句。

试题程序:

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

include<stdio.h>

include<conio.h>

include<stdlib.h>

define N 1000

int fun(int xx[],int bb[],int num)
{
int i,n=0;
int g,b;
for(i=0;i<num;i++)
{
/SPACE/
g=【?】;
b=xx[i]/100;
if(g==b)
/SPACE/
【?】;
}
/SPACE/
return【?】
}
void main()
{
int xx[8]={135,787,232,222,424,333,141,541};
int yy[N];
int num=0,n=0,i=0;
num=8;
system("CLS");
printf("***original data ***\n");
for(i=0;i<num;i++)
printf("%u ",xx[i]);
printf("\n\n\n");
n=fun(xx,yy,num);
printf("\nyy= ");
for(i=0;i<n;i++)
printf("%u ",yy[i]);
}

答案:

=(答案1)=
xx[i]%10

=(答案2)=
bb[n + +]=xx[i]

=(答案3)=
n;

第159题 (10.0分) 题号:162 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

请补充main函数,该函数的功能是求方程axx+bx+c=0的两个实数
根。方程的系数a、b、c从键盘输入,如果判别式(disc=b
b-4ac)
小于0,则要求重新输入a、b、c的值。

例如:当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00,
x2=-1.00。

注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()
的横线上填入所编写的若干表达式或语句。

试题程序:

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

include <math.h>

include <stdio.h>

include <stdlib.h>

void main()
{
float a,b,c, disc,x1,x2;
system("CLS");
do
{
printf("Input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
disc=bb-4ac;
if(disc<0)
printf("disc=%f\n Input again!\n",disc);
}
/SPACE/
while(【?】);
printf("
the result*\n");
/SPACE/
x1=【?】;
/SPACE/
x2=【?】;
printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);
}

答案:

=(答案1)=
disc<0
==
disc<=0

=(答案2)=
(-b + sqrt(disc))/(2a)
==
(-b - sqrt(disc))/(2
a)

=(答案3)=
(-b - sqrt(disc))/(2a)
==
(-b + sqrt(disc))/(2
a)

第160题 (10.0分) 题号:163 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

请补充函数fun(),该函数的功能是:把一个整数转换成字符串,
并倒序保存在字符数组str中。

例如:当n=13572468时,str="86427531"。

注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数
fun的横线上填入所编写的若干表达式或语句。

试题程序:

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

include<stdlib.h>

include<stdio.h>

include<conio.h>

define N 80

char str[N];

void fun(long int n)
{
int i=0;
/SPACE/
while(【?】)
{
/SPACE/
str[i]= 【?】 ;
n/=10;
i++;
}
/SPACE/
【?】;
}

void main()
{
long int n=13572468;
system("CLS");
printf("*** the origial data ***\n");
printf("n=%ld",n);
fun(n);
printf("\n%s",str);
}

答案:

=(答案1)=
n>0
==
n>=0
==
n
==
n!=0

=(答案2)=
n%10+'0'
==
'0'+n%10

=(答案3)=
str[i]='\0'

第161题 (10.0分) 题号:164 难度:中 第3章
/*-------------------------------------------------------
【程序填空】

题目:给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二
分之一的圆面积(注:圆面积公式为: 2,在程序中定义的变量名要与公式的变量相同)。
例如:输入圆的半径值:19.527,输出为:s=598.949991。
注意:部分源程序给出如下。
-------------------------------------------------------*/

include <stdio.h>

void main()
{ double x;
printf("Enter x: ");
/SPACE/
scanf("%lf", 【?】 );
/SPACE/
printf("s=%lf\n",3.14159* 【?】/2.0); }

答案:

=(答案1)=
&x

=(答案2)=
x*x

第162题 (10.0分) 题号:165 难度:易 第4章

/*-------------------------------------------------------
【程序填空】

题目:输入x、y两个整数,按先大后小的顺序输出x、y。

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

include <stdio.h>

void main( )
{ int x,y, t ;
scanf("%d %d",&x,&y);
if(x<y)
/SPACE/
{ 【?】 ;
/SPACE/
【?】 ;
/SPACE/
【?】 ; }
printf("x=%d,y=%d\n",x,y); }

答案:

=(答案1)=
t=x
==
t=y

=(答案2)=
x=y
==
y=x

=(答案3)=
y=t
==
x=t

第163题 (10.0分) 题号:166 难度:易 第4章
/*-------------------------------------------------------
【程序填空】

题目:输入一个三位数,按逆序输出各个位数。

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

include <stdio.h>

void main( )
{ int x,a,b,c,y;
scanf("%d",&x);
/SPACE/
a= 【?】 ;
/SPACE/
b= 【?】 ;
/SPACE/
c= 【?】 ;
y=a100+b10+c;
printf("y=%d\n",y);}

答案:

=(答案1)=
x%10

=(答案2)=
x/10%10

=(答案3)=
x/100

第164题 (10.0分) 题号:167 难度:中 第4章
/*-------------------------------------------------------
【程序填空】

题目:输入百分制成绩,要求输出成绩的等级'A','B','C','D','E'。
90分以上为'A',80~89分为'B',70~79分为'C',60~69分
为'D',60分以下为'E'。

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

include "stdio.h"

void main( )
{ float score;
/SPACE/
【?】 ;
printf("请输入学生成绩:");
scanf("%f",&score);
/SPACE/
switch( 【?】 )
{ 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); }

答案:

=(答案1)=
char grade

=(答案2)=
(int)score/10

第165题 (10.0分) 题号:168 难度:中 第5章
/*-------------------------------------------------------
【程序填空】

题目:下面程序的功能是:计算1-100之间的奇数之和与偶数之和,请填空。

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

include<stdio.h>

void main()
{ int a,b,c,i; a=c=0;
for(i=0;i<=100;i+=2)
{ a+=i;
/SPACE/
【?】
c+=b; }
printf("偶数之和=%d\n",a);
/SPACE/
printf("奇数之和=%d\n",【?】); }

答案:

=(答案1)=
b=i+1
==
b=1+i

=(答案2)=
c-101

第166题 (10.0分) 题号:169 难度:中 第5章
/*-------------------------------------------------------
【程序填空】

题目:下面程序的功能是:输出100以内能被3整除且个位为6的所有整数,请填空。

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

include<stdio.h>

void main()
{ int i,j;
/SPACE/
for(i=0; 【?】 ;i++)
{ j=i*10+6;
/SPACE/
if( 【?】 ) continue;
printf("%d",j); } }

答案:

=(答案1)=
i<10
==
i<=9
==
10>i
==
9>=i

=(答案2)=
j%3!=0
==
j%3

第167题 (10.0分) 题号:170 难度:中 第5章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出
最高成绩和最低成绩,当输入负数时结束输入,请填空。

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

include<stdio.h>

void main()
{ float x,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
/SPACE/
while( 【?】 )
{ if(x>amax) amax=x;
/SPACE/
if( 【?】 ) amin=x;
scanf("%f",&x);}
printf("\namax=%f\n amin=%f\n",amax,amin);}

答案:

=(答案1)=
x>=0
==
0<=x
==
x>0
==
0<x

=(答案2)=
x<amin
==
amin>x

第168题 (10.0分) 题号:171 难度:中 第5章
/*-------------------------------------------------------
【程序填空】

题目:下列程序的功能是计算:s=1+12+123+1234+12345。请填空。

-------------------------------------------------------*/
void main()
{ int t=0,s=0,i;
for(i=1;i<=5;i++)
/SPACE/
{ t=i+ 【?】 ;
s=s+t; }
printf("s=%d\n",s); }

答案:

=(答案1)=
t10
==
10
t

第169题 (10.0分) 题号:172 难度:中 第5章
/*-------------------------------------------------------
【程序填空】

题目:下列程序的功能是:将输入的正整数按逆序输出。若输入135
则输出531。请填空。

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

include<stdio.h>

void main()
{ int n,s;
printf("enter a,number:");
scanf("%d",&n);
printf("output:");
do {
s=n%10;
printf("%d",s);
/SPACE/
【?】 ;}while(n!=0);
printf("\n"); }

答案:

=(答案1)=
n=n/10
==
n/=10

第170题 (10.0分) 题号:173 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

题目:以下函数用以求x的y次方,请填空。

-------------------------------------------------------*/
int fun(int x,int y)
{ int i;
int z=1;
/SPACE/
for(i=1;i 【?】 ;i++)
/SPACE/
z= 【?】 ;
return z; }

main()
{ int x;
int y;
scanf("%d",&x);
scanf("%d",&y);
printf("%d,%d\n",x,y);
printf("%d\n",fun(x,y));
}

答案:

=(答案1)=
<=y

=(答案2)=
zx
==
x
z

第171题 (10.0分) 题号:174 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

题目:阅读以下程序并填空,该程序是求阶乘的累加和。
S=0!+1!+2!+.........+n!

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

include<stdio.h>

long f(int n)
{ int i;
long s;
/SPACE/
s= 【?】 ;
for(i=1;i<=n;i++)
/SPACE/
s= 【?】 ;
return s;}
void main()
{ long s;
int k,n;
scanf("%d",&n);
/SPACE/
s= 【?】;
for(k=0;k<=n;k++)
/SPACE/
s=s+ 【?】;
printf("%1d\n",s); }

答案:

=(答案1)=
1

=(答案2)=
si
==
i
s

=(答案3)=
0

=(答案4)=
f(k)

第172题 (10.0分) 题号:175 难度:中 第6章
/*-------------------------------------------------------
【程序填空】

题目:请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)
之间所有数的和(n和m从键盘输入)。
例如:当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。
注意:部分源程序给出如下,请勿改动main函数和其他函数中的任何内容。
---------------------------------------------------------*/

include <stdlib.h>

include <stdio.h>

include <conio.h>

void main()
{ int n,m;
long sum;
/SPACE/
【?】 ;
system("CLS");
printf("\nInput n,m\n");
scanf("%d,%d",&n,&m);
while(n<=m)
/SPACE/
{ 【?】 ; n++; }
/SPACE/
printf("sum=% 【?】 \n",sum); }

答案:

=(答案1)=
sum=0

=(答案2)=
sum+=n
==
sum=sum+n
==
sum=n+sum

=(答案3)=
ld

第173题 (10.0分) 题号:176 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项
减前项之差存入数组b,并按每行4个元素输出数组b,请填空。

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

include<stdio.h>

void main()
{ int a[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
/SPACE/
【?】 ;
for(i=1;i<10;i++)
/SPACE/
{ printf("%d ", 【?】 );
if(i%4==0) printf("\n"); }
}

答案:

=(答案1)=
b[i-1]=a[i]-a[i-1]

=(答案2)=
b[i-1]

第174题 (10.0分) 题号:177 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:下面程序将二维数组a的行和列元素互换后存放到另一个二维数组b中,请填空。

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

include<stdio.h>

void main( )
{ int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j;
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
/SPACE/
【?】 ; }
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
/SPACE/
printf("%d ",【?】);

printf("\n"); }

}

答案:

=(答案1)=
b[j][i]=a[i][j]

=(答案2)=
b[i][j]

第175题 (10.0分) 题号:178 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:下列程序功能是:求出数组x中各相邻两个元素的和依次存
放到a数组中,然后输出。请填空。

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

include<stdio.h>

void main()
{ int x[10],a[9],i;
for (i=0;i<10;i++)
scanf("%d",&x[i]);
/SPACE/
for( 【?】 ;i<10;i++)
/SPACE/
a[i-1]=x[i]+ 【?】;
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n"); }

答案:

=(答案1)=
i=1

=(答案2)=
x[i-1]

第176题 (10.0分) 题号:179 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:用冒泡法进行排序。

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

include<stdio.h>

void main()
{ int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/SPACE/
for(i=1; 【?】 ;i++)
/SPACE/
for(j=0; 【?】;j++)
if(a[j]>a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<=9;i++)
printf("%4d",a[i]);
printf("\n"); }

答案:

=(答案1)=
i<10
==
i<=9
==
10>i
==
9>=i

=(答案2)=
j<10-i
==
j<=9-i
==
10-i>j
==
9-i>=j

第177题 (10.0分) 题号:180 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:用选择法进行排序。

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

include<stdio.h>

void main()
{ int a[10],i,j,t,mini,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/SPACE/
for(i=0; 【?】 ;i++)
{ mini=i;
/SPACE/
for( 【?】 ;j<=9;j++)
if(a[j]<a[mini])
mini=j;
if(i!=mini)
{t=a[i];a[i]=a[mini];a[mini]=t;}
}
for(i=0;i<=9;i++)
printf("%4d",a[i]);
printf("\n"); }

答案:

=(答案1)=
i<9
==
i<=8
==
9>i
==
8>=i

=(答案2)=
j=i+1
==
j=1+i

第178题 (10.0分) 题号:181 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:在数组内实现逆序输出。

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

include<stdio.h>

void main()
{ char a[100];
char b;
int i=0;
int n;
gets(a);
n=strlen(a);
/SPACE/
while( 【?】 )
{ b=a[i];
/SPACE/
【?】 ;
a[n-1-i]=b;
i++; }
a[n]='\0';
printf("%s",a); }

答案:

=(答案1)=
i<n/2
==
i<(n/2)

=(答案2)=
a[i]=a[n-1-i]
==
a[i]=a[n-i-1]

第179题 (10.0分) 题号:182 难度:难 第7章
/*-------------------------------------------------------
【程序填空】

题目:判断字符串是否为回文。

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

include<stdio.h>

include<string.h>

void main()
{ char a[100];
int n;int i=0;int flag=0;
gets(a);
n=strlen(a);
while(i<n/2)
/SPACE/
{ 【?】
flag=1;
else
{ flag=0;
/SPACE/
【?】 ; }
i++; }
if(flag==1) printf("shi");
else printf("bushi"); }

答案:

=(答案1)=
if(a[i]a[n-1-i])
==
if(a[n-i-1]
a[i])
==
if(a[n-1-i]a[i])
==
if(a[i]
a[n-i-1])

=(答案2)=
break

第180题 (10.0分) 题号:183 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:在数组内指定位置i插入元素x

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

include<stdio.h>

void main()
{ int a[11],i,j,x;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d%d",&i,&x);
/SPACE/
for(j=9; 【?】 ;j--)
/SPACE/
【?】 ;
a[i]=x;
for(i=0;i<11;i++)
printf("%d",a[i]); }

答案:

=(答案1)=
j>=i
==
j>i-1
==
i<=j
==
i-1<j
==
j>i
==
i<j

=(答案2)=
a[j+1]=a[j]

第181题 (10.0分) 题号:184 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:在数组内删除指定元素x

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

include<stdio.h>

void main()
{ int a[10],i,j,x;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0;a[i]!=x;i++)
/SPACE/
【?】
for(j=i;j<=8;j++)
/SPACE/
【?】 ;
for(i=0;i<9;i++)
printf("%d ",a[i]); }

答案:

=(答案1)=
a[i]=a[i];
==
;

=(答案2)=
a[j]=a[j+1]
==
a[j]=a[1+j]

第182题 (10.0分) 题号:185 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:用折半查找法在有序数组中查找指定元素x

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

include<stdio.h>

void main()
{ int a[10],x,i,start,end,flag=0;
printf("输入10个有序数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("please enter the number:\n");
scanf("%d",&x);
/SPACE/
for(start=0,end=9; 【?】 😉
/SPACE/
{ 【?】 ;
if (xa[i])
{ flag=1; break; }
/SPACE/
else if (x>a[i]) 【?】 ;
else end = i-1; }
if(flag
1) printf("found:a[%d]",i);
else printf(" not found"); }

答案:

=(答案1)=
start<=end
==
start<end+1
==
end>=start
==
end+1>start
==
1+end>start
==
start<1+end

=(答案2)=
i=(start+end)/2

=(答案3)=
start=i+1
==
start=1+i

第183题 (10.0分) 题号:186 难度:难 第7章
/*-------------------------------------------------------
【程序填空】

题目:统计26个字母在数组中各自出现的次数

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

include<stdio.h>

void main()
{ char a[100]; int i=0,b[26];
for(i=0;i<26;i++)
/SPACE/
【?】 ;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>='a'&&a[i]<='z')
/SPACE/
【?】 ;
for(i=0;i<26;i++)
printf("%4d",b[i]); }

答案:

=(答案1)=
b[i]=0

=(答案2)=
b[a[i]-'a']++
==
b[a[i]-'a']=b[a[i]-'a']+1
==
b[a[i]-'a']=1+b[a[i]-'a']
==
b[a[i]-97]++
==
b[a[i]-97]=b[a[i]-'a']+1
==
b[a[i]-97]=b[a[i]-97]+1
==
b[a[i]-'a']=b[a[i]-97]+1
==
b[a[i]-97]=1+b[a[i]-'a']
==
b[a[i]-'a']=1+b[a[i]-97]
==
b[a[i]-97]=1+b[a[i]-97]

第184题 (10.0分) 题号:187 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:将数字字符串转换为整数

-------------------------------------------------------/
void main()
{ int i=0,flag=-1,n=0;
char a[100]; gets(a);
if(a[i]'-')
{ i++; flag=-1; }
else
if(a[i]
'+')
/SPACE/
{ 【?】 ; flag=1; }
else
flag=1;
for(;a[i]!='\0';i++)
/SPACE/
【?】 ;
n=n
flag;
printf("%d",n); }

答案:

=(答案1)=
i++
==
i=i+1
==
i=1+i

=(答案2)=
n=n10+a[i]-'0'
==
n=a[i]-'0'+n
10
==
n=10n+a[i]-'0'
==
n=n
10-48+a[i]
==
n=a[i]-'0'+10n
==
n=n
10+a[i]-48
==
n=a[i]-48+n10
==
n=n
10-'0'+a[i]
==
n=a[i]-48+10*n

第185题 (10.0分) 题号:188 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:将十进制整数转换为任意进制整数

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

include<stdio.h>

main()
{ int i=0,m,k,a[20];
scanf("%d%d",&m,&k);
for(i=0;m!=0;i++)
{ a[i]=m%k;
/SPACE/
【?】 ; }
for(;i>0;i--)
/SPACE/
printf("%d", 【?】 ); }

答案:

=(答案1)=
m=m/k
==
m/=k

=(答案2)=
a[i-1]

第186题 (10.0分) 题号:189 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:程序计算a、b两个整数的最大公约数和最小公倍数。
注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include<stdio.h>

int lcm(int , int );
int gcd(int , int);
int main(){
int a,b;
printf("输入a,b ");
scanf("%d%d",&a,&b);

/SPACE/
printf("a=%d,b=%d的最大公约数= %d\n",【?】);
/SPACE/
printf("a=%d,b=%d的最小公倍数= %d\n",【?】);
return 0;
}
int lcm(int a, int b){
int i, c;
for(i=c=a>b? a : b ; i%a!=0 || i%b!=0 ; i+=c) ;
return i;
}
int gcd(int a, int b){
int i;
for(i=a<b? a : b; a%i!=0 || b%i!=0; i--) ;
return i;
}

答案:

=(答案1)=
a,b,gcd(a,b)
==
a,b,gcd(b,a)

=(答案2)=
a,b,lcm(a,b)
==
a,b,lcm(b,a)

第187题 (10.0分) 题号:190 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:程序将输入的一个十进制正整数转换为十六进制字符形式并显示。
例如输入整数43871,显示AB5F。
注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include <stdio.h>

int main(){
char hex[17]={"0123456789ABCDEF"};
int c[20], i, n, base, dec;
printf("输入十进制正整数 ");
scanf("%d",&dec);
i=0; base=16; n=dec;
do{
c[i++]= dec%base;
/SPACE/
dec=【?】;
}while(dec);
printf("%d对应的十六进制数是:",n);
for(--i; i>=0; i--)
/SPACE/
printf("%c",【?】);
printf("\n");
return 0;
}

答案:

=(答案1)=
dec/base

=(答案2)=
hex[c[i]]

第188题 (10.0分) 题号:191 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:程序首先将随机产生的12个水仙花数存放于一个3行4列的数组array中, 然后找出
其中的最大的水仙花数所在的行号与列号,并显示最大水仙花数、以及行号与列号。

说明:所谓水仙花数是指其各位数字立方和等于该数本身的数。

注意:除要求填空的位置之外,请勿改动程序中的其他内容。
-------------------------------------------------------*/

include <stdio.h>

include <stdlib.h>

include <time.h>

include <math.h>

int narcissus() ;
int max_value(int [][4],int []);
int main()
{
int array[3][4]; //用于存放12个水仙花数
int row_col_num[2]; //用于存放最大水仙数的行列号
int i,j;

srand((unsigned)time(NULL));
printf("\n");
for(i=0;i<3;i++)
{
    for(j=0;j<4;j++)
    {
        array[i][j]=narcissus();
        printf("%5d",array[i][j]);
    }
    printf("\n");

}
/SPACE/
printf("最大水仙花数是 %d\n",【?】);
printf("行号是 %5d\n",row_col_num[0]);
printf("列号是 %5d\n",row_col_num[1]);
return 0;
}
int narcissus(){
int M,N,t,sum,find=0;
while(!find) {
sum=0;
N=rand()%900+100;
M=N;
while(M)
{
t=M%10;
/SPACE/
【?】;
M=M/10;
}
if(N==sum) find=1;
}
return N;
}

int max_value(int array[][4],int rw[]){
int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<array[i][j])
{
max=array[i][j];
rw[0]=i;
rw[1]=j;
}
return max;
}

答案:

=(答案1)=
max_value(array,row_col_num)

=(答案2)=
sum+=ttt
==
sum= sum +ttt
==
sum=ttt+sum

第189题 (10.0分) 题号:192 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:用递归法将一个任意位数的整数n转换为相应的字符串。
例如输入40728,输出字符'4'、'0'、'7'、'2'、'8',输入-31156,
输出字符'-'、'3'、'1'、'1'、'5'、'6'。
注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include <stdio.h>

void convert(int );
int main(){
int number;
printf("输入整数: ");
scanf("%d",&number);
printf("输出整数字符: ");
if (number<0)
{
putchar('-');
/SPACE/
number=【?】;
}
convert(number);
printf("\n");
return 0;
}
void convert(int n)
{
int i;
if ((i=n/10)!=0)
convert(i);
/SPACE/
putchar(【?】);
}

答案:

=(答案1)=
-number
==
-1*number
==
number *-1

=(答案2)=
n%10+'0'
==
n%10+48
==
'0'+n%10
==
48+n%10

第190题 (10.0分) 题号:193 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:主函数main()完成3*3二维数组的行列互换
注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include <stdio.h>

define N 3

void convert(int [][3]);
int main(){
int i,j;
int array[N][N]={1,2,3,4,5,6,7,8,9};
printf("互换前:\n");
for (i=0;i<N;i++)
{ for (j=0;j<N;j++)
printf("%5d",array[i][j]);
printf("\n");
}
/SPACE/
【?】;
printf("互换后:\n");
for (i=0;i<N;i++)
{ for (j=0;j<N;j++)
printf("%5d",array[i][j]);
printf("\n");
}
return 0;
}
void convert(int array[][3]){
int i,j,t;
for (i=0;i<N;i++)
for (j=i+1;j<N;j++)
{ t=array[i][j];
/SPACE/
【?】;
array[j][i]=t;
}
}

答案:

=(答案1)=
convert(array)
==
convert(&array[0])

=(答案2)=
array[i][j]=array[j][i]

第191题 (10.0分) 题号:194 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:change(char s1[],char s2[][10])函数将字符串s1中的连续数字子串按照。
如下:规则转换为新的字符串,并保存在s2字符串数组中。函数返回数字子串的个数。
1)第一个数字字符是'0',将该字符转换为'+',例如,"0309"转换为"+309"。
2)第一个数字字符是'1',将该字符转换为'-',例如,"187"转换为" -87"。
1)第一个数字字符既不是'0',也不是'1',则该数字子串不作转换。
例如 s1为"Jiangsu0309University187of45Technology",则s2为"+309"、"-87"、"45"。

注意:除要求填空的位置之外,请勿改动程序中其他内容。
-------------------------------------------------------*/

include <stdio.h>

include <ctype.h>

int change(char [],char [][10]);
int main(){
char str1[]="Jiangsu0309University187of45Technology";
char str2[5][10];
int i,len=change(str1,str2);
for(i=0;i<len;i++)
printf("%s\n",str2[i]);
return 0;
}
int change(char s1[],char s2[][10]){
int i,j,n;
i=n=0;
while(s1[i]){
while(s1[i] && isalpha(s1[i]))
i++;
/SPACE/
【?】;
if(s1[i]){
while(s1[i] && isdigit(s1[i])){
s2[n][j]=s1[i];
j++;i++;
}
/SPACE/
s2[【?】][j]=0;
}
}
for(i=0;i<n;i++)
s2[i][0]=(s2[i][0]'1' ? '-' : s2[i][0]'0' ? '+' : s2[i][0]);
return n;
}

答案:

=(答案1)=
j=0

=(答案2)=
n++
==
++n
==
n=n+1

第192题 (10.0分) 题号:195 难度:中 第8章
/*-------------------------------------------------------
【程序填空】

题目:sort()函数将from数组中的元素逐个放入to数组中,使得to数组中的元素按升序排列。

注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include <stdio.h>

define N 10

void sort(int [],int []);
int main(){
int a[N]={12,5,-3,20,6,0,9,5,12,-7},b[N];
int i;
for(i=0;i<N;i++)
printf("%d\t",a[i]);
/SPACE/
sort(【?】);
for(i=0;i<N;i++)
printf("%d\t",b[i]);
return 0;
}
void sort(int from[],int to[]){
int i,j,k;
for(i=0;i<N;i++){
k=0;
for(j=0;j<N;j++)
/SPACE/
if(from[i]>from[j] || from[i]==from[j]&& 【?】)
k++;
to[k]=from[i];
}

}

答案:

=(答案1)=
a ,b
==
& a[0],&b[0]

=(答案2)=
i>j
==
j<i

第193题 (10.0分) 题号:196 难度:中 第7章
/*-------------------------------------------------------
【程序填空】

题目:程序第一个for循环中给a数组10个元素依次赋字符
'A'、'B'、'C'、'D'、'E'、'V'、'W'、'X'、'Y'、'Z'。
第二个for循环中使a数组10个元素的值对称折叠,
变成'A'、'B'、'C'、'D'、'E'、'E'、'D'、'C'、'B'、'A'。.
第三个for循环输出的字符依次是'A'、'B'、'C'、'D'、'E'、'A'、'B'、'C'、'D'、'E'。

注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include <stdio.h>

int main(){
int a[10], i;
for(i=0;i<10;i++)
if(i<5) a[i]=i+65;
/SPACE/
else a[i]=【?】;
for(i=0; i<5; i++)
a[9-i]=a[i];
for(i=0;i<10;i++)
/SPACE/
printf("%c\t",a[i<5 【?】]);
printf("\n");
return 0;
}

答案:

=(答案1)=
i+81
==
81+i
==
i+'Q'
==
'Q'+i
==
'V'+i-5
==
'V'-5+i
==
i-5+'V'
==
i+'V'-5

=(答案2)=
? i : i-5
==
? i : 14-i

第194题 (10.0分) 题号:197 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

change()函数的功能是:将一维数组中的元素按行优先的顺序存入二维数组中。
注意:除要求填空的位置之外,请勿改动程序中其他内容。

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

include<stdio.h>

void change(int [],int [][4]);
int main()
{
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
int b[3][4];
int row,col;
/SPACE/
change(【?】);
for(row=0;row<3;row++)
{
for(col=0;col<4;col++)
printf("%5d",b[row][col]);
printf("\n");
}
return 0;
}
void change(int b[],int a[][4])
{
int i;
for(i=0;i<12;i++)
/SPACE/
【?】=b[i];/存入二维数组a/
}

答案:

=(答案1)=
a,b
==
&a[0],&b[0]

=(答案2)=
a[i/4][i%4]

第195题 (10.0分) 题号:198 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:下面的程序首先随机产生20个大于或等于900且小于1000的
素数,然后将这些素数保存在数组array中,并将这些素数
在屏幕上以每行打印5个的格式输出,请将程序补充完整。


注意:请勿改动主函数main()中的其他内容
且不能使用C语言的库函数。
-------------------------------------------------------*/

include <stdio.h>

include <stdlib.h>

include <math.h>

/函数isPrime(int m)用于判断整数m是否为素数/
int isPrime(int m)
{
int flag=0;
int i=2,k;
k=(int)sqrt(m);
/SPACE/
while (i<=k && 【?】) i++;
if(i>k) flag=1;
return flag;
}

void main()
{
int array[20];
int i,t;
i=0;
while(i<20)
{
t=rand()%100+900;
/SPACE/
if (【?】)
{
array[i]=t;
printf("%6d",t);
i++;
if (!(i%5)) printf("\n");
}
}
printf("\n");
}

答案:

=(答案1)=
m%i!=0
==
m%i>0
==
m%i

=(答案2)=
isPrime(t)
==
isPrime(t)!=0
==
isPrime(t)==1

第196题 (10.0分) 题号:199 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:程序实现在一个升序排列的整数数组中插入一个数,使数组
仍保持升序排列。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数进行填空。
-------------------------------------------------------*/

include <stdio.h>

/输出数组元素/
void print_array(int a[],int n) {
int i;
for(i=0;i<n;i++)
printf("%4d", a[i]);
printf("\n");
}

/在数组中插入一个元素,使其仍然有序,x为待插入的数,
n为数组中原有元素的个数
/
void insert_array(int a[],int n,int x){
int i=n-1;
int find=0;
while(i>=0 && !find){
if(x<a[i])
{
/SPACE/
【?】
i--;
}
else find=1;
}
a[i+1]=x;
}

void main(){
int a[11]={1,3,5,8,11,13,17,21,26,30},x;

printf("The array bofore insert:\n");
print_array(a,10);
printf("\nPlease Enter a Intger N=");
scanf("%d",&x);
insert_array(a,10,x);
printf("The array after insert:\n");
/*调用print_array输出插入元素后的数组*/

/SPACE/
【?】
}

答案:

=(答案1)=
a[i+1]=a[i];

=(答案2)=
print_array(a,11);

第197题 (10.0分) 题号:200 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:使用冒泡法将10个随机生成的浮点数进行大到小的排序,
并将排好序的10个数分两行输出。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数进行填空。
-------------------------------------------------------*/

include <stdio.h>

define COUNT 10

include <time.h>

include <math.h>

include <stdlib.h>

void bubble_sort(float f[],int n){
int i,j;
int swap=1;
float t;
i=0;
while(i<n-1 && swap){
swap=0;
for(j=0;j<n-i-1;j++)
{
/SPACE/
if(【?】)
{
t=f[j];
f[j]=f[j+1];
f[j+1]=t;
swap=1;
}
}
i++;
}
}

void main(){
int i;
float f_data[COUNT];
srand((unsigned)time(NULL));
/随机生成10个浮点数/
for(i=0;i<COUNT;i++)
f_data[i]=(float)(rand()%900+100)/(float)10.0;
printf("\n");

/SPACE/
bubble_sort(【?】);

printf("The sorted 10 numbers;\n");
    
for(i=0;i<COUNT;i++) 
{
    if(i%5==0) printf("\n");
    printf("%8.2f",f_data[i]);
}
printf("\n");

}

答案:

=(答案1)=
f[j]<f[j+1]
==
f[j+1]>f[j]

=(答案2)=
f_data,COUNT
==
f_data,10

第198题 (10.0分) 题号:201 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:将从键盘输入的N个整数储存在一个数组中,然后将数组中
的数按从小到大的顺序进行排列。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数进行填空。
-------------------------------------------------------*/

include "stdio.h"

define N 5

/以插入排序的方法将数组a[]中的数据排序,当参数order为0时,
将数据从小到大排列;当参数order为1时,将数据从大到小排列。
/
void insert_sort(int a[],int n,int order)
{
int i,j,t;
for(i=1;i<n;++i)
{
/SPACE/
if(【?】&& order==0)
{
t=a[i];
j=0;
for(j=i-1;j>=0 && t<a[j];--j)
a[j+1]=a[j];
a[j+1]=t;
}

    if(a[i]>a[i-1] && order==1)
    {
        t=a[i];
        j=0;
        for(j=i-1;j>=0 && t<a[j];--j)
            a[j+1]=a[j];
        a[j+1]=t;
    }

}

}

void main( ){
int i,num[N];
for( i=0;i<N;i++ )
{
printf("Enter the No. %3d Integer:\n",i);
scanf("%d",&num[i]);
}
/SPACE/
insert_sort(【?】);

printf("\n\n");
for( i=0;i<N;i++)
    printf("%5d",num[i]);
printf("\n\n");

}

答案:

=(答案1)=
a[i]<a[i-1]
==
a[i-1]>a[i]

=(答案2)=
num,N,0
==
num,5,0

第199题 (10.0分) 题号:202 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:统计从键盘输入的一行字符中单词的个数,单词之间用空
格分开。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数进行填空。
-------------------------------------------------------*/

include <stdio.h>

int word_stat(char string[])
{
char c;
int i,word=0;
int wnum=0;
/SPACE/
for (i=0;【?】;i++)
if(c' ') word=0;
else if(word
0)
{
word=1;
wnum++;
}
/SPACE/
【?】
}

void main()
{
char string[100];
printf("Please enter a string:\n");
gets(string);
printf("The number of words is: %d\n",word_stat(string));
}

答案:

=(答案1)=
(c=string[i])!='\0'
==
c=string[i]
==
(c=string[i])!=0

=(答案2)=
return wnum;
==
return(wnum);

第200题 (10.0分) 题号:203 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:在区间[10,99]中,找出所有符合如下条件的数,该数与其
逆序数均是素数。

例如:13是素数,13的逆序数31也是素数。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

include<math.h>

define N 20

int isprime(int n)
{
int i,k=(int)sqrt(n);
/SPACE/
for(i=2; i <= k && 【?】 ;i++)
;
/SPACE/
return 【?】 ;
}
int reverse(int n)
{
int m=0;
while(n)
{
m=m*10+n%10;
n/=10;
}
return m;
}

void main()
{
int i,j,k=0,a[N];
for(i=10;i<100;i++)
if(isprime(i) && isprime(reverse(i)))
a[k++]=i;
for(i=0;i<k;i++)
printf("%6d",a[i]);
printf("\n");
}

答案:

=(答案1)=
n%i!=0
==
0!=n%i
==
n%i
==
(n+i-1)/i != n/i
==
n/i != (n+i-1)/i

=(答案2)=
i>k
==
k<i
==
i>k?1:0
==
k<i?1:0

第201题 (10.0分) 题号:204 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:数组cj[10]中有10名学生的c语言考试成绩,函数fun()的功
能是依据成绩将其各自的名次保存到数组mc中。

例如:成绩: 92 78 60 99 81 92 85 84 76 88
对应名次: 2 8 10 1 7 2 5 6 9 4


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

void fun(int cj[],int mc[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
/SPACE/
【?】;
/SPACE/
for(j=0;【?】;j++)
if(cj[i]<cj[j])
mc[i]++;
}
}
void main()
{
int cj[10]={92,78,60,99,81,92,85,84,76,88},mc[10],i;
fun(cj,mc,10);
printf(" 成绩:");
for(i=0;i<10;i++)
printf(" %3d ",cj[i]);
printf("\n");
printf(" 名次:");
for(i=0;i<10;i++)
printf(" %3d ",mc[i]);
printf("\n");
}

答案:

=(答案1)=
mc[i]=1

=(答案2)=
j<n
==
n>j
==
j-n<0
==
0>j-n
==
0<n-j
==
n-j>0
==
j<=n-1
==
n-1>=j

第202题 (10.0分) 题号:205 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:fun()函数的功能是:对a数组(共有N个元素)中第n到第m,
   共(m-n+1)个数进行升序排序,其中n>=1、m<=N、m>=n。

例如:当n=3,m=8时
排序前 95,85,75,65,55,45,35,25,15,5
排序后 95,85,25,35,45,55,65,75,15,5

注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

define N 10

void fun(int a[N],int n,int m)
{
int i,j,x;
i=m-2;
/SPACE/
while(【?】)
{
x=a[i];
j=i+1;
/SPACE/
while( j<=m-1 && 【?】)
{
a[j-1]=a[j];
j=j+1;
}
a[j-1]=x;
i--;
}
}
void main()
{
int a[N]={95,85,75,65,55,45,35,25,15,5};
int i,n=3,m=8;
for(i=0;i<N;i++)
printf("%4d",a[i]);
printf("\n");
fun(a,n,m);
for(i=0;i<N;i++)
printf("%4d",a[i]);
printf("\n");
}

答案:

=(答案1)=
i>=n-1
==
n-1<=i
==
i+1>=n
==
n<=i+1
==
i>n-2
==
n-2<i
==
i+2>n
==
n<i+2

=(答案2)=
x>a[j]
==
a[j]<x

第203题 (10.0分) 题号:206 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:找出[1,999]之间的符合以下条件的数,该数的各位数字阶
乘之和正好等于它本身。

例如:145=1!+4!+5!


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

define N 10

int fun(int jc[],int b[])
{
int i,x,n=0,sum;
for(i=1;i<1000;i++)
{
sum = 0;
x = i;
while(x)
{
/SPACE/
sum+= 【?】 ;
x/=10;
}
/SPACE/
if( 【?】)
b[n++]=sum;
}
return n;
}
void main()
{
int jc[]={1,1,2,6,24,120,720,5040,40320,362880};
int i,x,j,t,n,b[N];
n=fun(jc,b);
for(i=0;i<n;i++)
{
printf("%d=",b[i]);
x=b[i];
j=100;
while(j)
{
t=(x-x%j)/j;
if(t)
{
printf("%d!+",t);
x=x%j;
}
j/=10;
}
printf("\b \b\n");
}
}

答案:

=(答案1)=
jc[x%10]

=(答案2)=
isum
==
sum
i
==
i-sum0
==
sum-i
0

第204题 (10.0分) 题号:207 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:求数组a[5]中相邻元素的最大公约数,并保存到数组b[5]中
(a[4]与a[0]看作相邻元素)。

例如:a[5]={18,66,38,87,15}
b[5]={6,2,1,3,3}


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include <stdio.h>

define M 5

void Calculate(int a[],int n,int b[])
{
int i,x,y,r;
for(i=0;i<n;i++)
{
x=a[i];
/SPACE/
y=a[【?】];
do
{
/SPACE/
【?】;
x=y;
y=r;
}while(r);
b[i]=x;
}
}
void main()
{
int i,n=5,a[5]={18,66,38,87,15},b[5]={0};
Calculate(a,n,b);
for(i=0;i<n;i++)
printf("%3d、%3d的最大公约数:%3d\n",a[i],a[(i+1)%n],b[i]);
}

答案:

=(答案1)=
(i+1)%n
==
(1+i)%n

=(答案2)=
r=x%y

第205题 (10.0分) 题号:208 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:找出二维数组 a中的"鞍点"数,并在main()函数中输出该
鞍点的下标。所谓"鞍点"就是该数在所在行中最大,所在
列中最小。
例如:a[4][5]: 32 45 12 75 72
22 19 25 61 11
98 36 21 80 21
84 41 37 78 29
"鞍点"数的下标为(1,3),值是61。


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

define M 4

define N 5

int find(int a[][N],int b[])
{
int i,j,k,row,col;
for(i=0;i<M;i++)
{
col=0;
for(j=1;j<N;j++)
if(a[i][col]<a[i][j])
/SPACE/
【?】;
row=i;
for(k=0;k<M;k++)
if(a[row][col]>a[k][col])
row=k;
/SPACE/
if( 【?】 )
{
b[0]=row;
b[1]=col;
return 1;
}
}
return 0;
}
void main()
{
int a[M][N]={32,45,12,75,72,22,19,25,61,11,98,36,21,80,21,84,41,37,78,29};
int i,j,b[2],f;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",a[i][j]);
printf("\n");
}
f=find(a,b);
if(f)
printf("\n 该数组的鞍点下标:(%d,%d),值为:%d\n",b[0],b[1],a[b[0]][b[1]]);
else
printf("\n 该数组中没有鞍点!\n");
}

答案:

=(答案1)=
col=j

=(答案2)=
irow
==
row-i
0
==
i-row0
==
row
i

第206题 (10.0分) 题号:209 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:填充的规则是:使用1,2,3,……的自然数列,从左上角开始,
按照顺时针方向螺旋填充。
例如:当n=5时,输出:
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
且不能使用C语言的库函数
-------------------------------------------------------*/

include<stdio.h>

define N 10

void fun(int a[N][N],int row)
{
int i,j,m=0,n,k=1;
/SPACE/
【?】;
for(i=1;i<=row;i++)
for(j=1;j<=row-i+1;j++)
if(i%3==1)
a[m][++n]=k++;
/SPACE/
else if(【?】)
a[++m][--n]=k++;
else
a[--m][n]=k++;
}

void main()
{
int a[N][N]={0},i,j,row;
printf("please input row:");
scanf("%d",&row);
fun(a,row);
for(i=0;i<row;i++)
{
for(j=0;j<row-i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}

答案:

=(答案1)=
n=-1

=(答案2)=
i%32
==
(i-2)%3
0
==
!((i-2)%3)

第207题 (10.0分) 题号:210 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:输入一字符串,检查字符串是否满足以下条件:

 (1)字符串s中左括号“(”的个数与右括号“)”的个数相
      同;

 (2)从字符串s的首字符起顺序查找右括号“)”的个数在
      任何时候均不超过所遇到的左括号“(”的个数。若字
      符串同时满足上述两个条件,函数返回1,否则返回0。

注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<string.h>

void main()
{
int fun(char s[]);
char s[80];
int c;
printf("Please input the string:");
gets(s);
c=fun(s);
printf("c=%d\n",c);
}
int fun(char s[])
{
int c1,c2,i;
i=c1=c2=0;
while(s[i]!='\0')
{
if(s[i]'(') c1++;
else if(s[i]
')')
{
c2++;
/SPACE/
if(【?】) return(0);
}
i++;
}
/SPACE/
return(【?】);
}

答案:

=(答案1)=
c2>c1
==
c1<c2

=(答案2)=
c1c2
==
c2
c1

第208题 (10.0分) 题号:211 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:对二维数组a中存储的N*N矩阵做如下操作:先将每一行中值
最大的元素与该行位于主对角线处的元素交换,然后对主对
角线上所有元素排序使其自左上角到右下角升序排列,最后
输出排序后主对角线上各元素的值。


注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

define N 5

void fun(int x[][N],int n)
{
int i,j,t,arr,col;
for(i=0;i<n;i++)
{
arr=x[i][0];col=0;
for(i=0;i<n;i++)
{
arr=x[i][0];col=0;
/SPACE/
for(j=0;j<n;j++) if(x[i][j]>=arr) {arr=x[i][j]; 【?】}
t=x[i][i]; x[i][i]=x[i][col];x[i][col]=t;
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
/SPACE/
if(【?】)
{ t=x[i][i]; x[i][i]=x[j][j]; x[j][j]=t;}
}
}
void main()
{
int a[N][N]={{10,25,24,13,23},{11,22,12,21,14},{20,15,19,16,18},
{17,9,4,5,3},{2,1,6,7,8}};
int i;
fun(a,N);
for(i=0;i<N;i++) printf("%4d",a[i][i]);
printf("\n");
}

答案:

=(答案1)=
col=j;

=(答案2)=
x[i][i]>x[j][j]
==
x[j][j]<x[i][i]

第209题 (10.0分) 题号:212 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:任何一个大于4的偶数都可以表示成两个素数之和,输入一
个偶数,为其寻找两个素数,这两个素数之和等于该偶数。
例如:16=3+13,3和13都是素数。


注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<math.h>

void main()
{
void fun(int a);
int a;
do
{
printf("Please input a:");
scanf("%d",&a);
}while(a%2);
fun(a);
}
void fun(int a)
{
int b,c,d,y,i,j;
for(i=3;i<=a/2;i=i+2)
{
/SPACE/
【?】
for(j=2;j<=sqrt(i);j++)
if(i%j0) y=0;
if(y
1)
{
/SPACE/
【?】
for(j=2;j<=sqrt(d);j++)
if(d%j0) y=0;
if(y
1)
{b=i;c=d;printf("%d=%d+%d\n",a,b,c);break;}
}
}
}

答案:

=(答案1)=
y=1;

=(答案2)=
d=a-i;

第210题 (10.0分) 题号:213 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:将字符串s中的所有数字字符顺序前移,其他字符顺序后移。
例如,s为asd123fgh456,则处理后的新字符串应为
123456asdfgh。


注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<string.h>

include<ctype.h>

void main()
{
void fun(char s[]);
char s[80];
printf("Please input the string:");
scanf("%s",s);
fun(s);
printf("The result is %s\n",s);
}
void fun(char s[])
{
int i,j,k;
char p[80],t[80];
j=k=0;
for(i=0;s[i]!='\0';i++)
{
/SPACE/
if(【?】) p[j++]=s[i];
else t[k++]=s[i];
}
for(i=0;i<j;i++)
s[i]=p[i];
for(i=0; i<k;i++)
/SPACE/
s[【?】]=t[i];
s[j+k]=0;
}

答案:

=(答案1)=
isdigit(s[i])
==
s[i]>='0'&&s[i]<='9'
==
s[i]<='9'&&s[i]>='0'
==
'0'<=s[i]&&'9'>=s[i]
==
'9'>=s[i]&&'0'<=s[i]

=(答案2)=
j+i
==
i+j

第211题 (10.0分) 题号:214 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:计算x数组中N个数的平均值(规定所有数均为正数),将
数组中小于平均值的数据顺序移动到数组的前部,大于等
于平均值的数据顺序移到x数组的后部。例如,
有10个正数:47、30、32、40、6、17、45、15、48、26,
其平均值为30.5,移动后的输出为:30、6、17、15、26、
47、32、40、45、48。


注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<stdlib.h>

define N 10

void main()
{
double fun(double x[]);
int i; double x[N];
for(i=0;i<N;i++)
{
x[i]=rand()%50;
printf("%4.0f",x[i]);
}
printf("\n");
printf("The average is:%f\n",fun(x));
for(i=0;i<N;i++)
printf("%5.0f",x[i]);
printf("\n");
}
double fun(double x[])
{
int i,j;
double aver=0,y[N];
for(i=0;i<N;i++)
aver+=x[i];
aver=aver/N;
for(i=j=0;i<N;i++)
if(x[i]<aver)
{
/SPACE*************************/
y[j]=x[i];x[i]=-1;【?】
}
i=0;
while(i<N)
/
SPACE*************************/
{ if(x[i]!=-1) 【?】
i++;
}
for(i=0;i<N;i++) x[i]=y[i];
return aver;
}

答案:

=(答案1)=
j++;
==
j=j+1;
==
j=1+j;
==
j+=1;

=(答案2)=
y[j++]=x[i];

第212题 (10.0分) 题号:215 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:建立一个N*N的矩阵,矩阵元素的构成规律是:最外层元素
的值全部为1;从外向内第2层元素的值全部为2;第3层元
素的值全部为3,……依此类推。例如,若N=5,则生成的
矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1


注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

define N 7

void main()
{
void fun(int x[][N],int n);
int x[N][N]={0},i,j;
fun(x,N);
printf("The result is:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",x[i][j]);
printf("\n");
}
}
void fun(int x[][N],int n)
{
int i,j,k,m;
if(n%2==0) m=n/2;
else m=n/2+1;
for(i=0;i<m;i++)
{
/SPACE*************************/
for(【?】;j<n-i;j++)
x[i][j]=x[n-i-1][j]=i+1;
for(k=i+1;k<n-i;k++)
/
SPACE*************************/
x[k][i]=x[k][n-i-1]=【?】;
}
}

答案:

=(答案1)=
j=i

=(答案2)=
i+1
==
1+i

第213题 (10.0分) 题号:216 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:找出矩阵x前n行中的最大整数,用该整数所生产的降序数
将其替换。降序数是指该数的高位数字的值不小于低位数
字的值。例如,若矩阵中的最大整数是1024,则用4210替
换1024。

  例如,矩阵x 为:        
      456   44    674         
      789   324   1024        
      213   345   537 
    
  则替换后的矩阵为:
      456   44    674
      789   324   4210
      213   345   537

注意:请勿改动主函数main()中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

void main()
{
void matrix_change(int x[][3],int n);
int a[3][3]={456,44,674,789,324,1024,213,345,537},i,j;
printf("The result is:\n");
matrix_change(a,2);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf("%5d",a[i][j]);
printf("\n");
}
}
void matrix_change(int x[][3],int n)
{
int i,j,k,t[5]={0},max,maxi,maxj,v;
max=x[0][0];maxi=maxj=0;
for(i=0;i<n;i++)
for(j=0;j<3;j++)
if(x[i][j]>max) {max=x[i][j];maxi=i;maxj=j;}
k=0;
while(max>0)
/SPACE/
{ t[【?】]=max%10;max=max/10; }
for(i=0;i<k;i++)
/SPACE/
for(j=0; j<【?】;j++)
if(t[j]<t[j+1]) {v=t[j];t[j]=t[j+1];t[j+1]=v;}
for(i=0;i<k;i++)
max=max*10+t[i];
x[maxi][maxj]=max;
}

答案:

=(答案1)=
k++

=(答案2)=
k-i-1
==
k-1-i

第214题 (10.0分) 题号:217 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

函数int change(char s[])将s中的数字字符串转换成整数,
并返回该数。例如s[]中为"123",转换后为123。

函数int multi(char s[],char t[])将s字符串转换的整数乘
以t字符串转换的整数,并返回乘积。

注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

int change(char s[])
{
int i,sum;
sum=0;
for(i=0;s[i];i++)
/SPACE************************/
sum=sum
10+【?】-'0';
return sum;
}
int multi(char s[],char t[])
{
int mul;
/
SPACE*************************/
mul=【?】;
return mul;
}
int main()
{
char s1[]="123",s2[]="56";
int mst;
mst=multi(s1,s2);
printf("%d\n",mst);
return 0;
}

答案:

=(答案1)=
s[i]
==
*(s+i)

=(答案2)=
change(s)change(t)
==
change(t)
change(s)

第215题 (10.0分) 题号:218 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

函数void check(long n, int c[])检测长整型正整数n是几
位数,同时找出最小的数字。将位数和最小的数字存放在数
组c中。
例如n=1256044时,n是7位数,最小的数字是0

注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/

include <stdio.h>

/SPACE*************************/
void check(long n, int 【?】)
{
int min,p,k;
min=9;
p=0;
do{
k=n%10;
min=(min>k)? k: min;
n/=10;
p++;
}while(n);
c[0]=p;
c[1]=min;
}
int main()
{
long n;
int c[2];
printf("输入长整型正整数:");
scanf("%ld",&n);
check(n, c);
/
SPACE*************************/
printf("%ld是%d位数,最小数字是%d\n",【?】);
return 0;
}

答案:

=(答案1)=
c[]
==
c[2]

=(答案2)=
n,c[0],c[1]

第216题 (10.0分) 题号:219 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

函数int convert(int a,int nsys)将nsys(nsys<10)进制数a,
转换成十进制数并返回。

注意:请勿改动程序中的其他内容。
---------------------------------------------------------*/

include<stdio.h>

define N 5

int convert(int a,int nsys)
{
int t,p;
if(a<nsys)
return a;
t=0;
p=1;
while(a!=0)
{
t=t+a%10p;
/**************************SPACE
/
【?】;
p
=nsys;
}
return t;
}
int main()
{
int i,d;
int num[N][2]={{704,8},{10011,2},{266,7},{3,5},{22110,3}};
for(i=0;i<N;i++)
{
d=convert(num[i][0],num[i][1]);
/**************************SPACE
**/
printf("%d进制数的%d\t = 十进制数的%d\n",【?】);
}
return 0;
}

答案:

=(答案1)=
a/=10
==
a=a/10

=(答案2)=
num[i][1],num[i][0],d

第217题 (10.0分) 题号:220 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

函数void rearr(int a[], int n)将已经升序排列的一维数
组a中的n个元素重新排列,重新排列的规则是:
将a数组中的最小元素放到a[0],最大元素放到a[1],
将次小元素放到a[2],次大元素放到a[3],...,
以此类推。

例如:
原a数组各元素为:
    -11 -7 0 3 8 15 16 20 38
重新排列后a数组各元素为:
    -11 38 -7 20 0 16 3 15 8

注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

define N 9

void rearr(int a[], int n)
{
int left,right,i;
int b[N];
left=0;
right=N-1;
for(i=0; left<right; i+=2)
{
b[i]=a[left++];
/SPACE*************************/
b[i+1]=a[【?】];
}
if(left==right)
b[i]=a[left];
for(i=0;i<N;i++)
/
SPACE*************************/
a[i]=【?】;
}
int main()
{
int i,a[N]={-11,-7,0,3,8,15,16,20,38};
rearr(a,N);
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}

答案:

=(答案1)=
right--

=(答案2)=
b[i]

第218题 (10.0分) 题号:221 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

函数void change(char s[],char t[])将s字符串中字母和数
字字符按以下规则转换,并将其保存在t中。其他字符则不作
转换。

大写字母转换规则:'A'->'z','B'->'y',...,'Z'->'a'
小写字母转换规则:'z'->'A','y'->'B',...,'a'->'Z'
数字字符转换规则:'0'->'9','1'->'8',...,'9'->'0'

注意:请勿改动程序中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<ctype.h>

void change(char s[],char t[])
{
int i;
for(i=0;s[i];++i)
{
if(isalpha(s[i]))
t[i]=(isupper(s[i]) ? 'Z'-s[i]+'a' : 'z'-s[i]+'A');
else if(isdigit(s[i]))
t[i]='9'-s[i]+'0';
else
/SPACE*************************/
【?】;
}
t[i]=0;
}
int main()
{
char t[100]="7984 RH hSVVK BVZI,dRHS BLF TLLW OFXP!";
char s[100];
/
SPACE*************************/
【?】;
printf("%s\n",s);
return 0;
}

答案:

=(答案1)=
t[i]=s[i]

=(答案2)=
change(t,s)

第219题 (10.0分) 题号:222 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:数组a中存放一批整数,其中相同的整数连续存放。统计
a数组中相同元素的个数,存入二维数组b中并输出。

例如:原a数组中的值为:
-3,-3,4,61,61,61,61,61,-10,-10,-10,2,2,2,2

  则b数组中的值为:
      -3        4        61        -10         2
      2         1        5         3           4

  输出结果为:
      -3   2
       4   1
      61   5
     -10   3
       2   4  

注意:除要求填空的位置之外,请勿改动程序中的其他内容。
-------------------------------------------------------*/

include <stdio.h>

define N 15

void count(int a[],int b[][N])
{
int i,j,k;
b[0][0]=a[0];
for(j=k=0,i=1;i<N;i++)
{
if(a[i]!=a[i-1])
{
/SPACE*************************/
b[1][j]=【?】;
b[0][++j]=a[i];
/
SPACE*************************/
k=【?】;
}
}
b[1][j]=N-k;
for(i=0;i<=j;i++)
printf("%5d%5d\n",b[0][i],b[1][i]);
}
int main()
{
int a[N]={-3,-3,4,61,61,61,61,61,-10,-10,-10,2,2,2,2};
int b[2][N];
count(a,b);
return 0;
}

答案:

=(答案1)=
i-k
==
-k+i

=(答案2)=
i

第220题 (10.0分) 题号:223 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:二维数组a中有N*N个无序的整数,将a中的数据存入一维数
组中,然后在一维数组中将这些数由小到大排序,将排序
后的数据再存入原来的a数组中。函数sort(int b[])实现
排序,函数trans(int a[][N],int b[],int f)实现存放数
据。

例如:初始数据为:
12 8 -9 0
-4 20 11 6
10 2 3 7
22 -5 7 9
结果数据为:
-9 -5 -4 0
2 3 6 7
7 8 9 10
11 12 20 22

注意:除要求填空的位置之外,请勿改动程序中的其他内容。
-------------------------------------------------------*/

include <stdio.h>

define N 4

void sort(int b[])
{
int i,j,k,t;
for(i=0;i<NN-1;i++)
{
k=i;
for(j=i+1;j<N
N;j++)
if(b[j]<b[k])
k=j;
/SPACE*************************/
if(【?】)
{
t=b[i];b[i]=b[k];b[k]=t;
}
}
}
void trans(int a[][N],int b[],int f)
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
/
SPACE***********************/
f==0?(b[i
N+j]=a[i][j])😦【?】);
}
int main()
{
int a[N][N]={12,8,-9,0,-4,20,11,6,10,2,3,7,22,-5,7,9},b[N
N];
int i,j;
printf("初始数据为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5d",a[i][j]);
printf("\n");
}
trans(a,b,0);
sort(b);
trans(a,b,1);
printf("结果数据为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}

答案:

=(答案1)=
k!=i
==
i!=k
==
k>i
==
i<k

=(答案2)=
a[i][j]=b[iN+j]
==
a[i][j]=b[j+i
N]
==
a[i][j]=b[j+Ni]
==
a[i][j]=b[N
i+j]

第221题 (10.0分) 题号:224 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:从键盘输入1个正整数,把这个整数的各位数字重新组合,
形成一个位数不变的最大数和最小数,并计算最大数与最
小数的差。

例如:输入241897,重组后最大数为:987421,最小数为:124789,
差为:862632

  输入240097,重组后最大数为:974200,最小数为:200479,
  差为:773721

注意:除要求填空的位置之外,请勿改动程序中的其他内容。
-------------------------------------------------------*/

include <stdio.h>

void diss(long a)
{
int i,j,w,flag,num,t;
long max,min,dis;
int c[10];
num=a;
for(w=0;num!=0;w++)
{
c[w]=num%10;
num/=10;
}
for(i=0;i<w-1;i++)
{
flag=1;
for(j=w-1;j>i;j--)
if(c[j]<c[j-1])
{
t=c[j];c[j]=c[j-1];c[j-1]=t;
flag=0;
}
if(flag)
break;
}
max=min=0;
for(i=0;i<w;i++)
/SPACE*************************/
max=【?】;
i=0;
while(c[i]==0)
/
SPACE************************/
【?】;
t=c[0],c[0]=c[i],c[i]=t;
for(i=0;i<w;i++)
min=min
10+c[i];
dis=max-min;
printf("最大数为:%d,最小数为:%d,差为:%d\n",max,min,dis);
}

int main(){
long num;
printf("请输入一个正整数:\n");
scanf("%ld",&num);
diss(num);
return 0;
}

答案:

=(答案1)=
max10+c[w-i-1]
==
max
10+c[w-1-i]
==
c[w-1-i]+max10
==
c[w-i-1]+max
10
==
10max+c[w-1-i]
==
10
max+c[w-i-1]
==
c[w-i-1]+10max
==
c[w-1-i]+10
max

=(答案2)=
i++
==
++i
==
i=i+1
==
i+=1

第222题 (10.0分) 题号:225 难度:中 第20章
/*-------------------------------------------------------
【程序填空】

题目:将字符串中最前面和最后面的号去掉,并将字符串中间1
个或多个连续的
号替换为1个空格。

例如:初始字符串为"*****thisisCprogram***",
结果为"this is C program"


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
-------------------------------------------------------*/

include<stdio.h>

include<string.h>

void rep(char str1[],char str3[])
{
char str2[80];
int front,back,i,j;
for(front=0;str1[front]'*';front++)
;
back=strlen(str1);
for(;str1[back-1]
'';back--)
;
for(i=front;i<back;++i)
/**************************SPACE
/
str2[【?】]=str1[i];
str2[back-front]=0;
for(i=j=0;str2[i];i++)
if(str2[i]!='
')
str3[j++]=str2[i];
/**************************SPACE
/
else if(str2[【?】]!='
')
str3[j++]=' ';
str3[j]=0;
}
int main()
{
char str1[]="*****this
isCprogram****",str3[80];
rep(str1,str3);
puts(str1);
puts(str3);
return 0;
}

答案:

=(答案1)=
i-front
==
-front+i

=(答案2)=
i+1
==
i-1
==
1+i
==
-1+i

第223题 (10.0分) 题号:227 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是输出由字符w构造成的形如W的图形。
如图所示的为5行的图形。

w ww w
w w w w
w w w w
w w w w
ww ww

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

void draw(int n)
{
int i,j,k,r,m;
/SPACE/
for(i=1; 【?】;i++)
{
for(j=1;j<=2;j++)
{
for(r=1;r<i;r++)printf(" ");
printf("w");
/SPACE/
for(k=1; 【?】 ;k++)printf(" ");
printf("w");
for(m=1;m<i;m++)printf(" ");
}
/SPACE/
【?】
}
}

include <conio.h>

main()
{
int n;
clrscr();
printf("input a number:");
/SPACE/
【?】
draw(n);
}

答案:

=(答案1)=
i<=n
==
n>=i

=(答案2)=
k<= 2 * n - 2 * i
==
2 * n - 2 * i >=k

=(答案3)=
printf("\n");

=(答案4)=
scanf("%d",&n);

第224题 (10.0分) 题号:228 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是产生并输出杨辉三角的前七行。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

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

main ( )
{
/SPACE/
【?】;
int i,j,k;
for (i=0;i<7;i++)
/SPACE/
{a[i][0]=1; 【?】 ;}
for (i=2;i<7;i++)
for (j=1;j<i;j++)
/SPACE/
a[i][j]= 【?】;
for (i=0;i<7;i++)
{
/SPACE/
for (j=0; 【?】;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}

答案:

=(答案1)=
int a[7][7]

=(答案2)=
a[i][i]=1

=(答案3)=
a[i-1][j]+a[i-1][j-1]
==
a[i-1][j-1]+a[i-1][j]

=(答案4)=
j<=i
==
i>=j

第225题 (10.0分) 题号:229 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

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

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

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%150)
{
printf("%5d",m);i++;
/SPACE/
if(i%10
0) 【?】;
}
}
}

答案:

=(答案1)=
k=0

=(答案2)=
n%10
==
n-n/1010
==
n-10
(n/10)

=(答案3)=
while(n>0)
==
while(0<n)
==
while(n!=0)
==
while(0!=N)

=(答案4)=
printf("\n")

第226题 (10.0分) 题号:230 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

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

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

include "stdlib.h"

main()
{
int i,j,t,k;
/SPACE/
【?】 ;
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 a[10]

=(答案2)=
k=i

=(答案3)=
a[k]>a[j]
==
a[j]<a[k]

=(答案4)=
i=0;i<10;i++
==
i=0;10>i;i++
==
i=0;i<=9;i++
==
i=0;9>=i;i++

第227题 (10.0分) 题号:231 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是打印以下图形。





*****

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

main ( )
{
/SPACE/
【?】 char a[5][9];
int i,j;
for (i=0;i<5;i++)
/SPACE/
for(j=i; 【?】;j++)
a[i][j]='*';
for(i=0;i<5;i++)
{
for(j=0;j<9;j++)
/SPACE/
printf("%c", 【?】 );
/SPACE/
【?】;
}
}

答案:

=(答案1)=
static

=(答案2)=
j< i + 5
==
i + 5 >j

=(答案3)=
a[i][j]

=(答案4)=
printf("\n")

第228题 (10.0分) 题号:232 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是求一个二维数组中每行的最大值和每行
的和。

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

include "stdlib.h"

main()
{
int a[5][5],b[5],c[5],i,j,k,s=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(40)+20;
for(i=0;i<5;i++)
{
/SPACE/
k=a[i][0]; 【?】 ;
for(j=0;j<5;j++)
{
/SPACE/
if(k<a[i][j]) 【?】 ;
s=s+a[i][j];
}
b[i]=k;
/SPACE/
【?】 ;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
/SPACE/
printf("%5d", 【?】 );
printf("%5d%5d",b[i],c[i]);
printf("\n");
}
}

答案:

=(答案1)=
s=0

=(答案2)=
k=a[i][j]

=(答案3)=
c[i]=s

=(答案4)=
a[i][j]

第229题 (10.0分) 题号:233 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是对任一整数N(N≠0),它都可以分解成1
(或-1)和一些质数(素数)因子的形式。如N=150时,可分
解成1×2×3×5×5;N=-150时,可分解为-1×2×3×5×5。
下边程序能实现这种分解过程。当N=150,输出以下分解结
果:N= 1* 2* 3* 5* 5

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

main()
{
int n,i,j,r;
scanf("%d",&n);
if (n0)
{
printf ("data error \n");
exit(0);
}
/SPACE/
else if (【?】 )
printf("n=1");
else
{
printf("n=-1");
n=-n;
}
/SPACE/
for(【?】;i<=n;i++)
{
/SPACE/
【?】 ;
while(r
0)
{
printf("*%d",i);
/SPACE/
【?】 ;
r=n%i;
}
}
printf("\n");
}

答案:

=(答案1)=
n>0
==
0<n

=(答案2)=
i=2

=(答案3)=
r=n%i

=(答案4)=
n=n/i

第230题 (10.0分) 题号:234 难度:易 第25章
/*-------------------------------------------------------
【程序填空】

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

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

/SPACE/
【?】
main()
{
float 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 <math.h>

=(答案2)=
f=fabs( x + 1 )

=(答案3)=
x<=5
==
5>=x
==
x<6
==
6>x

=(答案4)=
x,f

第231题 (10.0分) 题号:235 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是删除一个字符串中的所有数
字字符。

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

include "stdio.h"

void delnum(char *s)
{
int i,j;
/SPACE/
for(i=0,j=0; 【?】'\0' ;i++)
/SPACE/
if(s[i]<'0'【?】 s[i]>'9')
/SPACE/
{【?】;j++;}
s[j]='\0';
}
main ()
{
char *item;
printf("\n input a string:\n");
gets(item);
/SPACE/
【?】;
printf("\n%s",item);
}

答案:

=(答案1)=
s[i]!=
==
*(s+i)!=

=(答案2)=
||

=(答案3)=
s[j]=s[i]

=(答案4)=
delnum(item)

第232题 (10.0分) 题号:236 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:下面函数为二分法查找key值。数组中元素已递增排序,
若找到key则返回对应的下标,否则返回-1。

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

fun(int a[],int n,int key)
{
int low,high,mid;
low=0;
high=n-1;
/SPACE/
while(【?】)
{
mid=(low+high)/2;
/SPACE/
if(key<a[mid]) 【?】;
/SPACE/
else if(key>a[mid]) 【?】;
/SPACE/
else 【?】;
}
return -1;
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b,c;
b=4;
c=fun(a,10,b);
if(c==1)printf("not found");
else printf("position %d\n",c);
}

答案:

=(答案1)=
low<=high
==
high>=low

=(答案2)=
high=mid-1
==
high=-1+mid

=(答案3)=
low= mid + 1

=(答案4)=
return mid
==
return (mid)

第233题 (10.0分) 题号:237 难度:中 第25章
/*-------------------------------------------------------
【程序填空】

题目:以下程序的功能是输入字符串,再输入一个字符,将字符串
中与输入字符相同的字符删除。

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

include "stdio.h"

void fun(char a[],char c)
{
int i,j;
/SPACE/
for(i=j=0; 【?】;i++)
if(a[i]!=c) a[j++]=a[i];
/SPACE/
【?】;
}
main()
{
char a[20],cc;
/SPACE/
【?】;
cc=getchar();
/SPACE/
【?】;
puts(a);
}

答案:

=(答案1)=
a[i] != '\0'

=(答案2)=
a[j]='\0'

=(答案3)=
gets(a)
==
scanf("%s",a);

=(答案4)=
fun(a,cc)

第234题 (10.0分) 题号:320 难度:中 第1章
/*----------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,
并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。

例如:输入一个整数27638496,函数返回值为64862。

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

include <stdio.h>

unsigned long fun(unsigned long n)
{
unsigned long x=0; int t;
while(n)
{
t=n%10;
/SPACE/
if(t%2==【?】)
/SPACE/
x=【?】+t;
/SPACE/
n=【?】;
}
return x;
}
void main()
{
unsigned long n=-1;
while(n>99999999||n<0)
{
printf("Please input(0<n<100000000): ");
scanf("%ld",&n);
}
printf("\nThe result is: %ld\n",fun(n));
}

答案:

=(答案1)=
0
==
'\0'
==
NULL

=(答案2)=
x10
==
10
x

=(答案3)=
n/10

第235题 (10.0分) 题号:321 难度:中 第1章
/*--------------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数
中各位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为
函数值返回。

例如:当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、
140、203、212、221、230、302、311、320、401、410、500,共有15个。
当x值为27时,各位数字之和为27的整数是:999,只有1个。

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

include <stdio.h>

int fun(int x)
{
int n, s1, s2, s3, t;
n=0;
t=100;
/SPACE/
while(t<=【?】)
{
s1=t%10;
/SPACE/
s2=(【?】)%10;
s3=t/100;
/SPACE/
if(s1+s2+s3==【?】)
{
printf("%d ",t);
n++;
}
t++;
}
return n;
}
void main()
{
int x=-1;
while(x<0)
{
printf("Please input(x>0): ");
scanf("%d",&x);
}
printf("\nThe result is: %d\n",fun(x));
}

答案:

=(答案1)=
999

=(答案2)=
t/10

=(答案3)=
x

第236题 (10.0分) 题号:322 难度:中 第1章
/*------------------------------------------------------------------
【程序填空】

题目:函数fun的功能是:输出a所指数组中的前n个数据,要求每行输出5个数。

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

include <stdio.h>

include <stdlib.h>

void fun( int *a, int n )
{
int i;
for(i=0; i<n; i++)
{
/SPACE/
if(【?】==0 )
/SPACE/
printf("【?】");
/SPACE/
printf("%d ",【?】);
}
}
void main()
{
int a[100]={0}, i,n;
n=22;
for(i=0; i<n;i++)
a[i]=rand()%21;
fun(a, n);
printf("\n");
}

答案:

=(答案1)=
i%5

=(答案2)=
\n

=(答案3)=
a[i]
==
*(a+i)
==
*(i+a)

第237题 (10.0分) 题号:323 难度:中 第1章
/*-----------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有
形参substr所指子串的所有字符串,并输出,若没找到则输出相应信息。
ss所指字符串数组中共有N个字符串,且串长小于M。

  程序中库函数strstr(s1s2)的功能是在s1串中查找s2子串,若没有,
  函数值为0,若有,函数值为非0

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

include <stdio.h>

include <string.h>

define N 5

define M 15

void fun(char (*ss)[M], char *substr)
{
int i,find=0;
/SPACE/
for(i=0; i<【?】; i++)
/SPACE/
if( strstr(ss[i],【?】) != NULL )
{
find=1;
puts(ss[i]);
printf("\n");
}
/SPACE/
if (find==【?】)
printf("\nDon't found!\n");
}
void main()
{
char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M];
int i;
printf("\nThe original string\n\n");
for(i=0;i<N;i++)
puts(x[i]);
printf("\n");
printf("\nEnter a string for search : ");
gets(str);
fun(x,str);
}

答案:

=(答案1)=
N
==
5

=(答案2)=
substr

=(答案3)=
0
==
'\0'
==
NULL

第238题 (10.0分) 题号:324 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:计算如样张所示前n项的和,
并作为函数值返回。

例如:当形参n的值为10时,函数返回:-0.204491。

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

include <stdio.h>

double fun(int n)
{
int i, k;
double s, t;
s=0;
/SPACE/
k=【?】;
for(i=1; i<=n; i++)
{
/SPACE/
t=【?】;
s=s+k(2i-1)(2i+1)/(tt);
/SPACE/
k=k
【?】;
}
return s;
}
void main()
{
int n=-1;
while(n<0)
{
printf("Please input(n>0): ");
scanf("%d",&n);
}
printf("\nThe result is: %f\n",fun(n));
}

答案:

=(答案1)=
1

=(答案2)=
i2
==
2
i

=(答案3)=
(-1)
==
-1

第239题 (10.0分) 题号:325 难度:中 第1章
/*--------------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:找出100到x(x≤999)之间各位上的数字之和
为15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。

例如:当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、
258、267、276、285、294、339、348、357、366、375、384、393、429、438、
447、456、465、474、483、492。共有26个。

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

include <stdio.h>

int fun(int x)
{
int n, s1, s2, s3, t;
/SPACE/
n=【?】;
t=100;
/SPACE/
while(t<=【?】)
{
s1=t%10;
s2=(t/10)%10;
s3=t/100;
if(s1+s2+s3==15)
{
printf("%d ",t);
n++;
}
/SPACE/
【?】;
}
return n;
}
void main()
{
int x=-1;
while(x>999||x<0)
{
printf("Please input(0<x<=999): ");
scanf("%d",&x);
}
printf("\nThe result is: %d\n",fun(x));
}

答案:

=(答案1)=
0
==
'\0'
==
NULL

=(答案2)=
x

=(答案3)=
t++
==
++t
==
t=t+1
==
t=1+t
==
t=t++
==
t=++t
==
t+=1

第240题 (10.0分) 题号:326 难度:中 第1章
/*-------------------------------------------------------------------------
【程序填空】

题目:函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应
的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;
若是其他字符则保持不变;并转换后的结果作为函数值返回。

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

include <stdio.h>

include <ctype.h>

char fun(char ch)
{
/SPACE/
if ((ch>='a')【?】(ch<='z'))
return ch -'a' + 'A';
if ( isupper(ch) )
/SPACE/
return ch +'a'【?】'A' ;
/SPACE/
return 【?】;
}
void main()
{
char c1, c2;
printf("\nThe result :\n");
c1='w';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='W';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
c1='8';
c2 = fun(c1);
printf("c1=%c c2=%c\n", c1, c2);
}

答案:

=(答案1)=
&&

=(答案2)=

=(答案3)=
ch

第241题 (10.0分) 题号:327 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:计算样张的前n项。若x=2.5,函数值为12.182340。

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

include <stdio.h>

double fun(double x, int n)
{
double f, t;
int i;
f = 1.0;
/SPACE/
t=【?】;
/SPACE/
for(【?】;i<n;i++)
{
/SPACE/
t*=x/【?】;
f += t;
}
return f;
}
void main()
{
double x, y;
x=2.5;
y = fun(x, 12);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f\n", x, y);
}

答案:

=(答案1)=
1.0
==
1

=(答案2)=
i=1

=(答案3)=
i

第242题 (10.0分) 题号:328 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:计算如样张所示函数。若x=2.5,函数值为12.182494。

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

include <stdio.h>

include <math.h>

double fun(double x)
{
double f, t; int n;
/SPACE/
f = 1.0+【?】;
t = x;
n = 1;
do
{
n++;
/SPACE/
t *= x/【?】;
/SPACE/
f += 【?】;
}
while (fabs(t) >= 1e-6);
return f;
}
void main()
{
double x, y;
x=2.5;
y = fun(x);
printf("\nThe result is :\n");
printf("x=%-12.6f y=%-12.6f \n", x, y);
}

答案:

=(答案1)=
x

=(答案2)=
n

=(答案3)=
t

第243题 (10.0分) 题号:329 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,
并用外部(全局)变量c1、c2、c3返回主函数。

例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。

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

include <stdio.h>

int c1,c2,c3;
void fun(long n)
{
c1=c2=c3=0;
while(n)
{
/SPACE/
switch(【?】)
{
case 1:
/SPACE/
c1++;【?】;
case 2:
/SPACE/
c2++;【?】;
case 3:
c3++;
}
n/=10;
}
}

void main()
{
long n=123114350L;
fun(n);
printf("\nThe result: \n");
printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3);
}

答案:

=(答案1)=
n%10

=(答案2)=
break

=(答案3)=
break

第244题 (10.0分) 题号:330 难度:中 第1章
/*-----------------------------------------------------------------------
【程序填空】

题目:函数fun的功能是:从三个形参a、b、c中找出中间的数,并作为函数值返回。

例如:当a=3,b=5,c=4时,中间的数为4。

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

include <stdio.h>

int fun(int a,int b,int c)
{
int t;
/SPACE/
t=(a【?】)?(b>c?b:(a>c?c:a))
/SPACE/
😦(a>【?】)?a
/SPACE/
😦(b>c)【?】c:b));
return t;
}
void main()
{
int a1=3,a2=5,a3=4,r;
r=fun(a1,a2,a3);
printf("\nThe middle number is: %d\n ",r);
}

答案:

=(答案1)=

b

=(答案2)=
c

=(答案3)=
?

第245题 (10.0分) 题号:331 难度:中 第1章
/*-------------------------------------------------------------------------
【程序填空】

题目:给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到
形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个
字符串复制到形参t所指字符数组中。

例如:形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的
字符串应为:defgh。

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

include <stdio.h>

include <string.h>

define N 80

void fun(char *s, int n, char *t)
{
int len,i,j=0;
len=strlen(s);
if(n>=len)
/SPACE/
strcpy(【?】);
else
{
for(i=len-n; i<=len-1; i++)
/SPACE/
t[j++]=【?】;
/SPACE/
t[j]= 【?】 ;
}
}
void main()
{
char s[N],t[N];
int n;
printf("Enter a string: ");
gets(s);
printf( "Enter n:");
scanf("%d",&n);
fun(s,n,t);
printf("The string t : ");
puts(t);
}

答案:

=(答案1)=
t,s

=(答案2)=
s[i]
==
*(s+i)
==
*(i+s)

=(答案3)=
0
==
'\0'
==
NULL

第246题 (10.0分) 题号:332 难度:中 第1章
/*-----------------------------------------------------------------------
【程序填空】

题目:给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,
作为函数值返回。为便于统计,规定各单词之间用空格隔开。

例如:形参s所指的字符串为:This is a C language program.,函数的返回值为6。

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

include <stdio.h>

int fun(char s)
{
int n=0, flag=0;
while(
s!='\0')
{
if(s!=' ' && flag==0)
{
/SPACE/
【?】;
flag=1;
}
if (
s==' ')
/SPACE/
flag= 【?】;
/SPACE/
【?】 ;
}
return n;
}
void main()
{
char str[81];
int n;
printf("\nEnter a line text:\n");
gets(str);
n=fun(str);
printf("\nThere are %d words in this text.\n\n",n);
}

答案:

=(答案1)=
n++
==
++n
==
n=n+1
==
n=1+n
==
n=n++
==
n=++n
==
n+=1

=(答案2)=
0

=(答案3)=
s++
==
++s
==
s=s+1
==
s=1+s
==
s=s++
==
s=++s
==
s+=1

第247题 (10.0分) 题号:333 难度:中 第1章
/*----------------------------------------------------------------------
【程序填空】

题目:函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,
并作为函数值返回。其中函数 isleap用来判别某一年是否为闰年。

例如:若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。

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

include <stdio.h>

int isleap(int year)
{
int leap;
leap= (year%40 && year%100!=0 || year%4000);
/SPACE/
return 【?】;
}
int fun(int year, int month, int day)
{
int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int days=0 , i;
for(i=1; i<month; i++)
days=days + table[i];
/SPACE/
days=days【?】day;
if( isleap(year) && month>2 )
/SPACE/
days=days+【?】;
return days;
}
void main()
{
int year, month, day, days ;
printf("请输入年、月、日:");
scanf("%d%d%d",&year, &month, &day);
days = fun(year, month, day);
printf("%d年%d月%d日是该年的第%d天\n",year, month, day, days);
}

答案:

=(答案1)=
leap

=(答案2)=
+

=(答案3)=
1

第248题 (10.0分) 题号:334 难度:中 第1章
/*-----------------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,
并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。

例如:若s所指字符串为"baacda",c中的字符为a,执行后s所指字符串为"baaaacdaa"。

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

include <stdio.h>

void fun(char *s, char c)
{
int i, j, n;
/SPACE/
for(i=0; s[i]!=【?】 ; i++)
if(s[i]==c)
{
/SPACE/
n=【?】;
while(s[i+1+n]!='\0')
n++;
for(j=i+n+1; j>i; j--)
s[j+1]=s[j];
/SPACE/
s[j+1]=【?】;
i=i+1;
}
}
void main()
{
char s[80]="baacda", c;
printf("\nThe string: %s\n",s);
printf("\nInput a character: ");
scanf("%c",&c);
fun(s,c);
printf("\nThe result is: %s\n",s);
}

答案:

=(答案1)=
'\0'
==
NULL

=(答案2)=
0

=(答案3)=
c

第249题 (10.0分) 题号:335 难度:中 第1章
/*---------------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放
到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除奇数后a所指数组中的
数据为:4,2,6,8,返回值为4。

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

include <stdio.h>

define N 9

int fun(int a[], int n)
{
int i,j;
j = 0;
for (i=0; i<n; i++)
/SPACE/
if (【?】== 0)
{
/SPACE/
【?】 = a[i];
j++;
}
/SPACE/
return 【?】;
}
void main()
{
int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
printf("\nThe original data :\n");
for (i=0; i<N; i++)
printf("%4d ", b[i]);
printf("\n");
n = fun(b, N);
printf("\nThe number of even :%d\n", n);
printf("\nThe even :\n");
for (i=0; i<n; i++)
printf("%4d ", b[i]);
printf("\n");
}

答案:

=(答案1)=
a[i]%2
==
*(a+i)%2
==
*(i+a)%2

=(答案2)=
a[j]
==
*(a+j)
==
*(j+a)

=(答案3)=
j

第250题 (10.0分) 题号:336 难度:中 第1章
/*-------------------------------------------------------
【程序填空】

题目:函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,
素数的个数作为函数值返回。

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

include <stdio.h>

int fun(int n)
{
int i,j, count=0;
printf("\nThe prime number between 3 to %d\n", n);
for (i=3; i<=n; i++)
{
/SPACE/
for (【?】; j<i; j++)
/SPACE/
if (【?】 == 0)
break;
/SPACE/
if (【?】>=i)
{
count++;
printf( count%15? "%5d":"\n%5d",i);
}
}
return count;
}
void main()
{
int n=20, r;
r = fun(n);
printf("\nThe number of prime is : %d\n", r);
}

答案:

=(答案1)=
j=2

=(答案2)=
i%j

=(答案3)=
j

第251题 (10.0分) 题号:337 难度:中 第1章
/*------------------------------------------------------------------------
【程序填空】

题目:下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按
原来从高位到低位的顺序组成一个新数,作为函数值返回。

例如:从主函数输入一个整数27638496,则函数返回值为26846。

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

include <stdio.h>

unsigned long fun(unsigned long n)
{
unsigned long x=0, s, i; int t;
s=n;
/SPACE/
i=【?】;
/SPACE/
while(【?】)
{ t=s%10;
if(t%2==0)
{
x=x+t*i;
/SPACE/
i=【?】;
}
s=s/10;
}
return x;
}
main()
{
unsigned long n=-1;
while(n>99999999||n<0)
{ printf("Please input(0<n<100000000): "); scanf("%ld",&n); }
printf("\nThe result is: %ld\n",fun(n));
}

答案:

=(答案1)=
1

=(答案2)=
s>0
==
0<s

=(答案3)=
i10
==
10
i

1题 (1)
If this.value=1
Thisform.label1.visible=.f.
Else
Thisform.label1.visible=.t.
Endif
2题 (2)
Thisform.release
Thisform.caption=”学生档案系统打开”
Thisform.caption=”学生管理系统打开”
3题 (3)
Thisform.edit1.value=”这是一只可爱的小狐狸”
Thisform.edit1.value=”它是一只狡猾的小狐狸”
20题 (73)
时间间隔:interval=1000
Thisform.text1.value=time()
开始:thisform.timer1.enabled=.t.
停止:thisform.timer1.enabled=.f.
退出:thisform.release
22题 (59)
Thisform.text1.fontname=”宋体”
Thisform.text1.fontname=”隶书”
Thisform.text1.fontname=”黑体”
Thisform.text1.fontname=”楷体”
23题 (60)
事件:spinner1 过程:interactivechange
r=THIS.PARENT.Spinner1.Value
g= THIS.PARENT.Spinner2.Value
b= THIS.PARENT.Spinner3.Value
THIS.PARENT.Label1.BackColor=RGB(r,g,b)
事件:spinner2 过程:interactivechange
r=THIS.PARENT.Spinner1.Value
g= THIS.PARENT.Spinner2.Value
b= THIS.PARENT.Spinner3.Value
THIS.PARENT.Label1.BackColor=RGB(r,g,b)
事件:spinner3 过程:interactivechange
r=THIS.PARENT.Spinner1.Value
g= THIS.PARENT.Spinner2.Value
b= THIS.PARENT.Spinner3.Value
THIS.PARENT.Label1.BackColor=RGB(r,g,b)
24题 (61)
Backcolor 0,255,0
表单大小固定:BorderStyle 2—固定对话框
Thisform.shape1.carvature=this.value
25题 (62)
背景透明:backstyle值 0 斜体:fontitalic 值T
26题 (64)
能否相应由用户引发事件 enabled F
字体粗体:fontbold T
垂直滚动条 sscrollbars 2
可选值:rowsource rowsourcetype 1值
数目:columncount 6
30题 (68)
删除记录:deletemark 显示记录选择器:recordmark
31题 (69)
不同格式:平面和三维 specialeffec
33题 (71)
曲率 curvature 高:height 宽:width
34题 (72)
线条边框样式:borderstyle 6-内实线
36题 (75)
容器格式:specialeffec 最大化:maxbutton 最小化:minbutton
37题 (76)
当前值:value c:\data 可选值:rowsource
数值源的类型:rowsourcetypy
38题 (77)
表格控件列数:columncount 1
是否显示删除标记列:deletemark F
形状控件:三维 specialeffec
记录选择器列: recordmark
41题 (81)
垂直滚动条:scrollbars 2垂直 可见:visible F
分隔单元格分隔线的颜色 gridlinecolor
Thisform.optiongroup1.option1.value=1
Thisform.optiongroup1.option2.value=0
Thisform.optiongroup1.option3.value=0
Thisform.grid1.visible=.t.
Thisform.grid1.enabled=.t.
Thisform.grid2.visible=.f.
Thisform.grid2.enabled=.f.
Thisform.grid3.visible=.f.
Thisform.grid3.enabled=.f.
42题 (82)
计时器 间隔:interval 5000 边框样式:borderstyle:1
43题 (83)
事件:timer1 过程:timer
If thisform.label2.caption!=time()
Thisform.label2.caption=time()
Endif
是否显示窗口菜单图标:contrvlBoX F
样式:SPECLALEFFEC 0-凸起
44题 (84)
Specialeffecl 平面 controlBoX“F”无图标
45题 (85)
无删除标记列:deletemcork F
无记录选择器:recordmark F
标题位置居中:alignment
最大化:maxbutton
最小化:minbutton
即水平又垂直:gridlines “3”
返回/退出:thisform.release
46题 (86)
当前状态不可用:enabled F
47题 (87)
Columncount 5 数目5列
Edit1 Ednabled ”F” “不能编辑”
最大化按钮 maxbutton 最小化按钮 minbutton
第48题 (88)
Scrollbars 无滚动条 Deldtemark 无删除标记Recordmark 无记录选择器列 Rowsouree 可选值 Rowsourcetype 类型
Thisform.release 退出表单
第49题 (89)
Spinner1范围1-12 SpinnerHighvalue 12 Spinnerlowvalue 1
不可用 Enabeld F
代码:
Option1 click thisform.text1.enabled=.F.
Thisform.spinner1.enabled=.F.
Option2 click thisform.text1.enabled=.T.
Thisform.spinner1.enabled=.T.
第50题 (90)
Specialeffect 3维 buttoncount 3 包含3个选项按钮
第51题 (91)
组合框 可选值 Rowsource rowsourcetype 1值
第52题 (92)
Pagecount 页数 计时器间隔 Interval 1000
第53题(108)
默认值 DATE()
显示类 OptionGroup
索引 ABCD 普通索引表达式:DTOC(rq,1)+ STR(dj,5,1)
3.项目——项目信息——图标
4、显示——数据库设计器
第54题(112)
1、(1)表注释 影视记录
(2)删除字段前导空格 显示格式 T
(3)字段有效性规则 sc =>30
(4)显示类 listbox
(5)索引 ABCD 普通索引 yz+str (sc)
3、打开自由表CJB 表→彻底删除
4、显示→数据库设计器→ 参数完整性
第55题(212)
(2)字段 预订天数 规则:ydts<=60 信息”预订天数……2个月”
(3)默认值:2
(4)索引 ABCD 普通索引 fl+TTOC(rzsj,1)
(5)表 删除触发器 .F.
3、手动填加 *
4、选表 JSB 显示→数据库设计器→表参照完整性性
第56题(213)
(2)规则:between(cws,1,3) 信息”床位……之间”
(3)默认值 .F.
(4)索引 ABCD 普通索引 STR(cws)+ FH
(5)表 更新触发器 cws=2
3、手动修改
第57题(215)
(2)MPH 字段 输入掩码 99x999
(3).T.
(4)表达式: mph + STR(ch,1)
3、删除触发器 left(xh,2)=”04”
第58题(216)
1、(3).not.empty(JJ)
(4)索引 ABCD 主索引 cgmc
2、更新触发器 KCDM#”60099”
第59题(217)
2、表格只读 readonly T recordsource 0-表
3、数据源所有表 rowsource .dbf
4、初始状态为选中 Value = 1
5、this.value=this.list(4)
6、thisform.Grid1.recordsource=this.value
第60题(218)
1、Border style 2-固定…… auto center .t.自动居中
2、inputmask 999999 readonly T
4、Thisform.text1.value=space(0)
Thisform.text2.value=space(0)
5、将form1 过程 abc 代码复制到”转换”click中
Thisform.text2.value=t2
第61题(219)
1、thisform.label1.height=100
thisform.label1.width=20
thisform.label1.wordwrap=.T.
2、thisform.label1.height=20
thisform.label1.width=100
3、thisfrom.label1.caption=”今天是” + Alltrim(str(day(date())))+”日”
第62题(220)
(1)value 0
(2)readonly .t.
(3)inputmask 999 text2 inputmask 999999.9
(4)text1 过程 valid
If this.value<0
Messagebox(“半径不能为负数!!!”,0+48+0,”注意”)
This.value=0
Endif
(5)command1 click
R=thisform.text1.value
S=3.14
rr
Thisform.text2.vlaue=s
(6) thisform.text1.value=0
Thisform.text2.value=0
(7)thisfrom.release
第63题(221)
(1)20个汉字 maxlength 40 readonly T
(2)…….value=space(0)
(3) if nkeycode <127
Cancel
Endif
(4)return mw
(5)thisform.edit2.value=thisform.encode(thisform.edit1.value)
第64题(222)
选定字段 tsb.sh sm.cbsbh tsb.sm tsb.dj
排序依据:↑tsb.cbsbh ↓tsb.dj
筛选:tsb.cbsbh In “B002”,”B003”,”b004” AND
Tsb.dj Between 20,50
第65题(223)
选定字段 TSB.SH TSB.SM TSB.dj
筛选:tsb.cbsbh=”B004”
排序依据: ↓TSB.dj
杂项:记录个数 5
查询→查询去向→表→TEMP
第66题(224)
选定字段:TSB.cbsbh count(
) as 图书数目
排序依据:↑TSB.cbsbh
分组依据:tsb.cbsbh 满足条件:图书数目>10

第67题(225)
选定字段: TSB.sbsbh count() as 图书数量 AVG(TSB.dj) AS 平均单价
排序依据: ↑TSB.cbsbh
分组依据:TSB.cbsbh
第68题(226)
选定字段:TSB.sm count(
) as 借阅次数
排序依据:↓count()
分组依据:TSB.sm 满足条件:借阅次数>=3
第69题(109)
1、JXGL项目中创建查询
2、字段:left(tsb.flh,at(“.”,flh)-1) AS 图书类别
Sum(TSB.CS) AS 藏书册数
AVG(TSB.jg) AS 平均单价
3、排序依据:↓sum(TSB.CS) ↑AVG(TSB.JG)
4、分组依据:图书类别
查询→查询去向→屏幕→到文本文件 temp
第70题(113)
2、选定字段 KC.KCMC CJ.XH
iif(cj=>60,xf,0) as 学分
LEFT(BZ,7) AS 成绩等级
iif(cj<60,”2010.09.06”,space(10)) as 补考日期
3、分组依据: KC.KCMC CJ.XH
排序依据: kc.kcmc left(bz,7) as 成绩等级
4、满足条件:
Kc.kcmc
成绩等级=”A优秀” OR
成绩等级=”F不及格”
第71题 (110)
1、其他→菜单 menu 修改
图书管理系统 子菜单 点编辑 预约 子菜单
3、- 子菜单
4、借书 命令 DO FORM JS
还书 子菜单
5、文件 编辑
全部关闭 菜单项#
第72题(114)
1、文件 编辑 插入栏
发送(<D)…. 菜单项# _mfi_send
退出菜单 命令 set sysmenu to defa
管理信息系统 子菜单
使用说明 命令
主程序 子菜单
5、显示→常用选项→菜单代码 点设置
在菜单命令里输入 close tables all
第73题(111)
打开项目管理器 表单F102f.scx
1、只读Readonly T 无滚动条 scrollbars
删除“组别”列 编辑→选中按Delete 键即可删除
2、列表框 list1 数据源类型 rowsourcetype
数据源 rowsource
3、表单form1 过程 load
PUBLIC SGroup
SGroup=”A”
4、对象LIST1 过程 interactivechange
SGroup=this.value
Set filter to 组别= SGroup
Goto top
Thisform.refresh 刷新表单
第74题(115)
1、Delete mark F SCROLLBORS RowHeight 27
2、选中表格,单击右键,选“编辑”,然后选文本框控件,按delete 删除。
等比填充 Stretch 1-等比填充
3、对象form1 过程 init
Set filter to 组别=cGroup
Goto top
4、对象optiongrop1 过程 inreractivechange
Thisform.init
Thisform.refresh 刷新
第76题(117)
基本操作
1、新建 数据库 Bookauth.dbc 填加Books 和AUTHORS 表
2、表AUTHORS 单击右键 选修改 打开表设计器 建索引
PK 普通索引 图书编号
作者编号 普通索引 作者编号
4、建立表关系
简单应用
1、打开表单 myform4-4 caption 欢迎您……
Label1 25号黑体
命令按键 关闭 thisform.release
2、新建表单 myform4 command1 command2
(1)查询代码:
Command1 click
Select 作者姓名,所在城市 from AUTHORS;
WHERE 作者编号 in;
(select 作者编号 from books GROUP BY 作者编号 having count(
)>=3);
Order by 作者姓名 into gable new_view
(2)退出 thisform.release
综合应用
(1)打开 books.dbf copy to books_bak
Select * from bokks_bak where 书名 like “%计算机%” into table books_bak
(2) up date books_bak set 价格=价格*(1-0.05)
(3)select top1 books_bak.出版单价,avg(books_bak.价格) as 均价 frombooks_bak Group by books_bak.出版社 having 均价>=25 orer by 2 into table new_table4.dbf
第171题(79)
一、基本操作
1、自由表“货运表” 表结构
二、简单应用
1、视图1 所有字段
排序依据:↑公司编号 ↑ 订单号
2、form1 添加“表格”控件
Recordsource: select * from 货运表
Recordsourcetype: 4.SQL说明
第173题(96)
一、1、添加3个表
2、建索引 订单号 主索引 订单号
3、表关系 订单号
4、更新”限制”、删除“级联”、插入“限制”
二、
1、文件 子菜单 → 打开 命令
新建命令
返回 命令 set sysmenu on
2、建查询 myq
添加 “宿舍情况”和“学生信息”表
选定字段:学号、姓名、宿舍、电话
排序依据:↑学号
第174题(98)
一、1、创建project1项目,再创建“外汇管理”数据库
2、添加currency_s1.dbf和rate_exchange.dbf表
3、打开rate_exchange.dbf 修改 “卖出价”改为“现钞卖出价”
二、1、创建视图 添加表GZ 选定字段(共8个字段)
(工资+补贴+奖励-失业保险-医疗统筹)AS 实发工资
排序依据:↓部门编号
2、打开form1 标题“工资浏览”
按钮“关闭” thisform.release
第175题(99)
一、1、数据库“课本”,填加自由表shu
2、打开表shu copy to ben.dbf
3、新建报表 my 按照步骤操作
二、1、 command1 click
Store DATETIME() to T
Thisform.label1.caption=DTOC(T,1)
Thisform.label1.caption=str(year(date()))+
”年”+str(month(date()))+”月”+str(day(date()))+”日”
第176题(101)
一基本操作
1、学生管理.dbc 分数 默认值 0
2、规则:分数>=0.and.分数<=100
信息:”考试成绩输入有误”
3、添加字段 “备注”字符型 8
简单应用
1、表单form1
command1 click
T=thisfrom.command2.caption
Thisform.command2.caption=shisform.command3.caption
Thisform.command3.caption=T

Command2 click
T=thisfrom.command1.caption
Thisform.command1.caption=shisform.command3.caption
Thisform.command3.caption=T

Command3 click
T=thisfrom.command1.caption
Thisform.command1.caption=shisform.command2.caption
Thisform.command2.caption=T
2、添加表
作者.图书
选定字段 作者姓名 书名 价格 出版单位
排序依据:↑图书.价格
第177题 (102)
一基本操作
1、新建项目 my
2、数据库→ 添加 nba.abc
3、文档 →表单→ 添加 form1.scx
二、简单应用
1、报表→新建→报表向导 “…”找到customer
下一步按要求选→报表标题 客户信息-览表
2、数据库→表→本地视图→添加 3个表
Article customer orderitem
选字段
(orderitem.单价orderitem.数量) as 金额
排序依据: ↑customer.会员号
分组依据:数量。单价
第178题(103)
一、1、打开数据库 stock 找到stock_fk 单击右键→
删除 选 移去。
2、填加表 stock_name
3、单击 stock_sl 右键 选“修改”索引
股票代码 主索引 股票代码
4、规则:left(股票代码,1)=”6”
信息:”股票代码的第一位必须是6”
二、1、新建查询 添加 stock_name 和stock_sl
选定字段 股票简称 买入价 现价 持有数量
排序依据:↓持有数量
2、报表.FRX 报表→报表向导→一对多报表向导
(1)从父表选字段“股票简称”下一步 从子表中选全部字段,下一步
第179题(104)
一、1、打开数据库 rate 添加 rate_exchange 表
2、打开表设计器,建索引
3、规则:持有数量#0
信息:”持有数量不能为0”
默认值:100
二、1、选定字段 外币名称 持有数量
排序依据:↑持有数量
查询→查询去向→表 rate_temp
2、新建→报表→向导→一对多报表
父表 rate_exchange 子表 currency_sl
按要求操作。
第180题(105)
一、1、文件→新建→项目
2、数据库 myd
3、表单 form1
4、炒股管理.dbc
二、1、新建查询 添加“股票信息”和“数量信息”选定全部字段
排序依据:↓数量信息.现金
2、when 改成 on all 改

For subs 改成 where substr
第181题(106)
一、基本操作
1、项目中添加数据库
2、N数值型“√”默认值 .null
规则:价格>0
信息:”价格必须大于0”
3、报表向导 创建报表
二、简单应用
1、本地视图→新建
选定字段:宿舍信息.电话 宿舍信息.宿舍
Left(宿舍信息.宿舍,1) as 楼层
2、筛选:left(学生信息.宿舍,1)=”2”
排序依据:↑学生信息.学号
第182题(107)
一、基本操作
1、数据库→添加 shu
2、索引:订单号 订单号
3、添加三个表 字段:“订单号”“器件号”“器件名”保存 chaxun
筛选:customer.客户号=”c10001”
二、简单应用
1、新建菜单 My 文件→子菜单→创建→打开 子菜单
新建 子菜单
返回 命令
2、建查询:添加两个表“宿舍情况”“学生信息”
选定字段:学号 姓名(学生信息表中)
宿舍 电话(宿舍情况表中)
排序依据:↑学生信息.学号

posted @ 2024-04-17 17:55  白却  阅读(23)  评论(0编辑  收藏  举报
努力加载评论中...