高级语言讲义2015软专(仅高级语言部分)

1.编写一个程序,对输入的任意字符串,统计并输出其中每个英文小写字母在该字符串中出现的次数。

cpp 复制代码
#include <stdio.h>

void getcount(char *str) {
	int hash[26] = {0};
	int i = 0;
	while (str[i] != '\0') {
		if (str[i] >= 'a' && str[i] <= 'z')
			hash[str[i] - 'a']++;
		i++;
	}
	for (int i = 0; i < 26; i++)
		if (hash[i] != 0)
			printf("%c:%d ", 'a' + i, hash[i]);
}

int main() {
	char *str = "asdasdxxsaxAAAAAAA";
	getcount(str);
	return 0;
}

2.文法:N->N D|D,D->0|1|2|3|4|5|6|7|8|9,编写程序实现如下功能,对任意给定的串,若符合文法输出对应的整数值,否则输出错误。例如:2014输出2014,20Y14,输出错误。

cpp 复制代码
#include <stdio.h>
 
int main() {
	int N=0;
	int i=0;
	char str[100];
	scanf("%s",str);
	for(i; str[i]!='\0'; i++) {
		if(str[i]>='0'&&str[i]<='9')
			N=str[i]-'0'+N*10;
		else {
			printf("error\n");
			break;
		}
	}
	if(str[i]=='\0')
		printf("%d\n",N);
	return 0;
}

3.螺旋矩阵是整数的一种排列方式。编写程序生成井输出10X 10的螺旋矩阵。

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

int main() {
	int n;
	scanf("%d",&n);
	int **a=(int **)malloc(sizeof(int*)*n);
	for(int i=0; i<n; i++)
		a[i]=(int*)malloc(sizeof(int)*n);
	int nums=1;
	for(int i=0; i<=n/2; i++) {
		for(int j=i; j<=n-i-1; j++)
			a[i][j]=nums++;
		for(int k=i+1; k<n-i-1; k++)
			a[k][n-i-1]=nums++;
		for(int j=n-i-1; j>i; j--)
			a[n-i-1][j]=nums++;
		for(int k=n-i-1; k>i; k--)
			a[k][i]=nums++;
	}
	for(int i=0; i<n; i++) {
		for(int j=0; j<n; j++)
			printf("%5d",a[i][j]);
		printf("\n");
	}
}

4.设有一个包含N个整数的集合S,编写函数求s的所有元素个数为M 的子集。

例如: N=4,S={1,2,3,4};若M=2,则输出结果为:

(1,2)(1,3)(1,4)(2,3)(2.4)(3,4)

cpp 复制代码
#include <stdio.h>

void generateSubsets(int S[], int n, int subset[], int subsetSize, int index, int targetSize) {
	if (subsetSize == targetSize) {
		printf("{ ");
		for (int i = 0; i < subsetSize; i++)
			printf("%d ", subset[i]);
		printf("}\n");
		return;
	}
	for (int i = index; i < n; i++) {
		subset[subsetSize] = S[i];
		generateSubsets(S, n,subset, subsetSize + 1, i + 1, targetSize);
	}
}

int main() {
	int S[] = {1, 2, 3, 4};
	int n=sizeof(S)/sizeof(int);
	int subset[10];
	int targetSize = 2;
	generateSubsets(S, n, subset, 0, 0, targetSize);
	return 0;
}
相关推荐
梦帮科技19 分钟前
AI 音乐产品的发布工程:验证门、数据发布、回滚与生产运维纪律
数据结构·数据库·架构·node.js·音视频·动态规划·推荐算法
泯泷22 分钟前
那段文字是谁删的?Yjs 14 正式版之前,一套删除归属方案的实现与边界
前端·javascript·算法
hold?fish:palm30 分钟前
34 合并K个升序链表
javascript·算法·链表
C++ 老炮儿的技术栈1 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
Navigator_Z3 小时前
LeetCode //C - 1252. Cells with Odd Values in a Matrix
c语言·算法·leetcode
语戚4 小时前
力扣 1621. 大小为K的不重叠线段的数目:动态规划(Java 实现)
java·算法·leetcode·动态规划·力扣·dp
青山木4 小时前
Hot 100 --- 最长有效括号
java·数据结构·算法·leetcode·动态规划
是隼人5 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
这料鬼有毒6 小时前
二刷hot100-1143.最长公共子序列
算法·leetcode·动态规划
政企项目老覃7 小时前
边缘 AI 推理部署:安防零售场景下的模型裁剪与端侧落地实践
人工智能·程序人生·算法·性能优化·vllm