题目一
杨辉三角
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int n;
printf("请输入杨辉三角层数:");
scanf("%d",&n);
int arr[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
arr[i][j]=1;
if(j!=0&&i!=j)
{
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
}
for(int i=0;i<n;i++)
{
for(int j=n;j>i+1;j--)
{
printf("%-2c",' ');
}
for(int j=0;j<=i;j++)
{
printf("%-3d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
题目二
图形打印
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char a='A',d='D';
for(int i=0;i<4;i++)
{
for(int j=0;j<=i;j++)
{
printf("%c",a+i);
}
printf("\n");
}
printf("\n");
for(int i=0;i<4;i++)
{
for(int j=4;j>i;j--)
{
printf("%c",d-i);
}
printf("\n");
}
printf("\n");
return 0;
}
题目三
穷举算法
日本某地发生了一件谋杀案,警察通过排查确定茶人凶手必定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 killer;
for(killer='A';killer<='D';killer++)
{
if(((killer!='A')+(killer!='B'&&killer=='C')+(killer=='A'||killer=='D')+(killer!='B'&&killer=='C'))==2)
printf("杀手是%c\n",killer);
}
return 0;
}
题目四
给定一个整数,判断它是否被3、5、7整除,并输出一下信息
1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格)
2.只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如3 5 或者 3 7 或者5 7,中间使用空格隔开)
3. 只能被其中一个整数整除(输出这个除数)
4.不能被任何数整除,输出小写字母n
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a[3]={3,5,7};
int n,count=0;
printf("请输入一个判断是否被3/5/7整除的数:");
scanf("%d",&n);
for(int i=0;i<3;i++)
{
if(n%a[i]==0)
printf("%d ",a[i]);
else
count++;
}
if(count==3)
printf("n\n");
else
printf("\n");
return 0;
}
题目五
字符串单词逆置
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[]="good good study";
int i=0;
int j=strlen(str)-1;
while(i<j)
{
char t;
t=str[i];str[i]=str[j];str[j]=t;
i++;
j--;
}
i=0;
j=0;
while(str[i])
{
while(str[j]!=' ' && str[j]!='\0')
{
j++;
}
int k=j-1;
while(i<k)
{
char t;
t=str[i];str[i]=str[k];str[k]=t;
i++;
k--;
}
while(str[j]==' ')
{
j++;
}
i=j;
}
puts(str);
return 0;
}
题目六
实现atoi函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
char str[]="1234";
int i=0,sum=0;
while(str[i])
{
int n;
n=str[i]-'0';
sum=sum*10+n;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
题目七
输入一个字符串,删除字符串中的空格
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//char s[]="this is my class";
char s[100];
gets(s);
int i,j;
for(i=0,j=0;s[i];i++)
{
if(s[i]!=' ')
{
s[j++]=s[i];
}
}
s[j]='\0';
puts(s);
return 0;
}
题目八
四个字符串函数,非函数实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//strlen
char str1[20]="24124dfsefh";
int count=0;
int i,j;
for(i=0;str1[i];i++)
count++;
printf("str1=%s\n",str1);
printf("strlen=%d\n",count);
printf("\n");
//strcpy
char str2[10]="23152";
char str3[10]="abcd";
printf("str2=%s\nstr3=%s\n",str2,str3);
for(i=0;str3[i];i++)
{
str2[i]=str3[i];
}
str2[i]='\0';
puts(str2);
printf("\n");
//strcat
char str4[50]="123456";
char str5[10]="abcdefg";
printf("str4=%s\nstr5=%s\n",str4,str5);
for(i=0;str4[i];i++);
for(j=0;str5[j];j++)
{
str4[i+j]=str5[j];
}
puts(str4);
printf("\n");
//strcmp
char s1[10]="abcd";
char s2[10]="abCd";
printf("s1=%s\ns2=%s\n",s1,s2);
for(i=0;s1[i]==s2[i];i++);
if(s1[i]>s2[i])
printf("si>s2\n");
else if(s1[i]<s2[i])
printf("s1<s2\n");
else
printf("s1=s2\n");
printf("\n");
return 0;
}
思维导图