IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 11月29—12月5日(本周c语言学习小结) -> 正文阅读

[C++知识库]11月29—12月5日(本周c语言学习小结)

本周小结:数据类型,指针,数组运用;

一。数据结构:

1.枚举:enum :枚举类型的名字(名字1,名字2,...,名字n){从0开始一直到n}

枚举实际上是以整数(类型为int)作为内部计算和外部输入输出的,当需要一些可以排列起来的常量值时,定义枚举的意义九四给了这些常量的名字。

这是慕课上关于枚举的例题:

enum colors{red,yellow,green};

创建三个常量,red的值是0,yellow的值是1,green的值是2;

#include<stdio.h>

enum color{ red,yellow,green};

void f(enum color c);

int main(void)
{
	enum color t = red;
	scanf("%d",&t);
	f(t);
	
	return 0;
}0

void f(enum color c)

{
	printf("%d\n",c);
}

套路:自动计数的枚举(慕课上的)这个突出枚举使用的好处

#include<stdio.h>

enum COLOR {RED,YELLOW,GREEN,NUMCOLORS};

int main( int argc,char const *argc[])

{
	int color = -1;
	char *ColorNames[NumCOLORS] = {"red","yellow","green",};
	
	char *colorName = NULL;
	
	printf("请输入你喜欢的颜色的代码:");
	scanf("%d",&color);
	if( color >=0 && color < NumCOLORS){
		colorName  ColorNames[color];
	}else {
		colorName = "unknown";
	} 
	printf("你喜欢的颜色是%s\n",colorName);
	
	return 0;
 } 

声名枚举量的时候可以指定值

enum COLOR{RED=1,YELLOW,GREEN=5}

2.结构:

1.声明结构类型:

?2.结构用。运算符和名字访问器成员

例:today.day

student.firstName

3.结构与函数

输入结构->

#include<stdio.h>

struct point{
	int x;
	int y;
	};

void getStruct(struct point);
void output(struct point);
int main()
{
	struct point y = {0,0};
	getStruct(y);
	output(y);
}
void getStruct(struct point p)
{
	scanf("%d",&p.x);
	scanf("%d",&p.y);
	printf("%d,%d\t",p.x,p.y);
}
N
void output(struct point p)
{
	printf("%d,%d",p.x,p.y);
}

因为函数读入p的数值之后,没有任何东西回到main,所以y还是{0.0}(这个地方当时想不通)

解决方案:

?4.结构指针参数:

?二.本周练习:

1.结构类型(学生成绩统计)(菜鸟)

#include <stdio.h>
struct student
{
    char name[50];
    int roll;
    float marks;
} s;
 
int main()
{
    printf("输入信息:\n");
 
    printf("名字: ");
    scanf("%s", s.name);
 
    printf("编号: ");
    scanf("%d", &s.roll);
 
    printf("成绩: ");
    scanf("%f", &s.marks);
 
 
    printf("显示信息:\n");
 
    printf("名字: ");
    puts(s.name);
 
    printf("编号: %d\n",s.roll);
 
    printf("成绩: %.1f\n", s.marks);
 
    return 0;
}

?2.结构(复数相加)(菜鸟)

#include <stdio.h>
 
typedef struct complex
{
    float real;
    float imag;
} complex;
complex add(complex n1,complex n2);
 
int main()
{
    complex n1, n2, temp;
 
    printf("第一个复数 \n");
    printf("输入实部和虚部:\n");
    scanf("%f %f", &n1.real, &n1.imag);
 
    printf("\n第二个复数 \n");
    printf("输入实部和虚部:\n");
    scanf("%f %f", &n2.real, &n2.imag);
 
    temp = add(n1, n2);
    printf("Sum = %.1f + %.1fi", temp.real, temp.imag);
 
    return 0;
}
 
complex add(complex n1, complex n2)
{
      complex temp;
 
      temp.real = n1.real + n2.real;
      temp.imag = n1.imag + n2.imag;
 
      return(temp);
}

?3.指针访问数组

#include <stdio.h>
 
int main()
{
   int data[5], i;
   printf("输入元素: ");
 
   for(i = 0; i < 5; ++i)
     scanf("%d", data + i);
 
   printf("你输入的是: \n");
   for(i = 0; i < 5; ++i)
      printf("%d\n", *(data + i));
 
   return 0;
}

4.二维数组的叠加

#include<stdio.h>

int main()
{
	int a[10][10];
	int i,j,x,k; 
	scanf("%d",&x);
	
	for(k=0;k<x-1;k++)
	{
	  for(i=k;i<x-k;i++)
	  {
	  	for(j=k;j<x-k;j++)
	  	a[i][j]=k+1;
	  }	
	}
	for(i=0;i<x;i++)
	{
		for(j=0;j<x;j++)
		{
			printf("%4d ",a[i][j]);
		}
		printf("\n\n");
	}
	
}

5.二维数组的转置

#include<stdio.h>

int main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j;
for(i=0;i<3;i++)
{
	for(j=0;j<3;j++)
	{
	printf("%d",a[i][j]);	
	}
	printf("\n"); 
}
    printf("\n");
for(j=0;j<3;j++)
{
	for(i=0;i<3;i++)
	{
		printf("%d",a[i][j]);
	}
	printf("\n");
}	
}

6.杨辉三角形

#include<stdio.h>

int main()
{
	int a[10][10];
	int i,j,x,z;
	scanf("%d",&x);
	
	for(i=0;i<x;i++)
	{
		for(j=0;j<x;j++)
		{
			if(j==0||i==j)
                {
                	a[i][j]=1;
				}
				else
				{
					a[i][j]=a[i-1][j-1]+a[i-1][j];
				}
		}
	}
	for(i=0;i<x;i++)
	{
		for(j=0;j<x;j++)
		{
			if(i>=j)
		   printf("%d  ",a[i][j]);	 
		}
		printf("\n");	
    } 
}

这个环形二维数组(本周c课老师出的题,本想根据杨辉三角敲出来,但是还存在一些问题)

#include<stdio.h>

int main()
{
	int a[10][10]={0};
	int i,j,x,n=1;
	scanf("%d",&x);
	for(int y=2;y>0;y--)
	{
		for(j=0;j<x;j++)
		{
		    a[0][j]=n++;	
		}
		printf("%d\n",j);
		for(i=1;i<x;i++)
		{
			a[i][x]=n++;
		}
		printf("%d\n",i);
		for(j--;i>0;j--)
		{
			a[x][j]=n++;
		}
		printf("%d\n",j);
		for(i--;i>0;i--)
		{
			a[i][0]=n++;
		}
		printf("%d",i);
	}
		for(i=0;i<x;i++)
		{
			for(j=0;j<x;j++)
			{
				printf("%d",a[i][j]);
			}
		}
	}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:04:14  更:2021-12-06 15:05:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:53:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码