1.下面程序的输出是(D)
Void main( )
{
Unsigned char ucNum;
For (ucNum = 0; ucNum < 500; ucNum++){
......
}
Printf(“%d”, ucNum);
}
499 B. 500 C. 501 D. 无输出
无输出,ucNum是一个无符号字符类型,取值范围是0~255,一直在执行循环
2、在bash shell中,假设str=abc,请写出以下的输出的结果:
(1)echo “$str”
(2)echo ’$str’
(3)echo “’$str’”
1) abc
2)$str
3) 'abc'
1、bash中的特殊符号
①$:使用变量的前导符
②“ ”:具有变量置换的功能
③‘ ’:两个“”中间为可以先执行的命令
2、shell字符串
字符串可以用单引号,也可以用双引号
单引号 str='this is $a',即使存在变量a,这句话执行结果也还是this is $a,单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
双引号 str = "this is $a",如果a变量值是world,那么这句话执行结果将是this is world,双引号的优点是可以有变量,双引号里可以出现准义
3.链表逆置
Linklist rev_linklist(Linklist head)
{
//1,判断长度是否小于等于1
if(NULL ==head || NULL ==head->next)
{
return head;
}
//2,逆置
Linklist p=head->next;
head->next=NULL;
while(p!=NULL)
{
Linklist t=p;
p=p->next;
t->next=head;
head=t;
}
return head;
}
4、大小端存储的区别,判断大小端存储的方法
大端存储:地址高位存储数据低位,地址低位存储数据高位。大型网络
小端存储:地址高位存储数据高位,地址低位存储数据低位。计算机存储
int main(int argc, const char *argv[])
{
int a = 0x12345678;
printf("a = %d\n",a);
short b = a;
if(b == 0x1234)
{
printf("big\n");
}
else if(b == 0x5678)
{
printf("small\n");
}
return 0;
}
5数组排序
void show(int arr[10])
{
for(int i = 0;i < 10;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void maopao(int arr[10])
{
for(int i = 1;i < 10;i++)
{
for(int j = 0;j < 10-i;j++)
{
if(arr[j+1] < arr[j])
{
int t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
printf("冒泡排序结果如下:");
show(arr);
}
void sselect(int arr[10])
{
for(int i = 0;i < 9;i++)
{
int max = arr[i];
for(int j = i+1;j < 10;j++)
{
if(arr[j] > max)
{
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
}
printf("简单选择排序后结果如下:");
show(arr);
}
int main(int argc, const char *argv[])
{
int arr[10] = {19,11,32,67,44,4,92,44,6,10};
maopao(arr);
sselect(arr);
return 0;
}
6strcat
char *mystrcat(char *dts,char *src)
{
int i = 0;
int j = 0;
while(*(dts+i) != '\0')
{
i++;
}
while(*(src+j) != '\0')
{
*(dts+i) = *(src+j);
i++;
j++;
}
*(dts+i) == '\0';
return dts;
}
7strcpy
int mystrcmp(char *str1,char *str2)
{
int i = 0;
while(*(str1+i) != '\0' && *(str2+i) != '\0')
{
if(*(str1+i) != *(str2+i))
{
return *(str1+i)-*(str2+i);
}
i++;
}
return 0;
}
8计算二维数组的最大最小值
int main(int argc, const char *argv[])
{
int m,n;
printf("please enter m,n:");
scanf("%d %d",&m,&n);
int arr[m][n];
int max,min;
//循环输入
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&arr[i][j]);
}
}
max=min=arr[0][0];
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(max<arr[i][j])
max=arr[i][j];
if(min>arr[i][j])
min=arr[i][j];
}
}
printf("max=%d min=%d\n",max,min);
return 0;
}
9输入一个日期,判断是否为闰年
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int year = 0;
int month = 0;
int day = 0;
int i = 1;
int sum = 0;
printf("请输入年 月 日:");
scanf("%d%d%d",&year,&month,&day);
if(month>=13||month<=0)
{
printf("错误的月份\n");
}
else if((month==1||3||5||7||8||10||12) && (day>31||day<0))
{
printf("该日不存在\n");
}
else if(((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==4||6||9||11)&&(day>30||day<0))
{
printf("该日不存在\n");
}
else if((~(year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==2)&&(day>28||day<0))
{
printf("该日不存在\n");
}
else if(((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==2)&&(day>29||day<0))
{
printf("该日不存在\n");
}
else
{
if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
{
printf("%d是闰年\n",year);
switch
sum = day+max(month,1)*31+max(month,2)*29+max(month,3)*31+max(month,4)*30+max(month,5)*31+max(month,6)*30+max(month,7)*31+max(month,8)*31+max(month,9)*30+max(month,10)*31+max(month,11)*30;
printf("%d年%d月%d日是今年的第%d天\n",year,month,day,sum);
}
else
{
printf("%d是平年\n",year);
sum = day+max(month,1)*31+max(month,2)*28+max(month,3)*31+max(month,4)*30+max(month,5)*31+max(month,6)*30+max(month,7)*31+max(month,8)*31+max(month,9)*30+max(month,10)*31+max(month,11)*30;
printf("%d年%d月%d日是今年的第%d天\n",year,month,day,sum);
}
}
return 0;
}
10栈和队列的区别?
栈:先进后出,队列:先进先出栈:只允许在一端进行插入和删除队列:允许在队尾插入,队头删除的线性结构都是操作受限的线性表,插入和删除都只能在端点处进行,对于栈,只允许在一端进行插入和删除,该端称为栈顶,导致栈的特点为先进后出对于队列,允许在队尾插入队头删除,导致队列的特点为先进先出