C语言,韩信点兵编程,看看我的错在哪?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,韩信点兵编程,看看我的错在哪?相关的知识,希望对你有一定的参考价值。

按从1至5报数,记下最末一个士兵报的数为1;再按从1至6报数,记下最末一个士兵报的数为5;再按从1至7报数,记下最末一个士兵报的数为4;最后按从1至11报数,最末一个士兵报的数为10;... 按从1至5报数,记下最末一个士兵报的数为1; 再按从1至6报数,记下最末一个士兵报的数为5; 再按从1至7报数,记下最末一个士兵报的数为4; 最后按从1至11报数,最末一个士兵报的数为10; 你知道韩信至少有多少兵? #include <stdio.h> int f(); int main(void) int x; x=f(); printf("%d",x); return 0; int f(int x) int n; double a; a=x%n; if(n==5) a=1; if(n==6) a=5; if(n==7) a=4; if(n==11) a=10; return x; 展开

参考技术A 你的算法根本就不能得到结果,计算机是死的,不像人有思维,所以你只能一个个数去试,用循环实现:
int
f()
int
x=10;//你可以从1开始,按最后一个分析,至少有10人
while(1)
if(x%5==1&&x%6==5&&x%7==4&&x%11==10)break;
else
x++;
return
x;

int
main(void)

int
x;
x=f();
printf("%d\n",x);
return
0;

c语言问题帮忙调试程序,看看下面程序错在哪儿?

#include<stdio.h>
#include<math.h>
void leters()

char a[100];
int i;
int n=0;
a[0]='0';
printf("input phonenumber,end up with #\n");
while(a[n]!='#')

n++;
a[n]=getchar();
if(a[n]>='A'&&a[n]<='C')
a[n]='2';
if(a[n]>='D'&&a[n]<='F')
a[n]='3';
if(a[n]>='G'&&a[n]<='I')
a[n]='4';
if(a[n]>='J'&&a[n]<='L')
a[n]='5';
if(a[n]>='M'&&a[n]<='O')
a[n]='6';
if(a[n]>='P'&&a[n]<='S')
a[n]='7';
if(a[n]>='T'&&a[n]<='V')
a[n]='8';
if(a[n]>='W'&&a[n]<='Z')
a[n]='9';


for(i=1;i<n;i++)
printf("%c",a[i]);
printf("\n");


void bonus()

float a;
printf(" please input profits: ");
scanf("%f",&a);
if(a<=10000)
printf("bonus is:%f",a*0.1);
if(10000<a<=20000)
printf("bonus is:%f",10000*0.1+(a-10000)*0.075);
if("20000<a<=40000");
printf("bonus is:%f",10000*0.1+100000.075+(a-20000)*0.005);
if("a>40000");
printf("bonus is:%f",10000*0.1+100000.075+(20000)*0.005+(a-40000)*0.003);

void calender()

int a,b,c,i;
printf("please input the days of monthly calender:");
scanf("%d",&a);
printf("\n");
printf("please input this month the start of the day belongs to the week(1=sunday,2=monday,3=tuesday,4=wednesday,5=thursday,6=friday,7=saturday):");
scanf("%d",&b);
for(c=0;c<b-1;c++)
printf(" ");
for(i=1;i<=9;i++)

printf("%d ",i);
if((i+b-1)%7==0)
printf("\n");

for(i=10;i<=a;i++)

printf("%d ",i);
if((i+b-1)%7==0)
printf("\n");

printf("\n");

void daffodil()

int a,b,c,m,n;
printf("the number of daffodil is:\n");
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)

m=pow(a,3)+pow(b,3)+pow(c,3);
n=a*100+b*10+c;
if(m==n)
printf("%d ",n);

printf("\n");

void value()

int i,n,min=0,max=0;
int b[1]=0;
printf("input number:");
scanf("%d",&n);
printf("\n");
printf("%d numbers is\n",n);

for(i=0;i<=n-1;i++)
scanf("%d",&b[i]);
for(i=0;i<n-1;i++)

if(b[i]<min)
min=b[i];
else if(b[i]>max)
max=b[i];

printf("in the %d numbers,max is %d,min is %d ",n,max,min);

void main()
int i,c;
for(i=0;i<=45;i++)
printf("*");
printf("\n");
printf("main menu:\n1.leters digital conersion\n2.issuing bonus\n3.prints monthly calender\n4.prints daffodil\n5.searching for the value\n6.exit\n");
for(i=0;i<=45;i++)
printf("*");
printf("\n");

do

printf("---please putin the option of main menue ");
scanf("%d",c);
while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5);
if (c==6) break;
else
switch (c)

case 1:leters();
break;
case 2:bonus();
break;
case 3:calender();
break;
case 4:daffodil();
break;
case 5:value();
break;


各位大神帮帮忙好不?scanf("%d",&c);已经修改 看看还有什么问题

参考技术A #include <stdlib.h> #include <string.h> #include <stdio.h> /* //两数比较大小 main() int *p,*g,*t; int a,b; scanf("%d %d",&a,&b); p=&a; g=&b; //比较 if(a>b) t=p; p=g; g=t; printf("%d,%d",*p,*g); main() int *p; int a; a=2; p=&a; printf("%d %d %d %d",*p,p,&a,a); //指针变量作为函数参数 main() void max(int *d,int *x); int *p,*q; int a,b; scanf("%d %d",&a,&b); p=&a; q=&b; max(p,q); void max(int *d,int *x) int temp;//不能声明指针变量 因为指针变量必须指向地址 而temp没有 temp=*d; *d=*x; *x=temp; printf("%d %d",*d,*x); main() void max(int *d,int *x); int *p,*q; int a,b; scanf("%d %d",&a,&b); p=&a; q=&b; max(p,q); void max(int *d,int *x) int *temp;//地址对地址,变量对变量 temp=d; d=x; x=temp; printf("%d %d",*d,*x); //字符串的遍历 main() char a[10]; char *p; printf("请输入一个字符串:\n"); gets(a); p=a; //遍历数组 for(int i=0;i<strlen(a);i++) printf("%c",*p++); //将字符串a赋值为b #define M 100 main() void max(char c[],int n); char a[M],b[M]=0; char *p,*q; printf("请输入一个字符串:\n"); gets(a); p=a; q=b; for(int i=0;i<strlen(a);i++)//循环次数 b[i]=*p; p++; for(i=0;i<strlen(b);i++) printf("%c",*q++); */ //用指针的指针写出字符串的 /* //求一个字符串中的最长子串(串:连续的相同字符构成) //例如: aabbbaacddf 则找出 bbb main() char str[]="aabbbaacddf"; char a[10]=1; int z=0; int i,j; for(i=0;i<strlen(str)-1;i++) for(j=0;j<strlen(str)-i;j++) if(str[j]==str[j+1]) a[z]++; else z++; for(z=0;z<10;z++) printf("%d\n",a[z]); //十进制的转换 main() //二进制 int a[100]; int f; int n,i=0; printf("请输入一个数字:\n"); scanf("%d",&n); while(n!=0) a[i]=n%2; n=n/2; i++; for(f=strlen(a);f>=0;f--) printf("%d\n",a[f]); */ /* main() int n; char a[20]; printf("请输入一个数字:\n"); scanf("%d",&n); itoa(n,a,2); printf("%d的二进制的结果为:%s\n",n,a); itoa(n,a,8); printf("%d的八进制的结果为:%s\n",n,a); itoa(n,a,16); printf("%d的十六进制的结果为:%s\n",n,a); */ /* //将连续的空白字符压缩成一个,’ ‘,’\t’、’\n’ 都作为空格处理 main() char a[50],b[50]; int i,j=0; printf("请输入一个数组:\n"); gets(a); for(i=0;i<strlen(a);i++) if(a[i]==' ' || a[i]==',' || a[i]=='\t' || a[i]=='\n') continue; else b[j]=a[i]; j++; b[j]='\0'; for(j=0;j<strlen(b);j++) printf("%c",b[j]); //拆出邮件地址 原串, ****@**** *有字母、数字、下划线、”.”组成 main() char a[50]; int i; printf("请输入一个邮箱地址:\n"); gets(a); for(i=0;i<strlen(a);i++) if((a[i]>='a' && a[i]<='z') || (a[i]>='0' && a[i]<='9') || a[i]=='@' || a[i]=='_' || (a[i]>='A' && a[i]<='Z') || a[i]=='.') if(a[i]!='@') a[i]='*'; else continue; else printf("你的格式不对,请重新输入...\n"); main(); for(i=0;i<strlen(a);i++) printf("%c",a[i]); main() char a[100],t,b[100]; int i,j,z=0; printf("please input more char:\n"); gets(a); for(i=0;i<strlen(a)-1;i++) for(j=i+1;j<strlen(a);j++) if(a[i]>a[j]) t=a[i]; a[i]=a[j]; a[j]=t; for(i=0;i<strlen(a);i++) printf("%c ",a[i]); printf("\n"); for(i=0;i<strlen(a);i++) if(a[i]!=a[i+1]) b[z]=a[i]; z++; b[z]='\0'; for(z=0;z<strlen(b);z++) printf("%c ",b[z]); getchar(); */ // 对一个二维整型数组,将该数组的所有元素从大到小排序,操作数组只能使用指针 //数组问题 /* //选择排序 main() int a[10],i,j,t; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]) t=a[i]; a[i]=a[j]; a[j]=t; for(i=0;i<10;i++) printf("%4d",a[i]); //冒泡排序 main() int a[10],i,j,t; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) for(j=0;j<10-i;j++) if(a[j]>a[j+1]) t=a[j]; a[j]=a[j+1]; a[j+1]=t; for(i=0;i<10;i++) printf("%4d",a[i]); //快速排序 void QuickSort(int e[], int first, int end) int i=first,j=end,temp=e[first]; while(i<j) while(i<j && e[j]>=temp) j--; e[i]=e[j]; while(i<j && e[i]<=temp) i++; e[j]=e[i]; e[i]=temp; if(first<i-1) QuickSort(e,first,i-1); if(end>i+1) QuickSort(e,i+1,end); void main() int arr[10],i; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&arr[i]); printf("before sort\n"); for(i=0; i<10; i++) printf("%d ", arr[i]); printf("\n"); QuickSort(arr, 0, 9); printf("after sorted\n"); for(i=0; i<10; i++) printf("%d ", arr[i]); printf("\n"); // task3-1.c :使用一个字符数组,采用两个字符指针完成。 main() char a[10], *p,*q; printf("请输入您的字符串:\n"); gets(a); printf("运行前:\n"); for(p=a;*p!='\0';p++) printf("%c",*p); printf("\n"); for(p=a;*p!='\0';p++) if(*p!=' ') *q=*p; q++; *q='\0'; printf("运行后:\n"); printf("%s",q); //1.输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按照字母表顺序输出,不出现的不输出)。 main() char a[26],b[26]=0; int i,j; printf("输入一串字符:\n"); gets(a); for(i=0;i<26;i++) if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')) b[a[i]-'a']++; for(j=0;j<26;j++) if(b[j]!=0) printf("%c->%d\n",(j+'a'),b[j]); */ /* 3. 从键盘上接收一个多至9位整数、2位小数的数值,请将其转换成大写金额,即写成: ×亿×仟×佰×拾×万×仟×佰×拾×元×角×分的形式。例如:当从键盘上输入 374910.56 时,输出结果为: ×亿×仟×佰叁拾柒万肆仟玖佰壹拾零元伍角陆分或: 叁拾柒万肆仟玖佰壹拾零元伍角陆分 4.编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词查找, 例如:输入:Happy new year 最短单词为new,输出new。 */ /* 5.用随机函数产生数据,设计二位整数的加、减、乘算式各一题(减法算式应保证被减数大于减数)。 让学生回答,由计算机给出正确与否的判断,并最后给出总得分。 得分计算方法:算对加、减法各得30分,算对乘法得40分,算错得0分。 然后由计算机输出询问信息,学生选择回答,以决定是否继续一次新的测验。 //求一个函数,输入一个字符串,例如1,5;1,12 //输入回车结束,分号为一组 一个一个接收,如何把12弄在一起,不是1和2分开的 main() int n,a[5],i=0,num=0; printf("请输入一个整数:\n"); scanf("%d",&n); while(a[i]) a[i]=n%10; n=n/10; num+=a[i]; i++; for(a[i]!='\0';i>=0;i--) if(a[i]) printf("位数输出\n—>%d\n",a[i]); printf("和为:\n%d",num); */ #include<stdio.h> #include<math.h> void leters() char a[100]; int i; int n=0; a[0]='0'; printf("input phonenumber,end up with #\n"); while(a[n]!='#') n++; a[n]=getchar(); if(a[n]>='A'&&a[n]<='C') a[n]='2'; if(a[n]>='D'&&a[n]<='F') a[n]='3'; if(a[n]>='G'&&a[n]<='I') a[n]='4'; if(a[n]>='J'&&a[n]<='L') a[n]='5'; if(a[n]>='M'&&a[n]<='O') a[n]='6'; if(a[n]>='P'&&a[n]<='S') a[n]='7'; if(a[n]>='T'&&a[n]<='V') a[n]='8'; if(a[n]>='W'&&a[n]<='Z') a[n]='9'; for(i=1;i<n;i++) printf("%c",a[i]); printf("\n"); void bonus() float a; printf(" please input profits: "); scanf("%f",&a); if(a<=10000) printf("bonus is:%f",a*0.1); if(10000<a && a<=20000) printf("bonus is:%f",10000*0.1+(a-10000)*0.075); if("20000<a && a<=40000") printf("bonus is:%f",10000*0.1+100000.075+(a-20000)*0.005); if("a>40000") printf("bonus is:%f",10000*0.1+100000.075+(20000)*0.005+(a-40000)*0.003); void calender() int a,b,c,i; printf("please input the days of monthly calender:"); scanf("%d",&a); printf("\n"); printf("please input this month the start of the day belongs to the week(1=sunday,2=monday,3=tuesday,4=wednesday,5=thursday,6=friday,7=saturday):"); scanf("%d",&b); for(c=0;c<b-1;c++) printf(" "); for(i=1;i<=9;i++) printf("%d ",i); if((i+b-1)%7==0) printf("\n"); for(i=10;i<=a;i++) printf("%d ",i); if((i+b-1)%7==0) printf("\n"); printf("\n"); void daffodil() double a,b,c,m,n; printf("the number of daffodil is:\n"); for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) m=pow(a,3)+pow(b,3)+pow(c,3); n=a*100+b*10+c; if(m==n) printf("%d ",n); printf("\n"); void value() int i,n,min=0,max=0; int b[1]=0; printf("input number:"); scanf("%d",&n); printf("\n"); printf("%d numbers is\n",n); for(i=0;i<=n-1;i++) scanf("%d",&b[i]); for(i=0;i<n-1;i++) if(b[i]<min) min=b[i]; else if(b[i]>max) max=b[i]; printf("in the %d numbers,max is %d,min is %d ",n,max,min); void main() int i,c; for(i=0;i<=45;i++) printf("*"); printf("\n"); printf("main menu:\n1.leters digital conersion\n2.issuing bonus\n3.prints monthly calender\n4.prints daffodil\n5.searching for the value\n6.exit\n"); for(i=0;i<=45;i++) printf("*"); printf("\n"); do printf("---please putin the option of main menue "); scanf("%d",&c); while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5); switch (c!=6) case 1:leters(); break; case 2:bonus(); break; case 3:calender(); break; case 4:daffodil(); break; case 5:value(); break; 只要是自己写的 都能出来吧 参考技术B if(10000<a<=20000)

scanf("%d",c);

这两个地方不对,其它可能还有,不会是才学吧追问

才把函数学完

参考技术C #include<stdio.h>
void leters()

char a[100];
int i;
int n=0;
a[0]='0';
printf("input phonenumber,end up with #\n");
while(a[n]!='#')

n++;
a[n]=getchar();
if(a[n]>='A'&&a[n]<='C')
a[n]='2';
if(a[n]>='D'&&a[n]<='F')
a[n]='3';
if(a[n]>='G'&&a[n]<='I')
a[n]='4';
if(a[n]>='J'&&a[n]<='L')
a[n]='5';
if(a[n]>='M'&&a[n]<='O')
a[n]='6';
if(a[n]>='P'&&a[n]<='S')
a[n]='7';
if(a[n]>='T'&&a[n]<='V')
a[n]='8';
if(a[n]>='W'&&a[n]<='Z')
a[n]='9';


for(i=1;i<n;i++)
printf("%c",a[i]);
printf("\n");


void bonus()

float a;
printf(" please input profits: ");
scanf("%f",&a);
if(a<=10000)
printf("bonus is:%f",a*0.1);
if(a>10000&&a<=20000)
printf("bonus is:%f",10000*0.1+(a-10000)*0.075);
if(a>20000&&a<40000)
printf("bonus is:%f",10000*0.1+100000.075+(a-20000)*0.005);
if("a>40000")
printf("bonus is:%f",10000*0.1+100000.075+(20000)*0.005+(a-40000)*0.003);

void calender()

int a,b,c,i;
printf("please input the days of monthly calender:");
scanf("%d",&a);
printf("\n");
printf("please input this month the start of the day belongs to the week(1=sunday,2=monday,3=tuesday,4=wednesday,5=thursday,6=friday,7=saturday):");
scanf("%d",&b);
for(c=0;c<b-1;c++)
printf(" ");
for(i=1;i<=9;i++)

printf("%d ",i);
if((i+b-1)%7==0)
printf("\n");

for(i=10;i<=a;i++)

printf("%d ",i);
if((i+b-1)%7==0)
printf("\n");

printf("\n");

void daffodil()

int a,b,c,m,n;
printf("the number of daffodil is:\n");
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)

m=a*a*a+b*b*b+c*c*c;
n=a*100+b*10+c;
if(m==n)
printf("%d ",n);

printf("\n");

void value()

int i,n,min=0,max=0;
int b[1]=0;
printf("input number:");
scanf("%d",&n);
printf("\n");
printf("%d numbers is\n",n);

for(i=0;i<=n-1;i++)
scanf("%d",&b[i]);
for(i=0;i<n-1;i++)

if(b[i]<min)
min=b[i];
else if(b[i]>max)
max=b[i];

printf("in the %d numbers,max is %d,min is %d ",n,max,min);

void main()
int i,c;
for(i=0;i<=45;i++)
printf("*");
printf("\n");
printf("main menu:\n1.leters digital conersion\n2.issuing bonus\n3.prints monthly calender\n4.prints daffodil\n5.searching for the value\n6.exit\n");
for(i=0;i<=45;i++)
printf("*");
printf("\n");

do

printf("---please putin the option of main menue ");
scanf("%d",&c);
while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5&&c!=6);
if(c==6)
return;
else
switch (c)

case 1:leters();
break;
case 2:bonus();
break;
case 3:calender();
break;
case 4:daffodil();
break;
case 5:value();
break;

本回答被提问者采纳

以上是关于C语言,韩信点兵编程,看看我的错在哪?的主要内容,如果未能解决你的问题,请参考以下文章

c语言问题帮忙调试程序,看看下面程序错在哪儿?

51单片机,keil 软件 C语言问题(我错在哪了)

C语言编程:韩信点兵问题拜托各位了 3Q

c语言韩信点兵

C语言编译出现错误,请问错在哪? #include <stdio.h> int main()

c语言编程序:韩信点兵,韩信有一队伍,你想知道有多少人,就让士兵报数,按从1至5报数,最末一个士兵报的