题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。
直接编译,程序执行结果如下图所示:
题目02:编写一个int string_len(char *s),返回字符串s的字符长度(不包括\0)。
直接编译,程序执行结果如下图所示:
扩展资料:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。#include<stdio.h>
#include<string.h>
struct student
{
int id //学号 char name[10]//姓名
int brithday
char sub[10]
int banji
char adress[20]
int dom
}stud[3]
void save()
{
FILE *p
int i
if((p=fopen("aa","wb"))==NULL)
{
printf("cannot open file")
return
}
for(i=0i<3i++)
if(fwrite(&stud[i],sizeof(struct student),1,p)!=1)
printf("file write error\n")
fclose(p)
}
void message()//输学生的基本信息
{
int i
for(i=0i<=2i++) { printf("请输入
第%d位学生的信息,",i+1)
printf("请输入学号:")
scanf("%d",&stud[i].id)
printf("姓名:")
scanf("%s",stud[i].name)
printf("请输入生日:")
scanf("%d",&stud[i].brithday)
printf("请输入专业:")
scanf("%s",stud[i].sub)
printf("请输入班级:")
scanf("%d",&stud[i].banji)
printf("请输入地址:")
scanf("%s",stud[i].adress)
printf("请输入寝室号:")
scanf("%d",&stud[i].dom)
}
}
void main()
{
message()
save()
int i,t=0,m=0,j=0
FILE *p
if((
p=fopen("aa","rb"))==NULL)
{
printf("cannot open file\n")
return
}
printf("*******************************************************\n")
for(i=0i<=2i++)
{fread(&stud[i],sizeof(struct student),1,p)}
printf("请输入要查询的姓名:")
char a[10]
scanf("%s",&a)
for(i=0i<3i++)
if(strcmp(stud[i].name,a)==0)
printf("姓名%s、学号%d、出生年月%d、专业%s、班级%d、家庭地址%s、宿舍号码%d\n",stud[i].name,stud[i].id,stud[i].brithday,stud[i].sub,stud[i].banji,stud[i].adress,stud[i].dom)
}
第一题:
#include <iostream>
using namespace std
void main()
{ int i, j, k, count=0
for( i=1i<=9i++)
for( j=0j<=9j++)
if ( i==j )
continue
else
for( k=0k<=9k++)
if ( k!=i&&k!=j)
{count++
cout<<i<<j<<k<<ends
}
cout<<endl
cout<<"所有这样的三位数个数有:"<<count<<" 个"<<endl
}
第二题
#include <iostream>
using namespace std
int fun(char*s,int n)
{
int flag=1
for(int i=0i<ni++)//比较前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(!cin.fail())
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(!cin.fail())
continue
}
}
if (choose==5) show_all()
cout<<"请选择 *** 作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :"
cin>>choose
assert(!cin.fail())
}
return 0
}
void print(const employee &e)
{
cout<<"编号:"<<e.m_num<<endl
cout<<"姓名:"<<e.m_name<<endl
cout<<"部门:"<<e.m_dep<<endl
cout<<"保险:"<<e.m_insurance<<endl
cout<<"税金:"<<e.m_tax<<endl
cout<<"应付工资:"<<e.m_salary<<endl
cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_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(!cin.fail())
cout<<"请输入员工税金:"<<endl
cin>>tax
assert(!cin.fail())
cout<<"请输入员工应付工资:"<<endl
cin>>salary
assert(!cin.fail())
employee temp
temp.m_dep=dep
temp.m_insurance=ins
temp.m_name=name
temp.m_num=num
temp.m_salary=salary
temp.m_tax=tax
emps.push_back(temp)
cout<<"员工录入 *** 作完毕."<<endl
}
void del()
{
if (emps.size()==0)
{
cout<<"没有员工记录."<<endl
return
}
string name
bool isfind=false
cout<<"请输入要删除的员工姓名:"<<endl
cin>>name
list<employee>::iterator iter
for (iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_name==name)
{
isfind=true
emps.erase(iter)
cout<<"姓名为"<<name<<"的员工记录已删除."<<endl
return
}
}
if (!isfind)
{
cout<<"没有找到姓名为"<<name<<"的员工."<<endl
return
}
}
void mod()
{
if (emps.size()==0)
{
cout<<"员工记录为空."<<endl
return
}
bool isfind=false
string name
cout<<"请输入要修改的员工姓名:"<<endl
cin>>name
list<employee>::iterator iter
for (iter=emps.begin()iter!=emps.end()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(!cin.fail())
cout<<"请输入新的员工税金:"<<endl
cin>>tax
assert(!cin.fail())
cout<<"请输入新的员工工资:"<<endl
cin>>salary
assert(!cin.fail())
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 (emps.size()==0)
{
cout<<"员工记录为空."<<endl
return
}
cout<<"显示全体员工数据:"<<endl
cout<<"--------------------"<<endl
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()iter++)
{
cout<<endl
print(*iter)
cout<<endl
}
cout<<"--------------------"<<endl
}
void show_name()
{
if (emps.size()==0)
{
cout<<"员工记录为空."<<endl
return
}
bool isfind=false
string name
cout<<"请输入要查询的员工姓名:"<<endl
cin>>name
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_name==name)
{
isfind=true
cout<<"姓名为"<<name<<"的员工记录已找到."<<endl
print(*iter)
break
}
}
if (!isfind)
{
cout<<"没有找到姓名为"<<name<<"的员工."<<endl
return
}
}
void show_dep()
{
if (emps.size()==0)
{
cout<<"员工记录为空."<<endl
return
}
double isfind=0.00
double total_salary=0.00
string dep
cout<<"请输入要查询的部门名称:"<<endl
cin>>dep
cout<<"部门["<<dep<<"]的员工信息:"<<endl
cout<<"--------------------"<<endl
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()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
}
}
好了 我都运行过的
评论列表(0条)