C语言基础:练习日

本文概述了大端存储与小端存储的概念,介绍了GCC编译器的分步过程,讨论了文件系统目录结构,涉及C++编程中的基本操作,如文件剪切、赋值,以及日期计算和特定程序功能如素数和完美数的判断。同时,还分析了while语句和头文件查找机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 请简述什么大端存储和小端存储?
    小端存储为地址低位存储数据低位;地址高位存储数据高位
    大端存储为地址高位存储数据低位;地址低位存储数据高位

  2. 请简述gcc的分步编译?
    预处理:展开头文件,替换宏,删除注释  gcc -E ***.c -o ***.i
    编译:检查语法的正确性,生成汇编文件        gcc -S ***.i -o ***.s
    汇编:把汇编文件转换二进制文件    gcc -c ***.s -o ***.o
    链接:把二进制文件链接为可执行文件    gcc ***.o -o 可执行文件

  3. 请回答文件剪切、赋值的指令,并说明/etc   /usr   /mnt分别表示什么意思?
    文件剪切的命令为mv;文件复制的命令为cp,/etc文件夹一般存放系统的所有配置文件;/usr是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;/mnt文件夹常用于作为被挂载的文件系统的挂载点。

  4. 请问一下代码的输出结果是?

  5. unsigned int  i;  

    for(i=5;i>=0;i--)

    {

    printf(“hello\n”);

    }
    会无限输出hello因为i为无符号数,所以当他小于零的那个时候其实他已经溢出成最大值了,所以会一直输出,不可能会有小于0的情况。

  6. 请回答以下问题
    a=181 c=-75 d=6 e=5

  7. 设有以下语句:int a=3,b=6,c; c=a^b<<2; 则c的二进制值是
    0000 0000 0001 0100

  8. 请回答以下程序

    .
    32

  9. 输入年月日,使用switch编程实现计算这是这一年的第几天? 
    Eg  输入:2024  4  1输出:这是这一年的第92天
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, const char *argv[])
    {
    	int f=0,y=0,m=0,d=0,sum=0;
    	printf("请输入您想判断的年月日,请以xxxx xx xx的形式输出:");
    	scanf("%d %d %d",&y,&m,&d);
    	if(y%4==0 && y%100 !=0 || y%400==0){
    		f=1;
    	}
    	switch(f){
    	case 0:
    		for(int i=1;i<=m-1;i++){
    			switch(i){
    			case 1:sum+=31;break;
    			case 2:sum+=28;break;
    			case 3:sum+=31;break;
    			case 4:sum+=30;break;
    			case 5:sum+=31;break;
    			case 6:sum+=30;break;
    			case 7:sum+=31;break;
    			case 8:sum+=31;break;
    			case 9:sum+=30;break;
    			case 10:sum+=31;break;
    			case 11:sum+=30;break;
    			case 12:sum+=31;break;
    			}
    		}
    		printf("这是这一年的第%d天\n",sum+=d);break;
    	case 1:
    		for(int i=1;i<=m-1;i++){
    			switch(i){
    			case 1:sum+=31;break;
    			case 2:sum+=29;break;
    			case 3:sum+=31;break;
    			case 4:sum+=30;break;
    			case 5:sum+=31;break;
    			case 6:sum+=30;break;
    			case 7:sum+=31;break;
    			case 8:sum+=31;break;
    			case 9:sum+=30;break;
    			case 10:sum+=31;break;
    			case 11:sum+=30;break;
    			case 12:sum+=31;break;
    			}
    		}
    		printf("这是这一年的第%d天\n",sum+=d);break;
    	}
    	f=0;
    	return 0;
    }

  10. 简述以下程序


    while语句后面加了;也就是那么下面的x—永远不会执行,程序会一直不做事,也就是发呆,也不会结束。

  11. 请简述以下程序的区别


     

    系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。
    用户自定义的头文件用双引号括起来,编译器首先会在用户目录下查找,然后再到 C++ 的安装目录(Linux 中可以通过环境变量来设定)中查找,最后在系统文件中查找。

  12. 请简述以下程序的


    无限次

  13. 请编程实现

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MIN 0
    int main(int argc, const char *argv[])
    {
    	int n1=0,n2=0;
    	printf("请输入两个整数:");
    	scanf("%d %d",&n1,&n2);
       	int	put=n1>n2?n1:MIN;
    	if (put==n1){
    		printf("%d\n",n2);
    	}else if(put==MIN){
    		printf("%d\n",n1);
    	}
    	return 0;
    }


  14. 请编程实现输出起始值到终止值之间的素数
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, const char *argv[])
    {
    	int n1=0,n2=0,f=0;
    	printf("请输入素数判断的起始值和终止值:");
    	scanf("%d %d",&n1,&n2);
    	if(n1>n2){
    		int temp=n2;
    		n2=n1;
    		n1=temp;
    	}
    	for(int i=n1;i<=n2;i++){
    		f=0;
    		for(int j=2;j<i;j++){
    			if(i%j==0){
    				f=1;
    				break;
    			}
    		}
    		if(f==0){
    			printf("%d ",i);
    		}
    	}
    	putchar(10);
    	return 0;
    }
    

  15. 请编程实现输出起始值到终止值之间的完美数
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, const char *argv[])
    {
    	int n1=0,n2=0,sum=1;
    	printf("请您输入想要判断的起始值和终止值:");
    	scanf("%d %d",&n1,&n2);
    	for(int j=n1;j<=n2;j++){
    		sum=1;
    		for(int i=2;i<j;i++){
    			if(j % i==0){
    				sum+=i;
    			}
    		}
    		if(sum==j){
    			printf("%d ",j);
    		}
    	}
    	putchar(10);
    	return 0;
    }
    

  16. 请变成实现图形打印
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, const char *argv[])
    {
    	int count=0;
    	for(int i=0;i<=6;i++){
    		count=0;
    		if(i==0){
    			continue;
    		}
    		for(int j=0;j<i*2;j++){
    			
    			if(j>=i){
    				printf("%c",70-count++);
    			}else{
    				putchar('_');
    			}
    		}
    		putchar(10);
    	}
    	return 0;
    }
    

  17. 循环输入10个成绩,请计算最大值,最小值
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    int main(int argc, const char *argv[])
    {
    	int n=0,max=0,min=0,temp=0;
    	printf("请输入您的成绩:");
    	scanf("%d",&n);
    	max=n;
    	min=n;
    	
    	for(int i=1;i<=9;i++){
    		putchar(10);
    		printf("请输入您的成绩:");
    		scanf("%d",&n);
    		
    		if(n>=max){
    			max=n;
    		}
    		if(n<=min){
    			min=n;
    		}
    	}
    	printf("10个成绩中成绩最高为:%d\n成绩最低为:%d\n",max,min);
    	return 0;
    }
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值