Excelsior Li 2022-08-27 15:25 采纳率: 93.9%
浏览 47
已结题

c程入门,有两行代码不理解

问题遇到的现象和发生背景

“求1-1/3+1/5-1/7+……的前n项和”

问题相关代码,请勿粘贴截图

答案是这个:
#include <stdio.h>
int main(void)
{
int i, n, flag, denominator;
double item, sum;
printf("Enter n:/n");//有疑问
scanf("%d", &n);
flag = 1;
denominator = 1;
sum = 0;
for (i = 1; i <= n; i++)
{
item = flag * 1.0 / denominator;
denominator = denominator + 2;
flag = -flag;
sum = sum + item;
}
printf("sum=%f\n", sum);//有疑问
return 0;
}

我的问题

在源代码中标粗的两行不明白
都是printf(“ ”)
为什么第二个有逗号有sum,第一个只有输入?
是不是因为第一个printf下一句的scanf取了地址所以不用在printf里说明?

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-08-27 17:04
    关注

    printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);
    格式控制字符串,包含了两种类型的对象:普通字符和转换说明
    在输出时,普通字符将原样不动地复制到标准输出。
    转换说明并不直接输出而是用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明结束,从而说明输出数据的类型、宽度、精度等。
    附加参数表根据不同的格式化字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换格式化字符串参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
    上面的代码里,第一个printf("Enter n:/n"); 里,格式控制字符串只包含了普通字符,所以在输出时,普通字符将原样不动地复制到标准输出。
    第二个printf("sum=%f\n", sum);里,格式控制字符串,包含了两种类型的对象:普通字符和转换说明,格式化字符串参数中指定了一个 % 标签转换说明,所以后面参数表里对应一个参数即变量 sum。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日
  • 创建了问题 8月27日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)