C语言补充材料(2014.6)
则枚举常量c和e的值分别是( )。 A)11和16 B)14和16 C)11和13 D)2和4
94. 若已定义:
enum colors {red,green=2,blue, black}x,a[3]; 以下语句()。
/ * 语句 1 */ a[1]=black ; / * 语句 2 */ red = 1 ; / * 语句 3 */ x= green ;
A) 语句1 与语句2正确 ,语句3错误 B) 语句1与语句3正确,语句2错误
C) 语句2 与语句3正确,语句1错误 D) 语句1正确,语句2和语句3错误
七、文件
95. 以下程序的运行结果是( )。 #include void main( ) { FILE *fp;
int a=3, b=5, x=0, y=0, z; fp=fopen(“test.txt”,”w”); fprintf(fp, “%d\\n%d”, a, b); fclose(fp);
fp=fopen(“test.txt”,”r”);
fscanf(fp, “%d%d”, &x, &y); z=x+y;
printf(“%d\\n”, z); fclose(fp); }
A)8 B)3 C)5 D)0
96. 若文本文件data.txt的内容为hotel, 以下程序段的进行结果是( )。 FILE *fp; char str[10];
fp=fopen(“data.txt”, “r”); fgets(str, 4, fp); printf(“%s”, str);
A)Hote B)Hotel C)Ho D)Hot
97. fscanf( )函数的正确调用形式是( )。 A) fscanf( 文件指针,输入表列,格式字符串) B) fscanf(文件指针,格式字符串,输入表
列)
C) fscanf(格式字符串,文件指针,输入表
列)
D) fscanf(格式字符串,输入表列,文件指
针)
98. 以下程序后,文件test.txt的内容是( )。 #include void main( ) {FILE *fp;
fp=fopen(“test.txt”,”w”); fprintf(fp, “%s”,”How ”); fclose(fp);
fp=fopen(“test.txt”,”a”); fprintf(fp, “%s”,”are you!”); fclose(fp); }
A) How are you! B) How
C) are you! D) you!
99. 对已打开的文件操作完成后,应使用( )将文件关闭。
A) close()函数 B) closefile( )函数
C) openfile ( ) 函数 D) fclose( )函数
9
改错题
1) 修改程序cmody591.c,按每行10个数的形式输出[10,99]区间内满足“个位数与十位数之积大于它们之和”的所有整数。例如:
整数38, 个位数与十位数之积24(3×8)大于它们之和11(3+8)
#include #include void main() { int i,j,k,s,n=0;
for(i=10;i<100;i++) { /**/ k=0; /**/ s=0; j=i; while(j)
{ k*=j; s+=j;
/**/ j=j /**/; }
if(/**/ k
{ if(n==0) printf(\ n++;
printf(\ } }
printf(\ getch(); }
2) 修改程序cmody592.c,使函数pnt(int a[M][M], int n), 根据参数n(1当n=6时, 输出:
11 13 15 17 19 21 22 23 24 25 26 27 33 35 37 39 41 43 44 45 46 47 48 49 55 57 59 61 63 65 66 67 68 69 70 71 当n=3时, 输出: 11 13 15 22 23 24 33 35 37
#include #include #define M 9
void pnt(int a[M][M],int n) { int /**/i,j /**/; for(i=0;ifor(j=0;ja[i][j]=s+2*j; else
a[i][j]=/**/ s+j+1 /**/; } }
printf(\ for(i=0;iprintf(\ printf(\ } }
void main() { int a[M][M]; int n; do { printf(\input n(1scanf(\ }while(n<=1 || n>=10); pnt(/**/ a[ ]/**/,n); getch(); }
3) 修改程序cmody601.c,使字符串中所有大写的英文字母转换为小写英文字母(其它字符不变)。例如:
原字符串:g@O355o6D LuCk! 被转换成:g@o35506d luck! #include #include #include void main() {
char src[80],tag[80]; int i;
10
C语言补充材料(2014.6)
/**/ i='0'; /**/
printf(\ gets(src);
strcpy(tag,src);
while(/**/ tag[i]=='\\0' /**/) {
if(tag[i]>='A' && tag[i]<='Z') /**/ tag[i]-=32; /**/ i++; }
printf(\source string: %s\\n\
printf(\ getch(); }
(4)修改程序cmody602.c,使函数p_swap( )利用指针变量实现函数main( )中两个变量值的交换。例如:
输入:23, 78
显示:Original a=23, b=78 Now a=78, b=23
#include #include
void p_swap(int *x,int *y) {
int /**/ t /**/; temp=*y;
*y=/**/ x /**/; *x=temp; }
void main() {
int a,b;
printf(\
scanf(\ printf(\a=%d, b=%d\\n\
p_swap(&a,/**/ b /**/);
printf(\ getch(); }
(5)修改程序cmody611.c,已知圆柱体底面圆的半径r,从键盘输入圆柱体的高h, 若h>=0,则根据以下公式求圆柱体
的体积, 否则提示出错信息。
result=PI*r2*h , 其中,
PI?3.14
#include #include
#define /**/ PI=3.14 /**/ void main() {
float r=5.0,h,result;
printf(\ scanf(\ if(/**/ h<0 /**/) {
result = PI*r*r*h; printf(\result is:%.2f\\n\ } else
printf(\ getch(); }
6)改错题cmody612.c,使函数arrayclass(int a[ ])完成如下功能:
(1)遍历数组a,找出其中做大值max和最小值min;
(2)再次遍历数组a 进行元素归类, 若元素与max差值的绝对值小于其与min差值的绝对值,则将该元素存入数组max_class中,否则存入数组min_class中;
(3)变量n_max和n_min分别表示存入数组max_class和min_class的元素个数。
#include #include #include #define N 15
void arrayclass(int a[ ]) {
int max_class[N], min_class[N]; int i, max, min, n_max, n_min; /**/ n_max=0 /**/; max=min=a[0];
11