一、计算机的交互与信息显示
(一)计算机的交互
1.程序结构:程序结构一般可分为输入、处理和输出三个部分,简称为IPO。
2.输入输出的多样性
·程序的输入输出方式多样性
如:鼠标点击、文字输入。
如:信息显示、声音的传播。
·新技术的发展,不断拓展着程序的交互方式
如:传感器的使用
·C语言中提供了丰富的输入输出函数去实现交互
(二)信息的显示-输出
·程序中的输出是将程序的处理信息传输到外部设备,比如显示器、打印机等。信息的显示是程序常用的输出方式
·信息显示的实现——标准输出函数printf函数
-将变量和信息显示在显示器上
-可输出文本、数值、符号等信息
-按照要求的格式,对数据信息进行特殊格式的显示
·头文件——stdio.h
#include<stdio.h>
输出固定的内容
·printf(字符串)
转义字符
例1:
(源代码)
#include<stdio.h>
int main(void)
{
printf("\t\t***************************************\n");
printf("\t\t\2\2 \t请问您来自哪里? \2\2\n");
printf("\t\t\2\2 \t我来自遥远的中国。 \2\2\n");
printf("\t\t\2\2 \t一个富强民主的国家。 \2\2\n");
printf("\t\t***************************************\n");
return 0;
}
(运行结果截图)
二、程序输入输出
(一)基本概念
数据类型:决定数据以一定的方式存储到计算机中。
存储的地址:确定数据的区域所在的位置。
变量:代表了一个存储单元,其中的值是可变的,故称为变量。
变量名:变量的名称。
基本数据类型:字符型、整型和实型
其定义的关键字:char、int、float、double
变量名 变量地址
number; &number;
id; &id;
score; &score;
(二)程序的输入
·程序的输入即从外界传输信息和数值给程序,并存入内存。
·输入设备来源有很多,如标准设备键盘、传感器设备。
·输入方式也有很多,如手动键盘输入,从文件中获取。
·程序输入的实现:
-标准输入函数——scanf函数
标准输入函数——scanf函数
·功能:从标准输入设备键盘向程序输入一个或若干个程序。
·语法格式:scanf("控制字符串",变量地址列表);
-控制字符串:需要由""括起来。由普通字符(文本字符和空格)、格式字符和附加说明字符组成。
-逗号分隔的若干接收数据的变量地址。
有符号的十进制整型数的输入
1.(源代码)
#include<stdio.h>
int main(void)
{
int number;
scanf("%d",&number);//格式占位符%可以和字母配合使用,用来表示某些特定数据类型的输入;
printf("%d",number);
return 0;
}
(运行结果截图)
2.(源代码)
#include<stdio.h>
int main(void)
{
int number;
scanf("number=%d",&number);//控制串字符中普通字符原样输入。
printf("%d",number);
return 0;
}
(运行结果截图)
实型数输入
(源代码)
#include<stdio.h>
int main(void)
{
float number;
scanf("%f",&number);//随着数据类型的变化,格式字符也应随之变化
printf("%f",number);
return 0;
}
(运行结果截图)
单个字符输入
(源代码)
#include<stdio.h>
int main(void)
{
char number;
scanf("%c",&number);//随着数据类型的变化,格式字符也应随之变化
printf("%c",number);
return 0;
}
(运行结果截图)
单个字符输入函数-getchar()
(源代码)
#include<stdio.h>
int main(void)
{
char number;
number=getchar();//字符输入函数
printf("%c",number);
return 0;
}
(运行结果截图)
·用于从键盘读取输入数据,一次读一个字符。
·字符输入getchar()函数;
·使用方法:ch=getchar();
·函数括号内没有参数;
·获取输入内存缓冲区中的第一个字符。
其他格式字符表
多个数据连续输入
(源代码)
#include<stdio.h>
int main(void)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
(运行结果截图)
注:输入数据时,在两个数据之间默认的分隔符是空格、Enter键、Tab键。
·要将字符a,b,c赋值给变量c1,c2,c3:scanf("%c%c%c,&c1,&c2,&c3");
运行时输入:
-abc 回车 对
-a空格b空格c空格 回车 错
注:字符输入时注意回车、空格等作为有效字符。
·对于scanf("%d%c%f",&a,&b,&c);
若输入:1234a123o.26 回车
输入中的问题
·如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符
·在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入
·在输入数据时,遇以下情况时该数据认为结束:
-遇空格,或按“回车”或“跳格”(tab)键
-按指定的宽度结束,如“%3d”,只取3列
-遇非法输入
(三)程序的输出
·将输出项,以某种格式显示在标准输出设备控制台
·语法格式:printf("控制字符串(control string)",输出项参数列表(argument list));
-控制字符串(control string):需要由“”括起来。由普通字符(文本字符和空格)、格式命令和非打印字符组成。
-输出项参数列表(argument list):格式命令的符号应与输出项参数列表在数量、类型和顺序上匹配。
字符串输出
1.字符串常量
printf("中国");
printf("%s",中国);
2.宏定义
#define Name"中国"
printf("%s",Name);
整型输出
printf("%d",i); //%:引导符 d:格式说明 i:输出项
单个字符输出
·C语言中输出函数的输出项可以为常量、变量、表达式、函数调用。
printf("%c",'\2');
printf("%c",ch);
printf("%c",ch+2);
putchar(ch)
putchar('\n')
多个信息在同一个printf中输出
printf("格式控制串",输出项1,输出项2);
常见错误
int i=33;char ch=b;
例如:printf("i=%d,c=%c\n",i); //输出项个数应该与格式控制字符个数保持一致
printf("i=%f,c=%c\n",i,ch); //输出项数据类型应该与格式控制字符保持一致
三.格式化输入输出
(一)程序的格式化输入输出
·格式化输出:通过设置输出格式串,达到不同格式内容的显示。比如:信息对齐、显示宽度设置、精度的控制。
·格式化输入:通过设置输入格式串,达到更复杂的输入要求。比如:数据的有效控制。
·格式控制附加符
(二)格式化输出
注:printf中默认的输出对齐方式时右对齐
案例
1.(源代码)
#include<stdio.h>
int main(void)
{
printf("%d,%c,%f\n",12,'a',123.45);
printf("%d,%c,%f\n",1234,'a',1234.5);
printf("%d,%c,%f\n",12345,'a',12345.67);
return 0;
}
(运行结果截图)
2.(源代码)
#include<stdio.h>
int main(void)
{
printf("%-8d|%-8c|%-8.2f\n",12,'a',123.45);
printf("%-8d|%-8c|%-8.2f\n",1234,'a',1234.5);
printf("%-8d|%-8c|%-8.2f\n",12345,'a',12345.67);
return 0;
}
(运行结果截图)
(三)格式化输入
案例-实现数据输入有效位的截取
(源代码)
#include<stdio.h>
int main()
{
int b;
scanf("%2d",&b);//读取输入的前两位,赋值给变量b
printf("%d\n",b);
return 0;
}
(运行结果截图)
案例-输入数据的跳过
(源代码)
#include<stdio.h>
int main()
{
int a,b;
scanf("%2d%*3d%2d",&a,&b);//第二个格式控制串当中对应的输入项,在读入后不赋值给相应的变量
printf("a=%d,b=%d\n",a,b);
return 0;
}
(运行结果截图)
四.输入输出多样化(文件)
输入输出设计
-设计输入的来源,即输入介质
-设计输出的去向,即输出介质
-确定输入内容及格式
-确定输出内容及格式
(一)C文件概述
所谓“文件”是一组相关数据的有序集合。每一个文件都有唯一的文件名。
文件的分类:在C语言中,文件被看成是由一个一个的字符或字节组成的。根据数据的组织形式,文件可分为文本文件和二进制文件两种。
说明:1.文本文件又被称为ASCII文件,文本文件在磁盘中存放时每个字符对应一个字节,用于存放其对应的ASCII码。文本文件可在屏幕上按字符显示。
2.二进制文件是将数据转换成二进制形式后存储起来的文件。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。
例1:如int型数10000
内部存储形式:0010011100010000
ASCII形式:0011000100110000001100000011000000110000
(文本文件特点:存储量大、速度慢、便于对字符操作)
二进制形式:0010011100010000
(二进制文件特点:存储量小、速度快、便于存放中间结果)
操作文件的一般步骤:
打开文件——>读写文件——>关闭文件
C语言的输入输出函数库中提供了大量的函数,用于完成对数据文件的建立、数据的读写、数据的追加等操作。
在程序中调用这些函数时,必须先用include命令包含stdio.h文件。
(二)文件指针
对文件进行操作,需要使用文件指针。
文件指针是一种结构体类型变量,C编译系统已将结构体定义好,并命名FILE。
FILE存放了文件名、文件状态标志及缓冲区大小等信息。
FILE是一个类型名,它已经在头文件stdio.h中声明。
文件指针是用来指向该文件的指针。
定义说明文件指针的一般形式为:FILE *指针变量标识符;
例如:FILE *fp;
(三)文件的打开
·打开函数fopen(),其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);
-“文件指针名”必须是被说明为FILE类型的指针变量。
“文件名”是被打开文件的文件名。
-“文件名”是字符串常量或字符数组。
-“使用文件方式”是指文件的类型和操作要求。
例如:FILE *fp;
fp=fopen("c:\\tc\\source.txt",'r');//打开C盘下面的tc文件夹下面的source.txt的文件,并且以读的形式打开
文件的打开方式
说明:
(1)用'r'方式打开的文件,只能用于输入。'r'方式只能打开一个已经存在的文件。
(2)用'w'的方式打开的文件,只能用于输出。如果指定的文件不存在,则新建一个文件。如果文件存在,则把原来的文件删除,再重新建立一个空白的文件。
(3)用'a'方式打开的文件,也只能用于输出。但它只能打开存在的文件,并保留该文件原有的数据,可以在原文件的末尾添加新的数据。
(4)打开方式带上'b'表示是对二进制文件进行操作。带上'+'表示既可以读,又可以写,而对待文件存在与否的不同处理则按照'r'、'w'、'a'各自的规定。
(四)文件关闭
·作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针
·函数原型:int fclose(FILE *fp)
·功能:关闭fp指向的文件
·返回值:正常关闭为0;出错时,非0
(五)文件的读写
·在C语言中提供了多种文件读写的函数
·字符读写函数:fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprintf
·使用以上函数都要求包含头文件stdio.h
字符写函数fputc()
·函数原型:int fputc(int ch,FILE *fp)
·功能:把一字节代码ch写入fp指向的文件中
·返回值:正常执行,返回ch;出错为EOF(EOF常量所表述的都是文件的结束标志,其值=-1)
字符读函数fgetc()
·一般形式为:字符变量=fgetc(FILE *fp);
·功能:是从指定的文件中读一个字符
·说明:在fgetc函数调用中,读取的文件必须是以读或读写方式打开的,读取成功后返回文件当前位置的一个字符;读错误时返回EOF
案例:
格式化输入函数fscanf()
·一般形式为:fscanf(文件指针,格式控制符,输入项表)
·功能:按照“格式控制串”所指定的输入格式,从指定文件中读出数据,然后再按照输入项地址表列的顺序,存入到相应的存储单元中。
例如:fscanf(fp,"%d",&num);
格式化输出函数fprintf()
·一般形式为:fprintf(文件指针,格式控制符,输出项表)
·功能:把输出项表中的项,按照“格式控制串”的格式写入到指定的文件中去。
例如:fprintf(fp,"%d%c",num,c);
fscanf和fprintf函数与scanf和printf函数的区别:读写对象不同
fscanf和fprintf函数:读写对象为磁盘文件
scanf和printf函数:读写对象为键盘和显示器,也称之为标准的输入输出设备文件
标准输入设备文件的文件名:stdin
标准输出设备文件的文件名:stdout
案例:学生成绩文件的操作
要求从myfile.txt文件中读取每个学生的三门课成绩,并输出显示。
(源代码)
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int eng,china,math;
if(fp=fopen("myfile.txt",'r')==NULL)
{
printf("Cannot open file the file exit!");
exit(0); //退出程序
}
while(!feof(fp))
{
fscanf(fp,"%d%d%d\n",&eng,&china,&math);
printf("%4d%4d%4d\n",eng,china,math);
}
return 0;
}
(运行结果截图)
该文章属于个人课后学习笔记,内容来源于知到智慧树共享课-C语言程序设计(上海电力大学)。