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 (系统默认存放的软件资源)
/mnt (挂载点文件目录)
4. 请问一下代码的输出结果是?
unsigned int i;
for(i=5;i>=0;i--)
{
printf(“hello\n”);
}
hello
无限循环
请把 unsigned 无符号去掉
5.请回答以下问题
第9行报错,修改为++d
181转二进制 | 0000 0000 1011 0101 | |
char 是字节 | 1011 0101 | 补码 |
1011 0100 | 反码 | |
1100 1011 | 原码 | |
-75 |
c=-75
a=181
d=5
e=5
6.设有以下语句:int a=3,b=6,c; c=a^b<<2; 则c的二进制值是
a=3 | 0000 0011 |
b=6 | 0000 0110 |
a^b | 0000 0101 |
<<2 | 00 0101 00 |
c的二进制是0001 0100
7.请回答以下程序
a+=3!=3 | a+=0(3与3不相等为假) | a=3 |
a*=++a+a | 由于++a,a=4 | 4*(4+4) |
最终 | 32 |
8. 输入年月日,使用switch编程实现计算这是这一年的第几天?
Eg 输入:2024 4 1
输出:这是这一年的第92天
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int year,yy,rr;
printf("请输入年:");
scanf("%d",&year);
int y01=31,y02,y03=31,y04=30,y05=31,y06=30,y07=31,y08=31,y09=30,y10=31,y11=30,y12=31;
if(year%4==0&&year%100!=0||year%400==0)
y02=29;
else
y02=28;
printf("请输入月:");
scanf("%d",&yy);
printf("请输入日:");
scanf("%d",&rr);
switch(yy)
{
case 1:printf("这是这一年的第%d天\n",rr);break;
case 2:printf("这是这一年的第%d天\n",rr+y01);break;
case 3:printf("这是这一年的第%d天\n",rr+y01+y02);break;
case 4:printf("这是这一年的第%d天\n",rr+y01+y02+y03);break;
case 5:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04);break;
case 6:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05);break;
case 7:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06);break;
case 8:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06+y07);break;
case 9:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06+y07+y08);break;
case 10:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06+y07+y08+y09);break;
case 11:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06+y07+y08+y09+y10);break;
case 12:printf("这是这一年的第%d天\n",rr+y01+y02+y03+y04+y05+y06+y07+y08+y09+y10+y11);break;
default :printf("无法判断");break;
}
printf("%d年%d月%d日\n",year,yy,rr);
return 0;
}
9.简述以下程序
int 是整数,x值等于5
while循环,条件是 x>0 (当 X 小于0,条件不成立,会停止循环)
x-- 没循环一次,x-1 赋值给 x
10.请简述以下程序的区别
#include "stdio.h":这是字符串
#include <stdio.h>:这是头文件
11.请简述以下程序的
int是整数,n赋值是0
while循环,n=1 赋值是1的意思,
n++ 先运算,后赋值
执行次数无限
12.请编程实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define A 77
#define B 42
int main(int argc, const char *argv[])
{
int a,b;
a=A;
b=B;
if(a>b)
{
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d\n",a,b);
}
else
printf("a=%d,b=%d\n",a,b);
return 0;
}
13,请编程实现输出起始值到终止值之间的素数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a=0,b=0,i;
printf("请输入起始值:");
scanf("%d",&a);
printf("请输入终止值:");
scanf("%d",&b);
int test=0;
if(1==a)
printf("素数 %d ",a);
else
printf("素数 ");
for(a;a<=b;a++)
{
test=0;
for(i=1;i<a;i++)
{
if(a%i==0)
{
++test;
}
}
if(test==1)
printf("%d ",a);
}
putchar(10);
return 0;
}
14,请编程实现输出起始值到终止值之间的完美数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c,i=0,j=0,sum;
printf("请输入起始值:");
scanf("%d",&a);
printf("请输入结束值:");
scanf("%d",&b);
for(i=a;i<b;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(i==sum)
printf("%-4d",i);
}
putchar(10);
return 0;
}
15,请变成实现图形打印
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c;
for(a=0;a<6;a++)
{
for(b=0;b<=a;b++)
{
printf("_");
}
for(b=0,c=70;b<=a;b++,c--)
{
printf("%c",c);
}
putchar(10);
}
return 0;
}
16,循环输入10个成绩,请计算最大值,最小值.:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,max=0,min=1000,i,l;
for(i=1;i<=10;i++)
{
printf("请输入成绩(%d):",i);
scanf("%d",&a);
l=a;
if(l>max)
{
max=l;
}
if(l<min)
{
min=l;
}
}
putchar(10);
printf("最好成绩%d\n最差成绩%d\n",max,min);
return 0;
}