(勿入)帮一个大学生通过小测

香香的鸽子
Published on 2025-06-11 / 13 Visits
0
1

我只讲语法,可能没那么原理。

数组

你之前开的变量都是代表一个数,一个字符(好像按顺序你还没接触)。

接下来重磅推出数组!你就可以一下开n个变量()。

声明

int a;//这是一个整型
int a[100];//这是100个整型

访问

int a[100];
a[1]=114514;//给数组第一位赋值为114514
a[0]=12345;//第0位赋值为12345
a[100]=123;//错误的,待会讲
printf("%d",a[1]);//输出114514;

在这里你只需要注意一件事:数组是从0开始索引的。

所以你开了长度为100的数组,实际上它的下标是从0,1,2....99的
这时候你去访问第100个,会导致数组越界,程序就RE了。

实际上在使用中,可以通过多开几位(比如长度100,你开到105)的方式避免数组越界。

循环读入100个数:

int a[105];
for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
}

应该没了,我去看看你题里有什么要讲的。

感觉没啥好讲的,你有问题再问我吧。

讲一个最后一题排序。
头歌里我用的线性时间复杂度的桶排,可以自行了解,我这里给你一种直观好理解的排序叫选择排序(还是叫冒泡排序我忘了),说起来比较唐,就是每次扫一遍数组里的所有数,然后选一个最小的放最前面(从小到大排序),还有更多其他的排序算法可以自行理解。

int a[105];
	scanf(n);//为了方便直接这么写了,你懂就行
	for(int i=1;i<=n;i++){
		scanf(a[i]);
	}
	for(int i=1;i<=n;i++){
		//第二层循环意思是前i个数已经排好顺序了
		//在第i个数后找一个最小的不断换上来
		for(int j=i;j<=n;j++){
			if(a[j]<a[i]){
				//由于c里面没有swap所以开两个临时变量来实现交换
				int x=a[i];
				int y=a[j];
				a[i]=y;
				a[j]=x;
			}
		}
	}
	for(int i=1;i<=n;++){
		printf(a[i]);
	}

其他题有问题再问我。

二维数组

你现在会存一个数,或者一串数。

把几串数拼成一个nm的矩形,就是二维数组。
这个矩形上有n
m个格子,格子用来存数。

声明:

int a[100][100];//一个100*100的数组

调用:

a[1][2]=114514;//给第一行第二列的数赋值为114514
a[100][2]=111;//数组越界RE
a[34][100]=123;//数组越界RE
a[100][100]=1;//RERERE

二维数组在下标上同样也有越界的问题,如果你喜欢从1开始索引,那就把数组开得比题意大点。

循环读入一个 20*20的矩形上的所有数:

int a[105][105];
	for(int i=1;i<=20;i++){
		for(int j=1;j<=20;j++){
			scanf(a[i][j]);
		}
	}

好了看看有没有题要讲讲。

矩阵转置:要求行列互换实际上就是输出的时候把原来的 a[i][j] 换成 a[j][i] 即可,详细的去头歌看代码。

杨辉三角:

把第一列和右下对角线先赋值为1,剩下的点按杨辉三角递推即可,每个数等于其上面的数加左上角的数。

代码:

woc头歌不让我复制过来,你自己去头歌看吧,都怪头歌不让我给你放代码,你喷头歌吧

剩下的没啥可说的,要么读入再输出,要么加几个判断而已。

字符串和字符数组

之前你都一直对着整型数字导管,字符吃醋了,现在你要学习怎么对字符导管。

其实在代码实现这一块,字符是比较麻烦的,我认为你小测比较容易寄在字符串,我尽量把这里讲得细一点,你也着重看看这里。

声明:
字符串的声明叫char,就像整型数字叫int一样

char ch;//一个字符命名为c
scanf("%c",&ch)//读入一个字符ch,注意是“%c”

既然你已经知道数组的概念了,我们可以直接:

char str[100];长度为100的字符串
scanf("%s",str);//读入这个字符串str,注意是“%s”并且不用带“&”,这里不像数字需要循环读入,这样可以直接读一行连续的字符比如“aabbcc”

下标索引的问题同样存在,但我们发现不能循环读入的char数组好像无法控制从几开始索引???!!!!

无妨,教你一招

scanf("%s",(str+1));//表示从字符串数组的第一个位置开始存放字符

woc,我们这样就完成了从1索引字符数组的操作,是不是帅飞了!!!??!!!

然后我要回宿舍睡觉了,等我下次来机房再继续写叭,爱你辣椒么么么么。


Comment