C基础day6(2023.7.6)

2023-11-11

一、Xmind整理:

二、课上练习:

练习1:循环嵌套【三个循环结构可以任意嵌套】 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	for(int i=1;i<=5;i++)
	{
		for(int j=1;j<=i;j++)
		{
			printf("*");
		}
		printf("\n");
	}


	for(int i=1;i<=5;i++)
	{
		for(int j=5;j>=i;j--)
		{
			printf("*");
		}
		printf("\n");
	}


	for(int i=1;i<=5;i++)
	{
		for(int j=1;j<=6-i;j++)
			printf(" ");
		for(int j=1;j<=i;j++)
		{
			printf("*");
		}
		printf("\n");
	}


	for(int i=1;i<=5;i++)
	{
		for(int j=1;j<=i;j++)
			printf(" ");
		for(int j=5;j>=i;j--)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

练习2:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	for(int i='F';i>='A';i--)
	{
		for(int j='F';j>i;j--)
		{
			printf("_");
		}
		for(int j='F';j>=i;j--)
		{
			printf("%c",j);
		}
		printf("\n");
	}
	return 0;
}

 练习3:穷举算法: 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五, 鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

x:公鸡的个数0---20
y:母鸡的个数0----33
z:小鸡的个数0---100

100元:5*x+3*y+z/3==100
100值:x+y+z==100
鸡雏三值钱一: z%3==0

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int x,y,z;
	for(x=0;x<=20;x++)
	{
		for(y=0;y<=33;y++)
		{
			for(int z=0;z<=100;z++)
			{
				if(5*x+3*y+z/3==100&&x+y+z==100&&z%3==0)
					printf("x=%d y=%d z=%d\n",x,y,z);
			}
		}
	}
	return 0;
}

 

 练习4:一维数组的循环输入和输出

int main(int argc, const char *argv[])
{
    int arr[4];
    for(int i=0;i<4;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(int i=0;i<4;i++)
    {
    printf("%d ",arr[i]);
    }
}

练习5: 地址加1,表示向后移动一个元素大小字节,打印地址的格式控制符%p 

 int main(int argc, const char *argv[])
{
    int arr[4]={11,22,33,44};

    printf("arr=%p",arr);
    printf("&arr[0]=%p\n",&arr[0]);

    for(int i=0;i<4;i++)
    {
    printf("&arr[%d]=%p\n",i,&arr[i]);
    printf("arr+%d=%p\n",i,arr+i);   arr+i  等价于&arr[i]
    }

练习6: 循环输入n数组元素,计算和

int n;
printf("please enter n:");
scanf("%d",&n);
    int arr[n];
    int sum=0;
    for(int i=0;i<n;i++)
    {
    scanf("%d",&arr[i]);
    sum+=arr[i];

    }
printf("sum=%d\n",sum);

练习7: 循环输入n个数组元素,计算最大值,最小值

int n;
printf("please enter n:");
scanf("%d",&n);
    int arr[n];
    for(int i=0;i<n;i++)
    {
    scanf("%d",&arr[i]);
    }
    int max=arr[0];
    int min=arr[0];
    for(int i=0;i<n;i++)
    {
    if(max<arr[i])
        max=arr[i];
    if(min > arr[i])
        min=arr[i];
    }
printf("max=%d  min=%d\n",max,min);

练习8: 对数组初始化以下【2,3,4,76,8,5】元素,查找key=100是否存在

int arr[]={2,3,4,76,8,5};
//    sizeof(arr)/sizeof(int);
    int len=sizeof(arr)/sizeof(arr[0]);
    int key,count=0;
printf("please enter key:");
scanf("%d",&key);//3
    //循环输入比较key
    for(int i=0;i<len;i++)//
    {
if(key==arr[i])
{
count++;//计算key出现的次数
printf("存在\n");
break;
}
    }
    if(count==0)//if(i==len)
        printf("不存在\n");

练习9: 循环输入5个数组元素,冒泡排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n,t,i,j,k,count;
	printf("请问您想输入几个数组:");
	scanf("%d",&n);
	int a[n];
	for(i=0;i<n;i++)
	{
		printf("请输入第%d个数组:",i+1);
		scanf("%d",&a[i]);
	}
	for(j=1;j<n;j++)
	{
		count=0;
		for(k=0;k<n-j;k++)
		{
			if(a[k]>a[k+1])
			{
				t=a[k];
				a[k]=a[k+1];
				a[k+1]=t;
				count++;
			}
		}
		if(count==0)
			break;
	}
	for(j=0;j<n;j++)
		printf("%d\n",a[j]);
	return 0;
}

三、课后作业:

1.循环输入二维数组,计算所有元素的和

ubuntu@ubuntu:7.6$ cat 11.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int m,n,i,j;
	printf("请问您想输入几行几列的数组:");
	scanf("%d%d",&m,&n);
	int arr[m][n];
	int sum=0;
	for(i=0;i<m;i++)  
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	for(i=0;i<m;i++)   
	{
		for(j=0;j<n;j++)
		{           
			sum=sum+arr[i][j];            
		}
	}
	printf("所有元素和为:%d\n",sum);
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C基础day6(2023.7.6) 的相关文章

随机推荐