自测题二-参考答案

  • 格式:docx
  • 大小:53.66 KB
  • 文档页数:9

int main() { int i; _struct stud_type stu[N]______________________; printf("Please input %d student’s name num score:\n",N); for(i=0;i<N;i++) scanf("%s%d%f", __stu[i].name,&stu[i].num, &stu[i].score______________________________); sort(stu,N); printf("The sort is:\n"); for(i=0;i<N;i++) printf("%8s%5d%8.2f\n",stu[i].name,stu[i].num,stu[i].score); return 0; } void sort(struct stud_type stu[], int n) { int i,k,j; struct stud_type t ; for(i=0;i<n-1;i++) { __k = i________; for(j=i+1;j<n;j++) if(stu[k].score<stu[j].score) k=j; if (k!=i) {____t = stu[i]________ ; stu[i]=stu[k]; stu[k]=t; } } }
12. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: struct student { char name[20]; int nl; float ave; }qq; 则变量 qq 在内存中所占的字节数是___26_______。 题号 二 得分 阅读程序写结果(32 分,每小题 4 分): 1. #include <stdio.h> int main() { float score; score = 100; if (score<60) printf("E\n"); else switch( ( int ) score / 10 ) { case 10: case 9: printf("A\n"); case 8: printf("B\n"); case 7: printf("C\n"); break; case 6: printf("D\n"); break; default: printf("Error\n"); } return 0;
___scanf(“%c”,&ch)___________。 8. 若 函 数 头部 定 义 为 float foo( ), 则 该 函数 中 return 语 句 返 回的 数 据 类 型 是 ______float__________。 9. 已知:int a[][3]={ 2,4,6,8,10,12}; 则*(a[1]+1)的值为_____10___________。 10. 指针变量是一种专门存放_____地址_____的变量。 11. 设 a=1,b=3,c=5,d=7,则表达式 a>b?a:c>d?a:d 的结果为_____7___________。 教务处印制 共 8 页 (第 1 页)
自测题二
注意:1.命题时请适当留答题位置。请用深蓝色墨水书写,字、图清晰,书写不出边框。 2.答题演草时不许使用附加纸,试卷背面可用于演草。试卷不得拆开。
题号 得分

填空(12 分,每空 1 分): 1. 每个 C 程序都必须有且仅有一个_main_______ 函数。 2. 语句 printf("\104")执行的结果输出是 _D_____。 3. 为了表示字符串的结束, 系统自动在字符串的最后加一个___’\0’___, 但不被输出。 4. 表达式 (int)(14.7+25.6)/3%5 的值是_3_____。 5. 设有数组 int a[10],数组元素 a[7]用指针表示的形式是__*(a+7)______________。 6. int x,y,z; x=y=z=3;y=x++-1;printf("%d,%d,%d",x,y,z);的值为__4,2,3____。 7. 有 char ch , 则 从 键 盘 给 ch 赋 值 的 格 式 输 入 语 句 为 :
3.10 11 12
4.
4.p=16
5.
5. 29
教务处印制

8 页 (第
3
页)
6.
#include <stdio.h> #include <string.h> int main() { char a[30]="Hello "; char b[10]="Everyone"; char c[10]="world"; strcat(a,c); printf("%s,%s.\n",a,b); return 0; } #include <stdio.h> union out { int a[2]; struct { int b; int c; }in; int d; }; int main() { union out e; int i; e.in.b=5; e.in.c=6; e.d=7; for(i=0;i<2;i++) printf("%5d",e.a[i]); printf("\n"); return 0; #include <stdio.h> void sub(int x, int y, int *z) { *z = y - x; } int main() { int a, b, c; sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(" %4d, %4d, %4d\n", a, b, c); return 0; } 共 8 页 (第 4
页)
2. ! ! !* ! !** !*** ****
页)
3.
#include <stdio.h> int f(int a); void main() { int a=7,i; for(i=1;i<4;i++) printf("% d",f(i)); } int f(int a) { int b=2,c=5; b++; c++; return(a+b+c); } #include <stdio.h> long fun(int x,int n); int main() { int x=2,n=4; long p; p=fun(x,n); printf("p=%ld\n",p); return 0; } long fun(int x,int n) { int i; long p=1; for(i=0;i<n;i++) p*=x; return p; } #include <stdio.h> int main() { int i,j,k=0,a[3][3]={1,3,5,7,9,11}; for(i=0;i<3;i++) for(j=i;j<3;j++) k=k+a[i][j]; printf("%d", k); return 0; }
} 输入 100 2. #include<stdio.h>
1.A B C
int main() { int i,j,k; for(i=1;i<=4;i++) { for (j=1;j<5-i;j++) printf("!"); for(k=1;k<=i;k++) printf("*"); printf("\n"); } return 0; } 教务处印制 共 8 页 (第 2
教务处印制
题号 得分 六

8 页 (第
7
页)
编程二(15 分): 1. 编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约 数、最小公倍数中至少有一个通过自定义函数来实现。 (提示:两个正整数的最大公约数 和最小公倍数的乘积等于这两个正整数的乘积)
教务处印制

8
页 (第
8
题号 得分 四
改错题(共 10 分,每个错误 2 分): 1. 以下程序的功能:把文件 source.txt 的内容输出到屏幕上。 (共 5 个错误点,请在错 误的位置处划线,并且题后的表格里改正这些错误) #include<stdio.h> #include<stdlib.h> int main() { char *fp; FILE *fp char ch; fp=fopen("source.txt", "w"); “w” to ”r” if(fp=NULL) = to == { printf("\nCannot open file\nStrike any key exit!\n"); getchar(); exit(1); } fscanf("%c",&ch); fscanf(fp, “%c”, &ch)
6. Hello world, Everyone.
7.
7. 7
6
} 8.8. ຫໍສະໝຸດ 5,-12,-7教务处印制