C语言作业题(2)
来源:互联网 发布:电脑保密软件 编辑:程序博客网 时间:2024/06/04 18:43
1、如输入:Z2009-AShanghaiZ
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
//如输入:Z2009 - AShanghaiZ//则输出:lenth = 8;//事例说明:从A到Z的子串为SHanghai,其长度是8.#include <stdio.h>int func1(char arr[]){ char *find_A = arr;//存储头指针,用于指向A char *find_Z = arr;//存储头指针,用于指向B while (*find_A++ != 'A');//指向A字符后一位 while (*find_Z++ != 'Z');//指向Z字符后一位 return (find_Z - 1 - find_A);}int main(void){ char arr[] = "abzd1-Axi'anZdef"; printf("%d", func1(arr)); return 0;}
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;//97
hash ^= (uintptr_t)*s++; //0110 0001
printf(“1—%ld.\n”, hash) //97
if (*s == ‘\0’)break; //98
hash ^= (uintptr_t)*s++<<8; //0110 0010 0110 0001
printf(“2—%ld.\n”, hash); //25185
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);//25185
return 0;
}
输出为:
1—97.
2—25185.
25185.
3、实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!…+3!+2!+1!
输入 n = 3:结果 3!+2!+1! = 11
函数原型:int jiecheng_sum(int n)
//3、实现整数n(n <= 10)的算式:n!+ (n - 1)!+ (n - 2)!... + 3!+ 2!+ 1!//输入 n = 3:结果 3!+ 2!+ 1!= 11//函数原型:int jiecheng_sum(int n)#include <stdio.h>int jiecheng_sum(int n){ int ret = 1, sum = 0, p = 0; while (n > 0) { for (p = n,ret = 1; p > 0; p--)//计算n的阶乘 { ret *= p; } sum += ret;//计算总和 n--; } return sum;}int main(void){ printf("%d\n",jiecheng_sum(3)); return 0;}
4、一个数组有N个元素,使用冒泡排序对其进行排序输出
void func(int arr[], int N){ int i = 0, j = 0, buf = 0; for (i = 0; i < N - 1; i++) { for (j = 0; j < N - 1 - i; j++) { if (arr[j] > arr[j + 1])//升序 { buf = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = buf; } } } for (i = 0; i < N; i++) { printf("%d%c", arr[i],((i==(N-1))?'\n':' ')); }}int main(void){ //输入N个数 int N = 0; printf("Input N:"); scanf("%d", &N); //申请空间 int *arr = (int *)malloc(N * sizeof(int)); //输入元素 printf("Input every number:"); int i = 0; for (i = 0; i < N; i++) { scanf("%d", &arr[i]); } func(arr, N); free(arr); return 0;}
5、给出三个正整数a,b,c,你可以在它们之间插入加号或者乘号以及括号将其变成一个表达式。现在需要构造一个值最大的表达式,输出这个值。
//思路:将三个数中较小的两个求出最大值,与第三个相乘#include <stdio.h>int func(int a, int b, int c){ int max = 0; max = (a >= b ? (a >= c ? a : c) : (b >= c ? b : c)); if (1 == max)//输入的三个数字都是1 return a + b + c; else if (a == max) return (a*((b*c) >= (b + c) ? (b*c) : (b + c))); else if (b == max) return (b*((a*c) >= (a + c) ? (a*c) : (a + c))); else if (c == max) return (c*((a*b) >= (a + b) ? (a*b) : (a + b))); else printf("error");}int main(void){ int a = 0, b = 0, c = 0; printf("Input 3 numbers:"); scanf("%d %d %d", &a, &b, &c); printf("%d\n", func(a, b, c));}
- C语言作业题(2)
- C语言作业题(1)
- C语言作业题(3)
- C语言作业题(4)
- C语言作业题(5)
- 一道大学c语言作业题
- 科锐C语言01-作业题
- 初学C语言----循环作业题
- 一道留学作业题//C语言
- c语言作业题11.11/12
- c作业题12.06
- c语言选择结构作业题练习分享(附答案、考点、难度、分析)
- c语言选择结构作业题练习分享第二部分(附答案、考点、难度、分析)
- 初学C语言第一个难点--if作业题的两种思维解法
- 汇编作业题2
- 作业题
- 作业题
- 作业题
- 输入123然后分离出百位1,十位2,个位3,计算3*100+2*10+1=321
- mysql 1236
- RX500系列显卡挖矿修改BIOS教程
- Git多帐号配置
- 记录:ajax获取数据动态生成select下拉选js部份
- C语言作业题(2)
- poj3281--Dining(最大流(EK算法))
- mariadb 中文乱码
- numpy之axis如何理解
- 【刷题】strStr II
- linux中将用户添加到组的指令
- 并行性与并发性
- 分布式文件系统概述
- 【转】python-skimage的边缘与轮廓