C++有关输入的读取scanf

img


我要把除了第一行以外的数据,每一行读进来后处理。


#include <cstdio>
#include<iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int sum,c,r,f;
    char kind;
    int number;
    for (int i=1;i<=n;i++)
    {
        scanf("%d %c",&number,&kind);
        printf("%d %c",number,kind);
        if (kind=='C') c+=number;
        else if(kind=='R') r+=number;
        else f+=number;
    }
    printf("Total: %d animals\n",c+r+f);
    printf("Total coneys: %d\n",c);
    printf("Total rats: %d\n",r);
    printf("Total frogs: %d\n",f);
    printf("Percentage of coneys: %.2lf %\n",c/(c+r+f));
    printf("Percentage of rats: %.2lf %\n",r/(c+r+f));
    printf("Percentage of frogs: %.2lf %\n",f/(c+r+f));
    
}

img


尝试printf检查,发现读取的不对,要怎么写才能正确读取!

没有读取错,只是你没初始化那三个int变量

#include <cstdio>
#include<iostream>
using namespace std;
 
int main(){
    int n;
    cin>>n;
    int sum,c=0,r=0,f=0;   //初始化
    char kind;
    int number;
    for (int i=1;i<=n;i++)
    {
        scanf("%d %c",&number,&kind);
        printf("%d %c",number,kind);  //你看着读取错了是因为这里没有分隔符,可以改成printf("%d %c\n",number,kind);
        if (kind=='C') c+=number;
        else if(kind=='R') r+=number;
        else f+=number;
    }
    printf("Total: %d animals\n",c+r+f);
    printf("Total coneys: %d\n",c);
    printf("Total rats: %d\n",r);
    printf("Total frogs: %d\n",f);
    printf("Percentage of coneys: %.2lf %\n",c/(c+r+f));
    printf("Percentage of rats: %.2lf %\n",r/(c+r+f));
    printf("Percentage of frogs: %.2lf %\n",f/(c+r+f));
    
}

img