全国计算机等级考试题库二级C操作题100套(第67套)
第67套:
給定程序中,函數fun的功能是:調用隨機函數產生20個互不相同的整數放在形參a所指數組中(此數組在主函數中已置0)。
請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdlib.h>
#define N 20
void fun( int *a)
{ int i, x, n=0;
x=rand()%20;
while (n<1)
{ for(i=0; i<n; i++ )
if( xa[i] ) 2;
if( i3){ a[n]=x; n++; }
x=rand()%20;
}
}
main()
{ int x[N]={0} ,i;
fun( x );
printf(“The result : \n”);
for( i=0; i<N; i++ )
{ printf("%4d",x[i]);
if((i+1)%5==0)printf("\n");
}
printf("\n\n");
}
解題思路:
第一處:一共產生20個隨機數,所以應填:N。
第二處:要求產生不同的20個整數,所以采用for循環對已產生的隨機數進行比較,是否有相同數,如果有相同,則退出循環體,所以應填:break。
第三處:當退出循環體還是進行判斷,i和n的值是否相等,如果相等,則表示該隨機整數不重復,可以存放到指定的數組中,所以應填:n。
給定程序MODI1.C中函數fun的功能是: 先從鍵盤上輸入一個3行3列矩陣的各個元素的值, 然后輸出主對角線元素之和。
請改正函數fun中的錯誤或在橫線處填上適當的內容并把橫線刪除,使它能得出正確的結果。
注意:不要改動 main 函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h>
int fun()
{
int a[3][3],sum;
int i,j;
______;
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
scanf("%d",a[i][j]);
}
for (i=0;i<3;i++)
sum=sum+a[i][i];
printf(“Sum=%d\n”,sum);
}
main()
{
fun();
}
解題思路:
第一處:變量sum進行初始化,由于計算累加和,所以應為:sum=0;。
第二處:讀入整型數,應使用地址讀入,所以應為:scanf("%d",&a[i][j]);。
編寫程序, 實現矩陣(3行3列)的轉置(即行列互換)
例如, 輸入下面的矩陣:
100 200 300
400 500 600
700 800 900
程序輸出:
100 400 700
200 500 800
300 600 900
注意: 部分源程序在文件PROG1.C中。
請勿改動主函數main和其它函數中的任何內容, 僅在函數fun的花括號中填入你編寫的若干語句。
給定源程序:
#include <stdio.h>
int fun(int array[3][3])
{
}
main()
{
int i,j;
int array[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf(“Converted array:\n”);
for (i=0;i<3;i++)
{ for (j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
NONO();
}
解題思路:
本題是解決矩陣的轉置問題。
參考答案:
int fun(int array[3][3])
{
int i,j,arr[3][3] ;
memcpy(arr, array, 9*sizeof(int)) ;
for(i = 0 ; i < 3 ; i++)
for(j = 0 ; j < 3 ; j++)
array[i][j] = arr[j][i] ;
}
總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第67套)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瑞星跌落启示录
- 下一篇: 各大视频网站下载神器