当前位置:首页 » 编程语言 » c语言编程160讲
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程160讲

发布时间: 2023-05-16 19:06:43

‘壹’ c语言基础知识

  •1 C语言程序的结构认识

用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。

例1 计算两个整数之和的c程序:

1、任何一个c语言程序都必须包括以下格式:

这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。

2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。

3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。

4、在{  }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。

5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:

6、#include

7、程序中以 /*开头并且以*/结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。

   •  2 C程序的生成过程

C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件,如图所示。

                              编译过程

 • 3 标识符

在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:

标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同,在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到 “见名知义”。

标识符分为如下三类:

1、关键字

3、用户标识符

用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。

 • 4 常量

在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。

(一)数值转换

数字的四种表现形式:

在计算机内部,数字均以二进制形式表示和存放,用户输入的普通十进制数字都要被计算机转换成二进制才能在计算机内部存储,同样计算机的运算结果也为二进制,一般要将其转换成十进制数再输出给用户阅读,这种转换通常由计算机自动实现。

(1)将十进制转换二进制、八进制和十六进制

除法:将十进制数除以2,记录余数,得到的商继续除以2,直到商为0,然后将各次相处所得的余数从后往前逆序排列,所得余数数字序列就是该十进制数对应的二进制数。八进制和十六进制转换方法同上。

例:十进制数13转换成二进制数的值为1101,转换八进制为015,转换成十六进制为D.

(2)将二进制、八进制和十六进制转换成十进制

乘积求和:将二进制的每一位从低位到高位(右边为低位,左边为高位)分别乘以20,21,22。。。。,然后将这些积求和。

例如:(1101)2=(13)10     (317)8=(207)10     (23E)16=(574)10

(3)二进制与八进制、十六进制数之间的相互转换

(二)整型常量

整型常量有3种形式:十进制整型常量、八进制整型常量和十六进制整型常量。

书写方式如下:

(三)实型常量

实型常量有两种表示形式:小数形式和指数形式。

(四)字符常量

(2)由一对单引号括起来,以反斜杠\开头,后跟若干数字或者字母,比如‘\n’,其中“\“是转义的意思,后面跟不同的字符表示不同的意思,这类字符常量叫转义字符。具体如图所示 。

(五)字符串常量

C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。

例:“ni hao”   “happy”等等。

(六)符号常量

例:计算圆的面积的c程序。

说明:

• 5 变量

变量就是其值可以改变的量。变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值。不同类型的变量其存储单元的大小不同,变量在使用前必须定义。

(一)整型变量

不同的编译系统对上述四种整型数据所占用的位数和数值范围有不同的规定。

类型说明符

说明:

(二)实型变量

C语言中,实型变量分为单精度类型( float )和双精度类型( double )两种。如:

在vc中,float 型数据在内存中占4个字节(32位),double型数据占8个字节。单精度实数提供7位有效数字,双精度实数提供15~16位有效数字。实型常量不分float型和double型,一个实型常量可以赋给一个float 型或double型变量,但变量根据其类型截取实型常量中相应的有效数字。

注意:实型变量只能存放实型值,不能用整型变量存放实型值,也不能用实型变量存放整型值。

(三)字符变量

字符变量用来存放字符常量,定义形式:

char  变量名;

其中关键字char定义字符型数据类型,占用一个字节的存储单元。

将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中。例如,字符 ′A′ 的ASCII码为65,在内存中的存放形式如下:01000001

由于在内存中字符以ASCII码存放,它的存储形式和整数的存储形式类似,所以C语言中字符型数据与整型数据之间可以通用,一个字符能用字符的形式输出,也能用整数的形式输出,字符数据也能进行算术运算,此时相当于对它们的ASCII码进行运算。

     •6 类型的自动转换和强制转换

当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:

即左边级别“低“的类型向右边转换。具体地说,若在表达式中优先级最高的数据是double型,则此表达式中的其他数据均被转换成double型,且计算结果也是double型;若在表达式中优先级最高的数据是float型,则此表达式中的其他数据均被转换成float型,且计算结果也是float型。

在做赋值运算时,若赋值号左右两边的类型不同,则赋值号右边的类型向左边的类型转换;当右边的类型高于左边的类型时,则在转换时对右边的数据进行截取。

除自动转换外,还有强制转换,表示形式是:

讨论:当a值赋值为3.4,b值赋值为2.7,(int)(a+b)和(int)a+b的值分别为多少?

   • 7  C运算符认识

C语言的运算符范围很广,可分为以下几类:

1、算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(--)共七种。

2、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

3、逗号运算符:用于把若干表达式组合成一个表达式(,)。

4、关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。

5、逻辑运算符:用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

6、条件运算符:这是一个三目运算符,用于条件求值(?:)。

7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

8、指针运算符:用于取内容(*)和取地址(&)二种运算。

9.、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。

10、特殊运算符:有括号(),下标[],成员(→,.)等几种。

另外,按参与运算的对象个数,C语言运算符可分为:单目运算符 (如 !)、双目运算符 (如+,- )和三目运算符 (如 ?  : )。

一、   基本的算术运算符

(1)+(加法运算符或正值运算符,如2+5)。

(2)-(减法运算符或负值运算符,如4-2)。

(3)*(乘法运算符,如3*8)。

(4)/(除法运算符,如11/5)。

/的运算分为两种情况:

(5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为2)。

需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc中,结果的符号与被除数相同,比如:13%-2值为1,而-15%2值为-1.

二、   算术表达式和运算符的优先级与结合性

算术表达式是用算术运算符和括号将运算量(也称操作数)连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。

在计算机语言中,算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。

(1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。

(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。

(3)如果一个运算符两侧的操作数类型不同,则先利用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。

三、   自增自减运算符

作用:使变量的值增1或减1。

(1)只有变量才能用自增运算符 (++)和自减运算符(--),而常量或表达式不能用,如10++或(x+y)++都是不合法的。

(2)++和--的结合方向是“自右向左“,如 -i++ ,i的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是 “自右向左“结合的,相当于 -(i++)。

在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的区别,特别弄清楚表达式的值和变量的值。

例:变量n的初始值为2,则

例:有以下程序

程序运行后的输出结果是_____

A.12  35  13  35  14  36     B. 12  35  14  35  14  36

C.12  35  14  36  14  36     D. 12  35  14  35  14  35

解析:自增自减运算需要注意区分表达式的值和变量的值,表达式运算后,变量会自增自减运算,表达式和变量变化如下:

     •9 赋值运算符与赋值表达式

一、赋值运算符与赋值表达式

赋值符号 “=“就是赋值运算符,作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:

变量名 = 表达式

在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。

说明:

a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,

b、 可以将复制表达式的值再赋值给变量,形成连续赋值。

二、复合的赋值运算符

在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是:+=,-=,*=,/=,%= 。

两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式n+=1等价于n=n+1,作用是取变量n中的值增1再赋给变量n,其他复合的赋值运算符的运算规则依次类推。

如求表达a+=a-=a*a 的值,其中a的初值为12 。

步骤:

   •10  逗号运算符和逗号表达式

在c语言中,逗号除了作为分隔符,还可以用作一种运算符----逗号运算符,用逗号运算符将几个表达式连接起来,例如a=b+c,a=b*c等称为逗号表达式。

一般形式为:

表达式1 ,表达式2 ,表达式3 , …,表达式n

例:x=2,y=3,z=4

逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值4.需要注意的是,逗号运算符是所有运算符中级别最低的。

例:有如下程序段:

程序显示结果为:y=6,x=6

讨论:将y=(x=a+b),(b+c);改为y=((x=a+b),b+c) 的程序结果?

  • 11 关系运算符和关系表达式

一、   C语言中的逻辑值

C语言中的逻辑值只有两个:真(true)和假(flase)。用非零代表真,用零代表假。因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值。只要值不是零,不管是正数,负数,整数,实数,都代表一个真值。例如-5的逻辑值为真。

二、   关系运算符及其优先次序

C语言提供了6种关系运算符,见表

由两个字符组成的运算符之间不可以加空格,关系运算符都是双目运算符。

(1)结合性:自左向右。

(2)优先次序:前4种关系运算符( <,<=,>=,> )的优先级别相同,后两种 (==,!=)优先级相同,且前4种优先级高于后两种;关系运算符的优先级低于算术运算符,高于赋值运算符。

三、   关系表达式

由关系运算符连接而成的表达式称为关系表达式。

例如:a>b,(a=7)>(b=10)等都是合法的关系表达式。

关系表达式的结果有两个:0和1,。其中0表示假,1表示真。如果关系表达式成立,则值为真,如果关系表达式不成立,则值为假。

例:变量a的值为5,b的值为6,那么关系表达式a>b的值为假,即为0.而关系表达式

(a=13)>(b=10)的值为真,即为1。

当关系运算符两边值的类型不一致时,若一边是整型,一边是实型,系统将自动把整型数转化为实型数,然后再进行比较。

    •12 逻辑运算符和逻辑表达式

一、   逻辑运算符及其优先级

C语言提供了3种逻辑运算符,如下表。

二、   逻辑表达式

“&&”和“||”的运算对象有两个,故它们都是双目运算符,而!的运算对象只有一个,因此它是单目运算符。逻辑运算举例如下:

(1)a&&b: 当&&两边都为“真”时,表达式a&&b的值才是真。

值得注意的是:在数学中,关系式0

(2)a||b: 当||两边有一个为“真”时,表达式a||b的值就是真。

(3)!a:   表示取反,如果a为真,则!A为假,反之亦然。例如!-5的值就为0.

在C语言中,由&&或||组成的逻辑表达式,在某些特定情况下会产生“短路“现象。

(1)x && y && z ,只有当x为真(非0)时,才需要判别y的值;只有x和y都为真时,才需要去判别z的值;只要x为假就不必判别y和z,整个表达式的值为0。口诀:“一假必假”。

例:(!5==1)&&(++i==0)  (!5==1)表达式的值为0,所以计算机运行中就跳过(++i==0)此表达式,(!5==1)&&(++i==0)表达式的值为0.

(2)x||y||z ,只要x的值为真(非零),就不必判别y和z的值,整个表达式的值为1,只有x的值为假,才需要判别y的值,只有x和y的值同时为假才需要判别z的值,口诀:“一真必真”。

   •13 位运算

一、   位运算符

在计算机中,数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6种位运算符。

二、位运算

位运算符 &  |~<<  >>  ∧ 按优先级从高到低排列的顺序是:

位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或 “∧“和按位或 “|“。顺序为~  <<  >>  &  ∧  |  。

例1左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。

例 2右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。

例 3 设二进制数a是00101101 ,若通过异或运算a∧b 使a的高4位取反,低4位不变,则二进制数b是。

解析:异或运算常用来使特定位翻转,只要使需翻转的位与1进行异或操作就可以了,因为原数中值为1的位与1进行异或运算得0 ,原数中值为0的位与1进行异或运算结果得1。而与0进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。

所以本题的答案为: 11110000 。

‘贰’ C语言程序编写

C语言使用 Xcode。Xcode 是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等

‘叁’ 单片机c语言编程

单片机的外部结构:

DIP40双列直插;
P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)
电源VCC(PIN40)和地线GND(PIN20);
高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)
内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)
程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)
P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1
单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)

四个8位通用I/O端口,对应引脚P0、P1、P2和P3;
两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)
一个串行通信接口;(SCON,SBUF)
一个中断控制器;(IE,IP)
针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。
C语言编程基础:

十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。
如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
++var表示对变量var先增一;var—表示对变量后减一。
x |= 0x0f;表示为 x = x | 0x0f;
TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。
While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}
在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC
While( 1 ); //死循环,相当 LOOP: goto LOOP;
}
注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。
在某引脚输出低电平的编程方法:(比如P2.7引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口。
{
P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND
While( 1 ); //死循环,相当 LOOP: goto LOOP;
}

在某引脚输出方波编程方法:(比如P3.1引脚)
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
While( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC
P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND
} //由于一直为真,所以不断输出高、低、高、低……,从而形成方波
}

将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) )
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平
While( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC
{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND
else //否则P1.1输入为低电平GND
//{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND
{ P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC
} //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平
}

将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) )
#include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平
While( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{ //取反的方法是异或1,而不取反的方法则是异或0
P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出
} //由于一直为真,所以不断将P3取反输出到P2
}
注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。

‘肆’ c语言程序详解

while(a<15)a++; 出循环时a为15
while(b++<15); b++为后加,当b为15是退出循环,之后因为b++,所以b还会再自加1变为16
所以结果即为15,16

‘伍’ C语言160.....

可以,
str也是指针,
p=str是将str的值赋给指针p,也就是str数组的局虚地址,
使p指向数组。
p=&str将数组str的地址者腊谈首碰赋给指针p。

‘陆’ C语言程序设计

1、C程序的租毁执行特点是 (c)
A、从程序的main函缓帆数开始,到程序的最后一个函数结束
B、从程序的第一个函数开始,到程序的最后一个函数结束
C、从程序的main函数开始,到程序的main函数结束
D、从程序的第一个函数开始,到程序的main函数结束
2、字符型(char)数据在微机内存中的存储形式是 (b)
A、BCD码 B、ASCH码 C、补码 D、反码
3、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m==a>b)&&(n==c>d)后n的值为(d)
A、2 B、3 C、1 D、0
4、设有定义;float a=2,b=4,h=3;
以下语言表达式中与代数式1/2(a+b)h计算结果相符的是 (d)
A、(a+b)*h/2 B、(1/2)*(a+b)*h
C、(a+b)*h*1/2 D、h/2*(a+b)
5、在以下一组运算符中,优先级最高的运算符是
(d)
A、&& B、= C、<= D、%
6、设有以下定义// 这题目 貌似错的
int a=0;
double b=1.25;
char c=’A’;
#define D 2
则下面语句中错误 的是 ()
A、a++ B、b++ C、c++ D、d++
7、设int m=1,n=2,m++==n表达式的结果是
(b)
A、0 B、1 C、2 D、3
8、设有如下定义:int x=10,y=3,z;则语句
printf(“%d/n”,z=(x%y,x/y));的输出结果是 (a)
A、3 B、1 C、0 D、4
9、假定所有变量均已正确说明,下列程序段运行后X的值是 (b)
int a,b,c,x;
a=b=c=0;
if(b)
x=3
else
x=4;
A、35 B、4 C、34 D、3
10、设变量弊哪备c为char类型,能正确判断出c为小写字母的表达式是(c)
A、‘a’<=c<=’z’ B、(c>=’a’)||(c<=’z’)
C、(c<=’a’)&&(c<=’z’) D、以上都不是
11、为了避免在嵌套的条件语句(if-else)中产生二义性,C语言规定:else子句总是
与 (b) 配对。
A、缩排位置相同的if B、其之前最近的if
C、其之后最近的if D、同一行上的if
12、循环语句while和do-while的主要区别是(a)
A、do-while循环体至少要无条件执行一次,while循环可以一次都不执行
B、while的循环控制条件比do-while的循环控制条件更严格
C、do-while允许从外部跳转到循环体内
D、do-while的循环体不能是复合语句
13、当执行以下程序段时
x=-1;
do{x=x*x;} while(!x); (a)
A、循环体将执行一次 B、循环体将执行两次
C、循环体将执行无限次 D、系统将提示有语法错误
14、设有定义:int a{10};以下对a数组元素正确引用的是(d)
A、a[10] B、a[3,5] C、a (5) D、a[10-10]
15、若用数组名作为函数的实参,传递给形参的是
(a)
A、数组的首地址 B、数组第一个元素的值
C、数组中全部元素的值 D、数组元素的个数
16、C语言允许函数类型缺省定义,此时函数值隐含的类型是 (b) A、float B、int C、long D、double

‘柒’ C语言结构体编程

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct telephone
{
char name[10];
char telno[20];
};
void search(struct telephone b[], char *x, int n);
int main()
{
int i,n;
struct telephone b[100];
char nane[100];

for(i=0;;i++)
{
printf("Please input name:");
gets(b[i].name);
if(b[i].name[0]=='#')
break;
printf("Please input telephone:");
gets(b[i].telno);
}
n=i;
printf("Please input you want to find name:");
gets(nane);
search(b,&nane[0],n);
return 0;
}
void search(struct telephone b[],char *x,int n)
{
int i;
int find=0;
for(i=0;i<n;i++)
{
if(strcmp(x,b[i].name)==0)
{
printf("the telephone is %s\n",b[i].telno);
find=1;
}
}
if(find==0)
printf("Not found!");
}

‘捌’ C语言编程

C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。主要有以下特点:

C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。

C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多着名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了, 象PC- DOS 、WORDSTAR等就是用这种方法编写的。归纳起来C 语言具有下列特点:1. C是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

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

3. C语言功能齐全C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的编游戏,编3D游戏,做数据库,做联众世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。

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

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

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

‘玖’ c语言一个大程序,用基本语句,100句左右

# include "stdio.h"
# include "stdlib.h"
# include "string.h"
# define NULL 0
struct xiangcun
{
char num[4]; //乡村的编号
char name[20]; //村名
int people; //总人数

int relieve; //救济人数
float amount; //救济总金额
struct xiangcun *next;
};
struct jiating
{
char num[10]; //乡村编号
char candidate[20]; //身份证号码
char fname[20]; //户主名字
char sex[2]; //性别
int fpeople; //家庭人数
float insert; //年收入
int time; //接受救助次数
struct jiating * next;
};
struct out
{
char candidate[20]; //户主身份证号码
char goodsname[20]; //商品名字
char date[15]; //发放日期
char unit[10]; //单位
float price; //单价
int count; //发放数量
float money; //金额
struct out *next;
};
struct xiangcun *h1,*tail1;
struct jiating *h2,*tail2;
struct out *h3,*tail3;
struct xiangcun * rebuilt1() //构建乡村链表
{
int n1=0;
struct xiangcun *p1,*p2,*head;
p1=p2=(struct xiangcun *)malloc(sizeof(struct xiangcun));
printf("\n\n\n\n\n\n 请输入以下信息:\n 乡村的编号:\n 村名:\n 总人数:\n 救济人数:\n 就系总金额:\n");
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount);
while(strcmp(p1->num,"0")!=0)
{
n1++;
if(n1==1)
h1=p1;
else
p2->next=p1;
p2=p1;
p1=(struct xiangcun *)malloc(sizeof(struct xiangcun));
scanf("%s%s%d%d%f",p1->num,p1->name,&p1->people,&p1->relieve,&p1->amount);
}
p2->next=NULL;
return h1;
}
struct jiating * rebuilt2() //构建家庭信息链表
{
int n2=0;
struct jiating *p1,*p2,*head;
p1=p2=(struct jiating *)malloc(sizeof(struct jiating));
printf("\n\n\n\n\n\n 请输入以下信息:\n 乡村名字: \n 户主身份证号码: \n 户主名字:\n 户主性别:\n 家庭人数:\n 年收入:\n 接受救助的次数:\n");
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time);
while(strcmp(p1->candidate,"0")!=0)
{
n2++;
if(n2==1)
h2=p1;
else
p2->next=p1;
p2=p1;
p1=(struct jiating *)malloc(sizeof(struct jiating));
scanf("%s%s%s%s%d%f%d",p1->num,p1->candidate,p1->fname,p1->sex,&p1->fpeople,&p1->insert,&p1->time);
}
p2->next=NULL;
return h2;
}
struct out * rebuilt3() //构建物资信息链表
{
struct out *p1, *p2,*head;
int n3=0;
p1=p2=(struct out *)malloc(sizeof(struct out));
printf("\n\n\n\n\n\n 请输入以下信息:\n 户主身份证号码:\n 商品名字:\n 发放日期:\n 单位:\n 单价:\n 发放数量:\n 金额:\n");
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money);
while(strcmp(p1->candidate,"0")!=0)
{
n3++;
if(n3==1)
h3=p1;
else
p2->next=p1;
p2=p1;
p1=(struct out *)malloc(sizeof(struct out));
scanf("%s%s%s%s%f%d%f",p1->candidate,p1->goodsname,p1->date,p1->unit,&p1->price,&p1->count,&p1->money);
}
p2->next=NULL;
return h3;
}
int change1(xiangcun *head1,char *num) //对乡村信息的修改
{
struct xiangcun *p;
p=head1->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->num,num))
{
printf(" 请重新输入要修改乡村的各项:");
scanf("%s%s%d%d%d",p->num,p->name,&p->people,&p->relieve,&p->amount);
return 1;
}
p=p->next;
}
}
int change2(jiating *head2,char *num) //对家庭信息的修改
{
struct jiating *p;
p=head2->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->fname,num))
{
printf(" 请重新输入要修改家庭的各项:");
scanf("%s%s%s%s%d%f%d",p->num,p->candidate,p->fname,p->sex,&p->fpeople,&p->insert,&p->time);
return 1;
}
p=p->next;

}
}
int change3(out *head3,char *name) //对物资信息的修改
{
struct out *p;
p=head3->next;
printf("\n\n\n\n\n\n");
while(1)
{
if(p==NULL)
{
return 1;
}
if(strstr(p->goodsname,name))
{
printf(" 请重新输入要修改物资的各项:");
scanf("%s%s%s%s%f%d%f",p->candidate,p->goodsname,p->date,p->unit,&p->price,&p->count,&p->money);
return 1;
}
p=p->next;

}
}
void Csearch(xiangcun* head1) /* 查询全部乡村中每个村的救济总户数*/
{
struct xiangcun *p;
p=head1->next;
printf("\n\n\n\n\n\n");
if(p==NULL)
{
printf(" 全乡没有被救济的人!\n");
return ;
}
while(p!=NULL)
{
printf(" %s救济人数为:%d\n",p->name,p->relieve);
p=p->next;
}
return ;
}
int Esearch(xiangcun * head1,char *name) /*查询全部乡村中某个村的村救济总金额*/
{
struct xiangcun *p;
p=head1->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->name,name))
{
printf("\n\n\n\n\n\n %s的受救济总金额是:%g\n",p->name,p->amount);
return 1;
}
p=p->next;

}
}
int Fsearch(jiating* head2,char * name) /*查询某救济户 (如:张三)基本信息*/
{
struct jiating *p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
printf("\n\n\n\n\n\n 户主的乡村编号:%s\n 户主的身份证号码:%s\n",p->num,p->candidate);
printf(" 户主名字是:%s\n 户主性别是:%s\n",p->fname,p->sex);
printf(" 家庭人数:%d\n 年收入:%g\n /接受救助次数:d\n",p->fpeople,p->insert,p->time);
return 1;
}
p=p->next;
}
}int frelieve(jiating *head2,out *head3,char * name)/*查询某救济户 (如:张三)救济户物资发放的全部信息*/
{
struct jiating * p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
struct out *p1;
p1=head3->next;
printf("\n\n\n\n\n\n %s的物资信息:\n",p->fname);
while(1)
{
if(p1==NULL)
{
return 1;
}
if(strstr(p->candidate,p1->candidate))
{
printf("物资名字:%s\n发放日期:%s\n物资的量的单位:%s\n",p1->goodsname,p1->date,p1->unit);
printf(" 物资单价:%g\n 发放数量:%d\n 发放金额:%g\n",p1->price,p1->count,p1->money);
}
p1=p1->next;
}
}
p=p->next;
}

}
int Relieve(jiating * head2,out *head3,char * name,char *name2)/*查询某救济户 (如:张三)是否发放了某种救济物资 (如:矿泉水)的信息*/
{
struct jiating * p;
p=head2->next;
while(1)
{
if(p==NULL)
{
return 0;
}
if(strstr(p->fname,name))
{
out *p1;
p1=head3->next;
while (1)
{
if(strstr(p->candidate,p1->candidate)&&strstr(p1->goodsname,name2))
{
return 1;
}
p1=p1->next;
if(p1==NULL)
{
return 0;
}
}
}
p=p->next;
}

}
void tprint(xiangcun * head1)/*统计并输出全乡的人口总数、救济总户数、救济总金额*/
{
int peo_sum=0,re_sum=0;
float re_cost=0;
xiangcun *p=h1;
while(p!=NULL)
{
peo_sum+=p->people;
re_sum+=p->relieve;
re_cost+=p->amount;
p=p->next;
}
printf("\n\n\n\n\n\n 人口总数:%d\n 救济总户数:%d\n 救济总金额:%g\n",peo_sum,re_sum,re_cost);
}

‘拾’ C语言,高级编程

呵呵,这位兄台很像我前几个月的样子。学c以前觉得c应该什么都能实现。可是能学完发现自己离windows还有很远的距离。不过我现在不这么想了。开发平台不是问题所在。其实就像上面那位兄台所说得C只是一个工具。学会了c就相当于会用了一个工具。而真正的学习才刚陵明刚开始。一个计算机的体系是与很多东西组成的。想写出很好程序就要知道怎么用好自己的这支笔。下面是我对计算机体系的一点浅显的认识:

1、计算机组前银成原理。这个就不多说了,学编成的连我们的劳动对象都不清楚那还玩什么啊?

2、数据结构和算法。其实所谓的程序就是对数据进行处理,而处理的数据当然要有存储的方式,而应对这些数据存储的方式应运而生了算法。也就是处理问题的方法。这是真正编程的灵魂。十分重要。

3、操作系统。学完了上说的那些东西你还会认为操作系统很神秘。那我们就来亲手掀开他神秘的面纱,知道操作系统都为我们做了些什么是一件很令人愉快的事。

4、编译原理。这门课有点难度,不过也很重要,其中有很多思维方式需要掌握,不多说了,看了就知道了。尺悔告

懂了上面我说的这些东西,我想你对计算机程序设计会有一种新的认识。可千万不要被吓倒了哦。每个出色的程序员都是这么混出来的。为成为一名优秀的程序员而努力吧!