逻辑运算符
作用 | C | Pascal
———+—–+———–
等于 | == | =
不等于 | != | <>
小于 | < | <
大于 | > | >
小于等于 | <= | <=
大于等于 | >= | >=
且 | && | and
或 | || | or
非 | ! | not
C语言的if语句
C语言中if语句的写法如下:if (表达式)
{
表达式为真时执行的内容
}
之前说过,如果执行的内容只有一句话,花括号可以省略。
下面的语句将返回整数a的绝对值:if ( a<0 )
a= -a;
下面的语句用于实现排序网络中的比较算子:if ( a>b )
{
int c=a;
a=b;
b=c;
}
C语言中也有else if和else的用法,但和Pascal不同的是else的前一条语句末要保留分号。下面的语句用于判断三边长分别为a, b, c的三角形是什么三角形:if ( a+b>c && b+c>a && a+c>b )
{
if ( a==b && b==c )
printf("Regular Triangle");
else if ( a==b || b==c || a==c )
printf("Isosceles Triangle");
else
printf("Scalene Triangle");
}
else
printf("Triangle Doesn't Exist.");
C语言的bool类型
C语言中没有布尔类型。任何一个整型的变量都可以充当布尔变量,用0表示False,其它数(默认为1)表示True。
观察下列代码片断。printf("%d n", 3+5 == 8);
int a;
a = 3+5==9;
printf("%d n" , a);
a = 100 <= 100;
printf("%d n" , a);
a = 1;
if(a) printf("a is 1n");
a = 2;
if(a) printf("a is 2n");
a = -1;
if(a) printf("a is -1n");
a = 0;
if(a) printf("a is 0n");
if(!a) printf("a is not 0n");
这段程序的输出为:1
0
1
a is 1
a is 2
a is -1
a is not 0
如果觉得别扭,你可以使用_Bool类型。你可以把_Bool看作整型,但它只能储存0和1两个值。
下面三句话将输出数字1,这是因为_Bool类型把所有非0数都当做是1。_Bool a;
a = 100;
printf("%d", a);
如果你想像Pascal一样使用true和false,那么你可以包含头文件stdbool.h。这样你可以定义变量为bool类型并赋值为true或false。例如:bool a = true;
if (a) printf("a is true");
下面是两个完整的程序。第一个程序中_Bool可以替换成int。三种写法都正确,你可以选择一种自己喜欢的写法。#include <stdio.h>
_Bool isNegative ( int a )
{
if (a<0) return 1;
else return 0;
}
int main()
{
if ( isNegative(-100) )
printf("-100 is Negative");
return 0;
}#include <stdio.h>
#include <stdbool.h>
bool isNegative ( int a )
{
if (a<0) return true;
else return false;
}
int main()
{
if ( isNegative(-100) )
printf("-100 is Negative");
return 0;
}
C语言的for循环
for循环使用下面的语句:for ( 语句1; 语句2; 语句3 )
{
循环内容
}
其中语句1用于初始化,若语句2为真(非0)则进入循环;每次循环后将执行语句3,此时若仍然满足语句2则继续循环,否则退出。语句123中,某一种语句可能为空,也可能由多条语句组成(多条语句用逗号隔开)。
下面的语句打印1到10这10个数。以下所有写法都是正确的。通常用第一种写法。int i;
for (i=1; i<=10; i=i+1)
printf("%dn", i );int i=1;
for ( ; i<=10; i=i+1)
printf("%dn", i );int i;
for (i=1; i<=10; )
{
printf("%dn", i );
i=i+1;
}int i;
for (i=1; i<=10; printf("%dn", i ), i=i+1 );
巧妙地应用for循环可以使某些操作非常简单。下面的函数可以计算n的质因子个数:long countPrimeFactor( long n )
{
long d, count;
for (d=2, count=0; n>1; d=d+1 )
for ( ; n%d==0; count=count+1, n=n/d );
return count;
}
下面的语句将产生死循环:for ( ; ; ) ;
C语言的while循环
while循环格式如下:while ( 循环条件 )
{
循环内容
}
下面的代码计算1394和6150的最大公约数:int a=1394, b=6150;
while ( b )
{
int tmp = a % b;
a = b;
b = tmp;
}
printf("The gcd is %d", a);
do..while循环
do..while循环的格式如下:do
{
循环内容
}
while ( 循环条件 );
将条件放在循环内容的后面,使程序至少执行循环内容一次。
循环控制
C语言中使用break语句和continue语句来控制循环,其使用方法与Pascal完全一样。
switch语句
switch语句相当于Pascal中的case语句。
下面代码的输出为2 3 default done! , 因为switch语句只负责把程序运行的位置跳转到相应的地方。int n=2;
switch (n)
{
case 1: printf("1 ");
case 2: printf("2 ");
case 3: printf("3 ");
default: printf("default ");
}
printf("done!");
你可以用break语句实现Pascal的case,例如下面的写法就可以让程序输出2 done! :int n=2;
switch (n)
{
case 1:
printf("1 ");
break;
case 2:
printf("2 &
#34;);
break;
case 3:
printf("3 ");
break;
default: printf("default ");
}
printf("done!");
goto语句
你可以在程序的任何位置插入一个标签:标签名:
并在同一函数里使用下面的语句实现无条件跳转:goto 标签名;
例如,下面的代码将产生死循环,并输出满屏幕的求爱信息。a: printf(" I Love You !!!!!!! ");
goto a;
Matrix67原创
转贴请注明出处
为什么学c而不是c++
oi风格应该是c style和cpp style的混用
比如
#include<iostream>
using namespace std;
int main()
{
int n,f[1000000],ans=0;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&f[i]);
work(); //to be filled;
cout<<ans<<endl;
return 0;
}
回复:还是那句话,先学C再学C++是王道。
我最后会写一篇C++的简单介绍,说一说对象和类,using namespace std的意思等等,告诉大家C++真的很容易。
小心TLE。
我没有学过C,但是学过java,大牛发的代码我都能看懂了
C++就没学过,估计应该不太难.当初打算学C时候,但是却学了Pascal(原因忘)
回复:java有前途
因为你智障?
To 2nd floor:
LOVE HAS NO TIME LIMIT.
现在的年轻人都太强了…
C++很容易?…高级语言没难的啦,对你来说~
学JAVA的话推荐robocode~很适合你们这帮天才~
废话完了,闪
回复:现在的年轻人确实很强,不过您也不老啊
for循环里第二个语句判断语句,若写多个句子,用逗号隔开,则只判断最后一个句子的真假。
计算n的质因子个数的代码不对啊
一大串看不懂的,就没有人指导下。
那个计算n质因子的代码不对…
确实不对,不能保证是质因子