1、求范围内质数(素数)的个数;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Panduan(int num){
int count=0;
int num1;
for(int i=num;i>=2;i--){
count=0;
for(int j=1;j<=num;j++){
if(i%j==0){
count++;
}
}
if(count==2)
num1++;
}
return num1;
}
int main(int argc,const char *argv[])
{
int num;
printf("请输入素数范围最大值");
scanf("%d",&num);
int count=Panduan(num);
printf("范围内素数个数为%d\n",count);
return 0;
}
输出为:
2、求范围内完数的和;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Wanshu(int num){
int count=0,sum=1;
for(int i=2;i<=num;i++){
sum=1;
for(int j=2;j<=i/2;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
count+=sum;
}
}
return count;
}
int main(int argc, const char *argv[])
{
int num;
printf("请输入一个整数范围");
scanf("%d",&num);
printf("完数的和为:%d\n",Wanshu(num));
return 0;
}
输出为:
3、打印直角三角形
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Tu_2(int n);
void Tu_1(int n){
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
printf("*");
}
printf("\n");
}
}
void Tu_2(int n){
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
printf(" ");
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
printf("请输入打印的行数:");
int n;
scanf("%d",&n);
Tu_1(n);
return 0;
}
输出为
4、打印倒立直角三角形
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Tu_2(int n){
for(int i=0;i<=n;i++){
for(int j=i;j<=n;j++){
printf("*");
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
printf("请输入打印的行数:");
int n;
scanf("%d",&n);
Tu_2(n);
return 0;
}
输出结果为:
5、打印三角形
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Tu_2(int n){
for(int i=0;i<=n;i++){
for(int k=i;k<=n;k++){
printf(" ");
}
for(int j=0;j<=i;j++){
printf("*");
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
printf("请输入打印的行数:");
int n;
scanf("%d",&n);
Tu_2(n);
return 0;
}
输出为
6、打印金字塔
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Tu_2(int n){
for(int i=0;i<n;i++){
for(int k=i;k<n;k++){
printf(" ");
}
for(int j=0;j<=i;j++){
printf("*");
}
for(int p=1;p<=i;p++){
printf("*");
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
printf("请输入打印的行数:");
int n;
scanf("%d",&n);
Tu_2(n);
return 0;
}
输出为:
7、一维数组求最值;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Zuizhi(int n,int arr[n]){
int *p=arr;
int max=*p;
for(int i=1;i<n;i++){
if(max<*(p+i)){
int t=max;
max=*(p+i);
*(p+i)=t;
}
}
return max;
}
int main(int argc, const char *argv[])
{
int n;
printf("请输入数组的长度");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++){
printf("arr[%d]=",i);
scanf("%d",&arr[i]);
}
printf("最大值为:%d\n",Zuizhi(n,arr));
return 0;
}
输出为:
8、一维数组冒泡排序;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Bubble(int n,int arr[n]){
int *p=arr;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(*(p+j)>*(p+j+1)){
int t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
for(int i=0;i<n;i++){
printf("%d ",*(p+i));
}
}
int main(int argc, const char *argv[])
{
int n;
printf("请输入数组长度");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++){
printf("arr[%d]=",i);
scanf("%d",&arr[i]);
}
Bubble(n,arr);
return 0;
}
输出为:
9、一维数组选择排序;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Xuanze(int n,int arr[n]){
int *p=arr;
for(int i=0;i<n-1;i++){
int min=i;
for(int j=i+1;j<n;j++){
if (*(p+min)>*(p+j)){
int t=*(p+j);
*(p+j)=*(p+min);
*(p+min)=t;
}
}
}
for(int i=0;i<n;i++){
printf("%d ",*(p+i));
}
}
int main(int argc, const char *argv[])
{
int n;
printf("请输入数组长度");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++){
printf("arr[%d]=",i);
scanf("%d",&arr[i]);
}
Xuanze(n,arr);
return 0;
}
输出为:
10、二维数组求最大值;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Max(int n,int m,int(*p)[m]){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(*(*(p+i)+j)>*(*(p+i+1)+j+1)){
int t=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+i+1)+j+1);
*(*(p+i+1)+j+1)=t;
}
}
}
return *(*(p+i)+j);
//return *(*(p+n-1)+m-1);
}
int main(int argc, const char *argv[]){
int n,m;
printf("请输入数组行列数");
scanf("%d%d",&n,&m);
int arr[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
printf("arr[%d][%d]=",i,j);
scanf("%d",&arr[i][j]);
}
}
printf("最大值为:%d\n",Max(n,m,arr));
return 0;
}
输出为:
11、杨辉三角
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Yanghui(int n,int(*p)[n]){
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
if(j==0||i==j){
*(*(p+i)+j)=1;
}else{
*(*(p+i)+j)=*(*(p+i-1)+j)+*(*(p+i-1)+j-1);
}
}
}
for(int i=0;i<n;i++){
for(int k=n-i;k>0;k--){
printf(" ");
}
for(int j=0;j<=i;j++){
printf("%3d",*(*(p+i)+j));
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
int n;
printf("请输入杨辉三角行数");
scanf("%d",&n);
int arr[n][n];
Yanghui(n,arr);
return 0;
}
输出为:
12、对角线之和
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Duijiao(int n,int(*p)[n]){
int sum=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j||i+j==n-1){
sum+=*(*(p+i)+j);
}
}
}
return sum;
}
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<n;j++){
printf("arr[%d][%d]=",i,j);
scanf("%d",&arr[i][j]);
}
}
printf("对角线值和为:%d\n",Duijiao(n,arr));
return 0;
}
输出为:
13、strcpy功能
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void my_strcpy(char *p1,char *p2){
while(*p2){
*p1=*p2;
p1++;
p2++;
}
*p1=*p2;
}
int main(int argc, const char *argv[])
{
char s1[50];
printf("请输入原有字符串:");
gets(s1);
printf("请输入要拷贝的字符串");
char s2[50];
gets(s2);
my_strcpy(s1,s2);
printf("拷贝后s1字符串为:%s\n",s1);
return 0;
}
输出为:
13、strlen功能
linux@ubuntu:~/base-c/11day$ cat 12.c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int my_strlen(char *p){
int i=0;
while(*(p+i)){
i++;
}
return i;
}
int main(int argc, const char *argv[])
{
char s1[30];
printf("请输入s1字符串:");
gets(s1);
char s2[30];
printf("请输入s2字符串:");
gets(s2);
printf("s1字符串长度为:%d\n",my_strlen(s1));
printf("s2字符串长度为:%d\n",my_strlen(s2));
return 0;
}
输出为:
14、strcmp功能
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int my_strcmp(char *p1,char *p2){
int i=0;
while(*(p1+i)==*(p2+i)){
if(*(p1+i)=='\0'){
return 0;
}
i++;
}
return *(p1+i)-*(p2+i);
}
int main(int argc, const char *argv[])
{
char s1[50];
printf("请输入字符串s1\n");
gets(s1);
char s2[50];
printf("请输入字符串s2\n");
gets(s2);
int dev=my_strcmp(s1,s2);
if(dev>0){
printf("s1>s2\n");
}else if(dev<0){
printf("s1<s2\n");
}else{
printf("s1=s2\n");
}
return 0;
}
输出为:
15、stcat 功能
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void my_strcat(char *p1,char *p2){
int i=0,j=0;
while(*(p1+i)){
i++;
}
while(*(p2+j)){
*(p1+i)=*(p2+j);
j++;
i++;
}
*(p1+i)=*(p2+j);
}
int main(int argc, const char *argv[])
{
char s1[50];
printf("请输入字符串s1");
gets(s1);
char s2[50];
printf("请输入字符串s2");
gets(s2);
my_strcat(s1,s2);
printf("%s\n",s1);
return 0;
}
输出为:
16、字符串逆置
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Nizhi(char *p,int l){
int i=0,j=l-1;
while(i<j){
char t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
i++;
j--;
}
i=0,j=0;
while(i<l){
while(*(p+j)!=' '&&*(p+j)!='\0'){
j++;
}
int t=j-1;
while(i<t){
char k=*(p+i);
*(p+i)=*(p+t);
*(p+t)=k;
i++;
t--;
}
while(*(p+j)==' '){
j++;
}
i=j;
}
}
int main(int argc, const char *argv[])
{
char s[50];
printf("请输入一个带空格的字符串\n");
gets(s);
int l=strlen(s);
Nizhi(s,l);
printf("%s\n",s);
return 0;
}
输出为:
17、字符串数组排序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Bubble(char (*p)[30],int n){
char t[30]="";
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(strcmp(*(p+j),*(p+j+1))>0){
strcpy(t,*(p+j));
strcpy(*(p+j),*(p+j+1));
strcpy(*(p+j+1),t);
}
}
}
printf("排序后结果为:");
for(int i=0;i<5;i++){
printf("%s ",*(p+i));
}
}
int main(int argc, const char *argv[])
{
char arr[5][30]={"123","789","asdc","abcd","456"};
Bubble(arr,5);
return 0;
}
输出为:
18、字符串查找:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Search(char *key,char(*p)[30],int n){
int count=0;
for(int i=0;i<n;i++){
if(strcmp(key,*(p+i))==0){
count++;
}
}
if(count==0)
printf("不存在");
else
printf("存在");
}
int main(int argc, const char *argv[])
{
char a[5][30]={"111","222","aaa","bbb","ccc"};
char key[30]="";
printf("请输入要查找的字符:");
gets(key);
Search(key,a,5);
return 0;
}
输出结果: