二、程序填空 共10题 (共计100分)
第1题 (10.0分) 题号:91 难度:难 第8章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为
函数值返回。为便于统计,规定各单词之间用空格隔开。
例如:形参s所指的字符串为:This is a C language program.,函数的返回值为6。
-------------------------------------------------------*/
#include
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;
}
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);
}
第2题 (10.0分) 题号:21 难度:难 第8章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:下列给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素做顺时针旋转。
操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最
后一行成为第一列,最后一列成为最后一行,再使临时数组中的元素成为最后一列。
例如:若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
操作后应为:
7 4 1
8 5 2
9 6 3
-------------------------------------------------------*/
#include
#define N 4
void fun(int (*t)[N])
{
int j ,r[N];
for(j=0; j
r[j]=t[0][j];
for(j=0; j
/***********SPACE***********/
t[0][N-j-1]=【?】;
for(j=0; j
t[j][0]=t[N-1][j];
/***********SPACE***********/
for(j=N-1; j>=0;【?】 )
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/***********SPACE***********/
t[j][N-1]=【?】;
}
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
{
for(j=0; j
printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i
{
for(j=0; j
printf("%2d ",t[i][j]);
printf("\n");
}
}
第3题 (10.0分) 题号:87 难度:难 第8章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,
第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。
例如:有下列矩阵:1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
-------------------------------------------------------*/
#include
#define M 3
#define N 5
void fun(int (*a)[N],int k)
{
int i,j,p,temp;
/***********SPACE***********/
for(p=1; p<= 【?】; p++)
for(i=0; i
{
temp=a[i][0];
/***********SPACE***********/
for(j=0; j< 【?】; j++)
a[i][j]=a[i][j+1];
/***********SPACE***********/
a[i][N-1]= 【?】;
}
}
main( )
{
int x[M][N]={ {1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5} },i,j;
printf("The array before moving:\n\n");
for(i=0; i
{
for(j=0; j
printf("%3d",x[i][j]);
printf("\n");
}
fun(x,2);
printf("The array after moving:\n\n");
for(i=0; i
{
for(j=0; j
printf("%3d",x[i][j]);
printf("\n");
}
}
第4题 (10.0分) 题号:93 难度:难 第8章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数
值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为abs5def126jkm8,程序执行后的输出结果为22。
-------------------------------------------------------*/
#include
#include
#include
int fun(char *s)
{
int sum=0;
while(*s)
{
if( isdigit(*s) )
/***********SPACE***********/
sum+= *s- 【?】 ;
/***********SPACE***********/
【?】;
}
/***********SPACE***********/
return 【?】;
}
main()
{
char s[81];
int n;
printf("\nEnter a string:\n\n");
gets(s);
n=fun(s);
printf("\nThe result is: %d\n\n",n);
}
第5题 (10.0分) 题号:40 难度:难 第8章
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:下列给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,
并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如:若s所指字符串为"baacda",c中的字符为a,执行后s所指字符串为"baaaacdaa"。
-------------------------------------------------------*/
#include
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;
}
}
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);
}