C语言编程

Python019

C语言编程,第1张

最简单的就是用枚举法,甲、乙、丙、丁、戊就是五个变量,a、b、c、d、e就是五个值。可以假设a 、b、c、d、e为1,2,3,4,5;然后就是甲不等于1,乙不等于2,丙不等于3,同时五个值互不相等,满足条件的就是一种分法,代码如下:

#include <stdio.h>

int main(int argc, char const *argv[])

{

int a

int b

int c

int d

int e

int count = 0

for (a = 1a <6++a)

{

for (b = 1b <6++b)

{

for (c = 1c <6++c)

{

for (d = 1d <6++d)

{

for (e = 1e <6++e)

{

if ((a!=1)&&(b!=2)&&(c!=3)&&(a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(b!=c)&&(b!=d)&&(b!=e)&&(c!=d)&&(c!=e)&&(d!=e))

{

count++

printf("[%d] a = %d,b = %d,c = %d,d = %d,e = %d\n",count,a,b,c,d,e)

}

}

}

}

}

}

return 0

}

输出:DEF

strcpy(string1,string2)

//这一句的作用是将strinng2的值拷贝到string1的存储空间中,所以这一句执行后,string1为"ABCDEF"

printf("%s\n",string1+3)

//%s这个格式控制符的作用是,输出以string1+3为首地址,'\0'为终止的字符串,

string1+3为以string1为首地址偏移3个单位的地址,也就是字符'D'的地址,

所以输出的是以字符'D'的地址为首地址,'\0'为终止的字符串

所以输出:DEF

#include <stdio.h>//包含基本输入输出头文件

#define N 13 //宏定义13为N(N就是数字13)

struct { int n: /* 一轮内滚球次数 */

int f/* 第一轮击倒柱数 */

int s/* 第二次击倒柱数 */

int score/* 本轮得分 */

int total/* 至本轮累计总分 */

int m/* 完成本轮得分计算, 还需要滚球次数 */

} s[N]//结构体

int ok = 0/* 已完成完整计算的轮次数 */

int ball(int i, int n, int max) /* 完成一次滚//定义函数球, 输入正确击倒柱数 */

{ if (i<= 10) //如果 i小于等于 10

printf("输入第%d轮的第%d次滚球击倒柱数"), (<=%d)//输出\n",i,n,max)

else //否则

printf("输入附加的第%d次滚球击倒柱数"),(<=%d)//输出\n",c++,max)

scanf("%d", &d)获得输入

if (d>=0 &&d<=max) break如果 d大于等于0并且d小于等于max 中断

printf("不合理的击倒柱数, 请重新输入, \n")//输出

}

if ( OK<c-1) 如果ok小于 c-1

{ /* 对以前未完成计算的轮次分别计算得分与累计总分 */

for (j = ok+1j<i/j<=i-1j++) j初始化为ok+1 每次循环加一,当j小于...错误

{a[j].scre+=da[j].scre=a[j].scre+d

if (--a[j].m==0) [j].m 减1 如果[j].m等于0

那么

{//错误

a[j]. total = (j>i?a[j-1].total(:0/)j==1?0a[j-1].total)+a[j].scoreok=j/ok+1}

a[j]. total =

}

}

return d返回d

}

main0

{int i,/*轮次 */ first.second k

for(i=1ok<10i++)

{ /*处理第一次滚球 */

a[i].score = a[i].f=first = ball(i,1,10)

if (first==10) a[i].m=2

a[i].n=1

if (first<10 &&(i <=10 || i==11 &&ok<10))

{ /*处理第二次滚球 */

a[i].score+=a[i]. s=score=ball(i,2,10-first)

if(first+second==10) a[i].m=1

a[i].n++/a[i].n=a[i].n+1/a[i].n=2 //错误

}

if (i <=10 &&first <10 &&first+second <10)

{ a[i].total = (i>1 ? a[i-1].total:0)+a[i].score

ok=1

}

printf("各轮第一次得分")

for(k=1k<=ik++) printf("%5d",a[k].f)

printf("\n各轮第二次得分")

for(k=1k<= ik++)

if (a[k].n<2) printf(" /")else printf("%5d", a[k].s)

printf("\n 各轮得分 ")

for (k=1k<= okk++) printf("%5d", a[k].score)

printf("\n 累计总分 ")

for(k=1k <= okk++) printf("%5d", a[k].total)

printf("\n\n")

}

}