1. 一道C++的语言程序题 ,高分求。
I sold one(just the same as you requested) several days ago, if you want to buy, see bellow
2. 求解C语言编程
已知两地的经度分别为σ1、σ2,纬度分别为φ1、φ2,求两地最近距离的公式为:
S=2πRθ/360° (1)
其中θ可由下面的式子求得:
[sin(θ/2)]^2=[sin(φ1-φ2)/2]^2+[sin(σ2-σ1)/2]^2cosφ1cosφ2 (2)
注:1、式中S为球面上任意两点的最短距离(球面距离);
2、θ为两点间的张角,在运用(2)式求θ时,纬度φ和经度σ本身有正负号,通常北纬正,南纬负;东经正,西经负。
3、因不会用上下标,所以式中^2指平方; cosφ1cosφ2、σ2-σ1 、φ1-φ2中的1和和2为下标。
我想你的问题是不知道公式,知道公式后就是C语言做个算术题,这个不用我教了吧。
3. 求解答,用c语言编程
4. C语言编程求解
首先列式
1)x+y+z = 8 , x为10环的发数,y为7环的发数,z为5环的发数
在列式
2)10*x+7*y+5*z = 53
从1)式中得到x=8-y-z ;
带入2)得
80-10*y-10*z+7*y+5*z = 53最终简化后得3*y+5*z = 27,z=(27-3*y)/5 ;
好这下我们可以编程了
int x, y, z ;
int ret ;
//根据提议猜测y在0到8之间
for ( y=0;y<=8;y++)
{
//z一定是整数
if ((27-3*y)%5==0)
{
z=(27-3*y)/5 ;
if ( z8 )
continue ;
x=8-z-y ;
if (x8 )
continue ;
printf("10环%d发,7环%d发,5环%d发\n",x,y,z);
}
}
没编译过,不过思路是这个思路。
5. C语言编程,求解
代码思路:
一、程序需要四个函数,分别是入口主函数、输入函数、输出函数、排序函数。
二、题目要求按首字母排序,未限制大小写,因此不能直接用字母比大小,需根据大小写求字母差值,用差值比较。
三、字符串排序交换,用函数strcpy。
下面是代码:
#include
#include
#define MM 12//月份个数
#define MS 20//字符串长度
void px(char moms[][MS]);// 排序
void showMM(char moms[][MS]);
void inputMM(char moms[][MS]);//手动输入月份名
int main()
{
char moms[12][MS]={"January",\
"February",\
"March",\
"April",\
"May",\
"June",\
"July",\
"August",\
"September",\
"October",\
"November",\
"December"};
printf("%d个月英文名为:\n",MM);
showMM(moms);
px(moms);
printf("%d个月英文名按首字母升序排序后为:\n",MM);
showMM(moms);
inputMM(moms);
printf("输入后的月份英文名:\n");
px(moms);
showMM(moms);
return 0;
}
void inputMM(char moms[][MS])
{
int i;
printf("手动输入%d个月份英文名称(每个名称不超过%d个字符):\n",MM,MS-1);
for(i=0;i<MM;scanf("%s",moms[i]),i++);
}
void showMM(char moms[][MS])
{
int i;
for(i=0;i<MM;printf("%s\n",moms[i]),i++);
printf("\n");
}
void px(char moms[][MS])
{
char strTemp[MS]={0};
int i,j,n1,n2;
for(i=0;i<MM-1;i++)
for(j=i+1;j<MM;j++)
{
if(moms[i][0]>='A' && moms[i][0]<='Z')n1=moms[i][0]-'A';//大小写识别
if(moms[i][0]>='a' && moms[i][0]<='z')n1=moms[i][0]-'a';
if(moms[j][0]>='A' && moms[j][0]<='Z')n2=moms[j][0]-'A';
if(moms[j][0]>='a' && moms[j][0]<='z')n2=moms[j][0]-'a';
memset(strTemp,0,MS);
if(n1>n2)
strcpy(strTemp,moms[i]),strcpy(moms[i],moms[j]),strcpy(moms[j],strTemp);
}
}
6. 求解C语言编程题
#include
#include
#include
int Get3Num(int a[],int b[],int n)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
if(a[i]%3==0)
{
b[sum] = a[i];
sum++;
}
}
return sum;
}
int main()
{
int num[20];
int num_3[20];
int i,j,sum;
srand((unsigned int)time(NULL));
for(i=0;i<20;i++)
{
num[i] = rand()%99+1;
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
printf("%d\t",num[5*i+j]);
}
printf("\n");
}
sum = Get3Num(num,num_3,20);
if(sum==0)
{
printf("NO\n");
}
else
{
for(i=0;i<sum;i++)
{
printf("%d\t",num_3[i]);
}
}
}
7. C语言编程题 求解
按照题意,表格使用结构链表实现。其中成员班级或工龄,使用自定义的联合体union(就是题目要求的共用体)。函数异常不做处理,直接抛出,你需要可以在调用时判断处理异常。
#include
#include
typedef union info4
{
char cName[10];//班级名称
int wAge;//工龄
}IO4;
typedef struct stInfo
{
int id;//编号
char name[10];// 姓名
int pType;//职业类别:0表示学生,1表示教师
IO4 cwInfo;//对应职业类别的班级或工龄
struct stInfo *next;
}STINFO;
int inputInfo(STINFO **stHead,STINFO **stTail);//输入,调用一次输入一条信息,并生成或加入链表,成功返回1,失败返回0
void prfInfos(STINFO *stHead);// 打印链表
int main()
{
STINFO *stHead=NULL,*stTail=NULL;
int n=4;//测试就输入4个,需要自己改
while(n--)
if(!inputInfo(&stHead,&stTail))
{
printf("异常终止!\n");
return 1;
}
prfInfos(stHead);
return 0;
}
void prfInfos(STINFO *stHead)// 打印链表
{
printf("编号 姓 名 职业 班级\\工龄\n");
while(stHead->next)
{
printf("%d %9s %s",stHead->next->id,stHead->next->name,stHead->next->pType?"教师":"学生");
if(stHead->next->pType)
printf("%9d\n",stHead->next->cwInfo.wAge);
else
printf("%9s\n",stHead->next->cwInfo.cName);
stHead=stHead->next;
}
}
int inputInfo(STINFO **stHead,STINFO **stTail)//输入,调用一次输入一条信息,并生成或加入链表,成功返回1,失败返回0
{
static int id=1;
STINFO *head=*stHead,*tail=*stTail,*stNew=NULL;
stNew=(STINFO *)malloc(sizeof(STINFO));
stNew->pType=-1;
stNew->next=NULL;
if(!stNew)//抛出异常
return 0;
stNew->id=id++;
printf("请输入姓名:"),scanf("%9s",stNew->name);
if(getchar()!='\n')//抛出异常
return 0;
while(stNew->pTypepType>1)
printf("请输入职业编号(0:学生,1:教师):"),scanf("%d",&stNew->pType);
switch(stNew->pType)
{
case 0:printf("请输入学生所在班级名称:");
scanf("%9s",stNew->cwInfo.cName);
if(getchar()!='\n')//抛出异常
return 0;
break;
case 1:printf("请输入教师的工龄:"),scanf("%d",&stNew->cwInfo.wAge);break;
}
if(head==NULL)
head=(STINFO *)malloc(sizeof(STINFO)),head->next=NULL;
if(head->next==NULL)
head->next=stNew;
else
tail->next=stNew;
tail=stNew;
*stHead=head,*stTail=tail;
return 1;
}
8. 求解C语言编程题。。。
您好。我默认您程序限制时间为1s。您应该是初学者吧……不知道您数学水平如何,我就按照初/高的水平说了。
第一题:
首先要说的是题面描述有误,是所有真因子的和吧……
您可以先枚举一个数字j,我们知道如果j是数字i的因子的话,i一定是j的倍数,所以我们可以再枚举一个倍数关系k,2<=k<=10000/j,这样我们给每个i=j*k加上j的贡献,这个可以开一个数组存下来。最后再从1到10000跑一遍即可。
至于时间复杂度,您如果学过调和级数就会算出来其时间复杂度为O(n*ln(n))。
当然您要是觉得这个时间复杂度还是不够优秀,也是可以O(n)的。
代码:
#include "stdio.h"using namespace std;const int N=1e4+10;int ans[N];int main(){ for (int j=1;j<=10000;++j) for (int k=2;k<=10000/j;++k) ans[k*j]+=j; for (int i=1;i<=10000;++i) if(ans[i]==i) printf("%d%c",i,i==10000?'\n':' ');}/*输出:6 28 496 8128*/第二个题:
……这个我就直接贴代码吧……
#include "stdio.h"using namespace std;double a[10];int main(){ for (int i=1;ia[j]) { double t=a[i]; a[i]=a[j],a[j]=t; } for (int i=1;i<=8;++i) printf("%.8f%c",a[i],i==8?'\n':' ');}/*输出:6 28 496 8128*/