c语言第三次练习题
来源:互联网 发布:男生冬季服装搭配知乎 编辑:程序博客网 时间:2024/05/20 05:11
1找一个整型数组中的第二大的数
例如: 66 , 66 , 66, 66,就没有第二大的数
99,98, 85,86,第二大的数就是98
编写程序如下:
#include<stdio.h>//一个找数组中第二大值的函数 int func_find_max_2th(int arr[],int lenth){ int i=0, j=0, temp=0; //冒泡排序法排序 for (i=0; i<lenth-1; i++) { for (j=0; j<lenth-1-i; j++) { if (arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //判断排序之后的首尾元素数值是否一样 if(arr[0] == arr[lenth-1]) { printf("该数组种所有数都一样,没有第二大值"); return -1; } printf("该数组的第二大值是:%d \n",arr[lenth-2]); } int main(void) { int arr[5]={6,6,6,6,6}; func_find_max_2th(arr,5); }
2下面是某语言的计算字符串Hash值的算法如下,如果字符‘a’、‘b’对应的ascii的值对应十进制是97、98,请回答控制台打印出的数值是多少_
typedef unsigned long uintptr_t;uintptr_t NXStrHash (const void *data){ uintptr_t hash = 0; unsigned char *s = (unsigned char *)data; if (s)for (; ; ) { if (*s == '\0')break; hash ^= (uintptr_t)*s++; printf("1---%ld.\n", hash); if (*s == '\0')break; hash ^= (uintptr_t)*s++<<8; printf("2---%ld.\n", hash); if (*s == '\0')break; hash ^= (uintptr_t)*s++<<16; printf("3---%ld.\n", hash); if (*s == '\0')break; hash ^= (uintptr_t)*s++<<24; printf("4---%ld.\n", hash); } return hash;};int main(void){ uintptr_t hash_value = NXStrHash("ab"); printf("%ld.\n", hash_value); return 0;}
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(int a){ int sum=1, i=0; //参数的判断 if(a < 0| a > 10) { printf("参数输入错误"); return -1; } //递归的回归条件 if(1 == a) { return 1; } for(i=1; i<=a; i++) { sum = sum * i; } return sum + jiecheng(a-1); } int main(void){ int a =3, ret =0; ret = jiecheng(a); printf("ret= %d",ret);}
4 如输入:Z2009-AShanghaiZ,则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度为8。
(这道题我只写了思路,实际代码运行时错误的!!)
#include<stdio.h>#include<string.h>int my_strlen(char *p){ int i = 0, j = 0, cnt = 0; //计算字符串的长度 cnt = strlen(p); //循环来找A这个字符 for(j=0; j<cnt; j++) { //找到A统计A到Z之间的字符个数 //如果这个字符的asc值是65 if('A' == p[j]) { while(p[j] != 'Z') { //统计字符的个数 (多统计了一个A) i++; //下标移动 j++; } //把统计的A减掉 return i-1; } } //如果找不到A 返回-1 return -1; }int main(void){ char str[] = "Z2009-AshanghaiZ"; printf("lenth=%d\n",my_strlen(str)); } ***
5 给出三个正整数a,b,c,你可以在他们之间插入加号或者乘号以及括号将其变成一个表达式,比如给出数字1,2,3,你可以构造出:
1+2*3=7
1*(2+3)=5
1 * 2 *3 =6
(1+2)*3=9
等表达式,现在你需要构造一个值最大的表达式,输出这个值
输入样例:123 输出:9
编写程序如下:
#include<stdio.h>#define MAX(x,y) ((x>y)?x:y)int func(int a, int b, int c){ int f1=0,f2=0,f3=0,f4=0,f5=0,f6=0,f7=0,f8=0; int ret=0; //把所有的组合全部排列出来 f1 = a*b*c; f2 = a+b+c; f3 = a*(b+c); f4 = b*(a+c); f5 = c*(a+b); f6 = a+(b*c); f7 = b+(a*c); f8 = c+(a*b); //比较得到最大的数 //第一轮比较 f1=MAX(f1,f2); f2=MAX(f3,f4); f3=MAX(f5,f6); f4=MAX(f7,f8); //第二轮比较 f1=MAX(f1,f2); f2=MAX(f3,f4); //第三轮比较 return ret=MAX(f1,f2); }int main(void){ int a=1, b=2, c=3, ret=0; ret = func(a,b,c); printf("输出:%d",ret);}
6 一辆卡车违反交通规则,肇事逃逸,有三位目击者给出了相关信息,如下:
甲说:牌照的前两位数字是相同的。
乙说:车牌号后两位是相同的,但是与之前的两位是不一样的。
丙是一个数学家,他说:四位的车牌号码刚好是一个整数的平方,请你根据以上的线索推测出车牌号码。
阅读全文
0 0
- c语言第三次练习题
- c语言作业第三次
- C语言第三次作业
- C语言第三次课
- c语言学习 第三次
- 第三次C语言上机指导
- C语言第三次课堂作业
- C语言第三次上机实验
- 第三次c语言上机操作
- c语言第三次上机报告
- c语言第三次上机报告
- 第三次C语言上机实验
- C语言第三次作业练习
- C 语言练习题
- c语言循环练习题
- C语言程序练习题
- c语言练习题
- c语言练习题2
- Ubuntu16.04LTS 下ros(kinetic)的arduino应用(三)
- Dubbo动态改变端口配置
- 编程思想之多线程与多进程(3)——Java中的多线程
- 机器学习和深度学习面试题
- 数据结构 -- 双向链表 linkedList 手写
- c语言第三次练习题
- CSS3-转换之perspective
- VS2010下使用QT环境配置
- 好文
- 编程思想之多线程与多进程(2)——线程优先级与线程安全
- untiy去掉所有烦人的warning
- 妙用CommonException
- vue.js 定时器
- 整合Spring时Service层为什么不做全局包扫描详解