c - 程序没有为变量分配正确的值
问题描述
我一般是编程新手,最近决定认真尝试学习 C。我正在尝试使用嵌套循环和数组构建一个轻量级帐户程序。
我正在尝试在 CodeBlocks 中构建程序。我的程序有点粗糙,
1)我的第一个问题是,在我的程序询问已经完成了多少周的工作之后,它会获取下一个循环的值,而忽略至少第一个循环的周值。
2) 输入除“1”以外的任何整数都会导致 tax 从内存中提取一个随机值,更糟糕的是,尽管“weeks”没有另一个 scanf 函数,但它可以覆盖“weeks”的值,通常会导致 for ...循环取决于可变周数以循环到数百万。
3) 我还没有为 void menu() 编写路径 5 和 6,因为程序的其余部分无法正常运行
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int pay = 10;
const int overtime;
float taxrate;
int hours; //user input for hours worked
int gross; //calculated integer for gross pay
int tax; //calculated integer for taxes
int net; //calculated integer for net pay
int gross_total = 0; //non printed value for summing gross
int i; //condition to exit loop
void tax_rate();
void menu();
void cust_paid_yn();
void hours_worked();
int menu_input;
int menu_break;
char c;
int unpaid;
int weeks;
int j;
int week_numb_array[];
int gross_array[];
int tax_array[];
int gross_total_array[];
void printfinal();
int main(void)
{
menu();
printf("How many weeks have been worked?\n");
scanf("%d\n", &weeks);
for (int j = 0; j <= weeks; j++)
{
while (menu_input = 1 || 2 || 3 || 4)
{
hours_worked();
while ( hours != 1)
{
//uses hours to calculate gross, taxes, and net
gross = (hours * pay);
//use loop and gross to determine tax
tax_rate();
//uses hours to calculate taxes, net, and gross_total
tax = (gross * taxrate);
net = (gross - tax);
gross_total += (net);
gross_array[j] = gross;
tax_array[j] = tax;
gross_total_array[j] = gross_total;
break;
}
printf("\nexited out of menu_input loop\n");
break;
}
printf("\nexited out of tax loop\n");
printf("\n \n %d\n \n", weeks);
printf("\n \n %d\n \n", j);
}
printf("\nexited out of for...loop\n");
j = 0;
printfinal();
return 0;
}
void printfinal()
{
for (j = 0; j <= weeks; j++)
{
//Prints the title headers: gross pay, taxes and net pay
printf("Week Numb\t gross pay \t taxes \t net pay\n");
//Prints the calculations for gross, taxes, and net
printf("week 1\t\t %ld \t\t %ld \t\t %ld \t\n", gross_array[j],
tax_array[j], gross_total_array[j]);
}
return 0;
}
void tax_rate()
{
//use loop and gross to determine tax
if (gross <= 300)
{
taxrate = .15;
}
else if (gross <= 450)
{
taxrate = .20;
}
else if (gross >= 451)
{
taxrate = .25;
}
return 0;
}
void menu()
{
printf("Please make a selection from the following options\n 1) Set Pay
Rate to 8.75\n 2) Set Pay Rate to 9.33\n 3) Set Pay Rate to 10.00\n 4) Set Pay Rate to 11.20\n 5) Print Out List\n 6) Quit\n");
scanf("%d", &menu_input);
switch (menu_input)
{
case 1:
printf("Pay Rate set to 8.75\n");
menu_break = 0;
pay = 8.75;
break;
case 2:
printf("Pay Rate set to 9.33\n");
menu_break = 0;
pay = 9.33;
break;
case 3:
printf("Pay Rate set to 10.00\n");
menu_break = 0;
pay = 10.00;
break;
case 4:
printf("Pay Rate set to 11.20\n");
menu_break = 0;
pay = 11.20;
break;
case 5:
menu_break = 1;
printf("List Printed\n");
break;
case 6:
printf("QUIT\n");
menu_break = 2;
break;
default:
printf("Unknown\n");
menu_break = 3;
break;
}
return 0;
}
void cust_paid_yn()
{
for (i=0; i<1; 1)
{
//get input for whether cust. was paid
printf("Was customer paid this week? (y/n)\n");
scanf("%c", &c);
//loop to check for y/n response
switch (c)
{
case 'y':
printf("\n");
i=1;
hours = (hours + unpaid);
unpaid = 0;
break;
case 'n':
printf("hours logged\n");
i=1;
unpaid = (unpaid + hours);
hours = 0;
break;
default:
printf("\n");
i=0;
break;
}
break;
}
return 0;
}
void hours_worked()
{
//asks how many hours were worked
printf("How many hours were worked?\n \nIf no work was done enter 0\n");
//gets user input for hours worked
scanf("%ld", &hours);
return 0;
}
我只想创建一个程序:
1)获取用户输入程序将循环多少次(请参阅weeks var)
2) 使用数组打印出用户数据
非常感谢任何帮助和建议,我不知道为什么我的程序会从内存中提取随机值。
解决方案
推荐阅读
- javascript - react native:使用地图函数而不是硬编码的数据中填充 EmergencyRolePicker 选择器的方法是什么?
- .net-core - 路由模板不适用于 FromQuery 属性
- python-3.x - 获取类型错误:没有找到与指定签名和转换匹配的循环,用于 ufunc 添加
- c++ - Visual Studio 代码 C++(自动关键字错误但代码编译器并显示正确的输出)
- java - Java - 正则表达式,嵌套递归匹配
- outlook - Outlook Graph API 未接收组
- .net - 如何将字符串拆分为多个变量并删除不需要的字符
- amazon-web-services - Terraform如何修复属性“路线”:需要一组对象
- android - ImageView 上的自定义 sharedElementEnterTransition
- c# - 如何从数组中找到最接近的数字,四舍五入