? ? ? 用户界面(User Interface,UI)是用户与计算机程序、应用程序、设备或系统进行
交互的方式和元素的总称。它是用户与计算机系统之间的桥梁,通过它用户可以输入指
令、查看信息、执行操作等。用户界面的主要目标是使用户与系统之间的交互变得更加
直观、友好、高效和易于理解。
这种界面使用触摸屏作为输入设备,允许用户通过触摸屏幕上的元素来进行操作。智能手机、平板电脑和自动售货机等设备通常采用这种界面。
这种界面允许用户使用语音指令来与系统进行交互,如智能助手(例如Siri、Alexa、Google Assistant)和语音识别系统。
这种界面通常是基于文本的,用户通过输入命令和参数来与系统进行交互。它在服务器管理、编程和自动化任务中非常常见,例如,Unix/Linux的终端窗口就是一个CLI的例子。
这种界面使用触摸屏作为输入设备,允许用户通过触摸屏幕上的元素来进行操作。智能手机、平板电脑和自动售货机等设备通常采用这种界面。
语音界面(Voice Interface):
这种界面允许用户使用语音指令来与系统进行交互,如智能助手(例如Siri、Alexa、Google Assistant)和语音识别系统。
虚拟现实技术允许用户通过头戴式显示器和手持控制器来与虚拟环境进行互动。
用户界面的设计考虑到用户体验(User Experience,UX),包括界面的可用性、易用性、一致性和美观性。好的用户界面设计可以提高用户的效率和满意度,而不良的设计可能导致用户困惑和不满。因此,用户界面设计是软件和硬件开发过程中的重要组成部分。
?用户界面是我们的程序和外界(用户)的信息交换,用户通过“输入”模块将表示信息的数据存入计算机内(主要是内存),用户通过”输出“模块将内存中信息展示在输出设备上。
先看个A+B的例子。这个问题在很多OJ系统都是1000题(系统的第一个题目)。
#include <stdio.h>
int main()
{
int a , b;
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
return 0;
}
看看如下程序的运行
你可以自己试试。
#include <stdio.h>
int main()
{
int a , b;
scanf("%d,%d", &a, &b);
printf("%d\n", a + b);
return 0;
}
修改代码,看看输入情况。(一般程序运行有错,很多同学都是检查数据处理部分的错误,但是本程序因为数据少,操作及其简单,结果验证容易我们知道有错了,而且可能是输入错误),在输出处理和输出前检查数据(也可以调试跟踪变量)。
可见变量b是1。如果调试可以发现b就是1.。
? ? ? ?这个错误是当你编程中输入格式串中有一般字符。输入却没有原样输入,可是程序仍然继续执行,而b并没有存入而是保持初始值。虽然一般认为GCC是0或随机。但是这次不是0也不是随机是固定的1。(详细分析见另外的文章)。
目前我的建议是变量一定要初始化,输入格式串不要加一般字符。但是这也不是说输入格式串就不能写一般字符。有时候还很有意义。看一个示例
You will be given three integers A, B and C. The numbers will not be given in that exact order, but we do know that A is less than B and B less than C. In order to make for a more pleasant viewing, we want to rearrange them in the given order.
INPUT
The first line contains three positive integers A, B and C, not necessarily in that order. All three numbers will be less than or equal to 100. The second line contains three uppercase letters 'A', 'B' and 'C' (with no spaces between them) representing the desired order.
OUTPUT
Output the A, B and C in the desired order on a single line, separated by single spaces.
SAMPLE INOUT
1 5 3
ABC
SAMPLE OUTPUT
1 3 5
#include <stdio.h>
int main(){
char a,b,c;
int x,y,z;
int max,min,mid;
scanf("%d%d%d\n",&x,&y,&z);
scanf("%c%c%c",&a,&b,&c);
//后面的处理代码,略。
?调试可见A没有输入。
a中是0x0a;这个0a是上一行输入的回车\n(回车换行0d 0a 的后一个字节 0a)。可见错误原因是数据行和字符行之间有个换行。需要跳过这个换行。?
? 修改代码如下(只学到分支阶段的示例程序,后面处理输出的代码有点暴力)?
#include <stdio.h>
int main(){
char a,b,c;
int x,y,z;
int max,min,mid;
scanf("%d%d%d\n",&x,&y,&z);
scanf("%c%c%c",&a,&b,&c);
max = x>y?x:y; max = z>max?z:max;
min = x>y?y:x; min = z<min?z:min;
mid = (x+y+z) - max - min;
if(a=='A') printf("%d ",min);
if(a=='B') printf("%d ",mid);
if(a=='C') printf("%d ",max);
if(b=='A') printf("%d ",min);
if(b=='B') printf("%d ",mid);
if(b=='C') printf("%d ",max);
if(c=='A') printf("%d ",min);
if(c=='B') printf("%d ",mid);
if(c=='C') printf("%d ",max);
return 0;
}
只是在格式串中增加一个\n,问题接近解决。
计算 a/b+c/d问题。
输入示例? ? 1/2+3/4? ?输出 (保留2位小数)
这个程序正常情况(输入严格按照该要求时),没有问题。但是输入错误则无法计算出正确结果。输出数据不对。
没有结果: 调试可见从c,d没有输入。
?所以在输入后必须校验数据是否输入,是否正确。如果输入不正确需要重新输入。
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。输入函数
1.原型
int
?scanf
(
const
?char
?*?restrict?format,...);
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
函数 scanf() 是从标准输入流stdin?(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
2.返回值:
scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
{
int a,b;
while(~scanf("%d%d", &a, &b))printf("%d\n",a+b);
return 0;
}
结合scanf()的返回值与按位取反知识。
当scanf成功读取至少一个数时,scanf的返回值是1或2,1按位取反为-2,2按位取反为-3,都会进入while循环内部。
当输入读取结束后,scanf的返回值是EOF,EOF即-1,-1按位取反为0,此时会跳出while循环。综上所述。
while(~scanf("%d%d",&a,&b))与while(scanf("%d%d",&a,&b) != EOF)等价。
————————————————
原文链接:https://blog.csdn.net/mahoon411/article/details/123498968