开始,x=8,x%3=2,执行printf("%d,",x--);,先输出8,然后x变成7,continue;
进入第2次循环,x变成6,x%3=0,执行printf("%d,",--x);,因为是--x,所以x先变成5,然后输出5;
进入第3次循环,x变成4,x%3=1,输出4,x变成3,continue;
进入第4次循环,x变成2,x%3=2,输出2,x变成1,continue;
x再减1,变成0,不满足循环条件,退出,程序执行结束。
所以最后输出为:8,5,4,2,
使用文本编辑工具,逐条编写源程序的语句。保存源程序的文件时,文件的后缀名与所用的高级语言有关。
使用高级语言编写程序的一般过程可以归纳为以下几个步骤:(1)使用文本编辑工具,逐条编写源程序的语句。保存源程序的文件时,文件的后缀名与所用的高级语言有关。(2)编译源程序文件,生成目标文件,文件后缀名通常为obj。(3)链接目标文件,生成可执行文件,文件后缀名通常为exe。(4)在计算机上运行可执行程序,并进行调试和维护。
程序的执行环境由 *** 作系统提供,一般分为命令行环境和图形用户界面环境。在DOS与大多数Unix类 *** 作系统中,提供的就是命令行用户界面,用户需要在系统命令提示符后面输入各种 *** 作命令以实现需要的功能;在Windows *** 作系统中,提供的是图形用户界面,用户可以通过点击鼠标等 *** 作完成希望的功能。“界面就是程序”反映了在程序设计中为用户提供良好的 *** 作界面的重要性。用户使用界面的好坏直接影响着程序的质量,要树立以人为本的思想,尽量为用户提供便利。
首先你贴出的程序错误百出,虽然都是一些简单错误,但可见平时你并没有养成良好的编码习惯,在此,贴上正确的代码你自己比较一下吧(C++编译环境):
#include <stdioh>
#include <conioh>
struct stru{
int x;
char ch;
};
void func(struct stru b); //函数实现前先声明
void main()
{
struct stru a={10,'x'}, p = &a;
//printf("修改前%d\n",p);
func(p);
printf("%d,%c\n",ax,ach);
//printf("修改后%d",p);
getch(); //暂停输出结果
}
void func(struct stru b)
{
b->x = 200;
b->ch = 'y';
}
运行过程其实很简单,只需要跟着main函数一步步走就可以了:
1)定义一个结构体变量a,并对a赋初值{10, 'x'},同时定义了一个指向结构体的指针p,并对p赋初值&a(即结构体a在内存中的地址)。
2)调用函数func,func函数只有一个入参p(p是实参),此时,在func中,结构体指针b相当于p,指向结构体a的内存地址,因此,刚进入函数时b->x = 10; b->ch = 'x';
但是,紧接着下面两个赋值语句就改变了指针b指向的结构体a内存地址的值(注意:地址并未改变,改变的是值。可以将上面程序两句解注释运行,就能看到地址没有变化)。
3)最后,printf函数输出的自然就是200, y(结构体a中存储的值)。
编译过程会产生o文件(目标文件)链接后产生可执行文件。
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
不同的系统,产生的文件不一样;
win:
->obj目标文件
->obj目标文件->exe可执行文件
->rc
扩展资料:
解释方式下,计算机对高级语言书写的源程序一边解释一边执行,不能形成目标文件和执行文件。
编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序,通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。
调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。
参考资料来源:百度百科-编程
C源程序到运行程序步骤:
1编辑:输入源程序并存盘(C)
2编译:将源程序翻译为目标文件(OBJ)
3链接:将目标文件生成可执行文件(
EXE)
4运行:执行EXE文件,得到运行结
以上就是关于c语言程序的运行过程求解全部的内容,包括:c语言程序的运行过程求解、简述高级语言程序的运行过程、程序的运行过程和结果谁告诉下啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)