生活随笔
收集整理的這篇文章主要介紹了
全国计算机等级考试题库二级C操作题100套(第97套)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第97套:
函數fun的功能是:逆置數組元素中的值。例如:若a所指數組中的數據依次為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1。形參n給出數組中數據的個數。
請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#include <stdio.h>
void fun(int a
[], int n
)
{ int i
,t
;
for (i
=0; i
<___1___
; i
++)
{
t
=a
[i
];
a
[i
] = a
[n
-1-___2___
];
___3___
= 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");
}
解題思路:
第一處:利用for循環語句,對數組中的各元素進行逆置,所以終止值為n/2。
第二處:進行交換數組中元素的值,由于是依次是首和尾交換,所以應填:i。
第三處:使用中間變量t來交換的,所以應填:a[n-i-1]。
給定程序MODI1.C中函數fun的功能是:將一個由八進制數字字符組成的字符串轉換為與其面值相等的十進制整數。規定輸入的字符串最多只能包含5位八進制數字字符。
例如,若輸入:77777,則輸出將是:32767。
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
給定源程序:
#include <stdio.h>
int fun( char *p
)
{ int n
;
n
= *P
-'o';
p
++;
while( *p
!=0 ) { n
=n
*8+*P
-'o'; p
++;
}
return n
;
}
main()
{ char s
[6]; int i
; int n
;
printf("Enter a string (Ocatal digits): "); gets(s
);
if(strlen(s
)>5){ printf("Error: String too longer !\n\n");exit(0); }
for(i
=0; s
[i
]; i
++)
if(s
[i
]<'0'||s
[i
]>'7')
{ printf("Error: %c not is ocatal digits!\n\n",s
[i
]);exit(0); }
printf("The original string: "); puts(s
);
n
=fun(s
);
printf("\n%s is convered to integer number: %d\n\n",s
,n
);
}
解題思路:
第一和第二處:p錯寫成P,‘0’錯寫成’o’。
學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:函數返回指定學號的學生數據,指定的學號在主函數中輸入。若沒找到指定學號,在結構體變量中給學號置空串,給成績置-1,作為函數值返回。(用于字符串比較的函數是strcmp)。
注意: 部分源程序在文件PROG1.C中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入
你編寫的若干語句。
給定源程序:
#include <stdio.h>
#include <string.h>
#define N 16
typedef struct
{ char num
[10];
int s
;
} STREC
;
STREC
fun( STREC
*a
, char *b
)
{
}
main()
{ STREC s
[N
]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85}, {"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91}, {"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
STREC h
;
char m
[10];
int i
;FILE
*out
;
printf("The original data:\n");
for(i
=0; i
<N
; i
++)
{ if(i
%4==0) printf("\n");
printf("%s %3d ",s
[i
].num
,s
[i
].s
);
}
printf("\n\nEnter the number: ");gets(m
);
h
=fun( s
,m
);
printf("The data : ");
printf("\n%s %4d\n",h
.num
,h
.s
);
printf("\n");
out
= fopen("c:\\test\\out.dat","w") ;
h
=fun(s
,"GA013");
fprintf(out
,"%s %4d\n",h
.num
,h
.s
);
fclose(out
);
}
解題思路:
本題是從學生記錄體中找出給定的學號。具體操作請看答案程序中的說明。
參考答案:
STREC
fun( STREC
*a
, char *b
)
{
STREC c
;
int i
;
c
.num
[0] = '\0' ;
c
.s
= -1 ;
for(i
= 0 ; i
< N
; i
++)
if(strcmp(a
[i
].num
, b
)==0) {
strcpy(c
.num
, a
[i
].num
) ;
c
.s
=a
[i
].s
;
break ;
}
return c
;
}
總結
以上是生活随笔為你收集整理的全国计算机等级考试题库二级C操作题100套(第97套)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。