您当前的位置:首页 > 互联网教程

C语言问题

发布时间:2025-05-13 07:57:13    发布人:远客网络

C语言问题

一、C语言问题

答案应该是B,这个没什么好解释的(就是指针变量指向变量的地址)

答案应该是D如果直接用字符串对字符数组初始化的话字符数组的长度要比实际字符串长度大1的

因为字符串在字符数组中是以'\0'结束的,这个你也可以用sizeof()分别测试一下

答案应该是D,这个没的说,括号的作用就是避免二义

答案应该是C,不要把 int*ptr();搞混了,题上的是返回一个整形数据的指针函数,后者是一个

答案是A,呵呵,这个你好好想一下就明白了

答案是23这个你要好好看一看,特别是(&Arr+1)它和(Arr+1)区别很大,前者在地址上加了

1而后者在地址上加了1*sizeof(int);

这道题你是不是搞错了,你仔细看看有很多错误的。

答案是 B为了帮助你理解,对此程序我写了段代码

printf("%d\n",sizeof(str));//答案是100

printf("%d\n",sizeof(str));//答案是4

为什么会出现这种情况呢,原因是因为两者有着本质性的区别,第一个sizeof(str)中的str是一个

地址常量,它索引着一段大小为100的内存堆,而第二个sizeof(str)中的str是一个字符指针变量

sizeof(str)的结果就是一个字符指针变量所具有的内存,它的内存应该是为4的

错,应该放在静态存储区(或全局数据区的)

Unsigned char index= 0;//这个地方应该是unsigned int index=0;注意第一个u不能大写

Printf(“index value%d\n”,index);

{//应该是static char s[4]={'0','1','2','3','\0'};

Char s[4]={‘1’,’2’,’3’,’0’};//关键字的开头是不能大写的,还有就是符号‘也不对

Return s;//ruturn第一个字母也不能大写,

Char*s;//应该是char第一个字母不能大写

//你这道题的本意是想通过函数调用来获得一个字符串的首地址从而在主函数中输出,

//但是,有一点这个程序没有考虑到那就是当被调函数结束后那个char s[4]所占内存将自动

//操作系统回收,因为它只是个动态局部变量,所以要想达到目的应该是声明成静态变量的

//static char s[4],还有一点错误就是字符串都要'\0'结尾否则输出的字符串的将不会是你想要的那样

这道题没什么错误,能达到预期的效果,除了有几处拼写错误,例如你第一个是GetmMnory而第二个是

GetMemory这一点你注意一下就可以了

这道题没什么语法错误,除了单引号格式不对,还有就就违反了字符串都要以'\0'结尾这一约定

这道题没有什么语法错误,就是有个字符串函数写错了strcopy,应该写成 strcpy的

你这道题具体是让做什么的,我不是太明白,是让建一个动态链表啊还是静态链表啊,

int judgment(int a[],int length)//这个函数是判断是否对称的

for(int i=0;i<=length/2;i++)

printf("请输入你要检测的数\n");

//这个循环是为了把整数拆开放到一个整形数组中,拆开以后放进数组里面的刚好是和正常的数

//反序的,不过这个不会影响结果的,因为只要数对称反序后一样对称,如果数不对称反序后依然不对称

如果这个程序有什么不懂得话,可以提出来,随时帮你解析

二、什么是C语言

C语言是目前世界上流行、使用非常广泛的高级程序设计语言。

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

常用的编译软件有Microsoft Visual C++,Borland C++,Watcom C++,Borland C++,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++,Lccwin32 C Compiler 3.1,Microsoft C,High C,TurboC等等......

C语言的发展颇为有趣。它的原型ALGOL 60语言。(也成为A语言)

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards对CPL语言进行了简化,于是产生了BCPL语言。

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。

而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准 3.C语言的主要特点。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEⅢ PLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,象PC- DOS、WORDSTAR等就是用这种方法编写的。

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5. C语法限制不太严格、程序设计自由度大

一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。

6. C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。

7. C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10へ20%。

8. C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。

1.一个C语言源程序可以由一个或多个源文件组成。

2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4.源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

当然,C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

总之,C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,有时一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。

指针就是C语言的一大特色,可以说C语言优于其它高级语言的一个重要原因就是因为它有指针操作可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素.C++在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java又进一步提高了安全性。

C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C++的一大区别

三、C语言中的标准函数有哪些

C语言输入输出函数有很多,标准I/O函数中包含了如下几个常用的函数:

scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.

getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为(ch= getc(fp))!= EOF.EOF为文件结束标志,定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,getc(stdin)就等同于getchar()了.

putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.

getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在while循环中指定终止字符,如下面的语句:while((c= getchar())!='#')这是以#来结束的.

putchar(ch)主要是把字符ch写到标准流stdout中去.

gets主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去.

puts主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符.

char*fgets(char*str, int num, FILE*fp)

str是存放读入的字符数组指针,num是最大允许的读入字符数,fp是文件指针.fgets的功能是读一行字符,该行的字符数不大于num-1.因为fgets函数会在末尾加上一个空字符以构成一个字符串.另外fgets在读取到换行符后不会将其省略.

fputs将str写入fp.fputs与puts的不同之处是fputs在打印时并不添加换行符.

fgetc从fp的当前位置读取一个字符.

fputc是将ch写入fp当前指定位置.

int fscanf(FILE*fp, char*format,输入列表)

fscanf按照指定格式从文件中出读出数据,并赋值到参数列表中.

int fprintf(FILE*fp, char*format,输出列表)

fprintf将格式化数据写入流式文件中.

对fread来说,它是读入数据的存放地址。

对fwrite来说,是要输出数据的地址(均指起始地址)。

count:要进行读写多少个size字节的数据项。