第七堂作业

循环嵌套:

//输出三个各自的成绩平均数//
//并输出他们大于90的成绩//
#include<stdio.h>
void main()
{
	int i,j,a[3][3],sum=0,b[3];   //定义一个二维数组表示三位同学的三门科目//
	printf("请输入他们的成绩:\n"); //定义一个数组表示三位同学各自成绩的平均数//
	for(i=0;i<3;i++)               //外循环(三位同学)//
	{
		for(j=0;j<3;j++)           //内循环三门成绩//
		{
			scanf_s("%d",&a[j][i]);
		    sum=sum+a[j][i];
		}
		b[i]=sum/3;
		sum=0;
	}
	printf("他们各自成绩的平均分为:%d %d %d\n",b[0],b[1],b[2]);
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			if(a[j][i]>90)
	printf("%d ",a[j][i]);//输出大于90的成绩//
		}
	}
}

效果如图:


任务2:

函数的递归:

#include<stdio.h>
//这是一个求阶乘的函数//
long ff(int n)
{
	long f;
	if(n<0)
		printf("n<0,input error");//定义递归退出的条件//
	else if(n==0||n==1)
		f=1;              //如果输入的值是0或1 返回f=1//
	else f=ff(n-1)*n; //递归逐层退回//
	return(f);
}
void main()
{ 
	int n;
	long y;
	printf("请输入一个数字:\n");
	scanf_s("%d",&n);
	y=ff(n);   //主函数调用ff后进入ff函数执行//
	printf("%d!=%ld\n",n,y);//输出阶乘的值//
}

效果图如下:

任务三:

位运算:

~是取反符号,比如数字2的二进制数十10 取反后是01
<< >>是左移与右移符号,如 4<<1 相当于100左移一位 1000 得到8相反用4>>1就得到2
&符号是位与运算符,2个数做与运算,都是1时得到1,其他为0 ,如二进制数1010 和1001做运算最后得到1000
|是位或运算,2个数运算只要有一个是1就得到1,如二进制数1010和1001得到进过1011
^异或运算,相同为0不同为1  如二进制数 1010和1001 得到0011;

a&b 相同位的两个数字都为1,则为1;若有一个不为1,则为0。
a|b 相同位只要一个为1即为1。
a ^ b 相同位不同则为1,相同则为0。
~a 取反
a << b 左移b位
a >> b右移b位

 程序如下:

#include<stdio.h>
void main()
{
	char a='a',b='b';
	int p,c,d;p=a;
	p=(p<<6)|b;
	d=p&0xff;
	c=(p&0xff00)>>6;
	printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}


效果图:

位运算好多。有些乱,。。。慢慢梳理就好了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值