从零开始-C语言入门
首先下载DEV-C++编译平台,然后就开始咯,!先讲解下面简单C语言程序例子:
C程序由一个main函数组成,
{ ---函数体开始
} ---函数体结束
; ---语句结束
printf ---函数名
\ n ---换行符
/*--*/ ---注释
简单的C语言程序例1:
-----------------------------------------
main()
{
printf ("*******\n"); /* 字串照原样输出 */
printf ("* BBI *\n");
printf ("*******\n");
system("pause");
}
-----------------------------------------
运行结果:
*******
* BBI*
*******
简单的C语言程序例2:
----------------------------------------------
main()
{
inta, b, c, sum;
a=10;b=20;c=30;
sum=a+b+c;
printf("sum=%d\n", sum);/*%d是指按十制整数格式输出*/
system("pause");
}
----------------------------------------------------
简单的C语言程序例3;
-------------------------------------------------
main() /*主函数*/
{
int x,y,z;
scanf("%d,%d",&x,&y); /*键入两个数,分别赋x,y*/
z=min(x,y); /*调用min函数,将x给x1,y给y1 */
printf("min is %d\n",z);
}
int min (int x1,int y1)
{
int z1;
if(x1<y1)
z1=x1;
else
z1=y1;
return(z1);
}
-------------------------------------------
看到这里你就可以打开你的编译平台,我们正式进入C语言世界了,!
如果有心学的话下面最好是每个程序都自己打上一遍,别ctrl+C哦!
常量
1.常量—程序运行过程中其值不变的量
2.类型
(1) 整型常量 : 允许用 10进制, 8进制 (数前加数0), 16进制(数前加数字0和X)
整型常量程序例子:
---------------------------------------------------
main()
{
int a,b,c;/*定义整型(int) a,b,c*/
a=10;b=010;c=0x10;
printf("%d,%d,%d",a,b,c);
system("pause");
}
----------------------------------------------------
运行结果: 10 , 8 , 16
(2) 实型常量:允许用 日常记数法: 如:1999.35 ,-2001.98 和 科学记数法:如:1.99935e3
实型常量程序例子:
----------------------------------------------------
main()
{
float f;
f=1999.35;
printf("%f,%e",f,f );
/*注意输出格式1个是日常记数法%f,1个是科技记数法%e*/
system("pause");
}
----------------------------------------------------
运行结果 : 1999.35,1.99935e3
3)字符常量—用单引号括起来的一个字符或转义字符.
例: ‘A’,‘o’ , ‘1’,‘#’, ‘a’ 等
\n 换行
\t 横向跳格(即跳到下一个输出区)
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜杠
\’ 输出单引号
\ooo 1--3位八进制所代表的字符
\xhh 1--2位十六进制所代表的字符
字符常量程序例子:
------------------------------------------
main()
{
printf("%c,%c,\n",'A','#');
system("pause");
}
------------------------------------------
运行结果: A,#
(4) 字符串常量---用双引号括起来的一串字符序列.
例:“CHINA”,“BBI”,“Iamateacher.” 等
而 “A” 与 ‘A’在C语言中是不同的, 前者是字符串常量,
后者是字符常量.
(5)符号常量
符号常量程序例子:
------------------------------------------
#define PI 3.1415928
/* 是符号常量,一般用大写,在该作用域内不可赋其他值*/
main()
{
float r,s;
scanf("%f",&r);
s=2*PI*r;
printf("s=%f\n",s);
system("pause");
}
---------------------------------------------
好处:若程序里多处出现,该值发生 变化, 仅在 define中作一次修改;
所有程序在DEVC++里要保存成.C类型的,F9运行..
好累,就写到啦,
下次有时间在把变量,运算符及其表达式,函数,循环,判断,指针等等之类的写写,!
别急于求成,C语言想学好的话,不是一天两天的事,不过C语言是深无底的,! 我来跟贴,大家来用malloc动态分配
#include <stdlib.h>
void main()
{
struct grade /* 成绩结构宣告 */
{
int math; /* 数学成绩 */
int english; /* 英文成绩 */
int computer; /* 电脑成绩 */
};
struct grade *student; /* 结构阵列变数宣告 */
int i;
int num; /* 学生人数 */
int m_sum,e_sum,c_sum; /* 各科成绩总分变数 */
float m_ave,e_ave,c_ave; /* 各科平均成绩变数 */
m_sum = e_sum = c_sum = 0; /* 总分初值 */
printf("请输入学生人数 ==> ");
scanf("%d",&num); /* 读取学生人数 */
student = (struct grade *) /* 配置记忆体 */
malloc(num * sizeof(struct grade));
if ( !student ) /* 检查指标 */
{
printf("内存分配失败! \n");
exit(1);
}
for ( i = 0; i < num; i++ )
{
printf("学生编号: %d\n",i + 1);
printf("请输入数学成绩. ==> ");
scanf("%d",&student.math); /* 读取数学成绩 */
m_sum += student.math; /* 计算数学总分 */
printf("请输入英语成绩. ==> ");
scanf("%d",&student.english);/* 读取英文成绩 */
e_sum += student.english; /* 计算英文总分 */
printf("请输入计算机成绩. ==> ");
scanf("%d",&student.computer); /* 读取电脑成绩 */
c_sum += student.computer; /* 计算电脑总分 */
}
m_ave = (float) m_sum / (float) num; /* 计算数学平均 */
e_ave = (float) e_sum / (float) num; /* 计算英文平均 */
c_ave = (float) c_sum / (float) num; /* 计算电脑平均 */
printf("数学平均成绩: %6.2f \n",m_ave);
printf("英语平均成绩: %6.2f \n",e_ave);
printf("计算机平均成绩: %6.2f \n",c_ave);
} 好!
一起完善之! 现在写起来怎么这么容易,以前上学时怎么觉得就那么难呢。。。。
双链表
#include <stdlib.h>
struct llist /* 串列结构宣告 */
{
int num; /* 邮寄编号 */
struct llist *next; /* 指向下一标签 */
};
typedef struct llist node; /* 定义新型态 */
typedef node *llink; /* 定义新型态指标 */
/* ---------------------------------------- */
/*链结串列的列印 */
/* ---------------------------------------- */
void printllist(llink ptr)
{
while ( ptr != NULL ) /* 串列走访回路 */
{
printf("[%d]",ptr->num); /* 列印节点资料 */
ptr = ptr->next; /* 指向下一节点 */
}
printf("\n"); /* 换行 */
}
/* ---------------------------------------- */
/*链结串列的建立 */
/* ---------------------------------------- */
llink createllist(int *array,int len)
{
llink head; /* 串列的开始指标 */
llink ptr,ptr1;
int i;
/* 建立第一个节点 */
head = ( llink ) malloc(sizeof(node)); /* 配置记忆体 */
if ( !head ) /* 检查指标 */
return NULL;
head->num = array; /* 建立节点内容 */
head->next = NULL; /* 设定指标初值 */
ptr = head; /* 将ptr指向串列开始 */
for ( i = 1; i < len; i++ ) /* 建立其它节点回路*/
{
ptr1 = ( llink ) malloc(sizeof(node));
if ( !ptr1 )
return NULL;
ptr1->num = array; /* 建立节点内容 */
ptr1->next = NULL; /* 设定指标初值 */
ptr->next = ptr1; /* 连结节点 */
ptr = ptr->next; /* 指向下一节点 */
}
return head;
}
/* ---------------------------------------- */
/*链结串列的连结 */
/* ---------------------------------------- */
llink concatllist(llink ptr1,llink ptr2)
{
llink ptr;
ptr = ptr1; /* 指向串列1的开始 */
while ( ptr->next != NULL ) /* 找串列1的结束 */
ptr = ptr->next; /* 指向下一节点 */
ptr->next = ptr2; /* 连结串列2 */
return ptr1;
}
/* ---------------------------------------- */
/*主程式: 连结两个由阵列内容所建立的串列. */
/* ---------------------------------------- */
void main()
{
int llist1 = { 1, 2, 3, 4, 5, 6 };/* 阵列内容 */
int llist2 = { 8, 19, 13, 24, 35 }; /* 阵列内容 */
llink ptr,ptr1,ptr2;
ptr1 = createllist(llist1,6); /* 建立串列1 */
if ( ptr1 == NULL )
{
printf("记忆体配置失败! \n");
exit(1);
}
ptr2 = createllist(llist2,5); /* 建立串列2 */
if ( ptr2 == NULL )
{
printf("记忆体配置失败! \n");
exit(1);
}
ptr = concatllist(ptr1,ptr2);/* 连结两串列 */
printllist(ptr); /* 印出连结串列 */
getch();
} 2楼的代码头文件中还需要加入#include <stdio.h>
代码你们都写了,我就再介绍一二个C/C++的编译器吧.(它们都是Windows界面下的哦)
1.Win-TC (只能编译C,里面还有例子,比较适合初学者)
2.C-Free(可以编译c/c++,写代码时有自动提示,可以免去不少输入错误,功能还不少)
注:
1是免费版本,可以直接使用;
2是共享软件,10元注册费绝对值得,就别去找注册码了,交点钱给作者支持一下也不错)
[ 本帖最后由 aspirer 于 2006-3-25 03:53 编辑 ] 原帖由 猫猫 于 2006-3-21 00:47 发表
版主你好,我用DEV-C++编译后,应该另存为什么格式的来运行以查看结果呢?
晕什么时候来了个猫猫? 老大能否给推荐本书?
全国计算机等级考试的教程怎么样? 请问一下用DEV的,在DEV里编C,是不是没有头文件"graphics"的啊????