C语言练习

C语言打印空心菱形

#include<stdio.h>
void printStars();
void main(){
   
   
   int totalLevel = 5;
   printStars(totalLevel);
   getchar();
    
}

void printStars(int totalLevel){
   
    int i,j,k;
    for(i=0;i<=totalLevel;i++){
   
        for(k=totalLevel-i;k>0;k--){
   
           printf(" ");
        }       
        for(j=0;j<2*i-1;j++){
   
          if(i>0 && i<=totalLevel){
   
              if(j==0 || j==2*i-2){
   
                  printf("*");
              }else{
   
                  printf(" ");
              }
          }else{
   
             printf("*");
          }
        }       
       printf("\n");
    }
    //反向打印金字塔
    for(i=0;i<=totalLevel-1;i++){
   
        for(k=0;k<=i;k++){
   
           printf(" ");
        }
        for(j=0;j<(2*(totalLevel-i-1)-1);j++){
   
            if(i>=0 && i<totalLevel-1){
   
               if(j==0 || j==(2*(totalLevel-i-1)-2)){
   
                   printf("*");
               }else{
   
                   printf(" ");
               }                         
            }else{
   
              printf("*");
            }         
        }
        printf("\n");
    }
}

在这里插入图片描述

C语言中,char数组的赋值问题。

在这里插入图片描述
在这里插入图片描述
之所以,char a[10]; a=“hello”;错误。个人理解:
就是在声明一个10个字符的空间的数组的时候,a就变成了指向这个空间的指针,之后执行a=“hello”;相当于是一个赋值操作,但是字符数组是不能赋给一个常量的,(指针地址视为常量)。
但是语法char a[10]="hello"符合C语言语法,理由简单来说就是在开辟空间的时候,做了对应字符位置上的赋值操作,视为a[0]='a’等等,且此时的=号并不理解为赋值操作,应该视为初始化操作。
(学习后的理解:char arr[]; arr就是数组的头指针,char *arr=“”;就是定义了一个指针指向了字符数组的头指针,通过指针去初始化一个字符串,不需要指定数组大小,限制较小,是比较合理且高校的初始化操作)

共用体

共用体并不是如它的名字所显示的那样,多个个结构体中有多个相同相同的字段,少量不同的字段,我们把相同的字段提取出来单独弄个结构体存储(这种理解也是愚蠢的 )。
其实,恰恰相反,C语言的共用体,是将不同的字段进行封装,这些不同的字段是共享内存的,并已目前最大的影响的字节数的赋值为主,当进行更多字节赋值的时候,会影响已赋值的数据。
在这里插入图片描述
当我们,new出不同的结构体对象的时候,其共用体之间并不是共享的。只是在当前相同的结构体对象时,是共享的。
实例代码:

#include <stdio.h>
#define TOTAL 2
struct Person{
   
	char name[20];
	int num;
	char sex;
	char perfession;
	union{
   
		float score;
		char course[20];
	}sc; //sc是一个共用体的名字
};


void main(){
   
	int i;
	struct Person persons[TOTAL]; //定义两个结构体对象

	for (i=0;i<TOTAL;i++)
	{
   
		printf("input info:");
		scanf("%s %d %c %c",persons[i].name,&(persons[i].num),&(persons[i].sex),&(persons[i].perfession));
		if (persons[i].perfession=='s')
		{
   
			printf("请输入学生的成绩:");
			scanf("%f",&(persons[i].sc.score));
		} 
		else
		{
   
			printf("请输入老师的课程:");
			scanf("%f",&(persons[i].sc.score));
		}
		fflush(stdin); //清空输入缓冲区
	}

	//输出人员信息
	printf("\nName\t\tNum\tSex\tProfession\tScore / Course\n");
	for(i=0; i<TOTAL; i++){
   
		if(persons[i].perfession == 's'){
    //如果是学生
			printf("%s\t\t%d\t%c\t%c\t\t%f\n", persons[i].name, persons[i].num, persons[i].sex, persons[i].perfession,
				persons[i].sc.score);
		}else{
    //如果是老师
			printf("%s\t\t%d\t%c\t%c\t\t%s\n", persons[i].name, persons[i].num, persons[i].sex, persons[i].perfession,
				persons[i].sc.course);
		}
	}
	getchar();
	getchar();
}

练习

编程创建一个 Box 结构体,在其中定义三个成员表示一个立方体的长、宽和高,长宽高可以通过控制台输入。
定义一个函数获取立方体的体积(volume)。
创建一个结构体,打印给定尺寸的立方体的体积。

#include <stdio.h>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值