1、打印杨辉三角
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int m;
printf("please enter a value:");
scanf("%d",&m);
int arr[m][m];
for(int i=0;i<m;i++)
{
for(int j=0;j<m-i;j++)
printf(" ");
for(int j=0;j<=i;j++)
{
if(j==0||i==j)
arr[i][j]=1;
else
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
printf("%4d",arr[i][j]);
}
putchar(10);
}
return 0;
}
【输入样例】
please enter a value:6
【输出样例】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
2、 图形打印
A
BB
CCC
DDDD
DDDD
CCC
BB
A
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
for(int i='A';i<='D';i++)
{
for(int j='A';j<=i;j++)
printf("%c",i);
putchar(10);
}
putchar(10);
for(int i='D';i>='A';i--)
{
for(int j='D';j>='D'-i+65;j--)
printf("%c",i);
putchar(10);
}
return 0;
}
【输出样例】
A
BB
CCC
DDDD
DDDD
CCC
BB
A
3、日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必定4个中的一个,以下为4个嫌疑犯的供词:
A说:罪犯是他们3人当中
B说:人不是我杀的,是c
C说:A和D之间有一个是罪犯
D说:B说的是事实
己知2个人说了真话,2个人说了假话,请编程确定谁是凶手
#include<stdio.h>
int main(int argc, const char *argv[])
{
char x;
for(x='A';x<='D';x++)
{
if(((x=='B'||x=='C'||x=='D')+(x=='C')+(x=='A'||x=='D')+(x=='C'))==2)
{
printf("凶手是%c\n",x);
}
}
return 0;
}
【输出样例】
凶手是D
4、给定一个整数,判断它是否被3、5、7整除,并输出一下信息
1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格)
2.只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如35或者37或者5 7,中间使用空格隔开)
3.只能被其中一个整数整除(输出这个除数)
4.不能被任何数整除,输出小写字母n
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
int num;
printf("please enter a value:");
scanf("%d",&num);
if(num%3==0)
printf("3 ");
if(num%5==0)
printf("5 ");
if(num%7==0)
printf("7 ");
if(num%3!=0&&num%5!=0&&num%7!=0)
printf("n");
putchar(10);
return 0;
}
【输入样例】
105
【输出样例】
3 5 7
5、字符串逆置
“good good study”
“study good good”
#include <stdio.h>
#include <string.h>
void strrev(char *p,char *q)
{
while(p<q)
{
char t=*p;*p=*q;*q=t;
p++;q--;
}
}
int main(int argc, const char *argv[])
{
char str[]="good good study";
char *p=str;
char *q=str+strlen(str)-1;
strrev(p,q);
p=q=str;
while(*p!='\0')
{
while(*q!=' '&&*q!='\0')
q++;
char *k=q-1;
strrev(p,k);
while(*q==' ')
q++;
p=q;
}
puts(str);
return 0;
}
【输出样例】
"study good good"
6、实现atoi函数
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str[]="1234";
int i=0,sum=0;
while(str[i])
{
int n=str[i]-'0';
sum=sum*10+n;
i++;
}
printf("%d\n",sum);
return 0;
}
【输出样例】
1234
7、输入一个字符串,删除字符串中的空格
“this is my class”
“thisismyclass”
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
char str1[]="this is my class";
char str2[20];
int k=0;
for(int i=0;str1[i]!='\0';i++)
if(str1[i]!=' ')
str2[k++]=str1[i];
str2[k]=0;
puts(str2);
return 0;
}
【输出样例】
thisismyclass
8、自定义封装字符串函数,strcmp,strcpy,strlen,strcat
#include <stdio.h>
#include <string.h>
long MyStrlen(char str[]);
int MyStrcmp(char str1[],char str2[]);
void MyStrcpy(char str1[],char str2[]);
void MyStrcat(char str1[],char str2[]);
int main(int argc, const char *argv[])
{
char str1[20]="abcd";
char str2[]="qwer";
long len=MyStrlen(str1); //调用MyStrlen函数,计算str1的字符串长度,赋值给len
printf("str1的字符串长度是%ld\n",len);
int num=MyStrcmp(str1,str2); //调用MyStrcmp函数,将返回值赋值给num
if(num>0)printf("str1>str2");
else if(num<0)printf("str1<str2");
else printf("str1=str2");
putchar(10);
MyStrcat(str1,str2); //调用MyStrcat函数,将str2连接到str1后面
printf("str1=%s\n",str1);
MyStrcpy(str1,str2); //调用MyStrcpy函数,将str2复制给str1
printf("str1=%s\n",str1);
return 0;
}
long MyStrlen(char str[])
{
int count=0,i=0;
while(str[i])
{
count++;
i++;
}
return count;
}
int MyStrcmp(char str1[],char str2[])
{
int i=0;
while(str1[i]==str2[i])
{
if(str1[i]!='\0')
break;
else
i++;
}
return str1[i]-str2[i];
}
void MyStrcpy(char str1[],char str2[])
{
int i=0;
while(str2[i])
{
str1[i]=str2[i];
i++;
}
str1[i]='\0';
}
void MyStrcat(char str1[],char str2[])
{
int i=0,j=0;
for(i=0;str1[i];i++);
while(str2[j])
str1[i++]=str2[j++];
str1[i]='\0';
}
【输出样例】
str1的字符串长度是4
str1<str2
str1=abcdqwer
str1=qwer