关于一些全国2级计算机C语言的题目!!请高手指点!

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:02:57
我有一些关于C语言的问题想问问!寻找高手!QQ125357432
1.#include <stdio.h>
#define N 6
main()
{char c[N];int i=0;
for (i=0;i<N;i++)c[i]=getchar();
for (i=0;i<N;i++)putchar(c[i]);
}
当运行以上程序时输入三行,每行都是在第一列上开始,<CR>代表Enter键;
a<CR>
b<CR>
cdef<CR>
答案是什么?书上说:“在输入时,空格,回车符都将作为字符读入,而且只有用户敲入Enter键时,读入才开始执行。”
这题回车符也算是字符,那是不是<CR>和敲Enter键不一样?
2.#include <stdio.h>
#define LOW 0
#define HIGH 5
inti=HIGH,m;
void work(int t)
{t=(t<m?HIGH:LOW);
m++;
}
int reset(int i)
{intm=(i=7,0);
reture m;
}
void main()
{
int i=HIGH;
reset(i/2);
i=reset(i=i/2);
for(;m<3;m++)
{extern int i;
work(i=i/2);
printf("i=%d",i);
}
这题第一次循环我懂i=2,但是到第二次循环的是extern里的i是5还是2?
3.#include<stdio.h>
#include<stdlib.h>
void fun(float *p1,float *

http://edu.stuccess.com/knowcenter/CProgramming/index.htm

我来回答你吧,
第一题你用for循环来输入6个字符,当然<CR>和ENTER代表的意义是一样的,他们是转意字符,不在屏幕上显示,当你输入到d的时候已经够6个了,其后面的就不在显示了,所以该程序的输出结果应该是
a
b
cd
第二题,我看来你的程序有错误,for(;m<3;m++) 中的m应该是i吧?循环应该是3次,因为i从0开始到2结束,
extern的作用是引用静态变量,所以extern int i;中的i应该是HIGH的值是5.
第三题s=(float*)calloc(1,sizeof(float));在函数中使s指向一段存储单元的首地址,并把s初始为NULL
*s=*p1+*p2++; 在函数中的值为11.0,但是printf("%5.2f\n",*s); 中的*s与上面的无关,就是说打印的*s是a[0],也就是说在fun函数中的*s从新分配到空间,和实参的s已经不一样了,就这样吧.
不好意思啊,我没有分析对,我运行了你的程序又分析了半天,终于明白,上面的错了,我重来:
for(;m<3;m++)这个循环中m的初值是0,因为你在最上面定义了但没有对其赋值在主函数中也没有运算所以系统会对其赋值为0,extern int i; 调用的是静态变量,其值是5,因为其前面是extern 就是这个功能work(i=i/2);中的i也是按5运算的,i=2,
只后调用void work(int t)
{t=(t<m?HIGH:LOW);
m++;
其中t=2,t=(t<m?HIGH:LOW);没有实际意义,最后m++到2,打印1=2在执行循环,共循环2次,第二次i=i/2,最终i=1,在调用void work(