高级语言讲义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;
}
相关推荐
ShiinaMashirol4 小时前
代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
java·算法
梁下轻语的秋缘6 小时前
每日c/c++题 备战蓝桥杯(P1049 [NOIP 2001 普及组] 装箱问题)
c语言·c++·学习·蓝桥杯
加点油。。。。6 小时前
C语言高频面试题——指针函数和函数指针的区别
c语言·面试
wuqingshun3141596 小时前
蓝桥杯 5. 交换瓶子
数据结构·c++·算法·职场和发展·蓝桥杯
Demons_kirit6 小时前
Leetcode 2845 题解
算法·leetcode·职场和发展
adam_life7 小时前
http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
算法·宽搜·布局唯一码
我想进大厂7 小时前
图论---朴素Prim(稠密图)
数据结构·c++·算法·图论
我想进大厂7 小时前
图论---Bellman-Ford算法
数据结构·c++·算法·图论
AIGC大时代7 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
lkbhua莱克瓦248 小时前
用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。
c语言·开发语言·数据结构·链表·学习方法·交友·计算器