吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4126|回复: 69

[C/C++] 学C语言的第四天的15个练习

  [复制链接]
白云点缀的蓝 发表于 2021-4-22 00:43 | 显示全部楼层 |阅读模式

搜狗截图21年04月22日0039_3.png
[C] 纯文本查看 复制代码
#include <stdio.h>
#define OK 0;
#include <windows.h>
#include <time.h>
#include <string.h>
int main31() {
//打印数组的变量名时为地址
	int a[5];
	printf("%#X\n", &a);
	printf("%u\n",a);
	printf("%u\n", &a);
	printf("%u\n", &a[1]); //&a+4
	printf("%u\n", a+1);
	printf("%u\n", (&a)+1);
	printf("%u\n", (&a[1])+1);
	return 0;
}
int main32() {
	//求数组的最大值
	int a[] = { 1,3,5,12,45,36,37,12,85,74,95 };
	int max = a[0];
	for (int b=1;  b <=sizeof(a)/sizeof(a[0]);b++)
	{
		if (a[b]>max)
		{
			max = a[b];
		}
	}
	printf("%d\n", max);
	return OK;
}
//数组的逆置
int main33() {
	int arr[] = {1,2,3,4,5,6,7,8,9,0};
	int i = 0;//数组开头下标
	int j = (sizeof(arr) / sizeof(arr[0])) - 1;//数组下标为实际长度减一
	int tmp = 0;//临时存放,用于交换数据
	while (i<j)
	{
		tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
		i++;
		j--;
	}
	int length=sizeof(arr) / sizeof(arr[0]);
	for (int a=0;a<length;a++)
	{
		printf("%d", arr[a]);
		if (a!=sizeof(arr)/sizeof(arr[0])-1)
		{
			printf("%s", ",");
		}

	}
	return OK;

}
//二维数组
int main34() {
	int a[3][4];//定义一个三行四列的二维数组
	int j = 0;
	printf("%d\n", sizeof(a[3][4]));
	printf("%d\n", sizeof(a));
	for (int i = 0; i <3; i++)
	{
		for (int b=0;b<4;b++)
		{
			srand(time(NULL));
			a[i][b] = rand();
			Sleep(1000);//因为执行速度太快所以睡1秒,反正随机数相同
			j++;
			printf("j=%d%d\n",j, a[i][b]);
		}
	}
	printf("%d\n",sizeof(a)/sizeof(a[0][0])  );
	return OK;

}
//二维数组
int main35() {
	int a[3][4] = {
	{1,2,3,4},//第一行
	{5,6,7,8},//第二行
	{9,10,11,12} };//第三行 
	for (int i=0;i<3;i++)
	{
		for (int j=0;j<4;j++)
		{
			printf("%d\n", a[i][j]);
		}
	}
	int c[][5] = {
		{1,2,5,7,9},
		{5,6,7,2,8},
		{1,54,7,8,9},
	};
	int d[3][4] = { {1,2,3,4} };//如果只给部分元素初始化,那么其他元素为零
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			printf("%d\n", d[i][j]);
		}
	}
	//int a[][] = {};行下标可以为空,列下标不能为空
	return OK;

}

[C] 纯文本查看 复制代码
//求数组的行,与列
int main36() {
	int a[4][5] = { {1,2,4,5,6} };
	printf("%d\n", sizeof(a[0]));//20    一行的总字节数
	printf("%d\n", sizeof(a));//80       数组的总字节数
	printf("%d\n", sizeof(a[0][0]));//4  int的字节大小
	//总行数
	int line=	sizeof(a) / sizeof(a[0]);
	printf("%d\n", line);
	//总列数
	int row = sizeof(a[0]) / sizeof(a[0][0]);
	printf("%d\n", row);
	return OK;

}
int main37() {
	int a[4][5] = { {1,2,4,5,6} };
	printf("a=%u\n", a);
	printf("a[0]=%u\n", a[0]);
	printf("a[0][0]=%u\n", a[0][0]);
	printf("a + 1=%u\n", a + 1);
	printf("a[0] + 1=%u\n", a[0] + 1);
	printf("a[0][0] + 1=%u\n", a[0][0] + 1);
	printf("&a=%u\n", &a);
	printf("&a[0]=%u\n", &a[0]);
	printf("&a[0][0]=%u\n", &a[0][0]);
	printf("&a+1=%u\n", &a+1);
	printf("&a+1=%u\n", &a+1);
	printf("&a[0]+1=%u\n", &a[0]+1);
	printf("&a[0][0]+1=%u\n", &a[0][0]+1);
	printf("&a + 1=%u\n", &a + 1);

	/*
	a=14088300
a[0]=14088300
a[0][0]=1
a + 1=14088320
a[0] + 1=14088304
a[0][0] + 1=2
&a=14088300
&a[0]=14088300
&a[0][0]=14088300
&a+1=14088380
&a+1=14088380
&a[0]+1=14088320
&a[0][0]+1=14088304
&a + 1=14088380
	*/
	printf("a=%X\n", a);
	printf("a[0]=%X\n", a[0]);
	printf("a + 1=%X\n", a + 1);
	printf("a[0] + 1=%X\n", a[0] + 1);
	printf("&a=%X\n", &a);
	printf("&a[0]=%X\n", &a[0]);
	printf("&a[0][0]=%X\n", &a[0][0]);
	printf("&a+1=%X\n", &a + 1);
	printf("&a+1=%X\n", &a + 1);
	printf("&a[0]+1=%X\n", &a[0] + 1);
	printf("&a[0][0]+1=%X\n", &a[0][0] + 1);
	printf("&a + 1=%X\n", &a + 1);
	/*
a=D6F86C
a[0]=D6F86C
a + 1=D6F880
a[0] + 1=D6F870
&a=D6F86C
&a[0]=D6F86C
&a[0][0]=D6F86C
&a+1=D6F8BC
&a+1=D6F8BC
&a[0]+1=D6F880
&a[0][0]+1=D6F870
&a + 1=D6F8BC
	*/
	return OK;

}
//求平均数,不及格人数,总分数
int main38() {
	float cores[3][4] =
	{
	{90,65,40,55},
	{40,90,80,70},
	{60,25,47,88}
	}
	;
	float sum = 0.0;//总分数
	int numer[4] = {0};//不及格人数
	float ave[4] = { 0 };//平均数
	int k = 0;
	printf("%d\n", sizeof(cores) / sizeof(cores[0]));
	printf("%d\n", sizeof(cores[0]) / sizeof(cores[0][0]));
	for (int i=0;i< sizeof(cores[0]) / sizeof(cores[0][0]);i++)
	{
		sum = 0.0;
		for (int j = 0; j < sizeof(cores) / sizeof(cores[0]); j++)
		{
			if (cores[j][i]<60)
			{
				numer[i]++;
			}
			sum += cores[j][i];
		}
		printf("%s%f\n","总成绩", sum);
		ave[k]= sum / (sizeof(cores) / sizeof(cores[0]));
		printf("%f\n", ave[k]);
		printf("%d\n", numer[i]);
		k++;
	}
	return OK;
}

int main40() {
	char ch[10];
	gets(ch); //会读取空格,
	printf("%s\n", ch);
	return OK;
}
int main39() {
	char ch[10];
	fgets(ch,sizeof(ch),stdin );//会把回车键\n读取
	printf("%s\n", ch);
	return OK;
}

[C] 纯文本查看 复制代码
int main41() {
	char buf[10]="starry8";
	int strl= strlen(buf)-1;
	buf[strl] = '\0';
	printf("%d\n",strl);
	printf("%s\n", buf);//starry
	buf[strl-1] = 0;
	printf("%s\n", buf);//starr
	return OK;
}

int main42() {
	char ch[10] = "starry";
	int i = 0;
	/*
	strlen(ch);
	while (ch[i]!='\0')
	{
		i++;
	}
	*/
	printf("%d\n", i);//6
	int num=strlen(ch);
	printf("%d\n", num);//6
	return OK;
}
int main43() {
	char luntan[10] = "夜星空";
	//puts(luntan);//把夜星空输出到控制台
	fputs(luntan, stdout);
	return OK;
}
int main44() {
	char luntan[10] = "夜星空";
	int i = 0;
	while (luntan[i]!='\0')
	{
		i++;
	}
	printf("%d\n",i);//一个中文占两个字节//6

	while (i!=0)
	{
		luntan[i] = '\0';
		i -= 2;
		fputs(luntan, stdout);
		printf("\n");
		/*
		夜星空
		夜星
		夜
		*/
	}
	return OK;
}
int main45() {
	//产生随机数
	srand(time(NULL));//因为时间每时每刻都在变,所以选择时间当随机种子
	int rdnumer = rand();
	printf("%d\n", rdnumer);
	return OK;
}
extern int my_sum(int a, int b);
extern int my_sub(int a, int b);
extern  int my_mul(int a, int b);
extern int my_div(int a, int b);
extern int my_get_max(int a, int b);
extern int my_get_min(int a, int b);
int main46() {
	printf("%d\n", my_sum(98, 100));//求和
	printf("%d\n", my_sub(200, 50));//减法
	printf("%d\n", my_mul(50, 40));//乘法
	printf("%d\n", my_div(10, 5));//除法
	printf("%d\n", my_get_max(100, 60));//求最大值
	printf("%d\n", my_get_min(40, 20));//求最小值
	return OK;
}
int my_sum(int a, int b) {
	return a + b;
}
int my_sub(int a, int b) {
	return a - b;
}
int my_mul(int a, int b) {
	return a * b;
}
int my_div(int a, int b) {
	return a / b;
}
int my_get_max(int a, int b) {
	return a > b?a:b;
}
int my_get_min(int a, int b) {
	return a < b?a:b;
}

评分

参与人数 8HB +6 THX +4 收起 理由
浅酌◇咖啡 + 1 + 1
消逝的过去 + 1
后学真 + 1
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
l278785481 + 1
agan8888 + 1
king51999 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
李沉舟 发表于 2021-6-11 12:32 | 显示全部楼层

可以找个OJ平台用C练下算法啥的,单纯学语法并没有什么作用,我现在做CTF题RE里限制我的一直是算法。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bnjzzheng 发表于 2021-11-7 18:23 | 显示全部楼层

希望楼主继续坚持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gwgirl 发表于 2021-12-13 16:40 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
tkmOD6 发表于 2022-2-24 22:41 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
sNPjeZi 发表于 2022-2-28 10:26 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Rrquk3 发表于 2022-2-28 10:37 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
tiEo943 发表于 2022-3-1 01:24 | 显示全部楼层

不知道来晚了没有
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
CQPyO618 发表于 2022-3-2 07:42 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
kZNywIf83 发表于 2022-3-27 19:16 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表