用C语言编写一个完整的程序,完成以下计算:

用C语言编写一个完整的程序,完成以下计算:,第1张

/工资计算程序/

#include

main()

{

float

originwage;

/应发工资/

float

realwage;

/实发工资/

float

tax;

/所缴税款/

int

i,hour,amount,money;

printf("请选择工资种类:\n1计时工资\n2计件工资\n3固定月工资\n");

scanf("%d",&i);

switch(i)

{

case

1:{

printf("请输入工作时间(单位:小时)\n");

scanf("%d",&hour);

printf("请输入单位时间的薪水(单位:元)\n");

scanf("%f",&money);

originwage=moneyhour;

}

break;

case

2:{

printf("请输入生产产品数量(单位:件)\n");

scanf("%d",&amount);

printf("请输入生产一件产品的薪水(单位:元)\n");

scanf("%f",&money);

originwage=moneyamount;

}

break;

case

3:

printf("请输入你的固定工资\n");

scanf("%f",&originwage);

break;

default:printf("输入错误!\n");

return

0;

}

if(originwage<0)

{

printf("数据错误!\n");

return

0;

}

if(originwage<2000)

tax=0;

else

if(originwage>2000&&originwage<=2500)

tax=(originwage-2000)005;

else

if(originwage>2500&&originwage<=4000)

tax=(originwage-2500)01+500005;

else

tax=(originwage-4000)015+150001+500005;

printf("应发工资:

%f\n",originwage);

printf("所缴税款:

%f\n",tax);

printf("实发工资:

%f\n",originwage-tax);

return

0;

}

#include<stdioh>

void sort(float a, int n){

int i,j;

float t;

for (i=0;i<n-1;i++)

for (j=i+1;j<n;j++)

if (a[j]>a[i]) {t=a[i];a[i]=a[j];a[j]=t;};

}

void insert(float a,float x,int n)

{

int i,m;

if (x<=a[n-1]){a[n]=x;}

else if (x>=a[0]){

for (i=n;i>0; i--) a[i]=a[i-1]; a[0]=x;

} else {

for (i=0;i<n-1;i++) if (x<=a[i] && x>=a[i+1]){ m=i;break;};

for (i=n-1;i>m;i--) a[i+1]=a[i];a[m+1]=x;

};

}

int find(float a,float y,int n){

int flag= -99,i;

for (i=0;i<n;i++) if (a[i]==y){flag=i; break;};

return flag; //找到则返回下标号,没找到为负值

}

void save(float a, int n){

FILE fp;

int i;

fp=fopen("student_scoretxt","w");

for (i=0;i<n;i++) fprintf(fp,"%g\n",a[i]);

fclose(fp);

printf("saved in student_scoretxt\n");

}

int main() {

float s[101],x,y;

int i,n,fd;

printf("input n: "); scanf("%d",&n);

printf("\ninput %d scores: ",n);

for (i=0;i<n;i++) scanf("%f",&s[i]);

printf("\ninput one extra score x: ");

scanf("%f",&x);

sort(s,n);

insert(s,x,n);

printf("input score y which you want to find:\n");

scanf("%f",&y);

fd=find(s,y,n+1);

if ( fd< 0 ) printf("Not find\n"); else printf("find at %d\n",fd);

save(s,n+1);

//for (i=0;i<n+1;i++) printf("%g\n",s[i]);

return 0;

}

#include <stdlibh>

#include <stdioh>

typedef char datatype; /单链表的类型定义/

typedef struct node {

datatype data;

struct node next;

} linklist;

linklist creatlink() { /建立一个单链表,返回单链表的头指针/

char ch;

linklist p,head,r;

ch = getchar();

head = p = (linklist )malloc(sizeof(linklist));

r = head;

while(ch != '$') {

p->next = (linklist )malloc(sizeof(linklist));

p->next->data = ch;

p = p->next;

ch = getchar();

}

p->next = NULL;

return head;

}

void printList(linklist head) {/遍历单链表,并输出每个结点的数据/

linklist p = head->next;

printf("\t\t");

while(p) {

printf("%c ",p->data);

p = p->next;

}

printf("\n\n");

}

void insert(linklist p,datatype x) {/一个数值为x的新结点插入到p结点之后/

/请将函数体的代码补充完整/

linklist newnode = (linklist )malloc(sizeof(linklist));

newnode->data = x;

newnode->next = p->next;

p->next = newnode;

}

void deleteNode(linklist head,linklist p) {/删除头指针为head的单链表上的p结点/

/请将函数体的代码补充完整/

linklist q = head;

while(q->next != p && q) q = q->next;

if(q) {

q->next = p->next;

free(p);

}

else printf("没有找到指定的结点p, *** 作失败!!!\n");

}

linklist get(linklist head, int i) {/查找单链表中的第i个结点,并返回其地址/

linklist p = head;

int k = 0;

while(k < i && p) {

p = p->next;

k++;

}

return p;

}

void main() {/主函数/

linklist head,f;

head = creatlink();/建立一个单链表,head存储表头指针/

printList(head); /遍历输出该单链表/

f = get(head, 2); /查找单链表中的第2个结点,将其地址存储在变量f中/

if(f) printf("\nthis is 2 node:%c\n", f->data); /输出第2个结点的值/

/在第2个结点后面插入一个新结点,其值为’w’/

insert(head,'w');//这个函数的功能没有构思好,因为所给的参数的限制

printf("\n after insert a new node:");

printList(head); /遍历输出该单链表/

f= get(head,5);/查找单链表中的第5个结点,将其地址存储在变量f中/

if(f) printf("\nthis is 5 node:%c" ); /输出第5个结点的值/

/删除第5个结点/

deleteNode(head,f);

printf("\n after delete a node:");

printList(head); /遍历输出该单链表/

}

刚编了一个:把12枚银币编号,1,2,3,12,每次称重的时候,按照程序提示进行,输入称重结果,就可以了。

运行结果:

5、6、7、8

1、2、3、4:

(输入:0等,1轻,2重)2

3、4、6

1、2、5:

(输入0等,1轻,2重)1

5、4

11、12

(输入0:等,1轻,2重)2

假币5重

源程序:

#include

<stdioh>

void

badcoin(int

x,

int

a)

{

switch(a)

{

case

0:

printf("错误输入");

break;

case

1:

printf("假币%d轻",x);

break;

case

2:

printf("假币%d重",x);

break;

}

}

void

badcoin1(int

x)

{

int

a,

good;

for(good=1;

good==x;

good++){}

printf("%d是假币,

%d

%d

(输入:1轻,2重)",x,x,good);

scanf("%d",&a);

badcoin(x,a);

}

void

badcoins2(int

x,

int

y,

int

a)

{

int

b,

good;

for(good=1;

good==x

||

good==y;

good++){}

printf("%d,%d当中有一个假币",x,y);

switch(a)

{

case

1:

printf("(轻),其中

%d

%d

(输入0:等,1轻)",x,good);

break;

case

2:

printf("(重),其中

%d

%d

(输入0:等,2重)",x,good);

break;

}

scanf("%d",&b);

if(b==0

||

b==a)

{

switch(b)

{

case

0:

badcoin(y,a);

break;

case

1:

case

2:

badcoin(x,b);

break;

}

}

else

{

printf("输入错误\n");

}

}

void

badcoins3(int

x,

int

y,

int

z,

int

a)

{

/

z偏a,或者x和y当中一个偏非a

/

int

b;

printf("%d、%d

11、12

(输入0:等,1轻,2重)",z,y);

scanf("%d",&b);

if(b==0)

badcoin(x,a==12:1);

else

badcoin(b==az:y,b);

}

main()

{

int

a,b;

printf("5、6、7、8

1、2、3、4:

(输入:0等,1轻,2重)");

scanf("%d",&a);

if(a==0)

{

printf("9、10、11

1、2、3:

(输入0等,1轻,2重)");

scanf("%d",&a);

if(a==0)

{

badcoin1(12);

}

else

{

printf("10

9(输入0等,1轻,2重)");

scanf("%d",&b);

if(b==0)

badcoin(11,a);

else

badcoin(a==b10:9,a);

}

}

else

{

printf("3、4、6

1、2、5:

(输入0等,1轻,2重)");

scanf("%d",&b);

if(b==0)

{

badcoins2(7,8,a);

}

else

{

if(a==b)

badcoins3(1,2,6,a);

else

badcoins3(3,4,5,a);

}

}

}

C语言中,程序文件本身是文本格式,如果只是查看代码的话,可以这样做:打开记事本,使用文件中的“打开”菜单。在d出的对话框中选择文件类型为“所有文件”,然后再浏览到程序文件,点击打开。但是如果需要在编译器环境中进行调试或编译等 *** 作,则必须使用编译器,编译器必须使用与C语言文件在编写时使用的环境要求,不同的编译器提供的库函数不同,不能混用。

高效率:说到程序,运行效率是不可避免的话题。如何提高效率,一是 最准确的算法,二是 一些小的细节,打个比方:for(int i=;i<strGetLength();i++)  就这个循环的判定条件而言,完全可以改成int len=strGetLength(), for(int i=0;i<len;i++);不要小巧这个改懂,如果你的字符串str很长的话,也会影响效率的,因为每循环一次就要调用一次函数GetLength。

完全没看懂你是什么意思。是要求出1000以内的 完全数吗?

如果是为了实现这个目的,可以参考下面的程序

#include<stdioh>

void main()

{

int a,b,c;

for(a=2;a<=1000;a++)

{

c=0;

for(b=1;b<a;b++)

{

if(a%b==0)

{

c=c+b;

}

}

if(a==c)

{

printf("its factors is %d\n",a);

}

}

}

#include<stdioh>

#include<ctypeh>

//这里的数组标记方法极好,把寻找字母和寻找字母的分子量全给表示出来!注意精髓,是数组的顺序能派上大用场

double array[] = {0, 0, 1201, 0, 0, 0, 0, 1008, 0, 0, 0, 0, 0, 1401, 1600};

char s[20];

int main(void)

{

int i;

int length;

double sum = 0;

char x;

gets (s);

//若输入的是字符串,判断其长度可以不用strlen了,可用是否为'\0'

for (i = 0; s[i] != '\0'; ++i)

{

if (isalpha(s[i]))

{

//注意这里的技巧,把当前的那个字母保存下来,如果下一位或者下两位是数字好寻找是哪个字母的。

x = s[i];

sum += array[s[i] - 'A'];

}

else

{

int n = s[i] - '0';

if (isdigit(s[i + 1]))

{

n = n 10 + s[i + 1] - '0';

i++;

}

sum += array[x - 'A'] (n - 1);

}

}

printf("%3lf",sum);

return 0;

}

以上就是关于用C语言编写一个完整的程序,完成以下计算:全部的内容,包括:用C语言编写一个完整的程序,完成以下计算:、c语言程序、将c语言程序补充完整等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9274102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存