#include#include #include using namespace std; int main() { int n; int i,j; char s[100],b;//s存放最终的字符串,方便用strlen计算长度 //a存放临时字符串 char a[10]; int c=0,d=0; cin>>n; //输入次数 for(i=0;i >a; //输入第一个字符,下面的if判断是字符还是数字 //如果是字符就要把字符存入另一个数组里,因为临时字符串随时都会更新数据 //字符存入另一个数组,方便后面判断进行什么样的计算 if(a[0]>='a'&&a[0]<='z') { b=a[0]; // cout<>c>>d; } else { sscanf(a,"%d",&c); //如果输入的不是字母,就要通过sscanf函数转换为int型 cin>>d; } memset(s,0,sizeof(s)); //初始化数组 if(b=='a') { sprintf(s,"%d+%d=%d",c,d,c+d); //需要注意的是sprintf函数不是一个输出的函数 //它只是将数据转换形式存入一个字符串中 }else if(b=='b') { sprintf(s,"%d-%d=%d",c,d,c-d); }else if(b=='c') { sprintf(s,"%d*%d=%d",c,d,c*d); } cout< 知识点概要:
具体内容详见链接:(9条消息) C 字符串函数 sprintf()、snprintf() 详解_love、reading的博客-CSDN博客_sprintf取一个字符串几个字符d
sprintf函数的打印位置不是命令框,而是函数里所指向的字符串中,例如上述代码里的
sprintf(s,"%d+%d=%d",c,d,c+d);
它执行的 *** 作就是将int型变量c,d以及c+d等数字以char型写入字符串s,这里值得注意的是第一个参数只能是char型的数组,具体原因我还不明白,可能是因为这是c中的函数,所以用string型是不可以的。
sscanf函数也可以和scanf对比着理解,例如scanf是直接从键盘读取数据,而sscanf是从字符串读取数据,它和sprintf的出发点是一样的。例如上述代码中的一句:
sscanf(a,"%d",&c);
它执行的 *** 作是将char型字符串a中的a[0]以”%d“(int型)读入c中 (请结合源代码分析,a是定义的临时数组a[10],c是定义的需要处理的int型变量)
需要注意的是,这里的a也需要是char型数组。
欢迎分享,转载请注明来源:内存溢出
P1957口算练习题 (用sscanf以及sprintf)
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
评论列表(0条)