第一次作业
1,函数返回一个值给主函数临时空间由什么来承担?
临时空间具有常性(只允许读不允许改)
eax,ebx,ecx,edx,寄存器
eax作为累加器,有些时候也作为程序计数的返回值,占32个2进制位,4个字节,用ax访问后面16位,aL访问最后8位,ah访问ah的8位,前面的16位会移到后面用ah,aL,ax来访问;左高右低左边为高位;
ebx当作基地址;
ecx当作计数器来用;例如for循坏
edx与指针有关;
2,vs如何设置栈桢的大小?
3,如何改变程序的入口?
4,比较三个数中最大、最小、以及中间的数并打印出来(要求自己写函数)
#include<string.h>
#include<stdio.h>
#include <math.h>
int Int_Max(int a, int b, int c)
{
int max = 0;
if (a > b)
{
max = a;
}
else if (max < c)
{
max = c;
}
return max;
}
int Int_Min(int a, int b, int c)
{
int min = a<b ? a : b;
return min < c ? min : c;
}
int Int_Mid(int a, int b, int c)
{
int mid = 0;
int d = a > b ? a : b;
int e= a < b ? a : b;
if (d < c)
{
mid=d;
}
else if (c<e)
{
mid = e;
}
else
{
mid = c;
}
return mid;
}
int main()
{
int a, b, c;
scanf_s("%d %d %d", &a, &b, &c);
printf("三个数中最大的数的是:%d\n",Int_Max(a,b,c));
printf("三个数中处于中处于中间的数:%d\n",Int_Mid(a, b, c));
printf("三个数中最小的数的是:%d\n",Int_Min(a, b, c));
return 0;
}
运行结果:
5,双for循坏打印乘法口诀表格
int main()
{
for (int i=1;i<10;i++)
{
for (int j=1;j<10;j++)
{ if(i+1<j)
{
printf("%d*%d=%d\t",i,j, i * j);
}
}
printf("\n");
}
return 0;
}
运行结果:
6,把一维数组变为二维平面
#include <stdio.h>
#include<stdlib.h>//rand函数的头文件
#include<string.h>
#include<time.h>
void Pri()
{
srand(time(nullptr));//得到不同的随机数列需要不同的种子值;
int a[5] = { 0 };
for (int i = 1; i < 5; i++)
{
a[i] = rand() % 4 + 1;//rand()%4得到0,1,2,3的随机数
printf("%d", a[i]);
}
printf("\n");
for (int i = 1; i < 5; i++)//用两个for循环来表示第一个表示行数
{
for (int j = 1; j < 5; j++)
{
if (a[i]==j)//判断在第几列
{
printf("@");
}
else {
printf("#");
}
}
printf("\n");
}
}
int main()
{
Pri();
return 0;
}
7,给定一个一维数组
int main()
{
int n = 0;
printf("请输入数字:");
scanf_s("%d", &n);
for (int s = 1; s<= n; s++)//s为行数;
{
for(int i=1;i<=n-s+1;i++)
{
int j = i + s;//j为块数;
for(int k=i;k<j;k++)//不同行的块里面存放的数量不一样多
{
printf("%d", k);
}
printf("\t");
}
printf("\n");
}
}