首页编程c语言必背100例(c语言精彩编程200例)

c语言必背100例(c语言精彩编程200例)

编程之家2026-06-01982次浏览

今天给各位分享c语言必背100例的知识,其中也会对c语言精彩编程200例进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

c语言必背100例(c语言精彩编程200例)

c语言必背代码有哪些

1、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

兔子的规律为数列1,1,2,3,5,8,13,21....*/

main()

{

long f1,f2;

int i;

c语言必背100例(c语言精彩编程200例)

f1=f2=1;

for(i=1;i<=20;i++)

{ printf("%12ld%12ld",f1,f2);

if(i%2==0) printf("

");/*控制输出,每行四个*/

f1=f1+f2;/*前两个月加起来赋值给第三个月*/

f2=f1+f2;/*前两个月加起来赋值给第三个月*/

}

}

2、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。*/

#include"math.h"

main()

{

intm,i,k,h=0,leap=1;

printf("

");

for(m=101;m<=200;m++)

{k=sqrt(m+1);

for(i=2;i<=k;i++)

if(m%i==0)

{leap=0;break;}

if(leap)/*内循环结束后,leap依然为1,则m是素数*/

{printf("%-4d",m);h++;

if(h%10==0)

printf("

");

}

leap=1;

}

printf("

Thetotal is%d",h);

}

3、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程

找出1000以内的所有完数。*/

main()

{

static int k[10];

inti,j,n,s;

for(j=2;j<1000;j++)

{

n=-1;

s=j;

for(i=1;i<j;i++)

{if((j%i)==0)

{ n++;

s=s-i;

k[n]=i;

}

}

if(s==0)

{printf("%d is a wanshu:",j);

for(i=0;i<n;i++)

printf("%d,",k[i]);

printf("%d

",k[n]);

}

}

}

4、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,

请在空白处完善程序。*/

main()

{ int a[4][4],b[4][4],i,j;/*a存放原始数组数据,b存放旋转后数组数据*/

printf("input 16 numbers:");

/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

for(i=0;i<4;i++)

for(j=0;j<4;j++)

{ scanf("%d",&a[i][j]);

b[3-j][i]=a[i][j];

}

printf("arrayb:

");

for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

printf("%6d",b[i][j]);

printf("

");

}

}

5、/*编程打印直角杨辉三角形*/

main()

{int i,j,a[6][6];

for(i=0;i<=5;i++)

{a[i][i]=1;a[i][0]=1;}

for(i=2;i<=5;i++)

for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j]+a[i-1][j-1];

for(i=0;i<=5;i++)

{for(j=0;j<=i;j++)

printf("%4d",a[i][j]);

printf("

");}

}

6、/*通过键盘输入3名学生4门课程的成绩,

分别求每个学生的平均成绩和每门课程的平均成绩。

要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/

#include<stdio.h>

#include<stdlib.h>

main()

{ float a[4][5],sum1,sum2;

inti,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%f",&a[i][j]);

for(i=0;i<3;i++)

{sum1=0;

for(j=0;j<4;j++)

sum1+=a[i][j];

a[i][4]=sum1/4;

}

for(j=0;j<5;j++)

{ sum2=0;

for(i=0;i<3;i++)

sum2+=a[i][j];

a[3][j]=sum2/3;

}

for(i=0;i<4;i++)

{ for(j=0;j<5;j++)

printf("%6.2f",a[i][j]);

printf("

");

}

}

C语言必须知道的300个问题的目录

第1章初识C语言 1

问题1 C语言是如何发展起来的? 2

问题2什么是ANSI标准? 2

问题3 C语言编写程序的优点有哪些? 3

问题4如何规避C语言的不足之处? 4

问题5 C语言的应用领域有哪些? 5

问题6什么是C99标准?与C89标准

相比,C99标准有哪些

新特性? 6

问题7 C语言是C++的子集吗? 10

问题8 C语言程序的开发过程是

怎样的? 11

问题9什么是编译程序和解释程序? 12

问题10 ANSI C的编译限制有哪些? 13

第2章一个简单的C程序 14

问题11 C语言的入口函数是什么? 15

问题12 C语言程序由哪些部分组成? 16

问题13如何在Turbo C 2.0中输入一个

程序? 16

问题14如何在Visual C++ 6.0中运行

一个C程序? 18

问题15如何在Visual C++ 2008中运行

一个C程序? 22

问题16如何提高程序的可读性? 26

问题17什么是关键字?C语言的关键

字有哪些? 27

问题18什么是标识符?使用标识符的

注意事项是什么? 29

问题19 void关键字都有哪些用途? 30

问题20什么是匈牙利命名约定?它是否

是好的约定? 31

第3章算法入门 33

问题21为什么说算法是程序设计的

灵魂? 34

问题22算法的特性有哪些? 34

问题23如何评价一个算法的好坏? 35

问题24算法的表示方法都有哪些? 36

问题25算法的基本结构是什么? 40

问题26算法有哪几类? 42

问题27算法的效率度量方法有哪些? 42

问题28什么是算法的时间复杂度? 43

问题29什么是算法的空间复杂度? 44

问题30什么是分治法算法思想? 45

第4章常用数据类型 46

问题31声明变量和定义变量的区别

是什么? 47

问题32在开发时如何决定使用哪种

数据类型? 48

问题33什么是常量?如何区分常量

和变量? 48

问题34各种数据类型所占的内存是

多少? 49

问题35字符与字符串的差别有

哪些? 50

问题36变量是否必须初始化? 51

问题37为什么会发生数据溢出?如何

避免数据溢出? 52

问题38局部变量和全局变量能否

重名? 53

问题39全局变量可不可以定义在可被

多个.C文件包含的头文件中?

为什么? 53

问题40如何引用一个已经定义过的

外部变量? 54

问题41全局变量和局部变量的存储

方式有什么区别? 55

问题42整型常量的存储形式是

怎样的? 55

问题43整型常量的表示形式有

哪几种? 56

问题44使用了没定义的变量会有什么

现象? 56

问题45 static关键字有什么作用? 57

问题46 const关键字有什么作用? 59

问题47 const与#define相比有何

优点? 60

问题48 sizeof不是函数吗? 61

问题49 float类型数如何与0值

比较? 63

问题50静态变量与自动变量的区别

有哪些? 64

第5章运算符与表达式 66

问题51运算符的优先级和结合性是

怎样的? 67

问题52如何区分“,”是运算符还是

分隔符? 68

问题53 C语言如何解释x=a+=b+c? 69

问题54 x=x+1,x+=1,x++,哪个效率

最高? 70

问题55什么是运算符的目?怎样进行

区分? 70

问题56使用“++”和“--”运算符需要

注意些什么? 71

问题57如何理解i+++j? 71

问题58赋值表达式中什么是左值和右值?数组名作为左右值时又具有怎样的意义? 72

问题59如何确定条件表达式的结果的

数据类型? 73

问题60“%”运算符是否可以对小数

进行运算? 74

问题61“/”运算符得到的结果一定为

整数吗? 75

问题62在进行多种数据类型混合运算

的时候,数据类型自动转换有

哪些规则? 76

问题63 C语言中有哪些简化的运算

表达式? 77

问题64使用逻辑表达式需要注意哪

几点问题? 77

问题65 i++*i++这样的表达式为什么

不能得到预期的结果? 78

问题66 a[i]=i++;这样的代码正确吗? 79

问题67编写表达式时需要注意

什么? 79

问题68如何理解c=a,b;? 80

问题69为无符号类型变量赋值时,数据

类型应怎样转换? 81

问题70 C语言表达式的求值顺序总是

按照运算符的结合性保证

“自左至右”或者“自右

至左”吗? 81

第6章输入/输出函数 83

问题71函数printf()的基本格式

是什么? 84

问题72如何认识printf()函数的格式

字符? 85

问题73函数printf()的标志有几种?

如何使用? 91

问题74如何控制输出最小宽度? 91

问题75如何控制输出精度? 92

问题76如何控制输出长度? 93

问题77如何动态设置输出宽度和

精度? 94

问题78 printf()函数的返回值是

什么? 95

问题79如何理解输出列表? 96

问题80函数scanf()的基本格式是

什么? 96

问题81 scanf()函数的格式字符是

什么? 97

问题82使用scanf()函数应注意的问题

是什么? 100

问题83 scanf()函数的返回值是

什么? 101

问题84如何使用getchar()函数? 102

问题85 getch()函数如何使用? 104

问题86如何应用gets()函数? 104

问题87如何应用putch()函数? 105

问题88 puts()函数该如何应用? 106

问题89如何控制多数值的输入? 107

问题90如何输入字符数组? 108

第7章选择、分支结构程序设计 110

问题91 5>4>3为什么不成立——谈谈

关系表达式的值 111

问题92=和==如何区分? 112

问题93什么叫逻辑短路? 113

问题94 if语句的基本形式有哪些?

如何应用? 114

问题95浮点数的相等比较是否可以

用==? 116

问题96关系运算符和数学不等号有

什么区别? 117

问题97 if语句后面一定不能写

分号吗? 118

问题98这个程序为什么多执行了好多

语句? 119

问题99不用关系表达式和逻辑表达式

做条件 120

问题100怎样理解复合语句中的

变量? 122

问题101如何进行if语句的嵌套? 123

问题102条件运算符“?:”怎样

应用? 124

问题103 switch语句的基本格式是

什么? 125

问题104 if语句与switch语句的优缺

点是什么? 127

问题105 switch语句中的default关键字

是否必须? 128

问题106 break关键字在switch语句中

应注意什么? 128

问题107如何正确判断if和else的

匹配? 130

问题108 switch和case后的表达式值的

类型是否可以是浮点型? 132

问题109区段划分型条件有什么

技巧? 133

问题110 default必须写在所有case

之后吗? 134

第8章循环结构 136

问题111循环结构的基本概念是

什么? 137

问题112 while语句的基本格式是

什么? 138

问题113 while循环应注意什么

问题? 139

问题114 for循环语句的基本格式

是什么? 140

问题115 for语句的三个表达式都是

必须的吗? 142

问题116 do…while语句的基本格式

是什么? 144

问题117分号在循环体中的作用? 146

问题118 while与do…while的

区别? 148

问题119什么是循环嵌套? 149

问题120循环嵌套的结构是

怎样的? 151

问题121如何正确使用循环嵌套? 153

问题122死循环是怎样产生的? 154

问题123怎样提高循环语句的

效率? 156

问题124 continue语句的基本作用

是什么? 158

问题125 break语句的基本作用是

什么? 159

问题126 goto语句的基本格式是什么?

如何使用? 161

问题127 goto语句的缺陷是什么? 163

问题128如何选择循环语句? 165

问题129如何判定循环结束和提前

结束? 165

问题130如何避免循环中的初值错误

问题? 167

第9章数组 170

问题131什么是数组?其存储有何

特点? 171

问题132数组的维数该如何理解? 171

问题133一维数组是怎样定义的? 172

问题134如何引用一维数组元素? 173

问题135如何初始化一维数组? 174

问题136如何设计数组的排序

算法? 175

问题137如何定义二维数组? 176

问题138如何引用二维数组元素? 178

问题139如何初始化二维数组? 179

问题140如何定义字符数组? 180

问题141如何初始化字符数组? 180

问题142如何引用字符数组? 181

问题143如何进行字符数组的

复制? 182

问题144如何进行字符数组的

连接? 183

问题145如何进行字符串的比较? 185

问题146如何测定字符串的长度? 187

问题147如何进行字符串大小写的

相互转换? 188

问题148如何计算字符串中有多少个

单词? 190

问题149 gets()函数和scanf()函数在输入

字符串时有何区别? 191

问题150 puts()函数和printf()函数在输出

字符串时有何区别? 192

问题151数组与指针的区别是什么? 193

问题152为什么作为函数形参的数组和

指针可以互换? 195

问题153为什么数组名作参数传递给子

函数时,子函数可以改变主

函数中数组的值? 196

问题154 C语言中有动态数组吗? 197

问题155如何实现动态二维数组? 199

问题156 strcpy()函数可以复制字符串的

一部分吗? 201

问题157字符串和字符数组有什么

区别? 202

问题158‘\0’和“\0”有什么区别? 203

问题159字符数组占用内存

怎样算? 204

问题160用字符数组和指针两种方式

定义的字符串有什么

不同? 204

第10章函数编程基础 206

问题161什么是函数?如何分类? 207

问题162如何定义无参函数? 209

问题163如何定义有参函数? 210

问题164什么是空函数?作用是

什么? 210

问题165什么是形参和实参?如何

使用? 211

问题166如何从函数返回? 213

问题167函数返回值你了解多少? 214

问题168如何进行函数的一般

调用? 215

问题169函数调用的基本方式有几种?

各是什么? 216

问题170函数调用应具备哪些

条件? 216

问题171如何进行函数的嵌套

调用? 218

问题172什么是递归调用?如何

实现? 219

问题173函数如何将数组元素作为

实参? 222

问题174如何将数组名作为函数

参数? 224

问题175如何将多维数组名作为函数

参数? 227

问题176什么是局部变量? 228

问题177什么是全局变量?如何

应用? 229

问题178存储方式有哪几种?分别

是什么? 232

问题179如何使用auto关键字? 233

问题180什么是静态变量?如何

实现? 236

问题181什么是寄存器变量?如何

实现? 238

问题182如何声明外部变量? 239

问题183如何调用编译后的函数? 240

问题184如何限定外部变量的使用

范围? 241

问题185如何使用函数调用实现对字

符串的统计? 242

问题186 main()函数有什么作用? 243

问题187什么是内部函数? 243

问题188什么是外部函数?

怎么用? 244

问题189 static()函数与普通函数有什么

区别? 245

问题190形参和实参有什么区别? 246

第11章指针解析 248

问题191什么是指针?什么是指针

变量? 249

问题192如何创建指针? 250

问题193如何初始化指针? 251

问题194如何使用指针? 252

问题195函数中如何传递指针? 254

问题196指针、数组和地址之间的关系

是什么? 255

问题197如何进行指针运算? 256

问题198如何使用指针操作数组? 258

问题199如何用指针表示多维

数组? 260

问题200如何使用指针操作多维

数组? 261

问题201如何用指针为函数传递

数组? 263

问题202如何用指针表示字符串? 264

问题203如何使用字符串指针作为函数

参数? 265

问题204字符数组和字符指针的区别

是什么? 266

问题205什么是指针数组? 267

问题206如何使用指针数组处理

字符串? 268

问题207如何将指针数组作为函数的

参数? 269

问题208什么是指向指针的指针? 270

问题209二级指针如何应用于一维

数组? 271

问题210如何实现二级指针对二维数组

的操作? 272

问题211二级指针如何操作字符串数组

(指针数组)? 273

问题212如何理解返回指针的

函数? 275

问题213什么是指向函数的指针? 277

问题214如何用const控制指针? 278

问题215什么是“野指针”? 279

问题216 main()函数的指针数组形参

是怎么回事? 279

问题217 void指针就是空指针吗?它

有什么作用? 281

问题218指针是一种特殊的变量,只能

用来保存地址。这句话

对吗? 282

问题219字符指针、浮点数指针以及

函数指针这三种类型的变量

哪个占用的内存最大?

为什么? 282

问题220一个32位的机器,该机器的

指针是多少位? 283

第12章常用数据结构 284

问题221空结构体所占的内存是

多少? 285

问题222在C语言中,一个结构体可以

包含指向自己的指针吗? 286

问题223 struct person{...};person a;

为什么编译出错? 287

问题224怎样从/向数据文件读/写

结构? 289

问题225枚举与#define宏的区别有

哪些? 290

问题226如何看待枚举类型,枚举类型

的优点是什么? 291

问题227关键字typedef的功能是

什么? 292

问题228类型定义是否允许嵌套? 294

问题229 typedef与#define宏的相似之处

与不同之处是什么? 295

问题230什么是散列法? 296

问题231大小端模式对union类型数据

有什么影响? 297

问题232如何为联合体变量赋

初值? 298

问题233如何证明联合体变量的所有成员是共享一个内存单元的? 300

问题234堆和栈的区别是什么? 301

问题235举例说明,什么是静态链表?

什么是动态链表? 302

问题236单向链表、双向链表和循环链

表有什么区别? 304

问题237如何在链表中的指定位置插入

结点? 305

问题238如何删除链表中指定位置的

结点? 306

问题239如何创建一个动态链表? 308

问题240指向结构体数组的指针如何

应用? 310

第13章位运算操作符 312

问题241什么是位运算?位运算符包括

哪些? 313

问题242移位运算中如何补位? 314

问题243移位运算符与加减运算符的

优先级哪个较高? 315

问题244什么是循环移位? 316

问题245什么是位段?其优点是

什么? 317

问题246如何正确使用位段? 318

问题247数据在计算机中的存储单位有

哪些?有几种存储形式? 320

第14章存储管理 322

问题248与内存息息相关的重要概念

有哪些? 323

问题249指针指向不合法引起了哪些

内存问题? 324

问题250内存分配与释放引起的常见

问题有哪些? 325

问题251什么是内存越界?什么是内存

泄露?二者是如何产生的? 326

问题252 C语言提供了哪些动态内存

分配函数? 327

问题253 malloc()函数与calloc()函数有

什么区别? 328

问题254内存耗尽怎么办? 328

问题255动态内存会被自动释

放吗? 330

问题256高位优先与低位优先的不同

之处是什么? 330

问题257 free()和delete()怎样处理

指针? 331

问题258怎样利用好敏感的内存

资源? 333

第15章预处理和函数类型 335

问题259在头文件中#if、_STDC_等字符

起什么作用? 336

问题260如何书写多条语句宏? 337

问题261预处理中#和##运算符是什么

意思? 338

问题262一个头文件可以包含另一个头

文件吗? 339

问题263#include<>和#include“”有什么

区别? 340

问题264什么是无参宏定义? 341

问题265什么是带参宏定义? 342

问题266怎样写参数个数可变

的宏? 343

问题267#pragma预处理的作用

是什么? 345

问题268条件编译的表达形式有

哪些? 346

问题269如何应用内部函数? 347

问题270如何应用外部函数? 348

第16章文件的读写操作 351

问题271各个读写操作的区别是

什么? 352

问题272 C语言文件有哪几类? 354

问题273怎样写数据文件,使之可以在

不同字大小、字节顺序或浮点

格式的机器上读入? 355

问题274能否使用fflush()函数清除多余

的输入? 356

问题275 fopen()函数打开文件失败的

原因是什么? 357

问题276为什么打开文件后要及时

关闭? 358

问题277文件的打开方式有哪些? 358

问题278如何正确使用putchar()函数和getchar()函数? 360

问题279 getchar()函数、getch()函数和getche()函数的区别是

什么? 361

问题280使用printf()函数和scanf()函数

需要注意什么? 362

问题281 printf()函数有哪些参数? 363

问题282 scanf()函数的格式控制包括

哪些? 364

问题283 printf()函数和scanf()函数格式

符的修饰符“*”有什么

作用? 366

问题284 fscanf()函数、fprintf()函数与scanf()函数和printf()函数有什么

不同? 367

问题285如何判断文件的结束? 368

第17章图形图像处理 371

问题286为什么在使用图形函数时要

首先初始化图形模式? 372

问题287怎样初始化图形模式? 372

问题288初始化时提示“BGI Error: Graphics not initialized

(use'initgraph')”怎么办? 374

问题289怎样利用C语言建立独立的

图形运行程序? 375

问题290 TC中有几个画线函数?怎么

使用? 376

问题291 TC中有几个画矩形函数?怎么

使用? 377

问题292 TC中有几个画圆函数?怎么

使用? 379

问题293如何使用C语言填充封闭

图形? 380

问题294 TC中有几个和光标有关的

函数?怎样使用? 382

问题295如何在图形模式下输出

文本? 383

问题296背景色、线条颜色和填充颜色

有什么区别?何时使用? 386

问题297怎样记住那么多的颜色? 387

问题298线条样式和填充样式都有

哪些?怎样设置? 388

问题299怎样复制图形? 392

问题300怎样在C语言中制作

动画? 394

二级C语言

******这里有一些资料希望对你有帮助《包括基础知识和例题》:

一.基础知识

C语言总复习C六月,

总体上必须清楚的:

1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和 switch)

2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.

4)bit是位是指为0或者1。 byte是指字节,一个字节=八个位.

5)一定要记住二进制如何划成十进制。

概念常考到的:

1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章

1)合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。

关键字不可以作为用户标识符号。main define scanf printf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:

2.333e-1就是合法的,且数据是2.333×10-1。

考试口诀:e前e后必有数,e后必为整数。.

3)字符数据的合法形式::

'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。

4)整型一般是两个字节,字符型是一个字节,双精度一般是4个字节:

考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节,字符型是一个字节,双精度一般是4个字节就可以了。

5)转义字符的考查:

在程序中 int a= 0x6d,是把一个十六进制的数给变量a注意这里的0x必须存在。

在程序中 int a= 06d,是一个八进制的形式。

在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。

‘\141’是合法的, 0是不能写的。

‘\108’是非法的,因为不可以出现8。

6)算术运算符号的优先级别:

同级别的有的是从左到右,有的是从右到左。

7)强制类型转换:

一定是(int)a不是 int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b的区别。前是把a+b转型,后是把a转型再加b。

8)表达式的考查:

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这

个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

逗号表达式:优先级别最低;表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

9)位运算的考查:

会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。

例1:char a= 6, b;

b= a<<2;这种题目的计算是先要把a的十进制6化成二进制,再做位运算。

例2:一定要记住,

例3:在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

10)018的数值是非法的,八进制是没有8的,逢8进1。

11)%符号两边要求是整数。不是整数就错了。

12)三种取整丢小数的情况:

1、int a=1.6;

2、(int)a;

3、

第二章

1)printf函数的格式考查:

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。

%ld对应 long int;%lf对应double。

2)scanf函数的格式考察:

注意该函数的第二个部分是&a这样的地址,不是a;

Scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入的第三个数据。

3)putchar,getchar函数的考查:

char a= getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(‘y’)把字符y输出到屏幕中。

4)如何实现两个变量x,y中数值的互换(要求背下来)

不可以把 x=y,y=x;要用中间变量 t=x;x=y;y=t。

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)

这个有推广的意义,注意 x=(int)x这样是把小数部分去掉。

第三章

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。

1)关系表达式:

表达式的数值只能为1(表示为真),或0(表示假)

当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1;

2)逻辑表达式:

只能为1(表示为真),或0(表示假)

a)共有&&||!三种逻辑运算符号。

b)!>&&>||优先的级别。

c)注意短路现象。考试比较喜欢考到。

d)要表示 x是比0大,比10小的方法。0<x<10是不可以的(一定记住)。是先计算0<x得到的结果为1或则0;再用0,或1与10比较得到的总是真(为1)。所以一定要用(0<x)&&(x<10)表示比0大比10小。

3)if语句

else是与最接近的if且没有else的相组合的。

4)条件表达式:

表达式1?表达式2:表达式3

注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。

考试口诀:真前假后。

5)switch语句:

a)一定要注意有break和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。

b)switch只可以和break一起用,不可以和continue用。

第四章

1)三种循环结构:

a)for(); while(); do- while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)

2) break和 continue的差别

记忆方法:

break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。

continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。

3)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

4) while((c=getchar())!=’\n’)和 while(c=getchar()!=’\n’)的差别

先看a= 3!= 2和(a=3)!=2的区别:

(!=号的级别高于=号所以第一个先计算 3!=2)第一个a的数值是得到的1;第二个a的数值是3。

考试注意点:括号在这里的重要性。

第五章

函数:是具有一定功能的一个程序块;

1)函数的参数,返回数值(示意图):

main()

{

int a= 5,b=6,c;

c=add(a,b);

printf(“%d”,c);

}

调用函数

a,b是实参

整个函数得到一个数值就是

Add函数的返回数值。

int add( int x, int y)

{

int z;

z=x+y;

return z;

}

被调用函数

x,y是形式参数

函数返回数值是整型

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。

程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行

2)一定要注意参数之间的传递

实参和形参之间传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。

3)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。

不一定要有:形参的名称。

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。

int*p中*p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值

p是当作地址来使用。

*p++和(*p)++的之间的差别:改错题目中很重要

*p++是地址会变化。

(*p)++是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念:

对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0]、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。

二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成:第一列第二列第三列

a[0]à 1 2 3->第一行

a[1]à 4 5 6—>第二行

a[2]à 7 8 9->第三行

步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。

一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。

数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写

int a[]={1,2}合法。 int a[][4]={2,3,4}合法。但int a[4][]={2,3,4}非法。

二维数组中的行指针

int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1跳一个数组元素。搭配*p[2]指针数组使用

还有记住脱衣服法则:

a[2]变成*(a+2) a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)

这个思想很重要!

二.100道例题

【程序1】

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去

掉不满足条件的排列。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,k;

printf("\n");

for(i=1;i<5;i++)/*以下为三重循环*/

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{

if(i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

getch();

}

==============================================================

【程序2】

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=100000*0. 1;

bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf("bonus=%d",bonus);

getch();

}

==============================================================

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果。请看具体分析:

2.程序源代码:

#include"math.h"

#include"stdio.h"

#include"conio.h"

main()

{

long int i,x,y,z;

for(i=1;i<100000;i++)

{

x=sqrt(i+100);/*x为加上100后开方后的结果*/

y=sqrt(i+268);/*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

printf("\n%ld\n",i);

}

getch();

}

==============================================================

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int day,month,year,sum,leap;

printf("\nplease input year,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day;/*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It is the%dth day.",sum);

getch();

}

==============================================================

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("small to big:%d%d%d\n",x,y,z);

getch();

}

==============================================================

【程序6】

题目:用*号输出字母C的图案。

1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

printf("Hello C-world!\n");

printf("****\n");

printf("*\n");

printf("*\n");

printf("****\n");

getch();

}

==============================================================

【程序7】

题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

1.程序分析:字符共有256个。不同字符,图形不一样。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

char a=176,b=219;

printf("%c%c%c%c%c\n",b,a,a,a,b);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",a,a,b,a,a);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",b,a,a,a,b);

getch();

}

==============================================================

【程序8】

题目:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,result;

printf("\n");

for(i=1;i<10;i++)

{

for(j=1;j<10;j++)

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("\n");/*每一行后换行*/

}

getch();

}

==============================================================

【程序9】

题目:要求输出国际象棋棋盘。

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf("%c%c",219,219);

else

printf("");

printf("\n");

}

getch();

}

==============================================================

【程序10】

题目:打印楼梯,同时在楼梯上方打印两个笑脸。

1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j;

printf("\1\1\n");/*输出两个笑脸*/

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf("%c%c",219,219);

printf("\n");

}

getch();

}

.:.:经典c程序100例==11--20:.:.

经典c程序100例==11--20

【程序11】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

long f1,f2;

int i;

f1=f2=1;

for(i=1;i<=20;i++)

{

printf("%12ld%12ld",f1,f2);

if(i%2==0) printf("\n");/*控制输出,每行四个*/

f1=f1+f2;/*前两个月加起来赋值给第三个月*/

f2=f1+f2;/*前两个月加起来赋值给第三个月*/

}

getch();

}

==============================================================

【程序12】

题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

#include"math.h"

main()

{

int m,i,k,h=0,leap=1;

printf("\n");

for(m=101;m<=200;m++)

{

k=sqrt(m+1);

for(i=2;i<=k;i++)

if(m%i==0)

{

leap=0;

break;

}

if(leap)

{

printf("%-4d",m);

h++;

if(h%10==0)

printf("\n");

}

leap=1;

}

printf("\nThe total is%d",h);

getch();

}

==============================================================

【程序13】

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

2.程序源代码:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,k,n;

printf("'water flower'number is:");

for(n=100;n<1000;n++)

{

i=n/100;/*分解出百位*/

j=n/10%10;/*分解出十位*/

k=n%10;/*分解出个位*/

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf("%-5d",n);

}

getch();

}

==============================================================

【程序14】

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,

重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

2.程序源代码:

/* zheng int is divided yinshu*/

#include"stdio.h"

#include"conio.h"

main()

{

int n,i;

printf("\nplease input a number:\n");

scanf("%d",&n);

printf("%d=",n);

for(i=2;i<=n;i++)

while(n!=i)

{

if(n%i==0)

{

printf("%d*",i);

n=n/i;

}

else

break;

}

printf("%d",n);

getch();

}

==============================================================

**************************由于字数限制,未能提供完。

关于c语言必背100例的内容到此结束,希望对大家有所帮助。

java编译器有哪些(java开发ai工具)网络编程培训班(网上学编程课哪个机构好)