急!用c语言实现一个小程序
if(m>k-1)
f+=f(m-1);
==========>
if(m>k-1)
{
f = 0;
for(int i=1;i<=k;i++)
f+=f(m-i);
}
试一下下面的程序...
#include
#include
int main(int argc, char** argv)
{
char name_Input [80];
char string_Break [80];
char * string_Yes ="yes";
printf("请输入您的姓名
");
while(1)
{
gets(name_Input);
printf("请输入您的姓名么? %s 是的话请输入yes
",name_Input);
gets(string_Break);
if(strcmp(string_Break,string_Yes))
{
printf("请重新输入您的姓名
");
}
else
{
break;
}
}
printf("啊!原来是传说中的%s先生啊!请受在下一拜。
",name_Input);
getchar();
return 0;
}
#define N 10 //十个数据
#define M 5 //五个组
int limit[N][N]=
{
{1,N}, //0限制1;
{3,5,6,N}, //1限制3、5、6;
{0,1,6,7,N},//2限制0、1、6、7;
{1,2,N}, //3限制1、2;
{N}, //
{1,2,N}, //5限制1、2;
{2,N}, //6限制2;
{8,9,N}, //7限制8、9;
{5,6,7,N}, //8限制5、6、7;
{2,8,N} //9限制2、8。
};
//判断m是否限制n
bool m_limit_n(int m, int n)
{
int i;
if(m>=N || n>=N)
{
return false;
}
for(i=0;i<N && limit[m][i]<N;i++)
{
if(limit[m][i]==n)
{
return true;
}
}
return false;
}
bool valid(int *arr)
{
int i,j;
for (i = 0; i < N; i=i+2)
{
if(arr[i]>arr[i+1])
{
return false;
}
if(m_limit_n(arr[i],arr[(i+2)%N])
||m_limit_n(arr[i],arr[(i+3)%N])
||m_limit_n(arr[i+1],arr[(i+2)%N])
||m_limit_n(arr[i+1],arr[(i+3)%N]))
{
return false;
}
}
return true;
}
void exchange(int *arr, int n, int m)
{
int temp;
temp=arr[n];
arr[n]=arr[m];
arr[m]=temp;
}
int a[]={0,1,2,3,4,5,6,7,8,9};
void perm(int* arr, int n, int curr)
{
int i;
if (curr>=n-1)
{
if(valid(arr))
{
for (i = 0; i < N; i=i+2)
{
printf("%d,%d ", arr[i],arr[i+1]);
}
printf("\b\n");
}
}
else
{
for (i = curr; i < n; i=i+1)
{
if(i==curr)
{
perm(arr, n, curr+1);
}
else
{
exchange(arr,i,curr);
perm(arr, n, curr+1);
exchange(arr,i,curr);
}
}
}
}
int main()
{
perm(a, sizeof(a)/sizeof(a[0]), 0);
return 0;
}
“限制条件是根据实际情况决定的,因而要求程序能给出让用户输入限制条件的提示”很容易,自己看着办吧。
马上回去写,包你满意阿…
“高金山 - 首席运营官 十三级”的回答似乎没有看到“限制条件是根据实际情况决定的,因而要求程序能给出让用户输入限制条件的提示”这句话阿…
我搞出来1207项
#include <stdio.h>
#include <assert.h>
#include <conio.h>
#define NUM 10
#define GROUP 5
#define NUM_IN_GROUP (NUM / GROUP)
int checkConstraint(int m, int n)
{
static int constraint[NUM][NUM] = {
{ 1, NUM },
{ 3, 5, 6, NUM },
{ 0, 1, 6, 7, NUM },
{ 1, 2, NUM },
{ NUM },
{ 1, 2, NUM },
{ 2, NUM },
{ 8, 9, NUM },
{ 5, 6, 7, NUM },
{ 2, 8, NUM }
};
int i = 0;
while (constraint[m][i] != NUM)
{
if (constraint[m][i] == n)
{
return 1;
}
i++;
}
return 0;
}
int numberList[NUM] = { 0 };
int listTop = 0;
int isNumberInList(int n)
{
int i;
for (i = 0; i < listTop; i++)
{
if (numberList[i] == n)
{
return 1;
}
}
return 0;
}
int all = 0;
void process()
{
int i, begin, end;
if (listTop == NUM)
{
for (i = 0; i < NUM; i++)
{
printf("%d ", numberList[i]);
}
putchar('\n');
all++;
return;
}
begin = (listTop % NUM_IN_GROUP) * GROUP;
end = begin + GROUP;
for (i = 0; i < NUM; i++)
{
int curg, re, j;
if (isNumberInList(i))
{
continue;
}
curg = listTop / NUM_IN_GROUP;
re = listTop % NUM_IN_GROUP;
for (j = 0; j < re; j++)
{
if (numberList[curg * NUM_IN_GROUP + j] > i)
{
break;
}
}
if (j < re)
{
continue;
}
if (curg = listTop / NUM_IN_GROUP)
{
curg = (curg - 1) * NUM_IN_GROUP;
for (j = 0; j < NUM_IN_GROUP; j++)
{
if (checkConstraint(numberList[curg + j], i))
{
break;
}
}
if (j < NUM_IN_GROUP)
{
continue;
}
}
numberList[listTop++] = i;
process();
listTop--;
}
}
void main()
{
process();
getch();
}
#include<stdio.h>
char reject[10][10]={0};
int checklist(char *list)
{
int i,j,k;
char *p;
/*每组中,第一个数小于第二个数*/
for(i=0;i<5;i++)
{
if(list[2*i]>list[2*i+1]) return 0;
}
/*不同组的第一个数,排在后面的比排在前面的大*/
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(list[2*i]>list[2*j]) return 0;
}
}
/*验证限制条件*/
for(i=0;i<10;i++)
{
p=reject[list[i]-'0'];
if(i%2==0) while(*p && *p++==list[i+1]) return 0;
else while(*p && *p++==list[i-1]) return 0;
}
return 1;
}
/*全排列递归算法*/
#define SWAP(a,b,c) do{c=a;a=b;b=c;}while(0)
void proPerm(char *list,int i,int n)
{
int j,temp,k;
if(i==n)
{
/*
for(j=0;j<=n;j++)
printf("%c",list[j]);
printf("\n");
*/
if(checklist(list))
{
for(k=0;k<5;k++)
printf("{%c,%c} ",list[2*k], list[2*k+1]);
printf("\n");
}
}
else
{
for(j=i;j<=n;j++)
{
SWAP(list[i],list[j],temp);
proPerm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}
void main()
{
int i;
char s[]="0123456789";
printf("Please input reject condition:\n");
printf("example:\n");
printf("0 :12 -- 0 reject 1 and 2\n");
printf("1 :* -- 1 reject nobody\n");
printf("------------------------------\n");
for(i=0;i<10;i++)
{
printf("%d :",i);
scanf("%s",reject[i]);
}
for(i=0;i<10;i++)
{
printf("%d:%s\n",i,reject[i]);
}
proPerm(s,0,9);
getch();
}
尝试帮你做,留名先
用C语言编写程序从键盘输入一个正整数数n,输出n!
编程实现计算n!,也就是n*(n-1)*(n-2)*...*1,可以通过递归函数来实现,具体实现方法:include <stdio.h>int Func(int n){if(n < 2)return 1;else return n*Func(n-1);} void main(){int n =0,m=0;printf("请输入一个正整数:")scanf("%d",&n);m=Func(n);printf("...
C语言编程:编程实现将一个数组逆序输出
然后用第二个for循环逆序排序,方法就是前面的元素和后面的元素比较大小,前面比后面小就交换顺序,最后再用一个for循环输出排序的结果:3、最后编译运行写好的程序,打开一个命令行,输入7个不同的数,之后程序就会把输入的数逆序输出了。以上就是C语言编程实现数组逆序输出的方法:...
C语言,用函数实现1!+2!+3!+···+10!
include <stdio.h>int fac(int n){ if(n==1) return 1; return n*fac(n-1);}int main(){ int i,s=0; for(i=1; i<11; i++) s+=fac(i); printf("%d\\n",s); return 0;}
问一个用C语言实现数据结构的程序(求大神帮助)图在下面,
visited[v]=1; \/\/置已访问标记 queue[rear]=v;\/\/已访问过的顶点v进队 rear=(rear+1)%MAXV;while (front!=rear)\/\/若队列不空时循环 { int w=queue[front];\/\/出队并赋给w front=(front+1)%MAXV;ArcNode *p=G->adjlist[w].firstarc; \/\/找与顶点w邻接的第一个顶点 while (p!=...
用C语言设计一个简单计算器
else if(p=='*') multiplication(a,b,c);else if(p=='\/') div(a,b,c);else puts("没有注册这个运算符号\\n"); }以上是设计的一个简易计算器。可以进行相应的加减乘除。简介:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所...
用c语言编写一个程序实现以下功能
include "stdio.h"int main(int argc,char *argv[]){int a,b;double x,y;char ch1,ch2;printf("Please enter the data...\\n");scanf("%d%d%lf%lf %c%c",&a,&b,&x,&y,&ch1,&ch2);printf("\\na=%d,b=%d\\nx=%f,y=%f\\nch1=%c,ch2=%c\\n",a,b,x,y,ch1,ch2);return ...
1.用C语言编程实现1、3、5、7.奇数的累加。(一般用while或者do while...
第一题#include<stdio.h>int main(void){int i = 1,sum = 0;do{sum = sum + i;i = i + 2;}while(i <= 7);printf("sum:%d\\n",sum);return 0;}第二题#include<stdio.h>int main(void){int i,count = 1;for(i = 0; i <= 100; i++){if(i%9 == 0){printf(" ...
C语言编程 实现一个简单计算器的功能: + - * \/ 平方 开方,只能用到函数...
c = a + b; if('-' == d) c = a - b; if('*' == d) c = a * b; if('\/' == d) c = a*1.0\/b; if('^' == d) c = a*a; printf("%d%c%d=%lf\\n",a,d,b,c); return 0;} ...
用C语言怎么编写一个从1加到10的程序...新手求解
include <stdio.h> void main(){ int n;int sum=0; \/\/初始sum变量值为0;for(n=1;n<=10;n++){ sum=sum+n; \/\/从一加到10;} printf("1+2+...+10=%d",sum);}
请用C语言编写一个:职工工作量统计系统
include <stdio.h> include <string.h> include \/ 编写一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由...
裔竿腰腿: #include <stdio.h>int main() {int i, j, ColumnCount; ColumnCount = 0;for (i = 2; i <= 1000; i++){for (j = 2; j < i; j++){if (0 == i % j)break;}if (i == j){printf("%-8d", i);ColumnCount++;if (4 == ColumnCount){putchar('\n');ColumnCount = 0;}}}return 0; }
海阳市15772072627: 编写一个C语言小程序 急求 - ?
裔竿腰腿: /* http://zhidao.baidu.com/question/355983315.html?fr=uc_push&push=core&oldq=1 要求用户输入5个同学的有关信息,内容包括姓名,学号,两门课程成绩. 如果录入的学号与前面的输入有相同的,提示用户重新输入 (仅重新录入该生学号,...
海阳市15772072627: 用C语言写一个小程序,麻烦大家了 - ?
裔竿腰腿: // 记得多给点分哦,很难写的.// C#include <stdio.h> int strnmerge(char*str,int n,char const*s1,char const*s2){ while(n > 0) { if(!(*s1) && !(*s2)) break; if(*s1 && n > 0) { *str++ = *s1++; --n; } if(*s2 && n > 0) { *str++ = *s2++; --n; } } *str = '\0'; } int main(...
海阳市15772072627: 帮忙用C语言编写一个小程序 - ?
裔竿腰腿: int yearmore(int y) { if((y%4==0 && y%100!=0) || y%400==0) return 1; else return 0; } 全程序如下: #include <stdio.h> int days(int y,int m,int d) { int i,mm; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if((y%4==0 && y%100!=0) || y%400==0) ...
海阳市15772072627: 求大神用C语言设计一个小程序,包括数据的输入,输出,排序,查找,退出程序就可以了,跪谢啦 - ?
裔竿腰腿: int my_input(int * a, int pos, int num) { if (NULL == a) { return -1; } if (pos < 0 || pos > 9) { return -2; } a[pos] = num; return 0; } int my_out(int * a, int len) { if (NULL == a) { return -1; } if (len < 0) { return -2; } for (int i = 0; i < len; i++) { printf("%-5d", a[i]); } ...
海阳市15772072627: 用C语言写一个小程序(一个小功能就可以了),要求:100行代码左右,不要太多,要有注释,谢谢~ - ?
裔竿腰腿: 回#include<stdio.h> //标准输入、输出头文件
海阳市15772072627: 用C 语言 程序怎样编写一个小程序 工具 - ?
裔竿腰腿: 例子程序如下: void main() {int a,b,c;a=5;b=6;c=a+b; }
海阳市15772072627: 用C语言编写一个小程序 - ?
裔竿腰腿: #include<stdio.h> #include<math.h> void main() { int m,i,k; printf(“please input a number”); scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) { if(m%i==0)break; } if(i>k) printf("yes"); else printf("NO"); }
海阳市15772072627: 用C语言编写一个小的很的程序.?
裔竿腰腿: 楼上 scanf只能单个字符输入 #include <stdio.h>sum(int a,int b, int c) { int sum;sum=a+b+c; } main() { int a,b,c,; printf("输入三个整数");scanf("%d%d%d",&a,);scanf("%d%d%d",&a,);scanf("%d%d%d",&a,);printf("三数只和为%d",sum(a,b,c));} 请采纳.
海阳市15772072627: 帮我用C语言编写一个小程序,简单介绍下. - ?
裔竿腰腿: #include<stdio.h> void main() { print("hello world"); } 完了,#include是包含头文件 void 是看main函数的返回值是空 然后到printf是打印括号里面的数据 运行结果是 hello world