首页 > 学院 > 开发设计 > 正文

scanf输入中的知识回顾

2019-11-14 08:54:09
字体:
来源:转载
供稿:网友
PRoblem DescriptionMany classmates said to me that A+B ismust needs.If you can’t AC this problem, you would invite me for night meal.^_^InputInput may contain multiple test cases.Each case contains A and B in one line.A, B are hexadecimal number.Input terminates by EOF.OutputOutput A+B in decimal number in oneline.Sample Input1 9A Ba bSample Output102121Author威士忌SourceHZIEE 2007 Programming Contest 知识补充:#include<cstdio>#include<iostream>using  namespace std;int main(){    char a,b;    int c;//    scanf("%c %c",&a,&b);//    c=a-b;//    printf("%d %d/n",a,b);//    printf("%c",c);    cin>>a>>b;    c=a+b;    cout<<"第一个数="<<a<<"第二个数="<<b<<endl;    cout<<c<<endl;     return 0;}scanf是会识别空格、回车的,他会把空格、回车也当作%c输入的。              1)char类型存的是字符,也可以理解为字符的ascii码。两个字符做加减,即两个ascii码做加减,结果就是数。                        你可以在scanf("%c   %c",a,b),在两个%c之间加个空格,他就会允许你在输入的时候以空格区分,或者别的符号比如,/等。gets函数可以一次接收     一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入.                        scanf("%s%s",a,b)是不识别空格或者回车,输入空格、回车就是告诉电脑我要输入下一个字符串了                         scanf("%x%x",a,b),跟%s一样                 2)cin不会识别空格或者回车注意这题输入的是字符串。。。。。。 解法一:

#include <cstdio>

#include<iostream>

using namespace std;

int translation(char a){//把单个的十六进制数转化为十进制

   if(a>='0'&&a<='9'){

       return a-'0';

    }

   if(a>='a'&&a<='f'){

       return a-'a'+10;

    }

   if(a>='A'&&a<='F'){

       return a-'A'+10;

    }

}

int main()

{

    charinshu1[1005],inshu2[1005];

   int i,outshu1,outshu2;

  while(scanf("%s%s",&inshu1,&inshu2)!=EOF){//对字符串中的字符进行操作,一般用scanf

       outshu1=0;

       outshu2=0;

        for(i=0;inshu1[i]!='/0';i++){//把输入的16进制数转化为十进制

           outshu1=outshu1*16+translation(inshu1[i]);

       }

       for(i=0;inshu2[i]!='/0';i++){//用字符数组盛放字符串,数组肯定很大,遍历数组直到字符串完毕

           outshu2=outshu2*16+translation(inshu2[i]);

       }

       outshu1=outshu1+outshu2;

       cout<<outshu1<<endl;

   }

   return 0;

}

解法2:

%c                 读入一个字符 %d                 读入十进制整数 %i                 读入十进制,八进制,十六进制整数 %o                 读入八进制整数 %x                 读入十六进制整数 %X                 同上 %c                 读入一个字符 %s                 读入一个字符串 %f                 读入一个浮点数

#include<stdio.h>int main(){     int i,j,sum;     while(scanf("%x%x",&i,&j)!=EOF)     {        sum=i+j;        printf("%d/n",sum);     }     return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表