int df(void) {
int g=10; g++;
return g; }
int * sf(void) {
static int g=20; g++;
return &g; }
void main() {
int a, b, c, *p; gf(); gf(); a=g; b=df(); b=df();
p=sf(); *p=32765; p=sf(); c=*p;
printf(\ }
4. 假定运行以下程序时输入 3+4*5-3/2=
则程序的输出结果是___________________。 #include
scanf(\ if(p == '=') return x; switch(p) {
case '+': return x + calc(); case '-': return x - calc(); case '*': return x * calc(); case '/': return x / calc(); } }
void main() {
printf(\ }
5. 以下程序的输出结果是___________________。
注意:本题输出结果中的空格请用 标出,一个空格用一个 代替。 #include
第5 页,共10页
static int a[N+1][N+1]={1}; int i, j;
for(i=1; i<=N; i++) for(j=1; j<=i; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j]; for(i=1; i<=N; i++) {
int space = N-i; while(space--)
putchar(' '); /* 输出空格 */ for(j=1; j<=i; j++)
printf(\左对齐输出 */ printf(\左数字右空格 */ } }
6. 以下程序的输出结果是__________________。 #include
static int a[N][N], i, j;
int left=0, right=N-1, up=0, down=N-1; int x=1, row=right, col=down, d=1, done; while(x<=N*N) {
a[row][col]=x; x++;
done = 0; do {
switch(d) {
case 1: col--;
if(col if(row if(col>right) {col=right; d=4; continue;} else {done=1; break;} case 4: row++; if(row==down) { down--; left++; up++; right--; row=down; d=1; continue; } else {done=1; break;} } /* end of switch */ } while(!done); } /* end of while(x<=N*N) */ 第6 页,共10页 for(i=0; i for(j=0; j printf(\ printf(\ } } 四、程序填空题(每空2分,共40分) 1. 输入n(2≤n≤5,程序不需要对此范围进行判断),再输入n个整数保存到数组a中,通过循环查找n个数中是否有重复的数,如果有则输出Yes,否则输出No。要求在循环过程中,任何两个数的比较次数不得超过1次(比如对a[0]与a[1]比较后接下去又对a[1]与a[0]比较是不符合要求的),并且要求一旦找到有数重复则立即结束循环。 #include int a[5], i, j, n; scanf(\ for(i=0; i scanf(\ for(i=0; i<=n-2; i++) { for( (1) ; j<=n-1; j++) { if(a[i] == a[j]) (2) ; } if( (3) ) break; } if( (4) ) puts(\ else puts(\ } 2. hex()是一个递归函数,该函数的功能是通过递归调用把一个长整数转化成十六进制字符串并返回所得十六进制数的位数。main()输入长整数x,调用hex()对它进行转化(转化结果存放在字符数组a中),最后输出结果。例如:输入13,则返回n=1输出D;输入100,则返回n=2输出64;输入65535,则返回n=4输出FFFF。 #include char a[9]; int n; unsigned long int x; scanf(\ 第7 页,共10页 n = hex(x, a); (5) ; puts(a); } int hex( (6) ) { char t[]=\ int n; if(x<16) { a[0] = t[x]; return 1; } n = hex(x/16, a); a[n] = (7) ; return (8) ; } 3. 设文件file1.txt中以如下文本格式存放一批学生的姓名及成绩: Tom 80 Jerry 90 姓名与成绩之间用至少一个空格分隔并且每个学生的姓名中不含空格。现通过编程读取file1.txt中的资料,找出其中成绩最高的那位学生(假定最高分唯一),并把该生的资料写入file2.txt中。 #include char name[10]; int score; } ST; void main() { FILE *fp1; FILE *fp2; ST a, max; fp1 = fopen(\ fp2 = fopen(\ if( (9) ) { puts(\ exit(0); } max.score = -1; while( (10) ) { (11) ; if(a.score > max.score) { 第8 页,共10页
相关推荐: