二、程序填空 共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); }