第一天上手使用VS2017

第一天上手使用VS2017

首先关于在VS2017上建立基于C语言的项目工程

1)打开 Mocrosoft Visual Studio 2017 的主程序;
2)文件–新建–项目–在VC++下面建立“空项目”,注意一下相应存储目录;
3)建立项目之后,找到解决方案资源管理器,在视图一栏中寻找即可;
4)因为这个项目是基于C++语言而建立的,我们需要的是基于C语言,我们还需要一个小小的调整,创建一个真正的C语言的程序,找到解决方案资源管理器,点击:源文件–C++文件–(注意看名称,此时名称为源.cpp),我们需要改后缀为.c这样就建立了一个C语言的项目。

第一个程序很简单:比较两个数的大小,输出较大的数

#include<stdio.h>
int main()
{
	int max(int x, int y);
	int a, b, c;
	scanf("%d,%d",&a,&b);
	c = max(a, b);
	printf("max=%d\n", c);
	system("pause");
	return 0;
}
int max(int x, int y)
{
	int  z;
	if (x > y)
		z = x;
	else
		z = y;
	return z;
}

`

在这个程序中,我们不难发现,虽然很简单,但实际上其中暗藏玄机;
`1)在最初第一次编译的时候,遇到了各种动态链接表丢失的问题,最终通过百度得以解决;
2)编译完成之后,我发现我的输出窗口虽然是正确的,但是输出窗口只能存在不足1秒的实践,很短暂,百度之后,通过这个语句问题得以解决:

	system("pause");就解决了问题

注意:1)用到了printf函数,就要#include<stdio.h>即定义标准输入输出函数的头文件
2)每一个C语言程序都只能有一个main函数,这样程序运行的时候才能找到入口

第二个程序:求输入的两个程序的和

#include<stdio.h>
int main()
{
	int a, b, sum;
	printf("please input two numbers:\n");
	scanf("%d,%d", &a, &b);
	sum = add(a, b);
	printf("%d+%d=%d", a, b, sum);
	system("pause");
	return 0;
}
int add(int a,int b)
{
	int c;
	c = a + b;
	return c;
}

这个程序本身很简单,但是在编译成功之后输入尝试的时候遇到了问题
在这里插入图片描述
尝试了之后才知道,这个问题是因为当时输入的时候是中文的逗号,而不是英文的逗号,出现的这个问题,日后也应注意!

第三个程序:对字符型数据和整型数据之间的转换

#include<stdio.h>
int main()
{
	char c1, c2;
	c1='a';
	c2 = 'b';
	c1 = c1 + 10;
	c2 = c2 - c1 + 10;
	printf("%c,%d\n%c,%d", c1, c1, c2, c2);
	system("pause");
	return 0;
}
int add(int a,int b)
{
	int c;
	c = a + b;
	return c;
}

在这里插入图片描述
注意:
1)一个字符型数据,既可以以字符形式输出,也可以以整型数据形式输出。
2)%c,对应的是字符形式输出;%d对应的是整型数据形式输出;
3)本质是字符型数据在内存中储存的是字符的ASCII码,即一个无符号整型数据,其形式与整型数据的存储形式是一样的,因而C语言允许字符型数据与整型数据通用;

同时值得注意的还有:
同一个字母,用小写字母表示的字符的ASCII码比用大写字母表示的ASCII码大32

#include<stdio.h>
int main()
{
	char c1, c2;
	c1='A';
	c2 = c1 + 32;
	printf("%c\n",c2);
	printf("%d\n",c2);
	system("pause");
	return 0;
}

在这里插入图片描述

C语言的数据结构:

C 语言提供的数据结构是以数据类型形式出现的。

C 语言的数据类型可分为基本类型、构造 类型、指针类型 3 大类。

基本类型包括
整型(变量声明关键字为 int),
字符型(变量声明关 键字为 char),
实型(即浮点型,分为单精度浮点型 float 和双精度浮点型 double float)(注意:一般而言,一个float型数据在内存之中占据4个字节(32位),一个double型数据占据8个字节,单精度提供7位有效数字,双精度提供15~16位有效数字)
枚举类型 (变量声明关键字为 enum)。

构造类型包括数组、结构体和共用体 3 种。

整型、字符型和实型都有常量和变量之分。
比如
12、0、−3 为整型常量,
4.6、−1.23 为实型 常量,
‘a’、'D’为字符常量。
常量一般从其字面形式即可判别,也可以用一个标识符代表一个常量,
比如用预定义#define PRICE 30,这样可提高程序的可读性和可维护性。
值可以改变的量称为变量。
变量名只能由字母、数字和下划线组成,且第一个字符必须为字 母或下划线。
整型变量可分为基本型(用 int 表示)、
短整型(用 short int 或 short 表示)、
长整型 (用 long int 或 long 表示)和
无符号型(包括无符号整型、无符号短整型、无符号长整型,分别用 unsigned int、unsigned short 和 unsigned long 表示)。
各种整型变量在不同的计算机机型上存放的内存字节数不同,

int a,b; /* 定义变量 a,b 为整型 /
unsigned short c,d; /
定义变量 c,d 为无符号短整型 */

整型变量所占位数和数的范围如下表所示:
在这里插入图片描述

printf函数与scanf函数的应用格式

关键字之中的f就是format(格式化)的意思,用于输出变量的值,
调用的格式是
printf(格式控制,输出表列)
“格式控制”是用双引号括起来的字符串,包括格式字 符串和普通字符。格式字符串是以%开头的,在%后跟各种格式字符,以说明输出数据的类型、 形式、长度、小数位数等。
如“%d”表示按十进制整型输出, “%ld”表示按十进制长整型输出等。

格式字符串。
格式字符串的一般形式为:[标志][输出小宽度][.精度][长度] 类型。
其中方括号[]中的项为可选项。各项的意义如下:①类型字符用以表示输出数据的类型,
d ——以十进制形式输出带符号整数(正数不输出符号);
o——以八进制形式输出无符号整数(不输出 前缀 O);
x——以十六进制形式输出无符号整数(不输出前缀 OX);
u——以十进制形式输出无符 号整数;
f——以小数形式输出单、双精度实数;
e——以指数形式输出单、双精度实数;
g——以 %f%e 中较短的输出宽度输出单、双精度实数;
c——输出单个字符;
s——输出字符串。②标志 字符为−、+、#、空格 4 种,−——结果左对齐,右边填空格;+——输出符号(正号或负号),输 出值为正时冠以空格,为负时冠以负号;#——对 c、s、d、u 类无影响;对 o 类,在输出时加前 缀 o;对 x 类,在输出时加前缀 0x;对 e、g、f 类当结果有小数时才给出小数点。③输出小宽 度:用十进制整数来表示输出的少位数。若实际位数多于定义的宽度,则按实际位数输出,若 实际位数少于定义的宽度则补以空格或 0。④精度格式符以“.”开头,后跟十进制整数。如果输 出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定 义的精度数,则截去超过的部分。⑤长度格式符为 h、l 两种,h 表示按短整型量输出,l 表示按 长整型量输出

scanf()为输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
scanf 函数 的一般形式为“scanf(“格式控制字符串”,地址表列);
”其中,格式控制字符串的作用与 printf 函数相同,但不能显示普通字符串,也就是不能显示提示字符串。
地址表列中给出各变量的地址。
地址是由地址运算符“&”后跟变量名组成的。
例如,“&a,&b”分别表示变量 a 和变量 b 的地址。 这个地址就是编译器在内存中给 a 和 b 变量分配的地址。

字符的输出:

字符常量的特点
1)字符型常量只能用单引号括起来,不能用双引号或其他括号;
2)字符常量只能是单个字符,不能是字符串;
3)字符常量可以是字符集之中的任意字符,注意数字被定义为字符型之后就不能参与数值运算(例如‘5’和5是不一样的);

字符串常量的特点:
字符串常量是由一对双引号括起的字符序列。
例如"CHINA"、“C program”、"$12.5"等都是合 法的字符串常量。
字符串常量和字符常量是不同的量,它们之间主要有以下区别。
(1)字符常量由单引号括起来,字符串常量由双引号括起来。
(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。
(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加 1。 增加的一个字节中存放字符"\0"(ASCII 码为 0) 。这是字符串结束的标志。
例如,字符串"C program"
在内存中所占的字节为 C program\0。字符常量’a’和字符串常量"a"虽然都只有一个字符,但在内存 中的情况是不同的。'a’在内存中占一个字节,可表示为 a。"a"在内存中占两个字节,可表示为 a\0。

关于转义字符

转义字符是一种特殊的字符常量。
转义字符以反斜线""开头,后跟一个或几个字符。转义字 符具有特定的含义,不同于字符原有的意义,故称“转义”字符。

例如,在前面例题 printf()函数 的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。
转义字符主要用来表示那些 用一般字符不便于表示的控制代码。
在这里插入图片描述

显示变量所占的字节数:

在这里插入图片描述

#include <stdio.h> 
void main() 
{ printf("The bytes of the variables are:\n");     /*int 型在不同的 PC 机,不同的编译器中的字节数不一样,*/   
  /*一般来说在 TC2.0 编译器中字节数为 2,在 VC 编译器中字节数为 4 */      
  printf("int:%d bytes\n",sizeof(int));     /* char 型的字节数为 1 */  
  printf("char:%d byte\n",sizeof(char));     /* short 型的字节数为 2 */   
  printf("short:%d bytes\n",sizeof(short));     /* long 型的字节数为 4 */  
  printf("long:%d bytes\n",sizeof(long));     /* float 型的字节数为 4 */    
  printf("float:%d bytes\n",sizeof(float));     /* double 型的字节数为 8 */  
  printf("double:%d bytes\n",sizeof(double));     /* long double 型的字节数为 8 或 10 或 12 */   
  printf("long double:%d bytes\n",sizeof(long double));
 } 

sizeof()是保留字,它的作用是求某类型或某变量类型的字节数,
括号内可以是类型,也可以是变量
int a=1;sizeof(a)=2 也可以sizeof(int)

if条件语句

有以下几种格式

(1)if语句:
if(x>y) printf("%d",x);
其中,if 语句就是根据 x>y 这个表达式的值来决定是否要执行后面的 printf 语句,
当表达式 的值为真(x>y)时,就执行,
当表达式的值为假(x≤y)时,就跳过 printf 语句而直接执行后面 的语句。

(2)if else 语句
if(x>y) printf("%d",x);
else printf("%d",y);
如果 x>y 成立,则打印出 x,否则打印出 y。
与第一种 if 语句的不同之处在于,不论表达式的 值是真是假,if 语句都分别给它们安排了任务。也就是说无论 x,y 哪一个大,总能打印出一个数。

(3)if…elseif 语句

  if(count>500)         price = 0.15;    
      else if(count>300)     price = 0.10;    
       else if (count>100)   price = 0.05; 
    else         price = 0; 

这段程序的意思是,
如果 count 的值是在 500 以上,那么 price 等于 0.15;
如果 count 的值在 300 到 500 之间(else if 可以理解为否则如果,即在不大于 500 的条件下如果满足大于 300 的条件, 也就是 300 到 500 之间),那么 price 等于 0.10;
如果 count 的值在 100 到 300 之间,那么 price 等 于 0.05;
如果 count 在 0 到 100 之间,那么 price 等于 0。
这种形式的 if 语句比前两种都要复杂, 它能处理的分支也多,这个例子就能处理 4 个分支,而且分支的数目还可以无限扩展。

尽管 if 语句看起来很简单,但在实际的应用中还是有许多问题需要注意的。
(1)不要忘记在每个语句后面加分号。分号是 C 语句中不可缺少的部分,任何语句,不管它 是不是作为 if 语句的一部分,结尾都要加上分号表示一个语句的结束。如果忘记在语句末尾加分 号,则会出现语法错误。

(2)要注意 if 语句的嵌套问题。
if (表达式 1)   
   if (表达式 2) 语句 1  
      else     语句 2
       else     if (表达式 3) 语句 3     
           else     语句 4 

要注意嵌套 if 语句中 if 与 else 的匹配问题。
记住一个原则:else 语句总是与前面近的未匹 配的 if 语句相配对。按照这个原则,上面第 3 行的 else 跟第 2 行的 if 相匹配,第 4 行的 else 跟第 1 行的 if 相匹配,第 6 行的 else 跟第 5 行的 if 相匹配。
而初学者往往容易忘记这个原则。容易出 错的形式一般是这样的:

 if (表达式 1)        
     if (表达式 2) 语句 1
      else     if (表达式 3) 语句 2       
        else     语句 3 

这种形式的程序很可能是想让第 3 行的 else 跟第 1 行的 if 相匹配,可事实上按照 else 总是跟 近的 if 相匹配的原则,第 3 行的 else 是跟第 2 行的 if 相匹配的。那怎样实现原来的意图呢,可 以用花括号来确定配对关系。例如:

   if (表达式 1)     
       {if (表达式 2) 语句 1} 
       else     if (表达式 3) 语句 2      
          else     语句 3 

这时{ }说明了第 2 行是一个完整的内嵌 if 语句,不需要别的 else 来匹配了,因此第 3 行的 else 就与第 1 行的 if 相匹配了。

FOR循环语句:

C 语言中的 for 语句使用为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于 循环次数不确定而只给出循环结束条件的情况。
for 循环的一般形式为:
for(表达式 1; 表达式 2; 表达式 3)
循环语句
for 语句的执行过程是这样的:
①先求解表达式 1;
②再求解表达式 2,如果它的值为真,则 执行循环语句,然后执行下面第③步;
③如果表达式的值为假,则循环结束,转到第④步;
④求解表达式 3,然后转到第②步;
⑤执行 for 语句后面的语句。 for 循环的 3 个表达式各有不同的作用,因此也有不同的形式。普通的,表达式 1 作为初始 化是个赋值语句,表达式 2 作为循环的测试条件一般是关系表达式,表达式 3 作为循环前进的动 力是个增量表达式。这 3 个表达式都是可以省略的,但后面的分号“;”不能省。表达式 1 被省略 相当于循环变量的初始化被省略了,那么一般来说在 for 语句之前应该给循环变量赋初值。执行 的时候,只是跳过“求解表达式 1”这一步,其他都不变。如果作为循环测试条件的表达式 2 省 略了,那么循环测试条件将被认为永远是 true,循环也就无休止地进行下去。如果表达式 3 省略 了,那么此时程序应该另外设法保证循环能正常结束。

打印乘法口诀表:

加深对for循环以及光标位置控制等内容的理解
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值