目录
程序:静态概念
进程/任务:跑起来的程序叫做进程,动态概念。
程序包括编程、编译、执行三个环节。
变量的四个要素:变量名、变量值、存储单元、类型。
- 程序基本结构以及其含义:
#include <stdio.h> //编译预处理命令
int main() //程序的入口主函数main
{ //程序(函数、功能)开始标志
//你要写的代码
return 0; //程序退出前返回给调用者(操作系统)的值
} //程序(函数、功能)结束标志
数据类型:
printf函数的一般格式:
printf函数的一般格式为:
printf(格式控制,输出列表)
例如:printf("%d,%c\n",i,c)
括号内包括两部分:
(1)“格式控制”是用双引号括起来的一个字符串,称“转换控制字符串”,简称“格式字符串”,它包括两个信息:
①格式声明。格式声明由“%”和格式字符组成,如%d、%f 等。它的作用是将输出的数据转换为指定的格式然后输出。格式声明总是由“%”字符开始的。
②普通字符。普通字符即需要在输出时原样输出的字符。例如上面printf函数中双引号内的逗号、空格和换行符,也可以包括其他字符。
(2)“输出表列”是程序需要输出的一些数据,可以是常量、变量或表达式。
第一个小程序:两个数的加减乘除
#include <stdio.h>
int main()
{
int data1 = 10;
int data2 = 2;
int data3 = 3;
int data4;
float data5;
data4 = data1 + data2;
printf("两数之和是:data4 = %d\n",data4);
data4 = data1 - data2;
printf("两数之差是:data4 = %d\n",data4);
data4 = data1 * data2;
printf("两数之积是:data4 = %d\n",data4);
data4 = data1 / data2;
printf("两数之商是:data4 = %d\n",data4);
data5 =(float) data1 / data3; //因为除不尽,所以加强制转换(把不匹配的数据类型互相赋值)
printf("两数之商是:data5 = %f\n",data5);
printf("data5 = %.2f\n",data5); //保留两位小数
return 0;
}
1. scanf函数的一般形式
scanf(格式控制,地址表列)
“格式控制”的含义同 printf函数。“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。
2.scanf函数中的格式声明
与printf函数中的格式声明相似,以%开始,以一个格式字符结束。(注意:尽量不要在scanf里加逗号、换行符等字符!!!)
(1)scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。例如,若a和b为整形变量,如果写成
scanf ("%d%d",a,b);
是不对的,应将“a,b”改为“&a,&b”,正确写法是scanf("%d%d",&a,&b);
(2)如果在“格式控制字符串”中除了格式声明以外还有其他字符,则在输入数据时在对应的位置输入与这些字符相同的字符。例如:
scanf("a=%d,b=%d",&a,&b);
在输入数据时,应在对应的位置上输入同样的字符。即输入:
a=1,b=2
scanf小程序
整数型
#include <stdio.h>
int main()
{
int data1;
int data2;
int data3;
printf("请输入三个整数\n");
scanf("%d%d%d",&data1,&data2,&data3);
printf("您输入的三个整数是: data1=%d data2=%d data3=%d\n",data1,data2,data3);
return 0;
}
字符型:
#include <stdio.h>
int main()
{
char data1;
char data2;
char data3;
printf("请输入三个字符\n");
scanf("%c%c%c",&data1,&data2,&data3);
printf("输入的三个字符是:data1=%c data2=%c data3=%c\n",data1,data2,data3);
return 0;
}
此处注意:由于输入的是字符,所以不能敲回车,回车也属于一个字符,直接输入三个字符即可。
整数型、小数型、字符型混合:
#include <stdio.h>
int main()
{
int dataInt;
float dataFloat;
char dataChar;
printf("请依次输入整数、小数、字符\n");
scanf("%d%f%c",&dataInt,&dataFloat,&dataChar);
printf("您输入的三个数分别为:dataInt=%d dataFloat=%f dataChar=%c\n",dataInt,dataFloat,dataChar);
return 0;
}
注:因为回车、空格都属于字符,所以在输入2.3之后不要敲回车或者空格直接输入字符
#include <stdio.h>
/*
puts和printf的区别:
1、puts自动加入换行符
2、printf支持多种花样输出,puts只能输出字符串
*/
int main()
{
char c;
puts("请输入一个字符");
c = getchar();
puts("您输入的字符是:");
putchar(c);
return 0;
}
练习题:输入大写字母输出小写字母(输入小写字母输出大写字母)
#include <stdio.h> //根据ASCII码
int main()
{
char data;
printf("请输入一个大写字母:\n");
scanf("%c",&data);
printf("输出对应的小写字母为:\n");
printf("%c\n",data+32);
getchar(); //吸收回车符
printf("请输入一个小写字母:\n");
scanf("%c",&data);
printf("输出对应的大写字母为:\n");
printf("%c\n",data-32);
return 0;
}
#include <stdio.h>
int main()
{
char c1 = 'C';
char c2 = 'h';
char c3 = 'i';
char c4 = 'n';
char c5 = 'a';
printf("世界上只有一个%c%c%c%c%c\n",c1,c2,c3,c4,c5);
c1 = c1 + 4;
printf("%c\n",c1);
c2 = c2 + 4;
printf("%c\n",c2);
c3 = c3 + 4;
printf("%c\n",c3);
c4 = c4 + 4;
printf("%c\n",c4);
c5 = c5 + 4;
printf("%c\n",c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
printf("请依次输入China五个字母\n");
putchar(getchar()+4);
putchar('\n');
getchar();
putchar(getchar()+4);
putchar('\n');
getchar();
putchar(getchar()+4);
putchar('\n');
getchar();
putchar(getchar()+4);
putchar('\n');
getchar();
putchar(getchar()+4);
putchar('\n');
getchar();
printf("最终输出的字母是:\n");
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
return 0;
}