scanf输入中的知识回顾

    xiaoxiao2021-03-26  27

    Problem Description Many classmates said to me that A+B ismust needs. If you can’t AC this problem, you would invite me for night meal.^_^ Input Input may contain multiple test cases.Each case contains A and B in one line. A, B are hexadecimal number. Input terminates by EOF. Output Output A+B in decimal number in oneline. Sample Input 1 9 A B a b Sample Output 10 21 21 Author 威士忌 Source HZIEE 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; }

    转载请注明原文地址: https://ju.6miu.com/read-661274.html

    最新回复(0)