优秀的编程知识分享平台

网站首页 > 技术文章 正文

【C语言004】 输入输出 | 选择结构 | 循环结构

nanyue 2024-09-05 18:20:06 技术文章 7 ℃

1、输入输出

1、prinf
  C语言内置函数,包含在#include <stdio.h>当中
  stdio   standard input output 标准输入输出
  C语言中要想显示%
  printf("%%");

int main(void) { 
   printf("%d%%",1);  输出1%
	return 0;
}

%d和%c
字符在计算机内存都是以ascall形式存在的
A 65 a 97   大写-小写 = 32(记住)
\n 10       Esc  27

int main(void) { 
    char a = 'A';
    printf("%d\n",a);  //65
    printf("%c\n",a);  //A
	return 0;
}

%o 八进制输出

%x or %X 十六进制输出

%e or %E 指数形式输出

%p 指针类型

int main(void) { 
    int a = 123;
    float b = 34.6;
    printf("%o\n",a);
    printf("%x\n",a);
    printf("%e\n",b);
    printf("%f\n",b);
    printf("%p\n",&a);
	return 0;
}
2、scanf
		scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。
		它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
    scanf(“%d”,&a);  一定不要拉下这个地址符号
    这是必须要记住的。
    输入变量的值肯定需要告诉编译器变量的地址
    
3.	字符输入输出函数
  int getchar(void), 接收用户敲入键盘的第一个字符。
  putchar(int c); 里面参数既可以是ascall码也可以是字符。
  puts()  输出字符串
  gets()  接收用户敲入的字符串

  
  int main(void) { 
   char a;
   a = getchar();  //接收你键盘敲下的字符赋值给a
   putchar(65);
   putchar('\n');
   puts("c u later\n");
   return 0;
}

2、选择结构

程序 = 算法+数据结构
基本结构三种:顺序,选择,循环
变量交换三部曲:必须记住
  交换变量 a 和 b
  int a=3,b=5;
  int t = a;
  a = b;
  b = t;
  printf(“%d,%d”,a,b);
语句分类:
	复合语句:相当于一堵墙,围城。里面的变量不能被外部访问,外边的变量不能被内部访问。
int main(void) { 
   int a = 2;
   {
       int a = 3;
       printf("%d\n",a);
   }	
   printf("%d\n",a);
   return 0;
}
作用域不同,在程序中应该把复合语句看成是单条语句而不是多条语句。
关系运算符和表达式:

c>a+b       c>(a+b);
a>b==c      (a>b)==c;
a==b<c      a==(b<c);
a=b>c       a=(b>c);

<,<=,>,>= 优先级要高
==,!= 优先级要低
1<<2+2<<2
赋值运算符<逻辑运算符<关系运算符<算术运算符
&&  0 && (表达式pass)
||  1 || (表达式pass)

逻辑运算符短路操作(important)

#include <stdio.h>

//短路操作
//A && B 
//A和B这两个表达式进行 A&&B逻辑与操作,
//一旦A判断为假后,A&&B就为假,后面的B表达式不用判断,也不用看。

//A || B 
//A和B这两个表达式进行 A||B逻辑或操作,
//一旦A判断为真后,A||B就为真,后面的B表达式不用判断,也不用看。
int main () {
	int a = 3,b = 5;
	a>4&&b++;
	printf("%d\n",b);
	
	a>2&&b++;
	printf("%d\n",b);
	
	a = 3,b = 5;
	a>2||b++;
	printf("%d\n",b);
	
	a>4||b++;
	printf("%d\n",b);
	
	return 0;
}
例题:需掌握
m = n = 1,a = 1,b =2,c= 3,d = 4.
(m=a>b)&&(n = c>d)
左边表达式 先 a>b 为0则 m=0 所以右面不用看  
故 n的值没变 还是1.

闰年
四年一闰,百年不闰且四百年又闰
(year%4==0) || (year%100!=0 && year%400==0)


int x = 3;  
int y = 2;  
int z = x < y ? 100 : y++ > 2 ? 20 : 30;  
等价于 int z = ((x > y) ? 100 :( ++y > 2 ? 20 : 30));  

#include <stdio.h>
#include <string.h>
int main(void) { 
  int x=1,y=1,z;
  y=(x+1)*(++x); //  
  z=(--x)*(x-1);  //
  printf("%d,%d,%d",x,y,z);  
}
C语言规定:
  1.	C语言规定,在缺省的{}时,else总是和离他最近的未配对的if配对
  2.	If(a=5) 执行a=5这个赋值表达式。然后赋值表达式的值为5,非0,所以就为true了。
  3.	if(b) 等价于 if(b!=0)

    
switch:
  Switch后面的表达式一般是int,char和枚举中的一种 enum
	注意switch的case中有break和没有break的区别
	有break 就停止,没有break,继续下个case 匹配

  #include <stdio.h>

int main () {
	int a = 4;
	switch (a)
	{
		case 1: printf("1\n");
		case 2: printf("2\n"); 
		case 3:	printf("3\n");
		default: printf("default\n");break;
	}
	return 0;
}

总结:
1.	if语句提供单项选择
2.	if-else 用于双向选择
3.	if-else-if,和switch语句用于多项选择

易错点:switch后面必须要有();
每个case后建议加break语句。
		 case后面必须是常量表达式

3、循环结构

While,do-while,for
以计算1+2+3+…+100为例
int main(void) { 
   int i=1,sum=0;
   //while
   while(i<=100)
   {
       sum+=i;
       i++;
   }
   printf("while-sum=%d\n",sum);
   
   i=1,sum=0;
   //do-while
   do{
       sum+=i;
       i++;
   }while(i<=100);
   printf("do-while-sum=%d\n",sum);
   
    i=1,sum=0;
   //do-while
   for(;i<=100;i++){
      sum+=i;
   }
   printf("for-sum=%d\n",sum);
   return 0;
}

While 先判断条件 后循环
Do-while 至少先执行一次,然后在判断条件是否继续执行
	While后面的()不能省,分号也不能省。
For先判断条件 后循环
三种循环都可以相互嵌套

Break vs Continue

#include <stdio.h>
// break and continue 的区别
int main () {
	int i,j;
	int sum = 0;
	// 求1+2+3+...+i < 2000的i的值
	// i的范围是[0,100]
	for(i=1;i<=100;i++)
	{
		sum = sum +i;
		if(sum>2000) break;
	}
	printf("when i = %d,sum > 2000,1+2+3....+%d>2000\n",i,i);
	
	
	//求 1+3+5+7+9+...
	sum = 0; //将 sum 归零
	for(i=1;i<=100;i++)
	{
		
		if(i%2==0) continue; //当i是偶数时,就结束本次循环,进行下次循环,翻译为继续很形象
		sum = sum+i;
	}
	printf("1+3+5+....99=%d",sum);
	return 0;
}

Break作用:在循环体中测试到应立即结束循环时,使控制立即跳出循环结构,转而执行循环语句后面的第一条语句。

Continue作用:开始下一次的循环,只结束本次循环的执行,并不终止整个循环的执行。

exit() 函数

作用:终止整个程序的执行

用法:

1. 文件操作时,如果读取的文件不存在,程序就应当立即退出。

2. 遇到非法操作,如1/0,异常发生,使用此函数

3. -1表示非正常推出,0表示正常退出。

调用该函数需要嵌入头文件<stdlib.h>

Tags:

最近发表
标签列表