1、字符串
- 如输入:Z2009-AShanghaiZ
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
#include <stdio.h>
void main(void)
{
char a[100];
int i = 0, left = 0, right = 0;
gets(a);
for(i=0; a[i]; i++) //当a[i]="\0"时结束循环。
{
if(a[i] == 'A') //寻找起始标志"A"。
{
i++;
left = i;
while(a[i])
{
if(a[i] == 'Z') //寻找结束标志"Z"。
{
right = i;
break;
}
i++;
}
}
}
if(a[left-1]!='A') //如果没找到起始标志"A",报错。
printf("请以A开头");
else if(a[right]!='Z') //如果找到"A"却没找到"Z",报错
{
printf("请以Z结尾");
printf("----%c-----",a[right]);
}
else //如果符合要求,输出。
printf("%d.\n",right-left);
return;
}
2、阶乘求和函数
- 实现整数(n<=10)的算式:n!+(n-1)!+(n-2)!…+3!+2!+1!
输入n=3:结果3!+2!+1!=9
函数原型:int jiehcheng_sum(int n)
#include <stdio.h>
int jiecheng(int n); //阶乘函数声明
int jiecheng_sum(int n); //将阶乘求和的函数声明
void main(void)
{
int a = 0;
scanf("%d", &a);
printf("%d.\n", jiecheng_sum(a));
return;
}
int jiecheng_sum(int n)
{
int sum = 0;
while(n)
sum += jiecheng(n--);
return sum;
}
int jiecheng(int n)
{
int sum = 1;
while(n)
sum *= n--;
return sum;
}
3、表达式构造:
给出三个正整数a,b和c,你可以在他们之间插入加号或者括号将其变成一个表达式。比如给出数字1,2和3,你可以构造出:
1+2*3=7
1*(2+3)=5
1*2*3=6
(1+2)*3=9 等表达式。
现在你需要构造一个值最大的表达式,输出这个值。
输入描述:
第一行包含三个证书a,b和C。1<=a,b,c<=10输出描述:
输出对应的答案。输入样例:
1 2 3输出样例:
9
#include <stdio.h>
int max(int a1, int a2, int a3);
void mppx(int arr[], int len);
void main(void)
{
int a = 0, b = 0, c = 0;
scanf("%d %d %d", &a, &b, &c);
printf("%d.\n", max(a, b, c));
return;
}
int max(int a1, int a2, int a3)
{
int b[8]; //三个数求运算结果最大值,只需考虑乘法加法,只有八种结果。
b[0] = a1 + a2 + a3;
b[1] = a1 * a2 + a3;
b[2] = a1 * (a2+a3);
b[3] = a1 + a2 * a3;
b[4] = (a1+a2) * a3;
b[5] = a1 * a3 + a2;
b[6] = (a1*a3) + a2;
b[7] = a1 * a2 * a3;
mppx(b, 8); //用冒泡排序将所有结果中最大的找出来。
return b[7]; //返回最大值。
}
void mppx(int arr[], int len)
{
int i = 0, j = 0, tem = 0;
for(i=0; i<len-1; i++)
{
for(j=0; j<len-i-1; j++)
{
if(arr[j]>arr[j+1])
{
tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
}
}
}
return;
}
4、冒泡排序
- 题目描述:
一个数组有N个元素,使用冒泡排序输出。 - 输入描述:
输入为两行。
第一行一个正整数n(1<=n<=1000),表示一共有n个元素。
第二行为n个数,即每个元素,每个整数都在32位int范围。以空格分割。 - 输出描述:
输出一行,即排序之后的数组,以空格分割,行末无空格。
#include <stdio.h>
void mppx(int arr[], int len);
void prtarr(int arr[], int len);
void main(void)
{
int n = 0, i = 0;
int data[1000];
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d",data+i);
mppx(data, n);
prtarr(data, n);
return;
}
void mppx(int arr[], int len)
{
int i = 0, j = 0, tem = 0;
for(i=0; i<len-1; i++)
{
for(j=0; j<len-i-1; j++)
{
if(arr[j]>arr[j+1])
{
tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
}
}
}
return;
}
void prtarr(int arr[], int len)
{
int i = 0;
for(i=0; i<len; i++)
printf(" %d",arr[i]);
return;
}