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;
}