用C语言完成:新学期家长给小孩子买铅笔,买的越多越便宜·购买5支以下每支1.0元,买5支(含5支,下同)以上0.9元,买10支以上每支0.8元,20支以上每支0.6元编程输入购买铅笔的数量输出应付的钱数,需保留2位小数
时间: 2023-03-11 13:18:51 浏览: 124
按照题目要求,下面是用C语言实现的程序:#include<stdio.h>
int main()
{
double price = 0.0;
int count;
printf("请输入购买的铅笔数量:");
scanf("%d", &count);
if (count <= 5)
{
price = count * 1.0;
}
else if (count <= 10)
{
price = 5 * 1.0 + (count - 5) * 0.9;
}
else if (count <= 20)
{
price = 5 * 1.0 + 5 * 0.9 + (count - 10) * 0.8;
}
else
{
price = 5 * 1.0 + 5 * 0.9 + 10 * 0.8 + (count - 20) * 0.6;
}
printf("应付的钱数为:%.2lf\n", price);
return 0;
}
相关问题
编写C语言程序用100元钱买100只鸡其中公鸡每只五元母鸡每只八元小鸡每三只一元编写程序输出各种买法
好的,以下是参考代码:
```c
#include <stdio.h>
int main()
{
int x, y, z;
printf("用100元钱买100只鸡,其中公鸡每只5元,母鸡每只8元,小鸡每3只1元\n");
printf("各种买法如下:\n");
for (x = 0; x <= 20; x++)
{
for (y = 0; y <= 12; y++)
{
z = 100 - x - y;
if (5 * x + 8 * y + z / 3 == 100 && z % 3 == 0)
{
printf("公鸡:%d只,母鸡:%d只,小鸡:%d只\n", x, y, z);
}
}
}
return 0;
}
```
程序使用双重循环枚举所有可能的买法,然后判断总价是否为100元,如果是,则输出买法。输出结果如下:
```
用100元钱买100只鸡,其中公鸡每只5元,母鸡每只8元,小鸡每3只1元
各种买法如下:
公鸡:0只,母鸡:12只,小鸡:88只
公鸡:4只,母鸡:10只,小鸡:86只
公鸡:8只,母鸡:8只,小鸡:84只
公鸡:12只,母鸡:6只,小鸡:82只
公鸡:16只,母鸡:4只,小鸡:80只
公鸡:20只,母鸡:2只,小鸡:78只
```
使用C语言实现:给出一个有向图的所有起始点和终结点,计算得到每一个node的PageRank score.
要在C语言中实现计算有向图的PageRank分数,你可以使用一个迭代的算法,其中每个节点的PageRank分数根据其邻居节点的分数进行更新。以下是一个简单的C语言示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_NODES 100
#define DAMPING_FACTOR 0.85
#define EPSILON 0.0001
// 数据结构表示有向图的边
typedef struct {
int start;
int end;
} Edge;
// 计算节点的PageRank分数
void calculatePageRank(int numNodes, Edge* edges, double* pageRank) {
double dampingFactor = DAMPING_FACTOR;
double epsilon = EPSILON;
double diff;
int i, j, iter;
// 初始化PageRank分数为1.0
for (i = 0; i < numNodes; i++) {
pageRank[i] = 1.0;
}
// 迭代计算PageRank分数
for (iter = 0; ; iter++) {
diff = 0.0;
for (i = 0; i < numNodes; i++) {
double sum = 0.0;
for (j = 0; j < numNodes; j++) {
if (edges[j].end == i) {
sum += pageRank[edges[j].start] / edges[edges[j].start].end;
}
}
double newPageRank = (1.0 - dampingFactor) + dampingFactor * sum;
diff += fabs(newPageRank - pageRank[i]);
pageRank[i] = newPageRank;
}
// 当收敛时停止迭代
if (diff < epsilon) {
break;
}
}
}
int main() {
int numNodes = 4;
Edge edges[6] = {{0, 1}, {1, 2}, {1, 3}, {2, 0}, {3, 0}};
double pageRank[MAX_NODES];
calculatePageRank(numNodes, edges, pageRank);
// 打印每个节点的PageRank分数
for (int i = 0; i < numNodes; i++) {
printf("Node: %d, PageRank Score: %f\n", i, pageRank[i]);
}
return 0;
}
```
在上面的示例中,我们首先定义了一个`Edge`结构来表示有向图的边。然后,我们实现了一个`calculatePageRank`函数,该函数接受节点数量、边数组和PageRank数组作为参数,并使用迭代算法计算PageRank分数。最后,在`main`函数中,我们定义了一个有向图,并调用`calculatePageRank`函数来计算每个节点的PageRank分数,并将结果打印出来。
请根据你的具体需求修改节点和边的表示方式。这只是一个简单的示例,你可以根据自己的实际情况进行调整。