C语言编程实例

C语言编程实例,第1张

int countCattles(int cattles, int years){

return years<=0cattles: countCattles(cattles2,years-4);

}

===

就可以了

printf("20年后有%d只\n ", countCattles(1,20);

本书采用“案例引导,任务驱动”的编写方式,深入浅出地讲解了C程序设计的基本方法;通过“案例展示—归纳总结—模仿练习—自主设计”的学习模式,使读者循序渐进地掌握C语言的编程方法和思想,提高动手能力。全书案例按照“任务要求—问题分析—程序详解—归纳总结”顺序组织,注重培养读者先进行算法描述后进行编程实践的良好编程习惯,使读者逐步掌握用计算机解决实际问题的方法。全书叙述严谨,实例丰富,内容详尽、难易适中、重点突出,并将指针等较难理解的知识分解到多章讲解,降低了读者学习的难度。

全书分为8章,主要内容包括C语言基础知识、算法、C程序的控制结构、数组与指针、函数、结构体与共用体、文件 *** 作和C语言课程设计。

本书适合作为高等院校计算机专业学生的教材,也可作为自学C语言程序设计的参考用书。

你的复制是往后挪了一格的,字符数当然要 +1。

那一句没有起到任何实质性作用,因为 a[0]本来就是'a'。

strcpy(str,"1234");:

初始 str=="",strcpy 内部的指针(指示当前字符)指向"1234"中的'1'

第一步 str=="1"(复制了一个字符),指针往后挪一格('2')

第二步 str=="12"(又复制了一个),指针往后挪('3')

第三步 str=="123",指针往后挪('4')

第四步 str=="1234",指针往后挪('\0')

指针已经跑到字符串"1234"的末尾了,表示复制结束,退出。

结合这个思路理解一下 strcpy(&a[1],a); 复制的结果。

puts(char str)本来传的参就是个地址,你给它个指针,它根据指针指向的内存找到一串字符(当然要以'\0'结尾)输出出去。

第一题:

#include <iostream>

using namespace std;

void main()

{ int i, j, k, count=0;

for( i=1; i<=9; i++)

for( j=0; j<=9; j++)

if ( i==j )

continue;

else

for( k=0; k<=9; k++)

if ( k!=i&&k!=j)

{count++;

cout<<i<<j<<k<<ends;

}

cout<<endl;

cout<<"所有这样的三位数个数有:"<<count<<" 个"<<endl;

}

第二题

#include <iostream>

using namespace std;

int fun(chars,int n)

{

int flag=1;

for(int i=0;i<n;i++)//比较前n个字符是否为

if(s[i]!='')

{

flag=0;

break;

}

if(flag==0)

return 0;

else

{

int k=n;

while(s[k]!='\0')//移动到非字符

{

if(s[k]=='')

k++;

else

break;

}

int j=0;

while(s[k]!='\0')//向前复制

{

s[n+j]=s[k];

k++;

j++;

}

s[n+j]='\0';

}

return 1;

}

void main()

{

static char str[15];

int m;

cout<<"请输入一个只含和字母的字符串:"<<endl;

cin>>str;

cout<<"请输入n值:"<<endl;

cin>>m;

fun(str,m);

cout<<str<<endl;

}

第三题

#include "iostream"

#include "string"

#include "list"

#include "cassert"

using namespace std;

/

编号、姓名、部门、应付工资、保险、税金、实付工资。

其中实付工资由公式计算得到:实付工资=应付工资 - 保险- 税金

/

struct employee{

string m_num;//编号

string m_name;//姓名

string m_dep;//部门

double m_salary;//应付工资

double m_insurance;//保险

double m_tax;//税金

};

/

(1)录入:输入职工数据,其中“实付工资”通过计算得到;

(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)

(3) 修改:允许对已经录入的数据重新进行编辑、修改;

(4) 显示:显示全体职工数据;

(5)查询:

a 输入职工姓名,显示该职工的全部数据;

b 输入某部门值,显示该部门职工的数据、工资总额、平均工资。

(6) 退出程序。

/

list<employee> emps;

int main(int argc, char argv[])

{

void print(const employee &e);

void input();

void del();

void mod();

void show_all();

void show_name();

void show_dep();

cout<<"请选择 *** 作:1录入 2删除 3修改 4查询 5显示所有员工 6退出 :"<<endl;

int choose=0;

cin>>choose;

assert(!cinfail());

while (choose!=6)

{

if (choose==1) input();

if (choose==2) del();

if (choose==3) mod();

if (choose==4)

{

int choice=0;

cout<<"请选择 *** 作 1按姓名查询 2按部门查询 3退出:"<<endl;

cin>>choice;

if (choice==1) show_name();

if (choice==2) show_dep();

if (choice==3)

{

cout<<"请选择 *** 作:1录入 2删除 3修改 4查询 5显示所有员工 6退出 :"<<endl;

cin>>choose;

assert(!cinfail());

continue;

}

}

if (choose==5) show_all();

cout<<"请选择 *** 作:1录入 2删除 3修改 4查询 5显示所有员工 6退出 :";

cin>>choose;

assert(!cinfail());

}

return 0;

}

void print(const employee &e)

{

cout<<"编号:"<<em_num<<endl;

cout<<"姓名:"<<em_name<<endl;

cout<<"部门:"<<em_dep<<endl;

cout<<"保险:"<<em_insurance<<endl;

cout<<"税金:"<<em_tax<<endl;

cout<<"应付工资:"<<em_salary<<endl;

cout<<"实付工资:"<<em_salary-em_insurance-em_tax<<endl;

}

void input()

{

string num,name,dep;

double salary,ins,tax;

cout<<"请输入员工编号:"<<endl;

cin>>num;

cout<<"请输入员工姓名:"<<endl;

cin>>name;

cout<<"请输入员工部门:"<<endl;

cin>>dep;

cout<<"请输入员工保险:"<<endl;

cin>>ins;

assert(!cinfail());

cout<<"请输入员工税金:"<<endl;

cin>>tax;

assert(!cinfail());

cout<<"请输入员工应付工资:"<<endl;

cin>>salary;

assert(!cinfail());

employee temp;

tempm_dep=dep;

tempm_insurance=ins;

tempm_name=name;

tempm_num=num;

tempm_salary=salary;

tempm_tax=tax;

empspush_back(temp);

cout<<"员工录入 *** 作完毕"<<endl;

}

void del()

{

if (empssize()==0)

{

cout<<"没有员工记录"<<endl;

return;

}

string name;

bool isfind=false;

cout<<"请输入要删除的员工姓名:"<<endl;

cin>>name;

list<employee>::iterator iter;

for (iter=empsbegin();iter!=empsend();iter++)

{

if (iter->m_name==name)

{

isfind=true;

empserase(iter);

cout<<"姓名为"<<name<<"的员工记录已删除"<<endl;

return;

}

}

if (!isfind)

{

cout<<"没有找到姓名为"<<name<<"的员工"<<endl;

return;

}

}

void mod()

{

if (empssize()==0)

{

cout<<"员工记录为空"<<endl;

return;

}

bool isfind=false;

string name;

cout<<"请输入要修改的员工姓名:"<<endl;

cin>>name;

list<employee>::iterator iter;

for (iter=empsbegin();iter!=empsend();iter++)

{

if (iter->m_name==name)

{

isfind=true;

cout<<"姓名为"<<name<<"的员工记录已找到"<<endl;

break;

}

}

if (isfind)

{

string num,name,dep;

double tax,ins,salary;

print(iter);

cout<<endl;

cout<<"请输入新的员工编号:"<<endl;

cin>>num;

cout<<"请输入新的员工姓名:"<<endl;

cin>>name;

cout<<"请输入新的员工部门:"<<endl;

cin>>dep;

cout<<"请输入新的员工保险:"<<endl;

cin>>ins;

assert(!cinfail());

cout<<"请输入新的员工税金:"<<endl;

cin>>tax;

assert(!cinfail());

cout<<"请输入新的员工工资:"<<endl;

cin>>salary;

assert(!cinfail());

iter->m_dep=dep;

iter->m_insurance=ins;

iter->m_name=name;

iter->m_num=num;

iter->m_salary=salary;

iter->m_tax=tax;

cout<<"1 员工记录被成功修改"<<endl;

}

else

{

cout<<"没有找到姓名为"<<name<<"的员工记录"<<endl;

}

}

void show_all()

{

if (empssize()==0)

{

cout<<"员工记录为空"<<endl;

return;

}

cout<<"显示全体员工数据:"<<endl;

cout<<"--------------------"<<endl;

list<employee>::iterator iter;

for(iter=empsbegin();iter!=empsend();iter++)

{

cout<<endl;

print(iter);

cout<<endl;

}

cout<<"--------------------"<<endl;

}

void show_name()

{

if (empssize()==0)

{

cout<<"员工记录为空"<<endl;

return;

}

bool isfind=false;

string name;

cout<<"请输入要查询的员工姓名:"<<endl;

cin>>name;

list<employee>::iterator iter;

for(iter=empsbegin();iter!=empsend();iter++)

{

if (iter->m_name==name)

{

isfind=true;

cout<<"姓名为"<<name<<"的员工记录已找到"<<endl;

print(iter);

break;

}

}

if (!isfind)

{

cout<<"没有找到姓名为"<<name<<"的员工"<<endl;

return;

}

}

void show_dep()

{

if (empssize()==0)

{

cout<<"员工记录为空"<<endl;

return;

}

double isfind=000;

double total_salary=000;

string dep;

cout<<"请输入要查询的部门名称:"<<endl;

cin>>dep;

cout<<"部门["<<dep<<"]的员工信息:"<<endl;

cout<<"--------------------"<<endl;

list<employee>::iterator iter;

for(iter=empsbegin();iter!=empsend();iter++)

{

if (iter->m_dep==dep)

{

isfind++;

total_salary+=iter->m_salary;

print(iter);

cout<<endl;

continue;

}

}

cout<<"--------------------"<<endl;

if (isfind==0)

{

cout<<"没有找到名称为["<<dep<<"]的部门"<<endl;

}

else

{

cout<<"部门["<<dep<<"]工资统计:"<<endl;

cout<<"工资总额:"<<total_salary<<endl;

cout<<"平均工资:"<<total_salary/isfind<<endl;

}

}

好了 我都运行过的

scanf输入一个整数,他会根据地址去存储这个数。

首先找到pvalue指向的地址&value,&value也是一个指针,最后赋值给value。

于是可以得到这个结论:你无论多少重指针,他都是赋值给最后一个符合类型的变量。

以上就是关于C语言编程实例全部的内容,包括:C语言编程实例、c语言程序设计的内容简介、关于C语言中strcpy的用法以及一个简单案例分析。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存