#include<stdio.h>
//static int j;
//void fun1(void)
//{
// static int i = 0;
// i++;
// printf("i=%d", i);
//
//}
//
//void fun2(void)
//{
// j = 0;
// j++;
// printf("j=%d", j);
// printf("\n");
//}
//int main()
//{
// for (int k = 0; k < 10; k++)
// {
// fun1();
// fun2();
// }
// getchar();
// return 0;
//}
//int b[100];
//void fun(int b[100])
//{
//
//}
//int main()
//{
// int* p = NULL;
// printf("sizeof(p)=%d\n", sizeof(p));
// printf("sizof(*P)=%d\n", sizeof(*p));
// int a[100];
// printf("sizof(a)=%d\n", sizeof(a));
// printf("sizof(a[100])=%d\n", sizeof(a[100]));
// printf("sizof(&a)=%d\n", sizeof(&a));
// printf("sizof(&a[0])=%d\n", sizeof(&a[0]));
// printf("sizof(b)=%d\n", sizeof(b));
// getchar();
// return 0;
//}
//int main()
//{
// char a[1000];
// int i;
// for (i = 0; i<1000; i++)
// {
// a[i] = -1 - i;
// }
// printf("%d", strlen(a));
// getchar();
// return 0;
//
//}
//
//fun()
//{
// return 1;
//}
//
//main()
//{
// printf("%d", fun(2));
// getchar();//结果为1
//
//}
//8银币,求假币
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void compare(int[], int, int, int);
void eightcoins(int[]);
int main(void)
{
int coins[8] = { 0 };
int i;
srand(time(NULL));
for (i = 0; i < 8; i++)
coins[i] = 10;
printf("\n输入假币重量(比十大或小):");
scanf("%d", &i);
coins[rand() % 8] = i;
eightcoins(coins);
printf("\n\n列出所有银币重量:");
for (i = 0; i < 8; i++)
printf("%d", coins[i]);
printf("\n");
getchar();
return 0;
}
void compare(int coins[], int i, int j, int k)
{
if (coins[i]>coins[k])
printf("\n假币%d较重", i + 1);
else
printf("\n假币%d较轻", j + 1);
}
void eightcoins(int coins[])
{
if (coins[0] + coins[1] + coins[2] == coins[3] + coins[4] + coins[5])
{
if (coins[6] > coins[7])
compare(coins, 6, 7, 0);
else
compare(coins, 7, 6, 0);
}
else if (coins[0] + coins[1] + coins[2] > coins[3] + coins[4] + coins[5])
{
if (coins[0] + coins[3] == coins[1] + coins[4])
compare(coins, 2, 5, 0);
else if (coins[0] + coins[3] > coins[1] + coins[4])
compare(coins, 0, 4, 1);
if (coins[0] + coins[3] < coins[1] + coins[4])
compare(coins, 1, 3, 0);
}
else if (coins[0] + coins[1] + coins[2] < coins[3] + coins[4] + coins[5])
{
if(coins[0] + coins[3] == coins[1] + coins[4])
compare(coins, 5, 2, 0);
else if (coins[0] + coins[3] > coins[1] + coins[4])
compare(coins, 3, 1, 0);
if (coins[0] + coins[3] < coins[1] + coins[4])
compare(coins, 4, 0, 1);
}
}
//生命游戏
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define MAXROW 10
#define MAXCOL 25
#define DEAD 0
#define ALIVE 1
int map[MAXROW][MAXCOL];
int newmap[MAXROW][MAXCOL];
int row, col;
void init();
int neighbors(int, int);
void outputMap();
void copyMap();
int main()
{
char ans;
init();
while(1)
{
outputMap();
for (row = 0; row < MAXROW; row++)
{
for (col = 0; col < MAXCOL; col++)
{
switch (neighbors(row,col))
{
case 0:
case 1:
case 4:
case 5:
case 6:
case 7:
case 8:
newmap[row][col] = DEAD;
case 2:
newmap[row][col] = map[row][col];
break;
case 3:
newmap[row][col] = ALIVE;
break;
}
}
}
copyMap();
printf("\nContinue next Generation ?");
getchar();
ans = toupper(getchar());
if (ans != 'Y');
}
return 0;
}
void init()
{
for (row = 0; row < MAXROW;row++)
for (col = 0; col < MAXCOL; col++)
map[row][col] = DEAD;
puts("Game of life Program");
puts("Enter x,y where x,y is living cell");
printf("0<=x<=%d,0<=y<=%d\n", MAXROW - 1, MAXCOL - 1);
puts("Terminate with x,y=-1,-1");
while (1){
scanf("%d%d", &row, &col);
if (0 <= row&&row<MAXROW &&
0 <= col&&col<MAXCOL)
map[row][col] = ALIVE;
else if(row == -1 || col == -1)
break;
else
printf("(x,y)exceedsmapranage!");
}
}
intneighbors(introw, intcol)
{
int count = 0, c, r;
for (r = row - 1; r <= row + 1; r++)
for (c = col - 1; c <= col + 1; c++){
if (r<0 || r >= MAXROW || c<0 || c >= MAXCOL)
continue;
if (map[r][c] == ALIVE)
count++;
}
if (map[row][col] == ALIVE)
count--;
return count;
}
void outputMap(){
printf("\n\n%20cGame of life cell status\n");
for (row = 0; row< MAXROW; row++){
printf("\n%20c", ' ');
for (col = 0; col < MAXCOL; col++)
if (map[row][col] == ALIVE) putchar('#');
else putchar('-');
}
}
void copyMap(){
int row, col;
for (row = 0; row< MAXROW; row++)
for (col = 0; col < MAXCOL; col++)
map[row][col] = newmap[row][col];
}
//设计一个采用块链结构的简化文本程序,程序简化为只可对一行进行操作,要求具有行输入,整行删除,文本显示和退出四项功能
#include<stdio.h>
#include<stdlib.h>
#define MAX 100 //最大的行数
typedef struct node
{
char Data[80];
struct node *Next;
}nodetype; //节点类型
typedef struct head
{
int Num; //行号
int Len; //改行字符的个数
nodetype *Next;
}headtype; //头结点类型
headtype Head[MAX];
void Initial();//初始化各行头结点
int MenuSelect();//菜单选择函数
void EnterData();//输入数据函数
void DeleteLine();//整行删除函数
void List();//显示各行数据函数
void ClearBuffer();//清空缓存函数,与scanf配合使用
main()
{
char choice;//存放用户输入的选择参数
Initial(); //初始化各行的头结点
while (1)
{
choice = MenuSelect();
switch (choice)
{
case 1:
EnterData(); //输入数据
break;
case 2:
DeleteLine();//整行删除
break;
case 3:
List();//显示各行数据
break;
case 4:
exit(0);//退出
}
}
}
void ClearBuffer()
{
while (getchar() != '\n');
}
void Initial()
{
int i;
for (i = 0; i < MAX; i++)
{
Head[i].Len = 0; //各行头结点长度参数置为零
}
}
int MenuSelect()
{
int i;
i = 0;
printf("1.Enter\n");
printf("2.Delete\n");
printf("3.List\n");
printf("4.Exit\n");
while (i <= 0 || i > 4)
{
printf("请输入菜单选择号\n");
scanf("%d", &i);
ClearBuffer();
}
return (i);
}
void EnterData()
{
nodetype* p, *find();
int i, j, m, LineNumber, k;
char StrBuffer[100];
while (1)
{
printf("输入数据要插入的行号(0~100):\n");
scanf("%d", &LineNumber);
ClearBuffer();
//输入参数不在0-100之间,跳出整个循环
if (LineNumber < 0 || LineNumber >= MAX)
return;
printf("请输入要插入的数据,以@作为结束符号\n");
i = LineNumber; //头结点赋值
Head[i].Num = LineNumber;
Head[i].Next = (nodetype*)malloc(sizeof(nodetype));
p = Head[i].Next;
m = 1;
j = -1;
StrBuffer[0] = 0;
k = 0;
do
{
j++;
if (!StrBuffer[k])
{
scanf("%s", StrBuffer);//输入字符串,最后数据肯定为0
k = 0;
}
if (j >= 80 * m)
{
m++;
p->Next = (nodetype*)malloc(sizeof(nodetype));
p = p->Next;
}
p->Data[j % 80] = StrBuffer[k++];// 给节点数据域赋值
} while (p->Data[j % 80] != '@'); //当输入符号@是,跳出循环
Head[i].Len = j;
}
}
void DeleteLine()
{
nodetype *p, *q;
int i, j, m, LineNumber;
while (1)
{
printf("请输入要删除的行号(0-100):\n");
scanf("%d", &LineNumber);
if (LineNumber < 0 || LineNumber >= MAX)
return;
i = LineNumber;
p = Head[i].Next;
m = 0; //当前节点序号
if (Head[i].Len>0)
{
m = (Head[i].Len - 1) / 80 + 1; //查找该行用到几个链表节点
}
for (j = 0; j < m; j++)
{
q = p->Next;
free(p);
p = q;
}
Head[i].Len = 0; //头指针赋值为0,表明本行为空
Head[i].Num = 0;
}
}
void List()
{
nodetype *p;
int i, j, m, n;
for (i = 0; i < MAX; i++)
{
if (Head[i].Len>0) //本行不为空
{
printf("第%d行有数据,他们是:\n", Head[i].Num);
n = Head[i].Len;
m = 1;
p = Head[i].Next;
for (j = 0; j < n; j++) //遍历本行,查找到数据在哪个节点
if (j >= 80 * m)
{
p = p->Next;
m++;
}
else
printf("%c", p->Data[j % 80]); //以此打印出来
printf("\n");
}
}
printf("\n");
}
//字符串倒序
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="abcdef";
int x=strlen(str);
char strtemp[100]={0};
for(char *p=str;*p !='\0';p++);
int i= 0;
while(i<strlen(str))
{
strtemp[i++]=*(--p);
}
printf("%s\n",strtemp);
getchar();
return 0;
}
代码3
最新推荐文章于 2021-03-12 01:17:05 发布
