求助!一道C语言算法题 背口诀14天精通c语言
求助 C语言的一道计算题
不相同,你要注意,在C和C++中1/2结果为0,而不是0.5,因为C默认将其当作整数处理,1/2应该写为1.0/2或者1/2.0或者1.0/2.0,就是说只要将其中一个整形的数写为double型就行了,你试试
一道C语言程序题!求助!
//昨天给过一个了,今天给你吧,采纳一下
#include "stdio.h"
void snakeswitch(int *,int,int,const int,int,int);
int main()
{
int N;
printf("input:");
scanf("%d",&N);
int m=N,n=N;
int *initmatrx=new int[m*n];
snakeswitch(initmatrx,m,n,n,1,0);
printf("snakematrix:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
printf("%6d",initmatrx[i*n+j]);
printf("\n");
}
delete initmatrx;
return 0;
}
//递归算法.initmatrx[m*n],nn为最外层矩阵宽度,initnum为本次矩阵初始数据,loop为本次矩阵的环>
//数,初始为0
void snakeswitch(int *initmatrx,int m,int n,const int nn,int initnum,int loop)
{
//第一行
for(int j=0;j<n;j++)
initmatrx[loop*nn+loop+j]=initnum+j;
if(m==1)
return;
//最后一列
for(int i=1;i<m;i++)
initmatrx[(loop+i)*nn+loop+n-1]=initmatrx[loop*nn+loop+n-1]+i;
if(n==1)
return;
//最后一行
for(int j=n-2;j>=0;j--)
initmatrx[(loop+m-1)*nn+loop+j]=initmatrx[(loop+m-1)*nn+loop+n-1]+n-1-j;
//第一列
for(int i=m-2;i>=1;i--)
initmatrx[(loop+i)*nn+loop]=initmatrx[(loop+m-1)*nn+loop]+m-1-i;
if(m==2||n==2)
return;
//计算除去外圈后的内矩阵
snakeswitch(initmatrx,m-2,n-2,nn,initnum+2*m+2*n-4,loop+1);
}
求助一道算法题,从1到100产生50个随机整数,找出第十小的数,写程序,用c语言或者java
int num[50];
int i;
int t, a, b;
for(i = 0; i < 50; i++) {
num[i] = i;
} //初始化2113
for(i = 0; i < 51; i++) { //产生526150个随机4102数
a = rand() % 100;
b = rand() % 100;
t = num[a];
num[a] = num[b];
num[b] = t;
}
void bubble(int a[]){ //起泡排序1653
int i,t;
for(i=0;i<50;i++){
if(a[i]<a[i+1])
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
//num[9]就是内你要的结容果
求解一道题的算法,c语言。
给你两个思路:
1、从字符串下手
2、从整型的取模、乘法、除法特性下手
如果仔细向后还有问题,继续追问。