·问题:要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款:
Enter a dollar amount: 93
$20 bills: 4
$10 bills: 1
$5 bills: 0
$1 bills: 3
·调用下列函数实现
void pay_amount (int dollars, int *twenties, int*tens, int *fives, int *ones);
学习到的知识,函数不能改变变量的值,如果想改变变量的值,需要通过指针,上传变量的地址,可以进行改变。
所以函数的指针的目的是为了改变变量的值。
正确代码如下:
#include <stdio.h>
void pay_amount(int dollars,int *twenties,int *tens,int *fives,int *ones);
int main() {
/*1.输入美金数量
2.输入20美金,10美金,5美金,1美金
2.1功能实现:20取余,剩下的取余
2.2注意,如果1满5,5+1,1变0
2.3
3.输出结果
*/
int dollars;
// dollars=93;
printf("Enter a dollar amount:");
scanf("%d",&dollars);
int twenties;
int tens;
int fives;
int ones;
pay_amount(dollars,&twenties,&tens,&fives,&ones);//函数访问地址直接改变变量
printf("$20:%d\n",twenties);
printf("$10:%d\n",tens);
printf("$5:%d\n",fives);
printf("$1:%d\n",ones);
}
void pay_amount(int dollars,int *twenties,int *tens,int *fives,int *ones) {
*twenties = dollars / 20;
dollars = dollars % 20;
*tens = dollars / 10;
dollars = dollars % 10;
*fives = dollars / 5;
dollars = dollars % 5;
*ones = dollars;
}
输出结果如下:
Enter a dollar amount:93
$20:4
$10:1
$5:0
$1:3
【补充】运用知识:
利用函数改变变量的值,实验如下
#include <stdio.h>
void change_value(int *num){
*num *= 2; //将变量值乘以2
}
void change_value2(int num){
num *= 2;
}
int main(){
int num = 5;
printf("Original value: %d\n", num);
//调用函数change_value并传递变量num的值
change_value2(num);
printf("Modified value: %d\n", num); //原变量值未改变
change_value(&num);
printf("Modified value: %d\n", num); //原变量值改变
return 0;
}
运行出结果如下:
Original value: 5
Modified value: 5
Modified value: 10