IF语句
判断一个字符是否是大小写;如果是小写就直接输出,如果是大写就转化为小写输出。
实现代码如下:
#include <stdio.h>
int main()
{
char data;
printf("请输入一个字符\n");
scanf("%c",&data);
if(data>97 && data<122){ //ASCII码的小写字母对应的整数在97到122之间
printf("%c\n",data);
}else if(data>=65 && data<=90){
printf("%c\n",data+32); //ASCII码的大小写字母对应的整数差为32
}else{
printf("请输入正确的字符\n");
}
printf("done!\n");
return 0;
}
运行结果如下:
SWITCH CASE语句
输入代码如下:
#include <stdio.h>
int main()
{
int data;
printf("请输入一个数:\n");
scanf("%d",&data);
switch(data){
case 1:
puts("data是1");
break;
case 2:
puts("data是2");
break;
case 3:
puts("data是3");
break;
default:
puts("其他情况");
}
return 0;
}
得到如下结果:
WHILE循环
输入代码如下:
#include <stdio.h>
int main()
{
int sum = 0;
int data = 0;
while(data<=100){
sum = sum + data;
data++;
}
printf("计算完成,和为%d",sum);
return 0;
}
得到结果如下:
FOR循环
for循环的基本格式是 for(表达式1;表达式2;表达式3), 注意分隔用”;“号!
表达式1是”条件赋初值“(可省略,定义在其他地方),表达式2是”判断临界值“,表达式3是”条件改变“(可省略,改写在循环体内)。不管省略哪个,分号都不能丢,如果全省略就是for(;;)死循环。
一个简单的例子:
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++){
puts("hahaha");
}
return 0;
}
输出结果为:
Break 和 Continue
break: 提前结束整个循环
continue: 提前结束本轮循环
数组
一维数组的定义的例子:int a[10]; //此处的10代表有10个元素,分别是a[0]到a[9],每个元素都是一个int类型的变量。
如果要定义的时候就申明数组元素的值,则为:
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int a[] = {1,2,3,4,5,6,7,8,9,10}; //此时数组依然和上面一样
int a[10] = {1,2,3}; //此时数组是{1,2,3,0,0,0,0,0,0,0}
int a[] = {1,2,3}; //此时数组是{1,2,3}
使用sizeof()关键词来计算数组元素的个数:
#include <stdio.h>
int main()
{
int a[] = {2, 3, 4,5,8,3,6,9,10,5,7};
int size;
size = sizeof(a)/sizeof(a[0]);//sizeof是一个关键字,可以获得对应数据的内存空间大小
//此处的思路是:把整个数组的大小,除以数组中一个元素的大小,获得数组元素的总个数
printf("%d",size);
return 0;
}
二维数组的定义的例子:int a[3][4]; //代表一个三行四列的数组。
C语言对于二维数组的定义方式,使得二维数组可被视为一种特殊的一维数组。比如a[3][4]可以视为3个元素a[0],a[1],a[2], 而每个元素又是一个有4个元素的数组,例如a[0]包含a[0][0],a[0][1],a[0][2], a[0][3]。
二维数组的赋值:
int a[2][3] = {{1,2,3},{8,9,10}};
int a[2][3] = {1,2,3,8,9,10}; //与第一种表达方式相同,都是一个两行三列的二维数组
int a[][3] = {1,2,3,8,9,10}; //与第一种表达方式相同,都是一个两行三列的二维数组,但是只能不写行不能不写列
int a[2][3] = {{2},{3}}; //此时只对各行的第一个列的数字赋值,其他为0
int a[2][3] = {{0,2},{0,0,3}}; //分别对第一行第二列和第二行第三列的数字赋值,其他为0
int a[2][3] = {{2,6}}; //只对第一行第一列和第二列的数字赋值,其他为0
注意,不管是一维还是二维数组,其中相邻数据的地址都是连续的。
循环的嵌套
经典的冒泡排序法就是循环的嵌套:
实现的代码如下:
#include <stdio.h>
int main()
{
int array[] = {12,8,14,9,68,34};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
for(i=0; i<len-1 ;i++){
for(j=0; j<len-1-i; j++){
if(array[j]<array[j+1]){
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
for(i=0; i<len; i++){
printf("%d ",array[i]); //%d后面要加空格,否则输出的数字全部挤在一起
}
return 0;
}
结果如下: