导航:首页 > 源码编译 > 编译参考2001年

编译参考2001年

发布时间:2022-05-18 23:44:17

‘壹’ 编译后生成错误:error C2001

1.查找是否有双字节字符的语法错误.
2.若不是1点错误,则可以把文件另存为UNICODE模式,再重新编译应该可以通过了.

‘贰’ 音乐文献编译

上海音乐学院音乐文献编译专业从不列有考试参考书,考生只能是从“东方音乐研究”专业方向研究书目中,进行复习。另外上海音乐学院从来就没有历年考试试题,所以在网络上打着类似旗号的,需要格外的注意和小心。

考试科目如下:
③711音乐学综合理论④811音乐分析基础或827音乐评论文写作
音乐分析基础包括形态分析(70%)与和声分析(30%)
⑤526音乐文献阅读与翻译⑥611口试A (口试A含乐器演奏) 口试时需提交一篇论文(5000字以上)。

音乐学综合理论:
西方音乐史:沈旋等:《西方音乐史简编》,上海音乐出版社,1999年;
中国音乐史:夏野:《中国古代音乐史简编》,上海音乐出版社,1989年;
汪毓和:《中国近现代音乐史》,人民音乐出版社,1994年修订本;
音乐美学:张前、王次炤:《音乐美学基础》,人民音乐出版社,1992年;
张前:《音乐美学教程》,上海音乐出版社,2001年。
世界音乐:洛秦:《心&音.com-世界音乐人文叙事》,上海音乐出版社,2002年;
俞人豪、陈自明:《东方音乐文化概论》,人民音乐出版社;
中国传统音乐:袁静芳:《中国传统音乐概论》,上海音乐出版社,2000年;
黄允箴、王璨、郭树荟:《中国传统音乐导学》,上海音乐学院出版社,2006年。

音乐分析基础:
曲式分析(70%):钱仁康、钱亦平:《音乐作品分析教程》,上海音乐出版社,2001年。
和声分析(30%):桑桐:《和声学教程》,上海音乐出版社,2001年。

19东方音乐研究:
俞人豪、陈自明:《东方音乐文化》,人民音乐出版社,1995年;
赵维平:《中国古代音乐文化东流日本的研究》,上海音乐学院出版社,2004年;
林谦三:《东亚乐器考》,人民音乐出版社,1996年第二次印刷。

此外,还需要阅读以下基本着作。
第五届中日音乐比较国际学术研讨会 赵维平 上海音乐学院出版社
中国与东亚诸国音乐文化流动 赵维平 上海音乐学院出版社
中国与东亚音乐历史研究 赵维平 上海音乐学院出版社
 

‘叁’ 有巜编译参考》这种刊物吗邮发代码是多少

摘要 《编译参考》是由中国外文局编译研究中心主办的期刊。

‘肆’ 编译时间和生产日期哪个在前面

生产日期在前。

?1.编译时间是手机系统软件版本编译完成的时间,新手机的系统编译时间通常会早于手机出厂和购买时间的。

?2.手机的生产日期可以在手机包装盒上查询到。手机的生产日期是固定的,不可以更改。

?3.手机的购机使用时间是无法直接查到的,可以参考手机发票上的购机时间,如果您的发票已遗失,可以查看手机包装盒上的生产日期。

‘伍’ 参考文献那个,46.11-19. 2001代表啥意思

【格式】[序号]作者.篇名[J].刊名,出版年份,卷号(期号):起止页码.

刊名是Babel,2001年是出版年份,期号是46期,在11到19页

‘陆’ c语言编程编译正确,连接错误,提示的是error link2001,大家谁能给我改下啊。

#include <stdio.h>
#include <stdlib.h>
#define N 30
struct stud
{char num[5],name[10];
int s[4];double ave;
};
void readrec(stud a[]); //这里声明的时候要和下面实现保持一致
void writerec(stud a[]);//这里声明的时候要和下面实现保持一致
int main()
{
int i;
struct stud b[N];
printf("please enter the 30 students' information:\n");
readrec(b); //调用要这样写
writerec(b); //调用要这样写
}
void readrec(stud a[N])
{int i,j;double b;
printf("please enter the 30 students' name:\n");
for(i=0;i<N;i++)scanf("%c",a[i].name);
printf("please enter the 30 students' number:\n");
for(i=0;i<N;i++)scanf("%d",a[i].num);
printf("please enter the 30 students' marks:\n");
for(i=0;i<N;i++)
{for(j=0;j<4;j++)
{scanf("%lf",a[i].s[j]);
b=(a[i].s[0]+a[i].s[1]+a[i].s[2]+a[i].s[3])/4;
a[i].ave=b;
}
}
}
void writerec(stud a[N])
{int i,j;
printf("\nnumber name marks ave\n");
for(i=0;i<N;i++)
{printf("\n%d %c %d %d %d %d %f\n",a[i].num,a[i].name,a[i].s[0],a[i].s[1],a[i].s[2],a[i].s[3],a[i].ave);
}
}

‘柒’ 2001年4月份全国高等教育自学考试计算机基础与程序设计试题及答案

2001年4月份全国高等教育自学考试
计算机基础与程序设计试题及答案
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.I/O设备指的是计算机的()
A、存储设备
B、输入和输出设备
C、控制器
D、运算器
2.具有只读功能的内存储器是指()
A、ROM
B、RAM
C、硬盘
D、CD-ROM
3.C语言源程序的基本单位是()
A、过程
B、函数
C、子程序
D、语句
4.字符串常数"CHINA"在内存中存储时占的字节数是()
A、5个
B、6个
C、7个
D、8个
5.设有int p,q;以下不正确的语句是()
A、p*=3
B、p/=q
C、p+=3
D、p&&=q
6.如果a=1,b=2,c=3,d=4,则表达式a>b?a:cA、1
B、2
C、3
D、4
7.下面程序段的运行结果是( )
main( )
{Int a=11,b=10;
a-=b+1;
printf("%dn",a);
}
A、1
B、0
C、2
D、5
8.下列程序段执行后输出结果为()
int i=-1;
if(i<=0)printf("****n");
else printf("%%%%n");
A、****C
B、%%%%
C、%%%%C
D、****
9.若所用变量已正确地定义,则下列程序段输出结果为()
a=10;b=50;c=30;
if(a>b)a=b
b=c;c=a
printf("a=%d,b=%d,c=%dn",a,b,c);
A、a=10,b=50,c=10
B、a=10,b=30,c=10
C、a=50,b=30,c=10
D、a=50,b=3,c=50
10.下述循环的循环次数是()
int k=2;
while(k=0)printf("%d",k);
k--;printf("n")
A、无限次
B、0次
C、1次
D、2次
11.在下列选项中,没有构成死循环的程序段是()
A、int i=100;
while(1)
{i=i0+1;
if(i>100)break;
}
B、for(;;)
C、int k=1000;
do(++k;) while(k>=10000);
D、int s=36;
while(s);--s;
12.若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是()
int a[]={0,1,2,3,4,5,6,7,8,9},*p,i;
p=a
A、*(a+i)
B、a[p-a]
C、p+i
D、*(&a[i])
13.下面能正确将字符串"Boy"进行完整赋值操作的语句是()
A、char s[3]={'B','o','y'};
B、char s[ ]="Boy";
C、char s[3]={"Boy"};
D、char s[3];
s[0]='B';s[1]='o';s[2]='y'
14.以下程序段的输出结果是( )
char arr[ ]="ABCD";
char*ptr;
for(ptr=arr;ptrprintf("%sn",ptr);

A、ABCD
B、
A
C、
D
D、
ABCD

B
C
BCD

C
B
CD

D
A
D

15.下面说法不正确的是()
A、一个源程序文件由一个或多个函数组成。
B、一个C程序由一个或多个源程序文件组成。
C、一个C程序以函数为独立的编译单位。
D、一个C程序必须有一个main()函数。
16.C语言的auto型变量是()
A、存储在动态存储区中。
B、存储在静态存储区中。
C、存储在计算机CPU的寄存器中。
D、存储在外存储器中。
17.以下程序的运行结果是()
void swapl(x,y)
int x,y;
{int t;t=x;x=y;y=t;}
void swap2(p1,p2)
int *p1,*p2;
{*p1=*p2;*p2=*p1;}
main()
{int a=3,b=5,*x1=&a,*x2=&b;
swap1(a,b);
printf("a=%d,b=%dn",a,b);
swap2(x1,x2);
printf("a=%d,b=%dn",a,b);}

A、
a=5,b=3
B、
a=3,b=5
C、
a=5,b=3
D、
a=3,b=5

a=5,b=3
a=3,b=5
a=3,b=3
a=5,b=5

18.下列定义中,不是指针数组定义的是( )
A、int *p[5];
B、float *q[4];
C、int (*r)[6];
D、char *w[7];
19.以下程序的运行结果是()
#define sl(x)(3.14*(x)*(x))
#include
main()
{float x,s;
s=s1(10);
printf("%.2fn",s);}
A、3.14
B、31.40
C、314.00
D、6.28
20.测试文件是否结束函数的函数名是()
A、feof
B、EOF
C、eof
D、FEOF

二、多项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的五个选项中有二至五个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。多选、少选、错选均无分。
21.下列哪些设备属外存储设备()
A、RAM
B、光盘
C、硬盘
D、软盘
E、磁带
22.?X*.C可以代表的文件是()
A、AXCD.C
B、AXCD.D
C、ABX.C
D、RX.C
E、XX1234.C
23.若有int x;float y;指出下面结果为整型数的表达式()
A、(int)(x+y)
B、(int)x+y
C、'a'+x
D、x+(int)y
E、x*y
24.若所用变量已正确定义,下列for循环语句中语法正确的有()
A、for(x=0;i=0;i<=10;i++)
x++;
B、for(x=0,i=0,i<=10,i++)
x++;
C、for(x=0,i=0;i<=10;i++)
x++;
D、i=0;x=0;
for(i<=10;i++)
x++
E、i=0;x=0;
for(;i<=10;i++)
x++
25.若有定义及赋值:()
int y,*p,*p1;
p=&y;p1=p;*p1=4;
则可以输出变量y的地址的语句是
A、printf("%un",y);
B、printf("%un",p);
C、printf("%un",*p);
D、printf("%un",&y);
E、printf("%un",*p1);
26.若有定义及赋值:()
int a[10]={0,1,2,3,4,5,6,7,8,9},*p;
p=a;
则引用a中值为5的元素的表达式是
A、a[5]
B、a[4]
C、*(a+5)
D、p[5]
E、*(p+4)
27.若有定义及赋值:()
int a[6][6],*p;
p=*a;
则下列各式中表示地址的表达式是
A、a[1]
B、a[1]+1
C、a[3][3]
D、&a[1][3]
E、p[0][0]
28.若有定义及赋值:()
int x[5][6],*p;
p=*x;
则不能正确引用数组元素x[0][2]的值的表达式是
A、x[0][2]
B、p[0][2]
C、x[0]+2
D、*x+2
E、*(*x+2)
29.下面各式正确的是()
A、struct 1_num
{long num;struct 1_num*next;}num1,*p1;
p1=&num1;
B、struct animal
{char name [30],float weight,}rabbits;
C、struct star
{int bh,char name [20],}my_star;
my_star.name="moon";
D、struct {char x[20];char y[30];int u;}x1,y;
E、struct food
{int code;char name [30];struct food *p;};
struct food *tail;
30.设有int y,u=0,x=15,下列各项中能使y值为0的是()
A、y=x∧x;
B、y=x∣u;
C、y=x>>4;
D、y=x&u;
E、y=~u;

第二部分非选择题

三、填空题(本大题共10小题,每小题1分,共10分)
31.写出查看A盘TC子目录下扩展名为C的所有文件的目录操作命令C:>____________。
32.组成C程序的基本单位是____________。
33.putchar()函数的功能是____________。
34.当s=7时,执行以下程序段后x=____________。
if((s>0)&&(s<=10))
if((s>=3)&&(s<=6))x=2;
else if((s>1)||(s>8))x=3;
else x=1;
else x=0;
35.设i和x都是int型,则for循环语句最多执行次数为____________。
for(i=0,x=0;I<=9&&x!=876;i++)scanf("%d",&x);
36.以下程序的输出结果是____________。
main()
{int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
for(i=0;i<4;i++)p[i]=&a[i*3];
printf("%dn",p[3][2]);}
37.定义变量可以在函数内部,也可以在函数外部,在函数内部定义的变量称为____________。
38.若有定义int x=3,*p;则使p指向变量x的赋值语句为____________。
39.共用体的所有成员共享同一段存储空间,它的各个成员的数据类型可以是____________。
40.设有FILE*fp;则关闭fp所联系文件的C语句是____________。

四、简答题(本大题共4小题,第41、42每小题2分,第43、44每小题3分,共10分)
41.简述在Turbo C 2.0集成开发环境下完成一个C程序的全过程。

42.写出下列程序段所对应的数学式子。
if(x!=0)
if(x>0)y=1;
else y=-1;
else y=0;

43.定义char *string="I am a boy";
和定义char *string;
string="I am a boy";
等价吗?为什么?

44.简述C对ASCII码文件或二进制文件的操作步骤。

五、阅读分析题(本大题共10小题,每小题2分,共20分)
45.阅读下列程序,写出运作结果
main()
{int a=100,b=-1;
printf("a=%d,%xn",a,a);
printf("b=%x,%un",b,b);}

46.下面是判断一个学生考试成绩及格与否的程序(成绩A,或B,或C者为及格;成绩为D者不及格):
main()
{char mark=''A'';
switch(mark)
{case''A'':
case''B'':
case''C'':printf(">=60n");
case''D'':printf("<60n");
default:printf("Errorn");}}
该程序执行后会产生什么错误?请分析并予以更正。

第47题,第48题,第49题请参阅下面程序,并回答相关问题
main()
{int u,v,a,b,t,r;
u=24;v=16;
if(u>v){t=u;u=v;v=t;}
a=u;b=v;
while((r=%ba)!=0)
{b=a;a=r;}
printf("a=%dn",a);
}
47.程序的输出结果是多少?
48.该程序完成什么功能?
49.若将while循环替换为do-while循环,请写出相应的程序段。

第50题,第51题,第52题请参阅下面程序,并回答相关问题。
long fac(int n)
{if(n>0)return n*fac(n-1);
else return 1L;
}
main( )
{int i,m;
long s=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
s=s+fac(i);;
printf("%1dn",s);
}
50.该程序的功能是什么?fac函数是一个什么函数?
51.若fac函数的返回值定义为int型,合适吗?
52.如果求(1!)!+(2!)!+(3!)!+…+(m!)!,程序如何修改?

第53题、第54题请参阅下面程序,并回答相关问题。
struct food
{int amount;
struct food*next;
}*head=NULL;
void create(int each_amt)
{struct food * p;
p=(struct food*)malloc(sizeof(struct food));
p→amount=head_amt;
p→next=head;
head=p;
}

53.语句p=(struct food *)malloc(sizeof(struct food));
和p→amount=each_amt;是功能是什么?

54.语句p→next=head;head=p;的功能是什么?

六、程序设计题(本大题共2小题,第55题8分,第56题12分,共20分)
55.对任意一个3行3列的二维整型数组,编程实现:
(1)从键盘对数组元素赋初值。
(2)查找每一列中元素值最大的元素并输出其值及行下标和列下标。
(假设数组中各元素值都不相同)

56.编写字符串拷贝函数将指针str2指向的字符串复制到由指针str1所指的字符串中。请在主函数中调用字符串拷贝函数并输出str1指向的字符串。
(不得用C中的strcpy标准库函数)

计算机基础与程序设计试卷参考答案

一、单项选择题(本大题共20小题,每小题1分,共20分)

1.B
2.A
3.B
4.B
5.D

6.C
7.B
8.D
9.A
10.B

11.C
12.C
13.B
14.D
15.C

16.A
17.D
18.C
19.C
20.A

二、多项选择题(本大题共10小题,每小题2分,共20分)
21.BCDE
22.ADE
23.ACD
24.CE
25.BD
26.ACD
27.ABD
28.CD
29.ADE
30.ACD

三、填空题(本大题共10小题,每小题1分,共10分)
31.DIR A:TC*.C
32.函数
33.向终端输出一个字符
34.3
35.10次
36.12
37.局部变量
38.p=&x
39.不相同的
40.fclose(fp)

四、简答题(本大题共4小题,第41、42题每题2分;第43、44题每题3分,共10分)
41.[参考答案]
(1)利用编辑功能生成C源程序。
(2)利用编译功能生成相应的目标程序。
(3)利用连接功能生成可执行程序。
(4)运行可执行程序。

42. [参考答案]
y=-1(x<0)
y=0(x=0)
y=1(x>0)

43. [参考答案]
(1)等价。(1分)
(2)因为string是字符型指针变量。(1分)
(3)无论哪种赋值方式都只是将字符串的首地址赋给了string,而不是将整个字符串赋给了string。(1分)

44[参考答案]
(1)按规定的格式打开文件。(1分)
(2)对打开的文件进行读/写操作。(1分)
(3)关闭已打开的文件。(1分)

五、阅读分析题(本大题共10小题,每小题2分,共20分)
45. [参考答案]
a=100,64(1分)
b=ffff,65535(1分)

46. [参考答案]
(1)该程序有逻辑错误。当mark为''A''(或''B''或''C'')时,三条printf语句全部要执行一次。(1分)
(2)要得到正确的结果,应做下面修改:(1分)
case''C':printf(">=60n");break;
case''D'':printf("<60n");break;

47. [参考答案]
a=8(2分)

48. [参考答案]
该程序用于求u和v的最大公约数。(2分)

49. [参考答案]
while语句可以改为:(2分)
r=b%a;
do
{
if(f= =0)break;
b=a;a=r;
}while((r=b%a)!=0);

50. [参考答案]

51. [参考答案]
不合适。会产生整数溢出。
即使定义为long型,输入的m值也不宜过大,否则仍会产生溢出。(2分)

52. [参考答案]
只要将s=s+fac(i)改为:
s=s+fac(fac(i))即可。(2分)

53. [参考答案]
(1)前一句用于创建一个新结点,并使指针P指向新结点。(1分)
(2)后一句用于接受调用程序的实参,并将其值赋给新结点的成员amount。(1分)

54. [参考答案]
(1)前一句用于将新结点与原head指向的结点串接在一起。(1分)
(2)后一句用于使head指向新加入的结点P。(1分)

六、程序设计题(本大题共2小题,第55题8分,第56题12分,共20分)
55. [参考答案]
参考程序如下:
#include
void main(void)
{
int i,j,im,jm,x[3][3],max;
for(i=0;j<3;i++)
for(j=0;j<3;j++)
scanf("%d",&x[i][j]);
for(j=0;j<3;j++)
{
max=x[0][j];im=0;jm=j;
for(i=1;i<3;i++)
if(max {
max=x[i][j];
im=i;
jm=j;
}
printf("i=%d j=%d max=%dn",i,j,max);
}
}

56. [参考答案]
参考程序如下:
#include
void strcpy(char *,char * );
void main(void)
{
char *str1,*str2="abcdef";
strcpy(str1,str2);
printf("%s",str1);
}
void strcpy(char *s1,char *s2)
{
int i=0;
while((s1[i]=s2[i])!='''')
i++;
}

‘捌’ c语言的发展史

C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。

C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)于1970年 由 肯·汤普逊(Ken Thompson)所研制出的B语言的基础上发展和完善起来的。目前,C语言编译器普遍存在于各种不同的操作系统中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C语言的设计影响了许多后来的编程语言,例如C++、Objective-C、java、C#等。

后来于1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。1980年代至今的有关程序开发工具,一般都支持符合ANSI C的语法。

C语言是一个程序语言,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言也很适合搭配汇编语言来使用。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

早期发展
C语言最早是由丹尼斯·里奇为了在PDP-11电脑上运行的UNIX系统所设计出来的编程语言,第一次发展在1969年到1973年之间。之所以被称为“C”是因为C语言的很多特性是由一种更早的被称为B语言的编程语言中发展而来。早期操作系统的核心大多由汇编语言组成,随着C语言的发展,C语言已经可以用来编写操作系统的核心。1973年,Unix操作系统的核心正式用C语言改写,这是C语言第一次应用在操作系统的核心编写上。
K&R C
1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程序员称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色:

结构(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道用户要处理i = -10还是i =- 10,使得处理上产生混淆。
即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行K&R C的标准。
ANSI C 和 ISO C
1989年,C语言被 ANSI 标准化(ANSI X3.159-1989)。标准化的一个目的是扩展K&R C。这个标准包括了一些新特性。在K&R出版后,一些新特性被非官方地加到C语言中。

void 函数
函数返回 struct 或 union 类型
void * 数据类型
在ANSI标准化自己的过程中,一些新的特性被加了进去。ANSI也规定了一套标准函数库。ANSI ISO(国际标准化组织)成立 ISO/IEC JTC1/SC22/WG14 工作组,来规定国际标准的C语言。通过对ANSI标准的少量修改,最终通过了 ISO 9899:1990。随后,ISO标准被 ANSI 采纳。

传统C语言到ANSI/ISO标准C语言的改进包括:

增加了真正的标准库
新的预处理命令与特性
函数原型允许在函数申明中指定参数类型
一些新的关键字,包括 const、volatile 与 signed
宽字符、宽字符串与字节多字符
对约定规则、声明和类型检查的许多小改动与澄清
WG14工作小组之后又于1995年,对1985年颁布的标准做了两处技术修订(缺陷修复)和一个补充(扩展)。下面是 1995 年做出的所有修改:

3 个新的标准库头文件 iso646.h、wctype.h 和 wchar.h
几个新的记号与预定义宏,用于对国际化提供更好的支持
printf/sprintf 函数一系列新的格式代码
大量的函数和一些类型与常量,用于多字节字符和宽字节字符

C99在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1995年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。

在C99中包括的特性有:

增加了对编译器的限制,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节(extern 要求支持到 31)。
增强了预处理功能。例如:
宏支持取可变参数 #define Macro(...) __VA_ARGS__
使用宏的时候,允许省略参数,被省略的参数会被扩展成空串。
支持 // 开头的单行注释(这个特性实际上在C89的很多编译器上已经被支持了)
增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 等类型
支持不定长的数组,即数组长度可以在运行时决定,比如利用变量作为数组长度。声明时使用 int a[var] 的形式。不过考虑到效率和实现,不定长数组不能用在全局,或 struct 与 union 里。
变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
允许采用(type_name){xx,xx,xx} 类似于 C++ 的构造函数的形式构造匿名的结构体。
初始化结构的时候允许对特定的元素赋值,形式为:
struct {int a[3],b;} foo[] = { [0].a = {1}, [1].a = 2 };
struct {int a, b, c, d;} foo = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是对 .c,.d 赋值的
格式化字符串中,利用 \u 支持 unicode 的字符。
支持 16 进制的浮点数的描述。
printf scanf 的格式化串增加了对 long long int 类型的支持。
浮点数的内部数据描述支持了新标准,可以使用 #pragma 编译器指令指定。
除了已有的 __line__ __file__ 以外,增加了 __func__ 得到当前的函数名。
允许编译器化简非常数的表达式。
修改了 / % 处理负数时的定义,这样可以给出明确的结果,例如在C89中-22 / 7 = -3, -22 % 7 = -1 ,也可以-22 / 7= -4, -22 % 7 = 6。 而C99中明确为 -22 / 7 = -3, -22 % 7 = -1,只有一种结果。
取消了函数返回类型默认为 int 的规定。
允许 struct 定义的最后一个数组不指定其长度,写做 [] 。
const const int i 将被当作 const int i 处理。
增加和修改了一些标准头文件,比如定义 bool 的 <stdbool.h> ,定义一些标准长度的 int 的 <inttypes.h> ,定义复数的 <complex.h> ,定义宽字符的 <wctype.h> ,类似于泛型的数学函数 <tgmath.h>, 浮点数相关的 <fenv.h>。 在<stdarg.h> 增加了 va_ 用于复制 ... 的参数。<time.h> 里增加了 struct tmx ,对 struct tm 做了扩展。
输入输出对宽字符以及长整数等做了相应的支持。

‘玖’ Visual Basic .NET的编译

.NET语言,包括VB.NET,它们所开发的程序源代码并不是直接编译成能够直接在操作系统上执行的二进制本地代码,而是被编译成为中间代码,然后通过.NET Framework的通用语言运行时(CLR)——执行。所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码,这与Java的字节码类似。因此虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度会明显加快。
VB.NET代码之所以不直接编译成二进制机器码,是基于.NET跨平台这一目标的考虑。 Visual Basic .NET 2002
2002年Visual Basic .NET 问世,此后Visual Basic 包含在 Visual Studio套装中。该版本又被称为VB 7.0,是与C#一起在2002年发布的最初始的VB.net版本。C#是一门新设计.Net语言并且语法上和Java有一定的相似性,所以被大力宣传为微软对付JAVA的王牌,受到媒体极力关注。然而VB.NET则相反被错误地认为仅仅是VB的一个升级(故有时被称为VB7),它的受关注度也因此较低,当然VB社区以及喜欢Basic系列风格的语言的人还是很关注它的。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言。不过任何一种语言都是有弱点的,当然后面这一点也是.NET语言的共性,那就是运行的计算机上必须装相应版本的.Net framework。
Visual Basic .NET 2003
该版本是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况,IDE稳定性(尤其是后台编译器),以及运行时RunTime稳定性。另外,VB.NET2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分发给各国某些学者免费使用的版本。
Visual Basic .NET 2005
该版本是VB.Net的重大转变。但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。
Visual Basic .NET 2008
Visual Basic 2008于2008年2月1日发布。通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程序,现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。
Visual Studio 2010
Visual Studio 2010于2010年4月12日上市,其中包含 Visual Basic .NET 2010 。Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库等。
Visual Studio 2012
从该版本开始VB.NET已没有单独发售的IDE了,微软给Visual Basic .NET 以及C#开发者的IDE就只有Visual Studio 了。该版本增加了modern(原metro)风格的支持等众多新特性。
Visual Studio 2015
增加了大量新特性,提升你的编写效率。对编译器和开发环境优化,提高编译速度,帮你重构代码和解决错误。最明显的14项改进见参考资料的14 Top Improvements in Visual Basic 14。 不能简单认为VB .net是VB的新版本。首先它们一个是完全面向对象的语言,而另一个不是完全面向对象的,其次VB .NET是构建于.Net framework之上的。当然,它们同属Basic系列语言,又同为微软所开发,语法上有一定的相似或沿袭是很正常的,但不能因此认为VB .NET是VB的升级版。
对于想从VB转到VB .NET的开发者来说,如果你只是喜欢Basic系列语言的代码风格,那么你的迁移会很顺利,如果你想沿袭之前VB的编程思想和习惯,你会很苦恼,原因之一就是VB .NET贯穿的是完全面向对象的思想,而VB不是。
微软为使VB开发者更容易转到VB .NET,兼容一些VB6函数和库的用法,但是比不上.NET语言中自带的可替换的函数和库来得高效,所以我们应该尽量使用.NET下的新方法。微软还提供了VB到VB .NET的自动转换器,虽几经改进,但仍无法转换全部代码,几乎所有非小型程序都需要人工修改以完成编译。为了运行优化,大多程序需要大量工作去重构。
争议与解释:许多资深的VB程序员抱怨VB .NET,因为VB .NET丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能,并且对保留下来的东西也改变了语意。其实不应该再把VB和VB .NET做功能上的比较,因为它们除了有些语法相似外,可以说是完全不同的两种语言。
Visual Basic .NET与VB都代表了Basic系列语言的编码风格,Visual Basic .NET是这种编码风格在.NET平台上的继承,而不是同系列语言VB的沿袭。
语言革命
* 1991年4月,Visual Basic诞生,Visual Basic 1.0 Windows版本发布。这个连接编程语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。 1992年9月,Visual Basic 1.0 DOS版本发布。
* 1998年夏天,VB6.0发布。
* 2001年,Visual Basic .NET和.NET Framework发布。Visual Basic .NET正式诞生。
* 2005年,微软宣布将不会再对非.NET版本的VB进行支持。
*2010年,Visual Basic .NET随Visual Studio 2010发布,不再提供单独的Visual Basic .NET IDE。 MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个编译器和Windows Forms GUI 库。由于各方面的原因,VB.NET开发的开源工具较C#发展得慢一些。

‘拾’ 计算机语言发展史

【摘要】

本文以自然辩证的观点探讨了计算机语言的发展历程,运用自然辩证法的基本理论、基本方法,系统分析了计算机语言的发展历史、现状和未来。并对其的发展趋势和未来模式做了探索性研究和预测,同时以哲学的观点阐述其发展的因果关系,揭示其事物发展的共性问题;最后文章介绍了在计算机语言发展历程中做出杰出贡献的科学家,以其在计算机事业中的突出表现来折射出人类智慧的伟大,以其不平凡的一生来激励和指导我们在计算机语言的发展中向着正确的方向前进。

【关键字】

自然辩证法 计算机语言 计算机技术 编程语言 因特网 面向对象

正文

一九九三年美国的克林顿政府提出了“信息高速公路”计划,从而在这十多年间在全球范围内引发了一场信息风暴,信息技术几乎触及了现代生活的方方面面,毫不夸张的说没有了信息技术,现代文明的生活将无从谈起;作为信息技术中最重要的部分,计算机技术无疑是其发展的核心问题,而我们知道计算机只是一台机器,它只能按照计算机语言编好的程序执行,那么正确认识计算机语言的过去和未来,就是关系到计算机发展的重中之重;以自然辩证法的观点认识和分析计算机语言的发展历程,将有助于更加全面地推动计算机技术的发展,有助于更加准确地掌握计算机语言发展趋势。

一、科学认识大门的钥匙--当代自然辩证法

自然辩证法,是马克思主义对于自然界和科学技术发展的一般规律以及人类认识自然改造自然的一般方法的科学,是辩证唯物主义的自然观、科学技术观、科学技术方法论。它主要研究自然界发展的总规律,人与自然相互作用的规律,科学技术发展的一般规律,科学技术研究的方法。

马克思、恩格斯全面地、系统地概括了他们所处时代的科学技术成功,批判吸取了前人的合理成分,系统地论述了辩证唯物主义自然观、自然科学发展过程及其规律性,以及科学认识方法的辩证法,以恩格斯的光辉着作《自然辩证法》为标志,创立了自然辩证法继续发展的广阔道路。

自然辩证法是马克思主义哲学的一个重要组成部分。在辩证唯物主义哲学体系中,自然辩证法与历史唯物论相并列。它集中研究自然界和科学技术的辩证法,是唯物主义在自然界和科学技术领域中的应用,它的原理和方法主要适用于自然领域和科学技术领域。

学习和运用自然辩证法将有助于我们搞清科学和哲学的关系,从而更加清楚地认识科学的本质和发展规律,更加全面的观察思考问题,只有加深了认识,我们才能更好地发挥主观能动性,迎接新的科学技术的挑战。下面我将以自然辩证法的观点来分析计算机语言的发展历程。

二、计算机语言的发展历程和发展趋势

计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好的支持。具体的说,就是把机器能够理解的语言提升到也能够很好的模仿人类思考问题的形式。计算机语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言。

1、计算机语言的发展历史: 二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。随着c,pascal,fortran,等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由此诞生的三种重要控制结构,以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型-----面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如eiffel,c++,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术,例如:数据隐藏,数据抽象,用户定义类型,继承,多态等等。

2、计算机语言的发展现状:目前通用的编程语言有两种形式:汇编语言和高级语言。

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类: 解释类和编译类。

3、计算机语言的发展趋势:面向对象程序设计以及数据抽象在现代程序设计思想中占有很重要的地位,未来语言的发展将不在是一种单纯的语言标准,将会以一种完全面向对象,更易表达现实世界,更易为人编写,其使用将不再只是专业的编程人员,人们完全可以用订制真实生活中一项工作流程的简单方式来完成编程。下面是一张计算机语言发展图表,从中不难得出计算机语言发展的特性:

² 简单性

提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序

² 面向对象

提供简单的类机制以及动态的接口模型。对象中封装状态变量以及相应的方法,实现了模块化和信息隐藏;提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用

² 安全性

用于网络、分布环境下有安全机制保证。

² 平台无关性

与平台无关的特性使程序可以方便地被移植到网络上的不同机器、不同平台。

三、面向未来的汉语程序设计语言:

从计算机诞生至今,计算机自硬件到软件都是以印欧语为母语的人发明的。所以其本身就带有印欧语的语言特征,在硬件上cpu、i/o、存储器的基础结构都体现了印欧语思维状态的"焦点视角",精确定义,分工明确等特点。计算机语言也遵照硬件的条件,使用分析式的结构方法,严格分类、专有专用,并在其发展脉络中如同他们的语言-常用字量和历史积累词库量极度膨胀。实际上,计算机硬件的发展越来越强调整体功能,计算机语言的问题日益突出。为解决这一矛盾,自六十年代以来相继有500多种计算机语言出现,历经五代,至今仍在变化不已。

汉语没有严格的语法框架,字词可以自由组合、突出功能的整体性语言。在计算机语言问题成为发展瓶颈的今天,汉语言进入计算机程序设计语言行列,已经成为历史的必然。

1、 发展汉语程序设计语言的理由:

1)计算机语言问题解决,只能从人类语言中寻找解决方案;

2)计算机语言的现存问题是形式状态与功能需求的矛盾;

3)计算机硬件的发展已为整体性语言-汉语进入计算机程序设计语言提供了条件

2、 汉语程序设计语言的技术特点:

1)汉文字的常用字高度集中,生命力极强,能灵活组合,简明准确地表达日新月异的词汇,这些优点是拼音文字无法企及的。

2)汉语言的语法简易灵活,语词单位大小和性质往往无一定规,可随上下语境和逻辑需要自由运用。汉语言的思维整体性强,功能特征突出。

3)汉语程序设计语言的发明者采用核心词库与无限寄存器相结合的方法,实现了汉语言的词素自由组合;将编译器与解释器合一,使汉语程序设计语言既能指令又能编程;以独特的虚拟机结构设计,将数据流与意识流分开,达到汉语程序设计语言与汉语描述完全一致,通用自如。

具有汉语言特性的汉语程序设计语言的出现,打破了汉语言不具备与计算机结合的条件而不能完成机器编码的神话。还为计算机科学与现代语言学研究提出了一条崭新的路径,它从计算机语言的角度,从严格的机械活动及周密的算法上,向世人证实汉语的特殊结构状态,及其特殊的功能。

四、计算机语言之父——尼盖德

尼盖德帮助因特网奠下了基础,为计算机业做出了巨大贡献。

尼盖德是奥斯陆大学的教授,因为发展了simula编程语言,为ms-dos和因特网打下了基础而享誉国际。克里斯汀·尼盖德于1926年在奥斯陆出生,1956年毕业于奥斯陆大学并取得数学硕士学位,此后致力于计算机计算与编程研究。

1961年~1967年,尼盖德在挪威计算机中心工作,参与开发了面向对象的编程语言。因为表现出色,2001年,尼盖德和同事奥尔·约安·达尔获得了2001年a.m.图灵机奖及其它多个奖项。当时为尼盖德颁奖的计算机协会认为他们的工作为java,c++等编程语言在个人电脑和家庭娱乐装置的广泛应用扫清了道路,“他们的工作使软件系统的设计和编程发生了基本改变,可循环使用的、可靠的、可升级的软件也因此得以面世。”

尼盖德因其卓越的贡献,而被誉为“计算机语言之父”,其对计算机语言发展趋势的掌握和认识,以及投身于计算机语言事业发展的精神都将激励我们向着计算机语言无比灿烂的明天前进。

五、结束语

用科学的逻辑思维方法认识事物才会清楚的了解其过去、现在和未来,计算机语言的发展同样遵循着科学技术发展的一般规律,以自然辩证法的观点来分析计算机语言,有助于我们更加深入地认识计算机语言发展的历史、现状和趋势,有了自然辩证法这把开启科学认识大门的钥匙,我们将回首过去、把握现在、放眼未来,正确地选择计算机语言发展的方向,更好的学习、利用和发展计算机语言。

六、致谢

首先感谢张老师,张老师幽默的讲解和精炼的内容使我受益匪浅,使我对以后的工作和生活有了更深刻的认识。另外要感谢本文所参考的文献的作者和相关网站。最后还要感谢在我写论文过程中提供无私帮助的人们,以及给我支持的家人和朋友。

参考文献

1.《计算机语言与计算机程序发展历史》博客中国网

2.《计算机发展史》 上海科学技术出版社

3.《软件发展与社会进步》蔡希尧

4.《自然辩证法概论》 北京航空航天大学出版社

5.《数据库发展新技术》 磊哲

6. 《汉语程序设计语言》陈云牧

参考资料:
http://www.yeshare.com/LW/1/qq%2Dsun12406/

计算机语言发展史图片:(英文)
http://skyivben.cnblogs.com/archive/2005/12/13/255777.html

这篇文章也值得一看:
http://www.boyacode.com/showart.asp?art_id=2941

阅读全文

与编译参考2001年相关的资料

热点内容
劫掠命令 浏览:371
单片机每个程序的含义 浏览:748
学好玩命令方块 浏览:953
手机解压两个分开的压缩包 浏览:963
程序员想调薪怎么和领导说 浏览:856
编译的底层实现 浏览:550
32位机器上编译出64的动态库 浏览:924
python办公数据类型 浏览:913
传统8051单片机介绍 浏览:628
app拉新公司如何运营 浏览:618
枪法pdf 浏览:62
ios如何设置安卓虚拟返回键 浏览:697
mysql命令执行sql 浏览:97
惠普内嵌服务器怎么打开 浏览:413
cmd命令查看网络 浏览:819
程序员秘密 浏览:932
如何宣传app引流 浏览:73
图说红楼梦中央编译 浏览:173
php查询赋值 浏览:271
java程序员面试宝典第四版pdf 浏览:931