程序

1、找出字符串中的最长数字串。

#include <stdio.h>


int max_num(char a[])
{
int i = 0;
int num = 0;


int max = 0;


while(a[i] != '\0')
{
num = 0;
while(a[i] >= '0' && a[i] <= '9')
{
num++;
i++;
}
if(num > max)
{
   max = num;
}
i++;
}
return max;
}

int main()
{
int i;
char str[100];


printf("Please input a string with number:\n");
scanf("%s",str);


i = max_num(str);
printf("max = %d\n",i);

    return 0;
}

2、比较两个字符串长度的大小。

#include <stdio.h>
#include <string.h>
int main()
{
int m,n;
char str1[100];
char str2[100];


printf("Please input two strings:\n");
scanf("%[^\n]",str1);
getchar();


scanf("%[^\n]",str2);


m = strlen(str1);
n = strlen(str2);


if(m > n)
{
printf("The long str is str1,it has %d characters.\n ",m);
   puts(str1);
}
else
{
printf("The long str is str2,it has %d characters.\n ",n);
   puts(str2);


}

    return 0;
}


3、将数字字符串转化为数。

#include <stdio.h>


int main()
{
int i = 0;
int num = 0;
char str[100];


printf("Please input a number string:\n");
scanf("%s",str);
/* if(str[0] == '-')
{
i++;
}*/


while(str[i] != '\0')
{
if(str[i] == '-')   //如果i写0,每次循环都执行,判断是否为负数
{
i++;
}
// str[i] -= '0';
num = num * 10 +(str[i] - '0');
i++;

}
if(str[0] == '-')
{
printf("%c",'-');
}
printf("%d",num);
printf("\n");

    return 0;
}

4、判断一个字符串是否为另一个字符串的子串。

# include <stdio.h>
# include <string.h>
int main()
{
int m,n;
int i = 0;
int j = 0;
int flag = 0;               //当没有确定子串时,设为0
char str1[10];
char str2[100];


printf("Please input two strings:\n");
scanf("%[^\n]",str1);
getchar();
scanf("%[^\n]",str2);


m = strlen(str1);
n = strlen(str2);


while(j < n)
{
for(i = 0;i < m;i++)     //判断2中是否有与1中相等的字符
{                        //最终的i值就是相同的位数
if(str1[i] == str2[j] && j < n)
j++;
else
break;


}
if(i == m )               //连续相同的位数等于1的长度,则为子串
{
flag = 1;             //子串出现,标志为1
printf("Yes!\n");
       j == n;
}
j++;
}
    if(flag == 0)
printf("No!\n");
    return 0;
}

5、字符串逆序。

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


int main()
{
int m;
int i = 0;
int j = 0;
char str1[100];
char str2[100];


printf("Please input a string:\n");
scanf("%[^\n]",str1);


m = strlen(str1);
for(i = m - 1;i >= 0;i--)
{
str2[j] = str1[i];
putchar(str2[j]);
j++;
}
printf("\n");


    return 0;
}

6、找出一组数中的最大数。

#include <stdio.h>

int main()
{
int i = 0;
int max;
int n;       //输入数的数量
int str[100];

printf("Please input a  number:\n");
scanf("%d",&n);
printf("Please input some integer numbers:\n");

    for(i =0;i<n;i++)
{
scanf("%d",&str[i]);
}
/*    for(i = 0; i<n;i++)
{
printf("%d\t",str[i]);
}*/
max = str[0];
while(i > 0)
{
if(str[i] > max)
{
max = str[i];
}
i--;
}


    printf("max = %d\n",max);


    return 0;
}

7、统计字母字符串中每个字母的个数。

#include <stdio.h>

int main()
{
int i = 0;
int j = 0;
int k = 0;
int n = 0;
int w = 0;              //存放b[0]
int t;
char str[100];        //输入的字母串
char a[52];            //存放不同字母
int b[52];               //存放不同字母对应的数量


printf("Please input a string:\n");
scanf("%s",str);
a[j] = str[i];
printf("a[%d] = %c ",j,a[j]);
j++;
i++;


while(str[i] != '\0')
{
b[j] = 1;
for(t = 0;t < j;t++)
{
if(a[t] == str[i])
{
n++;               //检测str[i]是否和已存放在a中字母相同
b[t]++;
}


}
if(n == 0)                       //要放入的字母在a中无相同字母
{
a[j] = str[i];
   printf("a[%d] = %c ",j,a[j]);
j++;
        }
i++;
n = 0;
}
i = 0;
while(str[i] != '\0')          //计算b[0]
{
if(str[i] == str[0])
{
   w++;
}
i++;
}
printf("\n");
printf("b[0] = %d ",w);
for(k = 1;k < t;k++)
{
printf("b[%d] = %d ",k,b[k]);
}
printf("\n");
    return 0;
}

8、11行杨辉三角。


#include <stdio.h>


int main()
{
// int n = 10;
int a[11][11];
int i,j;
for(i = 0;i < 11;i++)
{
for(j = 0;j < 11;j++)
{
if(i == j)
{
a[i][j] = 1;
//    printf("%d  ",a[i][j]);
}
if(j == 0)
{
a[i][j] = 1;
//    printf("%d  ",a[i][j]);
}


}
    }
for(i = 2;i < 11;i++)
{
for(j = 1;j < i;j++)
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
// printf("%d  ",a[i][j]);
}
}
for(i = 0;i < 11;i++)
{
for(j = 0;j <= i;j++)
{
printf(" %5d",a[i][j]);
}
printf("\n");
}
return 0;
}

9、在一个数组中放10个数,找出最小数及其下标,然后把它和第一个数交换位置。

#include <stdio.h>


int main()
{
int i = 0;
int str[10];
int min;


printf("Please input ten integer strings:\n");


for(i = 0;i < 10;i++)       //输入10个数
{
scanf("%d",&str[i]);
}


min = str[0];
while(i > 0)                 //找出最小的数
{
if(str[i] < min)
{
min = str[i];
}
i--;
}
printf("min = %d\n",min);

for(i = 0;i < 10;i++ )    //找出最小数的下标
{
if(min == str[i])
{
printf("subscript = %d\n",i);
}
}


    return 0;
}

10、数组循环移位。

#include <stdio.h>


int main()
{
int n;
int t;
int i = 0;
int temp;
int c[100];


printf("Please input a integer number:\n");
scanf("%d",&n);


temp = n;


while(n > 0)
{
scanf("%d",&c[i]);
printf("%d ",c[i]);
i++;
n--;
}
printf("\n");
n = temp;
t = c[n - 1];
for(i = temp - 1;i >= 0;i--)         //实现循环     
{
c[i] = c[i - 1];
}
c[0] = t;
for(i = 0;i < n;i++)                   //输出循环后的数组
{
printf("%d ",c[i]);
}
printf("\n");

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值