第7次c语言练习(部分)
2017-12-01 22:53
375 查看
1.如输入:Z2009-AShanghaiZ
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
#include<stdio.h>
int hanshu(char arr[])//定义一个函数
{
int len = 0;//定义长度变量
while(*arr){//循环到结束
if(*arr == 'A'){//如果指针等于A
arr++;//就让指针向右移动
while(*arr != 'Z'){//如果指针,还没到Z,就继续循环
len++;//长度加1
arr++;//指针加1
}
}
arr++;//指针加1
}
return len;//返回指针长度
}
int main(void)//定义主函数
{
int shuzu = 0;//定义数组长度的变量
char arr[] = {" Z2009-AShanghaiZ"};//定义要求的数组
shuzu = hanshu(arr);//给数组长度变量赋函数求出的值
printf("%d\n",shuzu);//输出数组长度值
}
3.实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!…+3!+2!+1!
输入 n = 3:结果 3!+2!+1! = 9
函数原型:int jiecheng_sum(int n);
#include<stdio.h>
int jiecheng_sum(int n){
int leijia = 0,int leicheng = 1,int i;
4000
if(n <= 10 && n > 0)//如果n大于0,小于等于10
for(i = 1; i <= n; i++, leicheng *= i)// 从i等于1开始,直到i大于n,每次i+1,累乘
leijia += leicheng;//累加
else
printf("请正确输入1 ~ 10数。\n");
return leijia;
}
void main(void){
int n;
printf("请输入1 ~ 10数:");
scanf("%d", &n);
printf("结果为:%d。\n", jiecheng_sum(n));
}
4.给出三个正整数a,
b, c,你可以在他们之间出入加号或者称乘号以及括号将其变成一个表达式。
比如给出1,2和3,你可以构造出:1+(2*3) = 7 等等
现在你需要构造一个值最大的表达式,输出这个值。
输入:三个整数a, b, c. 大小为1~10。
输出:表达式的值
例如:
输入:1,2,3。
输出:9。
#include<stdio.h>
void qk_max(int a, int b, int c)
{
int qk1, qk2, qk3, qk4, qk5, qk6, max;//定义了六种情况的变量和最大值的变量
qk1 = a + b * c;
qk2 = a * b + c;
qk3 = a + b + c;
qk4 = a * (b + c);
qk5 = a * b * c;
qk6 = (a + b) * c;
if(qk1 > qk2)//比较两种情况值的大小
max = qk1;
max = qk2;
if(qk3 > qk4)
(max > qk3) ? (max = max) : (max = qk3);//如果前面的最大值大于情况三,最大值就是前面的最大值,不然最大值就是情况三
(max > qk4) ? (max = max) : (max = qk4);
if(qk5 > qk6)
(max > qk5) ? (max = max) : (max = qk5);
(max > qk6) ? (max = max) : (max = qk6);
printf("abc之间,在不改变顺序的情况下插入加号,乘号,括号后,得到的最大值为:%d\n",max);
}
int main()
{
int a, b, c;
printf("请输入三个正整数a, b, c。\n");
printf("请输入a:");
scanf("%d",&a);
printf("请输入b:");
scanf("%d",&b);
printf("请输入c:");
scanf("%d",&c);
qk_max(a,b,c);
}
5.一个数组有N个元素,使用冒泡排序进行排序输出。
输入:整数n(1~100),表示n个元素,n个整数,范围在int类型范围内,以空格分开
输出:排序后的数组,以空格分开,行末无空格
#include
<stdio.h>
void paixu(int kongjian[],int n)
{
int j = 0, guodu = 0;
do{
for(j = 1; j < n; j++)
//升序排序
if(kongjian[j - 1] > kongjian[j])//如果前一个数比后一个数大
{
guodu = kongjian[j];//把后一个值给过度变量
kongjian[j] = kongjian[j - 1];//把前一个值给后一个值
kongjian[j - 1] = guodu;//把过渡变量给前一个值
}
}while( --n );
}
int main(void)
{
int n = 0, i = 0;
int kongjian[100]={0};//申请空间
printf("请输入想要排序的元素个数(1~100):");
scanf("%d", &n);
printf("请输入%d个数: \n", n);
for(i = 0; i < n; i++)
scanf("%d", kongjian + i);
paixu(kongjian, n);
printf("排序结果为:\n");
for(i = 0; i < n; i++)
printf(" %d", kongjian[i]);
printf("\n");
return 0;
}
6.找出一个整数数组中第二大的数,
66,66,66,66 则没有第二大的数
99,99,86,32 第二大的数为86
#include
<stdio.h>
int second_max_num(int kongjian[], int n)
{
int secMax = 0, max = kongjian[0], flag = 1;
int i = 0;
for(i = 0; i < n; i++)
{
if(kongjian[i] > max)
{
secMax = max;
max = kongjian[i];
}
else if(kongjian[i] < max && kongjian[i] > secMax)
{
secMax = kongjian[i];
flag = 0;
}
}
if(flag=0)
printf("没有第二大的数.\n");
else
printf("第二大数为:\n");
printf(" %d", secMax);
return 0;
}
int main(void)
{
int n = 0, i = 0;
int kongjian[100]={0};//申请空间
printf("请输入想要比较大小的元素个数(1~100):");
scanf("%d", &n);
printf("请输入%d个数: \n", n);
for(i = 0; i < n; i++)
scanf("%d", kongjian + i);
second_max_num(kongjian, n);
printf("\n");
return 0;
}
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
#include<stdio.h>
int hanshu(char arr[])//定义一个函数
{
int len = 0;//定义长度变量
while(*arr){//循环到结束
if(*arr == 'A'){//如果指针等于A
arr++;//就让指针向右移动
while(*arr != 'Z'){//如果指针,还没到Z,就继续循环
len++;//长度加1
arr++;//指针加1
}
}
arr++;//指针加1
}
return len;//返回指针长度
}
int main(void)//定义主函数
{
int shuzu = 0;//定义数组长度的变量
char arr[] = {" Z2009-AShanghaiZ"};//定义要求的数组
shuzu = hanshu(arr);//给数组长度变量赋函数求出的值
printf("%d\n",shuzu);//输出数组长度值
}
3.实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!…+3!+2!+1!
输入 n = 3:结果 3!+2!+1! = 9
函数原型:int jiecheng_sum(int n);
#include<stdio.h>
int jiecheng_sum(int n){
int leijia = 0,int leicheng = 1,int i;
4000
if(n <= 10 && n > 0)//如果n大于0,小于等于10
for(i = 1; i <= n; i++, leicheng *= i)// 从i等于1开始,直到i大于n,每次i+1,累乘
leijia += leicheng;//累加
else
printf("请正确输入1 ~ 10数。\n");
return leijia;
}
void main(void){
int n;
printf("请输入1 ~ 10数:");
scanf("%d", &n);
printf("结果为:%d。\n", jiecheng_sum(n));
}
4.给出三个正整数a,
b, c,你可以在他们之间出入加号或者称乘号以及括号将其变成一个表达式。
比如给出1,2和3,你可以构造出:1+(2*3) = 7 等等
现在你需要构造一个值最大的表达式,输出这个值。
输入:三个整数a, b, c. 大小为1~10。
输出:表达式的值
例如:
输入:1,2,3。
输出:9。
#include<stdio.h>
void qk_max(int a, int b, int c)
{
int qk1, qk2, qk3, qk4, qk5, qk6, max;//定义了六种情况的变量和最大值的变量
qk1 = a + b * c;
qk2 = a * b + c;
qk3 = a + b + c;
qk4 = a * (b + c);
qk5 = a * b * c;
qk6 = (a + b) * c;
if(qk1 > qk2)//比较两种情况值的大小
max = qk1;
max = qk2;
if(qk3 > qk4)
(max > qk3) ? (max = max) : (max = qk3);//如果前面的最大值大于情况三,最大值就是前面的最大值,不然最大值就是情况三
(max > qk4) ? (max = max) : (max = qk4);
if(qk5 > qk6)
(max > qk5) ? (max = max) : (max = qk5);
(max > qk6) ? (max = max) : (max = qk6);
printf("abc之间,在不改变顺序的情况下插入加号,乘号,括号后,得到的最大值为:%d\n",max);
}
int main()
{
int a, b, c;
printf("请输入三个正整数a, b, c。\n");
printf("请输入a:");
scanf("%d",&a);
printf("请输入b:");
scanf("%d",&b);
printf("请输入c:");
scanf("%d",&c);
qk_max(a,b,c);
}
5.一个数组有N个元素,使用冒泡排序进行排序输出。
输入:整数n(1~100),表示n个元素,n个整数,范围在int类型范围内,以空格分开
输出:排序后的数组,以空格分开,行末无空格
#include
<stdio.h>
void paixu(int kongjian[],int n)
{
int j = 0, guodu = 0;
do{
for(j = 1; j < n; j++)
//升序排序
if(kongjian[j - 1] > kongjian[j])//如果前一个数比后一个数大
{
guodu = kongjian[j];//把后一个值给过度变量
kongjian[j] = kongjian[j - 1];//把前一个值给后一个值
kongjian[j - 1] = guodu;//把过渡变量给前一个值
}
}while( --n );
}
int main(void)
{
int n = 0, i = 0;
int kongjian[100]={0};//申请空间
printf("请输入想要排序的元素个数(1~100):");
scanf("%d", &n);
printf("请输入%d个数: \n", n);
for(i = 0; i < n; i++)
scanf("%d", kongjian + i);
paixu(kongjian, n);
printf("排序结果为:\n");
for(i = 0; i < n; i++)
printf(" %d", kongjian[i]);
printf("\n");
return 0;
}
6.找出一个整数数组中第二大的数,
66,66,66,66 则没有第二大的数
99,99,86,32 第二大的数为86
#include
<stdio.h>
int second_max_num(int kongjian[], int n)
{
int secMax = 0, max = kongjian[0], flag = 1;
int i = 0;
for(i = 0; i < n; i++)
{
if(kongjian[i] > max)
{
secMax = max;
max = kongjian[i];
}
else if(kongjian[i] < max && kongjian[i] > secMax)
{
secMax = kongjian[i];
flag = 0;
}
}
if(flag=0)
printf("没有第二大的数.\n");
else
printf("第二大数为:\n");
printf(" %d", secMax);
return 0;
}
int main(void)
{
int n = 0, i = 0;
int kongjian[100]={0};//申请空间
printf("请输入想要比较大小的元素个数(1~100):");
scanf("%d", &n);
printf("请输入%d个数: \n", n);
for(i = 0; i < n; i++)
scanf("%d", kongjian + i);
second_max_num(kongjian, n);
printf("\n");
return 0;
}
相关文章推荐
- c语言选择结构作业题练习分享第二部分(附答案、考点、难度、分析)
- C语言:冒泡排序练习
- 【c语言】链表的实现、链表部分面试题的解答
- c语言练习(3)--查找字符出现次数和替换字符串
- c语言 字符串和指针部分
- C语言练习_三角型的判定
- C语言编程练习5——编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放
- C语言编程练习——对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- Day8_c语言_结构体练习
- 程序设计入门——C语言 翁恺 第2周编程练习
- C语言一些关于位操作符的小练习
- 三星uboot1.1.6源码分析——start.s(11)--C语言部分(5)
- [算法练习]插入排序的C语言实现
- 【C语言】练习1-22
- 第04天C语言(08):while练习3
- [iOS]C语言技术视频-15-指针变量高级用法练习一(函数指针完成动态排序)
- C语言探索之旅 | 开宗明义及第一部分第一课:什么是编程?
- C语言探索之旅 | 第二部分第九课: 实战"悬挂小人"游戏
- C语言练习作业(一)
- 黑马程序员-C语言算法练习