20230709

1.杨辉三角
 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,j;
	int arr[6][11];

	for(i=0;i<6;i++)
	{
		for(j=0;j<11;j++)
		{
			if((j<=5 && i+j==5) || (j>=6 && j-i==5))
			{
				arr[i][j] = 1;
			}
			else if(j<=5 && (i+j==10))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==8))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==6))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==4))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==3))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==2))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==1))
			{
				arr[i][j] = 0;
			}
			else if(j<=5 && (i+j==0))
			{
				arr[i][j] = 0;
			}
			

			else if(j>=6 && (j-i==10))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==9))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==8))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==7))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==6))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==4))
			{
				arr[i][j] = 0;
			}
			else if(j>=6 && (j-i==2))
			{
				arr[i][j] = 0;
			}


			else
			{
				arr[i][j] = arr[i-1][j-1] + arr[i-1][j+1];
			}
		}
	}

	for(i=0;i<6;i++)
	{
		for(j=0;j<11;j++)
		{
			if(arr[i][j] == 0)
			{
				printf("%c",32);
				printf("%c",32);
			}
			else
			{
				printf("%-2d",arr[i][j]);
			}
		}

	printf("\n");
	}

	return 0;
}

 2,图形打印

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 8
int main(int argc, const char *argv[])
{
	int i,j;
	int a[4][4] = {0};
	int b[4][4] = {0};

	for(i=0;i<4;i++)
	{
			for(j=0;j<=i;j++)
		{
				a[i][j] = 65 + i;
		}
	}
	for(i=0;i<4;i++)
	{
			for(j=0;j<4;j++)
		{
				b[i][j] = 68 - i;
		}
	}

	for(i=0;i<4;i++)
	{
			for(j=0;j<=i;j++)
		{
			printf("%c",a[i][j]);
		}
	printf("\n");
	}

	printf("\n");

	for(i=0;i<4;i++)
	{
		for(j=0;j<4-i;j++)
		{
			printf("%c",b[i][j]);
		}
	printf("\n");
	}

return 0;
}

 3.穷举算法

日本某地发生了一件谋杀案,警察通过排查确定茶人凶手必定4个中的一个 以下为4个嫌疑犯的供词 A说:罪犯是他们3人当中 B说:人不是我杀的,是C C说:A和D之间有一个是罪犯 D说:B说的是事实 已知2个人说了真话,2个人说了假话 请编程确定谁是凶手

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char kill  = 0;
	for(kill='A';kill<='D';kill++)
	{
			if(((kill!='A') && (kill =='B'|| kill=='C'|| kill=='D'))+(kill!='B'&& kill=='C')+((kill!='C') && (kill=='A'|| kill=='D'))+(kill!='D' && kill!='B' && kill=='C') == 2)
			{
				printf("kill is %c finish him off %c\n !",kill,kill);
			}
			
	}
	return 0;
}

 4.

给定一个整数,判断它是否被3、5、7整除,并输出一下信息 1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格) 2.只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如3 5 或者 3 7 或者5 7,中间使用空格隔开) 3. 只能被其中一个整数整除(输出这个除数) 4.不能被任何数整除,输出小写字母n 案例如下: 输入:105 输出:3 5 7

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a;
	printf("给定一个整数:");
	scanf("%d",&a);
	int e,f,g;
	
	if(a%3==0 && a%5==0 && a%7==0)
	{
		e = a/3;
		f = a/5;
		g = a/7;
		printf("同时被3,5,7整除\n");
		printf("%d %d %d\n",e,f,g);
	}
	else if((a%3==0&&a%5==0) || (a%3==0&&a%7==0) || (a%5==0&&a%7==0))
	{
		if(a%3==0&&a%5==0)
		{
			e = a/3;
			f = a/5;
			printf("被3,5整除\n");
			printf("%d %d\n",e,f);
		}
		if(a%3==0&&a%7==0)
		{
			e = a/3;
			f = a/7;
			printf("被3,7整除\n");
			printf("%d %d\n",e,f);
		}
		if(a%5==0&&a%7==0)
		{
			e = a/5;
			f = a/7;
			printf("被5,7整除\n");
			printf("%d %d\n",e,f);
		}
	}
	else if(a%3==0 || a%5==0 || a%7==0)
	{
		if(a%3==0)
		{
			e = a/3;
			printf("被3整除\n");
			printf("%d\n",e);
		}
		if(a%5==0)
		{
			e = a/5;
			printf("被5整除\n");
			printf("%d\n",e);
		}
		if(a%7==0)
		{
			e = a/7;
			printf("被7整除\n");
			printf("%d\n",e);
		}
	}
	else
	{
		printf("不能被3,5,7整除\n");
		printf("n");
	}

	return 0;
}

 5.字符串单词逆置

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


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

	char str[101] = "abcd efgh";
	int len = strlen(str);
	printf("len = %d\n",len);
	int i,j;
	char last;
	for(i=0;i<len/2;i++)
	{
		last = str[len-i-1];
		str[len-i-1] = str[i];
		str[i] = last;
	}
	printf("%s\n",str);
	int k;
	i=0,j=0;
	char s;
	while(str[i] != '\0')
	{
		while(str[j] != ' ' ||  str[i] != '\0')
		{
			k = j-1;//确定空格段j的前一个位置k
			for(;i<k;i++,k--)//循环i=0 到 k的字符交互替换
			{
			  s = str[k];
			  str[k] = str[i];
			  str[i] = s;
			}
			j++;
			i = j + 1;//用于下一段寻找空格的循环 的循环段开头的确定
		}
		j++;
	}

	printf("%s\n",str);
	


	return 0;
}

 6.实现atoi函数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	//atoi函数
	char s[] = "123456789ABCD";
	//int a = atoi(s);
	//printf("%d\n",a);//合法数字后ABCD被忽略,输出1234
	
	int i=0,j=0;
	char s1[100];
	while(s[i] != '\0')
	{
		while(s[i]>=48 && s[i] <= 57 )
		{
			s1[i] = s[i];
			i++;
			j=i;
		}
		i++;
	}
	i++;
	s1[j] = '\0';
	printf("s1 = %s\n",s1);
	return 0;
}

 7.输入一个字符串,删除字符串中的空格

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char str[]="l love you";
	char str1[40];
	int i=0,j=0;

	while(str[i]!='\0')
	{
		if(str[i]!=' ')
		{
			str1[j] = str[i];
			j++;
		}




		i++;
	}
	str1[j]=0;
	printf("%s\n",str1);
	return 0;
}

 8.四个字符串函数,非函数实现

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	//strleni
	printf("-------------------------------------\n");
	printf("strlen s[]=ABCD \n");
	char s[] = "ABCD";
	int i=0,j=0;
	int count = 0;
	for(i=0;s[i]!= '\0';i++)
	{
		count = count + 1;
	}
	printf("ABCD字符串长度为: %d\n",count);
	printf("-------------------------------------\n");
	//strcpy(s1,s1)
	printf("strcpy(s1,s2)\n");
	char s1[20] = "ABCD";
	char s2[] = "abcdefg";
	printf("copy前s1=%s\n",s1);
	printf("copy前s2=%s\n",s2);
	for(i=0;s2[i] != '\0';i++)
	{
		s1[i] = s2[i];
	}
	printf("strcpy(s1,s2)的结果为: %s\n",s1);
	printf("-------------------------------------\n");
	//strcat
	printf("strcat(s3,s4)\n");
	char s3[20] = "www.";
	char s4[] = "4399.com!";
	printf("链接前s3=%s\n",s3);
	printf("链接前s4=%s\n",s4);
	for(i=0;s3[i]!='\0';i++)
	{
	}
	printf("i=%d\n",i);
	while(s4[j] != '\0')
	{
		s3[i] = s4[j];
		j++;
		i++;
	}
	s3[i] = '\0';	
	printf("strcat(s3,s4)=%s\n",s3);
	printf("-------------------------------------\n");
	//strcmp
	printf("strcmp(s5,s6)\n");
	char s5[] = "ABCDEF";
	char s6[] = "ABCdEF";
	printf("s5=%s\n",s5);
	printf("s6=%s\n",s6);
	while(s5[i] == s6[j])
	{
		if(s5[i] == s6[j] == '\0')
		{
			break;
		}
		i++;
		j++;
	}
	if(s5[i] > s6[j])
	{
		printf("s5 > s6\n");
	}
	else if(s5[i] < s6[j])
	{
		printf("s5 < s6\n");
	}
	else
	{
		printf("s5 = s6\n");
	}

	printf("-------------------------------------\n");

	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值