【无标题】C语言一些基础代码

 (因为我的能力也不是很强,如果其中有些代码有错的话,也请指出来,如果可以的话,帮我修改一下吧。)

 1.简单的应用gets,puts 

#include<stdio.h>
#include<string.h>
int main()
{
	char a[50];
	printf("请输入不多余50个字符的英文短句:");
	gets(a);
	printf("输出该短句:");
	puts(a);
	return 0;
}

2.简单利用strlen

#include<stdio.h>
#include<string.h>
int main()
{
	char a[80];
	printf("输入一段英文:");
	gets(a);
	printf("字符数:");
	printf("%d\n",strlen(a));
	return 0;
}

3.将两个字符串连接在一起 

#include<stdio.h>
int main()
{
	char s1[80],s2[20];
	int i=0,j=0;
	printf("请输入字符串s1:");
	scanf("%s",s1);
	printf("请输入字符串s2:");
	scanf("%s",s2);
    while(s1[i]!='\0')
		i++;
	while(s2[j]!='\0')
		s1[i++]=s2[j++];
	s1[i]='\0';
	printf("\n新的字符串为:%s\n",s1);
	return 0;
}

4.年龄递归问题

//有5个人,第5个比第4个大2岁,第4个比第3个大2岁,第3个比第2个大2岁,第2个比1个大2岁,第一个10岁,问第5个多少岁
#include<stdio.h>
int main()
{
	int age(int x);
	printf("第5个的岁数:%d\n",age(5));
	return 0;
}
int age(int x)
{
	int i;
	if(x==1)
		i=10;
	else
		i=age(x-1)+2;
	return(i);
}

 5利用数组求平均分和总分

//1.使用双层循坏实现10名学生3门课程的成绩输入
//2.输入10名学生3门功课成绩的总分和平均分
//3.使用双层循坏实现10名学生3门功课成绩的输出
//4.使用循坏输出10名学生的平均分
#include<stdio.h>
int main()
{ 
	float a[10][3];
	float sum[10]={0},ave[10];
	int i,j;
	printf("请输入数据:");
	for(i=0;i<10;i++)
		for(j=0;j<3;j++)
			scanf("%f",&a[i][j]);
    for(i=0;i<10;i++)
	{
		for(j=0;j<3;j++)
			sum[i]=sum[i]+a[i][j];
			ave[i]=sum[i]/3;
	}
	for(i=0;i<10;i++)
	{
	    for(j=0;j<3;j++)
			printf("%f",a[i][j]);
		printf("\n");
	}
    for(i=0;i<10;i++)
	{
			printf("ave[%d]=%.0f\n",i,ave[i]);
	}
    return 0;
}

 6利用二维数组,求一个3*3的整型矩阵对角线元素之和 

#include<stdio.h>
int main()
{ 
	int a[3][3],i,j,sum=0;
	printf("请输入数据:");
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<3;i++)
		sum=sum+a[i][i];
	printf("sum=%d\n",sum);
    return 0;
}

7.有n个数围成一个圈,每次都从1开始数,数到3就把3对应的这个数删去,继续数直到最后就剩1个数,并将该数的位置输出 

#include<stdio.h>
int main()
{
	int num[50],i,k,m,n,*p;
	printf("\n有n个人:n=");
	scanf("%d",&n);
	p=num;
	for(i=0;i<n;i++)
		*(p+i)=i+1;
	i=0;
	k=0;
	m=0;
	while(m<n-1)
	{
		if(*(p+i)!=0)
			k++;
		if(k=3)
		{
			*(p+i)=0;
			k=0;
			m++;
		}
		i++;
		if(i==n)
			i=0;
	}
    while(*p==0)
		p++;
	printf("最后一个数的位置:%d\n",*p);
	return 0;
}

8.求最大公约数和最小公倍数

#include<stdio.h>
int yun(int a,int b)
{
	int r,t;
	if(a<b)
	{
		t=a;
		a=b;
		b=t;
	}
	while((r=a%b)!=0)
	{
		a=b;
		b=r;
	}
	return (b);
}
int bei(int a,int b,int c)
{
	return(a*b/c);
}
int main()
{
	int yun(int a,int b);
	int bei(int a,int b,int c);
    int a,b,c,d;
	printf("请输入两个整数:");
	scanf("%d%d",&a,&b);
	c=yun(a,b);
	d=bei(a,b,c);
	printf("最大公约数:%d,最小公倍数:%d\n",c,d);
	return 0;
}

9.判断是否为素数1

#include<stdio.h>
int main()
{
	int prime(int n);
	int n;
	printf("请输入一个数: ");
	scanf("%d",&n);
	if(prime(n))
		printf("%d是一个素数\n",n);
	else
		printf("%d不是一个素数\n",n);
	return 0;
}
int prime(int n)
{
	int flag=1,i;
	for(i=2;i<=n/2&&flag==1;i++)
		if(n%i==0)
			flag=0;
    return(flag);
}

 判断是否为素数2

#include <stdio.h>
void main()
{
	int prime(int n);
	int n,a=0;
	printf("请输入一个数: ");
	scanf("%d",&n);
	a=prime(n);
}
int prime(int x)
{
	int i;
	for(i=2;i<x;i++)
    {
		if(x%i==0)
			break;
	}
	if(i<x)
		printf("%d不是一个素数\n",x);
	else
		printf("%d是一个素数\n",x);
     return 0;
}

10.利用函数将输入的字符串反序输出

#include<stdio.h>
#include<string.h>
int main()
{
	void inverse(char str[]);
	char str[100];
	printf("请输入字符串:\n");
	scanf("%s",str);
	inverse(str);
	printf("反转后的字符串:%s\n",str);
	return 0;
}
void inverse(char str[])
{
	int i,j,k;
	char t;
	k=strlen(str);
	for(i=0,j=k;i<k/2;i++,j--)
	{
		t=str[i];
		str[i]=str[j-1];
		str[j-1]=t;
	}
}

11.3x3二维数组转置

//数组行列互换
#include<stdio.h>
#define N 3
int arr[N][N];
int main()
{
	void convert(int arr[][3]);
	int i,j;
	//输入数组
	printf("请输入3*3二维数组:\n");
	for(i=0;i<N;i++)
		for(j=0;j<N;j++)
		    scanf("%d",&arr[i][j]);
    //输出原数组
	printf("\n原数组序列:\n");
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		    printf("%5d",arr[i][j]);
		    printf("\n");
	}
	//进行转置
	convert(arr);
	//输出转之后的数组
	printf("转置后的序列\n");
    for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		    printf("%5d",arr[i][j]);
            printf("\n");
	}
	return 0;
}
void convert(int arr[][3])
{
	int t,i,j;
	for(i=0;i<N;i++)
		for(j=i+1;j<N;j++)
		{
			t=arr[i][j];
			arr[i][j]=arr[j][i];
			arr[j][i]=t;
		}
}

12.利用函数比较两个数的大小

#include<stdio.h>
int main()
{
	int max(int x,int y);
	int a,b,c;
	printf("请输入两个整数: ");
	scanf("%d%d",&a,&b);
	c=max(a,b);
	printf("较大值是%d\n",c);
	return 0;
}
int max(int x,int y)
{
	int z;
	z=(x>y?x:y);
	return(z);
}

13.利用函数比较四个数的大小

include<stdio.h>
int main()
{
	int max2(int x,int y);
	int max4(int a,int b,int c,int d);
	int a,b,c,d,k;
	printf("请输入四个整数: ");
	scanf("%d%d%d%d",&a,&b,&c,&d);
	k=max4(a,b,c,d);
	printf("最大值是%d\n",k);
	return 0;
}
int max2(int x,int y)
{
	int z;
	z=(x>y?x:y);
	return(z);
}
int max4(int a,int b,int c,int d)
{
	int max2(int x,int y);
	int i;
	i=max2(a,b);
	i=max2(i,c);
	i=max2(i,d);
	return(i);
}

14.将8个整数按相反的顺序输出

//从键盘输入8个整数保存在数组中,然后按照相反的顺序输出,用指针
#include<stdio.h>
void main()
{
	int a[8],*p=a;
	printf("请输入8个整数:\n");
	for(;p-a<8;)
		scanf("%d",p++);
	for(--p;p>=a;)
		printf("%4d",*p--);
	printf("\n");
}

15.求n的阶乘

#include<stdio.h>
int fact(int n)
{
	if(n==1)
		return 1;
	else
		return(n*fact(n-1));
}
void main()
{
	int n;
	printf("请输入一个整数:");
	scanf("%d",&n);
	printf("%d!=%d\n",n,fact(n));
}

 16.利用指针从大到小输出

//利用指针,输入两个整数,按先大后小的顺序输出
#include<stdio.h>
int main()
{
	/*int a,b;
	int *p1,*p2;
	printf("输入两个正整数:\n");
	scanf("%d%d",&a,&b);
	if(a>b)
	{
		p1=&a;
		p2=&b;
	}
	else
	{
        p1=&b;
		p2=&a;
	}
	printf("max=%d,min=%d\n",*p1,*p2);
	*/
	int a,b;
	int *p1,*p2,*p;
	printf("输入两个正整数:\n");
	scanf("%d%d",&a,&b);
	p1=&a;
	p2=&b;
	if(a<b)
	{
		p=p1;
		p1=p2;
		p2=p;
	}
	printf("max=%d,min=%d\n",*p1,*p2);
	return 0;
}

17.输出最大元素和该元素的位数

/输入10个数要求输出其最大的元素和该书是第几位
#include<stdio.h>
int main()
{
	int max(int x,int y);
	int a[10],m,n,i;
	printf("请输入10个数:\n");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
    printf("\n");
	for(i=0,m=a[0],n=0;i<10;i++)
	{
		if(max(m,a[i])>m)
		{
			m=max(m,a[i]);
			n=i;
		}
	}
	printf("最大的数%d,在第%d位\n",m,n+1);
	return 0;
}
int max(int x,int y)
{
	return(x>y?x:y);
}

18.利用指针将两字符串合并

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[20],str2[20];
	char *p1,*p2;
	printf("请输入字符串:\n");
	gets(str1);
	printf("请再输入字符串:\n");
	gets(str2);
	p1=str1;
	p2=str2;
	while(*p1!='\0')
		p1++;
	while(*p2)
		*p1++=*p2++;
	*p1='\0';
    printf("合并后的字符串:%s\n",str1);
	return 0;
}

 19.利用指针将字符串全部复制

//有两个字符串a和b,通过指针和函数调用,实现将a字符串复制给b字符串
#include<stdio.h>
int main()
{
	char a[]="I am a student",b[20];
	int i;
	for(i=0;*(a+i)!='\0';i++)
		*(b+i)=*(a+i);
    *(b+i)='\0';
	printf("a的字符串为:%s\n",a);
	//printf("b的字符串:%s",b);
	printf("b的字符串为:");
	for(i=0;b[i]!='\0';i++)
		printf("%c",b[i]);
	printf("\n");
	return 0;
}

 20.利用指针和函数,输入三个整数,按从小到大的顺序输出

//利用指针和函数,输入三个整数,按从小到大的顺序输出
#include<stdio.h>
int main()
{
	void swap(int *x,int *y);
	int a,b,c;
	int *p1,*p2,*p3;
	printf("请输入三个整数:\n");
	scanf("%d%d%d",&a,&b,&c);
    p1=&a;
	p2=&b;
	p3=&c;
	if(a>b)
		swap(p1,p2);
	if(a>c)
		swap(p1,p3);
	if(b>c)
		swap(p2,p3);
	printf("现有的顺序: %d %d %d\n",a,b,c);
	return 0;
}
void swap(int *x,int *y)
{
	int z;
	z=*x;
	*x=*y;
	*y=z;
}

21.求两个班的平均成绩

//1.有一个二维数组score,内放10个学生成绩,利用函数求平均成绩
//2.有两个班级,分别有10名学生和5名学生,调用一个average函数,分别求两个班的平均成绩
#include<stdio.h>
int main()
{
	/*float average(float array[]);
	float score[10],aver;
	int i;
	printf("请输入10个学生的成绩\n");
	for(i=0;i<10;i++)
		scanf("%f",&score[i]);
	aver=average(score);
	printf("平均数为%5.2f\n",aver);*/
    float average(float array[],int n);
	float score1[10],score2[5],aver1,aver2;
	int i;
	printf("请输入一班10个学生的成绩\n");
	for(i=0;i<10;i++)
	scanf("%f",&score1[i]);
	printf("请输入二班5个学生的成绩\n");
	for(i=0;i<5;i++)
		scanf("%f",&score2[i]);
	aver1=average(score1,10);
	aver2=average(score2,10);
	printf("一班平均数为%5.2f\n",aver1);
	printf("二班平均数为%5.2f\n",aver2);
	return 0;
}
/*float average(float array[])
{
	float sum=0;
	int i;
	for(i=0;i<10;i++)
		sum+=array[i];
	return(sum/10);
}*/
float average(float array[],int n)
{
	float sum=0;
	int i;
	for(i=0;i<n;i++)
		sum+=array[i];
	return(sum/n);
}

22.利用指针和函排序

//利用指针,输入10个整数,将其中最小的数与第一个数对换,将最大的一个数与最后一个数对换,写入三个函数
//1.输入10个数 void input(int *)
//2.处理函数 void max-min-value(int *)
//3.输出10个数 void output(int *)
#include<stdio.h>
int main()
{
	void input(int *number);
    void max_min_value(int *number);
    void output(int *number);
	int number[10];
	input(number);
    max_min_value(number);
    output(number);
	return 0;
}
void input(int *number)
{
	int i;
	printf("请输入10个整数:\n");
	for(i=0;i<10;i++)
		scanf("%d",&number[i]);
}
void max_min_value(int *number)
{
	int *max,*min,*p,t;
	max=min=number;
	for(p=number+1;p<number+10;p++)
		if(*p>*max)
			max=p;
		else if(*p<*min)
			min=p;
//最小值和第一个数交换位置
	t=number[0];
	number[0]=*min;
	*min=t;
//防止因第一个数为最大值而导致的编译错误
	if(max==number)
		max=min;
//最大值和最后一个数交换位置
	t=number[9];
	number[9]=*max;
	*max=t;
}
void output(int *number)
{
	int *p;
	printf("调整好后的顺序:\n");
	for(p=number;p<number+10;p++)
		printf("%4d\n",*p);
	printf("\n");
}

23.利用指针和函数将后面的数移到前面

//有n个数,使前面各数顺序向后移动m个位置,最后m个数变成最前面的m个位置(使用指针和函数)
//例如  1 2 3 4 5 6 7 8 9 0
//移动2个,就会变成
// 9 0 1 2 3 4 5 6 7 8
#include<stdio.h>
int main()
{
	void move(int arr[20],int n,int m);
	int number[20],n,m,i;
	printf("一共有多少个数:\n");
	scanf("%d",&n);
	printf("%d个数是那些数:\n",n);
	for(i=0;i<n;i++)
		scanf("%d",&number[i]);
	printf("需要移动多少个数:\n");
	scanf("%d",&m);
	move(number,n,m);
	printf("新的数列为:\n");
	for(i=0;i<n;i++)
		printf("%4d",number[i]);
	printf("\n");
	return 0;
}
//也可以将输入数据用函数表示
/*void input(int arr[20],int n,int m)
{
	int i;
	printf("一共有多少个数:\n");
	scanf("%d",&n);
	printf("%d个数是那些数:\n",n);
	for(i=0;i<n;i++)
		scanf("%d",&arr[i]);
	printf("需要移动多少个数:\n");
	scanf("%d",&m);
}
*/
void move(int arr[20],int n,int m)
{
	int *p,arr_end;
	arr_end=*(arr+n-1);
	for(p=arr+n-1;p>arr;p--)
		*p=*(p-1);
	*arr=arr_end;
	m--;
    if(m>0)
		move(arr,n,m);
}

 24.利用指针和函数,输入3个字符串,按从小到大输出

//利用指针和函数,输入3个字符串,按从小到大输出
#include<stdio.h>
#include<string.h>
int main()
{
	void swap(char *x,char *y);
	char str1[20],str2[20],str3[20];
	printf("请输入3个字符串:\n");
	gets(str1);
	gets(str2);
	gets(str3);
    if(strcmp(str1,str2)>0)
		swap(str1,str2);
	if(strcmp(str1,str3)>0)
		swap(str1,str3); 
	if(strcmp(str2,str3)>0)
		swap(str2,str3);
	printf("调整好后的:\n");
	printf("%s\n%s\n%s\n",str1,str2,str3);
	return 0;
}
void swap(char *x,char *y)
{
	char z[20];
	strcpy(z,x);
	strcpy(x,y);
	strcpy(y,z);

}

25.利用指针和函数求字符串的长度

#include<stdio.h>
int main()
{
    int length(char *pointer);
	char str[40];
	int len;
	printf("请输入字符串:\n");
	scanf("%s",str);
    len=length(str);
	printf("一共有%d个字符\n",len);
	return 0;
}
int length(char *pointer)
{
	int i;
	i=0;
	while(*pointer!='\0')
	{
		pointer++;
		i++;
	}
	return (i);
}

26.利用指针和函数将字符串部分复制

//有一字符串,包含n个字符,写一函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符串
#include<stdio.h>
#include<string.h>
int main()
{
	void copystr(char *p1,char *p2,int m);
	char str1[20],str2[20];
	int m,len;
	printf("请输入字符串:\n");
	gets(str1);
	printf("从第几个开始复制:\n");
	scanf("%d",&m);
	len=strlen(str1);
	if(len<m)
		printf("输入数据有误\n");
	else
	{
		copystr(str1,str2,m);
		printf("最终结果:%s\n",str2);
	}
	return 0;
}
void copystr(char *p1,char *p2,int m)
{
	int n;
	n=0;
	while(n<m-1)
	{
		n++;
		*p1++;
	}
	while(*p1!='\0')
	{
		*p2=*p1;
        p1++;
		p2++;
	}
	*p2='\0';
}

27.利用指针,写一个函数,将一个3*3的整型矩阵转置

//利用指针,写一个函数,将一个3*3的整型矩阵转置
#include<stdio.h>
int main()
{
	void move(int *pointer);
	int a[3][3],*p,i;
    printf("请输入3*3整型矩阵:\n");
	for(i=0;i<3;i++)
		scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
    p=&a[0][0];
	move(p);
	printf("转置后:\n");
	for(i=0;i<3;i++)
		printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
	return 0;
}
void move(int *pointer)
{
	int i,j,t;
	for(i=0;i<3;i++)
		for(j=i;j<3;j++)
		{
			t=*(pointer+3*i+j);
			*(pointer+3*i+j)=*(pointer+3*j+i);
			*(pointer+3*j+i)=t;
		}

}

29. 利用指针和函数输入学号输出成绩1

//有a个学生,每个学生有b门课程的成绩,要求在用户输入学生的序号之后,能输出该学生的全部成绩,用指针和函数实现
//这里学生和成绩作为已知量,可以放在开始进行初始化操作,这里的a和b可以自行指定
#include<stdio.h>
int main()
{
	float *search(float(*pointer)[4],int n);
	float a[][4]={{60,70,80,90},{56,67,78,89},{77,66,88,99}};
	int i,k;
	float *p;
	printf("请输入你要找的学生的学号:\n");
	scanf("%d",&k);
	printf("学号为%d的学生的成绩:\n");
	p=search(a,k);
	for(i=0;i<4;i++)
		printf("%5.2f\t",*(p+i));
	printf("\n");
	return 0;
}
float *search(float(*pointer)[4],int n)
{
	float *pt;
	pt=*(pointer+n);
	return (pt);
}

30.利用指针和函数输入学号输出成绩2

//有a个学生,每个学生有b门功课的成绩,找出其中有不及格的课程的学生及其学生号
#include<stdio.h>
int main()
{
    float *search(float(*pointer)[4]);
	float a[][4]={{60,70,80,90},{56,67,78,89},{77,66,88,99}};
	int i,j;
	float *p;
	for(i=0;i<3;i++)
	{
		p=search(a+i);
		if(p==*(a+i))
		{
			printf("第%d个学生的成绩\n",i);
			for(j=0;j<4;j++)
				printf("%5.2f\t",*(p+j));
			printf("\n");
		}
	}
	return 0;
}
float *search(float(*pointer)[4])
{
	float *pt;
	int i=0;
	//空指针
	pt=NULL;
	for(;i<4;i++)
		if(*(*pointer+i)<60)
			pt=*pointer;
	return (pt);
}

 31.利用数组和指针对5*5数组重新排序

//将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放,意思是左上角放最小值,
//右上角放第二小值,左下角放第三小值,右下角放第四小值)利用指针和函数,用main函数调用
#include<stdio.h>
int main()
{
	void change(int *p);
    int a[5][5],*p,i,j;
	printf("请输入5*5整形矩阵:\n");
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			scanf("%d",&a[i][j]);
	p=&a[0][0];
	change(p);
	printf("排完后的:\n");
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)
			printf("%4d",a[i][j]);
		printf("\n");
	}
	return 0;
}
void change(int *p)
{
	int *pmax,*pmin;
	int i,j,temp;
	pmax=p;
	pmin=p;
	//最大值最小值
	for(i=0;i<5;i++)
		for(j=i;j<5;j++)
		{
			if(*pmax<*(p+5*i+j))
				pmax=p+5*i+j;
			if(*pmin>*(p+5*i+j))
				pmin=p+5*i+j;
		}
//将最大值和中心位交换
	temp=*(p+12);
	*(p+12)=*pmax;
	*pmax=temp;
//将最小值和左上角交换
	temp=*p;
	*p=*pmin;
	*pmin=temp;	
//将第二小的值和右上角交换
	pmin=p+1;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))
				pmin=p+5*i+j;
	temp=*pmin;
    *pmin=*(p+4);
    *(p+4)=temp;
//将第三的值和左下角交换
	pmin=p+1;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&(*pmin>*(p+5*i+j)))
				pmin=p+5*i+j;
	temp=*pmin;
    *pmin=*(p+20);
    *(p+20)=temp;
//将第四的值和右下角交换
	pmin=p+1;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j)))
				pmin=p+5*i+j;
	temp=*pmin;
    *pmin=*(p+24);
    *(p+24)=temp;
}

32.汉罗塔文题

//有A,B,C三根圆柱,A柱上有若干个按照下大上小顺序垒起来的盘子,要把盘子按照下大上小的顺序,借助B柱,最终全部移到C柱。
//1.将A上n-1个借助C移动到B
//2.将A上剩下的一个C
//3.将n-1个从B借助A全部移动到C
//4.总的来说是将one座n-1个盘移动到two(借助three)
#include<stdio.h>
int main()
{
	void move(char x,char y);
	void hanoi(int n,char one,char two,char three);
	int m;
	printf("请输入盘子数: ");
	scanf("%d",&m);
	printf("%d盘子移动顺序:\n",m);
	hanoi(m,'A','B','C');
	return 0;
}
void hanoi(int n,char one,char two,char three)
{
	void move(char x,char y);
	if(n==1)
		move(one,three);
	else
	{
		hanoi(n-1,one,three,two);
		move(one,three);
		hanoi(n-1,two,one,three);
	}
}
void move(char x,char y)
{
	printf("%c--->%c\n",x,y);
}

33.利用数组指针的超长代码

//有一个班4个学生,5门功课
//1.求第1门功课的平均分;
//2.找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩
//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生
//分别编写三个函数实现以上3个要求
#include<stdio.h>
int main()
{
	void avsco(float *pscore,float *paver);
	void avcour1(char(*pcourse)[10],float *pscore);
	void fali2(char course[5][10],int num[],float *pscore,float aver[4]);
	void good(char course[5][10],int num[4],float *pscore,float aver[4]);
	int i,j,*pnum,num[4];
	float score[4][5],aver[4],*pscore,*paver;
	char course[5][10],(*pcourse)[10];
	printf("请输入科目:\n");
	pcourse=course;
	for(i=0;i<5;i++)
		scanf("%s",course[i]);
	printf("请输入学号和成绩:\n");
	printf("NO.");
	for(i=0;i<5;i++)
		printf(",%s",course[i]);
	printf("\n");
	pscore=&score[0][0];
	pnum=&num[0];
	for(i=0;i<4;i++)
	{
		scanf("%4d",pnum+i);
		for(j=0;j<5;j++)
			scanf("%4f",pscore+5*i+j);
	}
    paver=&aver[0];
	printf("\n\n");
	avsco(pscore,paver);
    avcour1(pcourse,pscore);
    printf("\n\n");
    fali2(pcourse,pnum,pscore,paver);
	printf("\n\n");
    good(pcourse,pnum,pscore,paver);
    return 0;
}
//求平均数
void avsco(float *pscore,float *paver)
{
	int i,j;
	float sum,average;
	for(i=0;i<4;i++)
	{
		sum=0.0;
		for(j=0;j<5;j++)
			sum=sum+(*(pscore+5*i+j));
		average=sum/5;
		*(paver+i)=average;
	}
}
//求第一门功课的成绩
void avcour1(char(*pcourse)[10],float *pscore) 
{
	int i;
	float sum,average1;
	sum=0.0;
	for(i=0;i<4;i++)
		sum=sum+(*(pscore+5*i));
	average1=sum/4;
	printf("课程%s平均分为%7.2f\n",*pcourse,average1);
}
//求不及格科目在两门及两门以上的学生
void fali2(char course[5][10],int num[],float *pscore,float aver[4])
{
	int i,j,k,label;
	printf("==============不及格科目在两门及以上的学生==============\n");
	printf("NO.");
	for(i=0;i<5;i++)
		printf("%11s",course[i]);
	printf("       average\n");
	for(i=0;i<4;i++)
	{
		label=0;
		for(j=0;j<5;j++)
			if(*(pscore+5*i+j)<60.0)
				label++;
			if(label>=2)
			{
				printf("%d",num[i]);
				for(k=0;k<5;k++)
					printf("%11.2f",*(pscore+5*i+k));
				printf("%11.2f\n",aver[i]);
			}
	}
}
//找平均分在90分以上或者所有成绩在85分以上
void good(char course[5][10],int num[4],float *pscore,float aver[4])
{	
	int i,j,k,n;
	printf("==============成绩优秀的学生情况==============\n");
	printf("NO.");
	for(i=0;i<5;i++)
		printf("%11s",course[i]);
	printf("       average\n");
	for(i=0;i<4;i++)
	{
		n=0;
		for(j=0;j<5;j++)
			if(*(pscore+5*i+j)>85.0)
				n++;
			if((n==5)||(aver[i]>90))
			{			
				printf("%d",num[i]);
				for(k=0;k<5;k++)
					printf("%11.2f",*(pscore+5*i+k));
				printf("%11.2f\n",aver[i]);
			}
	}
}

34.结构体变量做一个简易的投票机制

#include<string.h>
struct people
{
	char name[20];
	int count;
}leader[3]={{"li",0},{"zhang",0},{"huang",0}};
int main()
{
	int i,j;
	char leader_name[20];
	for(i=0;i<10;i++)
	{
		printf("你要投谁 li zhang huang\n");
		scanf("%s",leader_name);
		for(j=0;j<3;j++)
			if(strcmp(leader_name,leader[j].name)==0)
				leader[j].count++;
	}
	printf("最终结果\n");
	for(i=0;i<3;i++)
		printf("%5s:%d\n",leader[i].name,leader[i].count);
	return 0;
}

 35.结构体变量输入输出学生数据

//编写一个函数,输出一个学生的成绩数组,该数组中有五个学生的数据记录,
//每个记录包括num,nanme,score[3],用input函数输入,print输出
#include<stdio.h>
#define N 5
struct student
{
	char num[4];
	char name[8];
	int score[4];
}stu[N];
int main()
{
	void input(struct student stu[6]);
	void print(struct student stu[6]);
    input(stu);
	print(stu);
	return 0;
}
void input(struct student stu[6])
{
	int i,j;
	for(i=0;i<N;i++)
	{
		printf("请输入第%d位学生的成绩:\n",i+1);
		printf("NO.  ");
		scanf("%s",stu[i].num);
		printf("name.   ");
		scanf("%s",stu[i].name);
		for(j=0;j<3;j++)
		{
			printf("score.%d   ",j+1);
			scanf("%d",&stu[i].score[j]);
		}
		printf("\n");
	}
}
void print(struct student stu[6])
{
	int i,j;
	printf("\n NO.    name         score.1       score.2       score.3\n");
	for(i=0;i<N;i++)
	{
		printf("%5s%10s",stu[i].num,stu[i].name);
		for(j=0;j<3;j++)
			printf("%10d",stu[i].score[j]);
		printf("\n");
	}
}

36.利用结构体和函数计算某日是该年第几天(方法一)

//写一个函数days,实现(定义一个结构体变量(包括年、月、日)。计算该日在本年中第几年,注意闰年问题),由主函数将年月日传递给days函数
#include<stdio.h>
struct
{
	int year;
	int month;
	int day;
}date;
int main()
{
    int days();
	int n;
    printf("输入年 月 日\n");
	scanf("%d %d %d",&date.year,&date.month,&date.day);
	n=days();
	printf("该日是本年第%d天\n",n);
	return 0;
}
//date是全局变量,不用传给函数
int days()
{
	int m,i;
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	m=0;
	if((date.year%4==0&&date.year%100!=0)||(date.year%400==0))
	{
		for(i=0;i<date.month-1;i++)
			m=m+b[i];
	}
	else
	{
		for(i=0;i<date.month-1;i++)
			m=m+a[i];
	}
	m=m+date.day;
	return (m);
}

 不用函数

//定义一个结构体变量(包括年、月、日)。计算该日在本年中第几年,注意闰年问题
#include<stdio.h>
struct
{
	int year;
	int month;
	int day;
}date;
int main()
{
	//方法一
/*	int days,i;
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	days=0;
    printf("输入年 月 日\n");
	scanf("%d %d %d",&date.year,&date.month,&date.day);
	if((date.year%4==0&&date.year%100!=0)||(date.year%400==0))
	{
		for(i=0;i<date.month-1;i++)
			days=days+b[i];
	}
	else
	{
		for(i=0;i<date.month-1;i++)
			days=days+a[i];
	}
	days=days+date.day;
	printf("该日是本年第%d天\n",days);
	return 0;
	*/
	int days;
	printf("输入年 月 日\n");
	scanf("%d %d %d",&date.year,&date.month,&date.day);
	switch(date.month)
	{
	case 1:days=date.day;
		break;
	case 2:days=date.day+31;
		break;
	case 3:days=date.day+59;
		break;
	case 4:days=date.day+90;
		break;
	case 5:days=date.day+120;
		break;
	case 6:days=date.day+151;
		break;
	case 7:days=date.day+181;
		break;
	case 8:days=date.day+212;
		break;
	case 9:days=date.day+243;
		break;
	case 10:days=date.day+273;
		break;
	case 11:days=date.day+304;
		break;
	case 12:days=date.day+334;
		break;
	}
	if(((date.year%4==0&&date.year%100!=0)||(date.year%400==0))&&(date.month>=3))
		days+=1;
	printf("该日是本年第%d天\n",days);
	return 0;
}

37.结构体指针输出学生信息

//有三个学生的成绩,放在结构体数组中,要求输出全部学生的信息,利用结构体数组的指针
#include<stdio.h>
struct student
{
	int num;
	char name[8];
	char sex;
	int age;
};
struct student stu[3]={{101,"xu",'M',18},{102,"zhang",'F',20},{103,"huang",'M',19}};
int main()
{
	struct student *p;
	printf("  No.      name.    sex.   age.    \n");
	for(p=stu;p<stu+3;p++)
		printf("%5d%10s%6c%8d\n",p->num,p->name,p->sex,p->age);
	return 0;
}

38. 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以“!”结束

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
	FILE *fp;
	char str[100];
	int i;
	i=0;
	if((fp=fopen("text","w"))==NULL)
	{
		printf("打不开文件\n");
		exit(0);
	}
	printf("请输入一串字符串\n");
	gets(str);
	while(str[i]!='!')
	{
		if(str[i]>='a'&&str[i]<='z')
			str[i]=str[i]-32;
		fputc(str[i],fp);
		i++;
	}
	fclose(fp);
	fp=fopen("text","r");
	fgets(str,strlen(str)+1,fp);
	printf("%s\n",str);
	fclose(fp);
	return 0;
}

39. 有两个磁盘文件"A"和"B",各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件"C"中

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	FILE *fp;
	int i,i1,n,j;
	char c[100],ch,t;
	if((fp=fopen("A","r"))==NULL)
	{
		printf("\n无法打开文件\n");
		exit(0);
	}
	printf("文件A:\n");
	for(i=0;(ch=fgetc(fp))!=EOF;i++)
	{
		c[i]=ch;
		putchar(c[i]);
	}
	fclose(fp);
	i1=i;
	if((fp=fopen("B","r"))==NULL)
	{
		printf("\n无法打开文件\n");
		exit(0);
	}
	printf("文件B:\n");
	for(i=0;(ch=fgetc(fp))!=EOF;i++)
	{
		c[i]=ch;
		putchar(c[i]);
	}
	fclose(fp);
	n=i;
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
			if(c[i]>c[j])
			{
				t=c[i];
				c[i]=c[j];
				c[j]=t;
			}
	printf("文件C:\n");
	fp=fopen("C","w");
	for(i=0;i<n;i++)
	{
		putc(c[i],fp);
		putchar(c[i]);
	}
	printf("\n");
	fclose(fp);
	return 0;
}

40.有5位学生,每个学生有3门功课,从键盘上输入学生数据(包括学号,姓名,3门功课成绩)计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中

#include<stdio.h>
#include<stdlib.h>
struct student
{
	char num[10];
	char name[8];
	int score[3];
	float ave;
}stu[5];
int main()
{
	int i,j,sum;
	FILE *fp;
	for(i=0;i<5;i++)
	{
		printf("\n请输入第%d个学生的成绩\n",i+1);
		printf("NO.");
		scanf("%s",stu[i].num);
		printf("name.");
		scanf("%s",stu[i].name);
		sum=0;
		for(j=0;j<3;j++)
		{
			printf("score %d:",j+1);
			scanf("%d",&stu[i].score[j]);
			sum+=stu[i].score[j];
		}
		stu[i].ave=sum/3.0;
	}
	fp=fopen("stud","w");
	for(i=0;i<5;i++)
		if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
			printf("文件写入错误\n");
    fclose(fp);
	fp=fopen("stud","r");
	for(i=0;i<5;i++)
	{
		fread(&stu[i],sizeof(struct student),1,fp);
		printf("\n%s,%s,%d,%d,%d,%6.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
	}
	fclose(fp);
	return 0;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AIX 基础 AIX主要组成 ●内核 ●文件系统●Shell●网络通信●文本处理●编程工具和编程语言●连机系统文档● AIX Windows 环境、其他功能、各种应用程序 内核 内核提供以下功能 ● 多用户、多进程的调度● I/O设备的接口● 管理磁盘上的文件● AIX内核主要用C语言编写、少量用汇编语言 文件系统 AIX提供三种类型的文件,普通文件,设备文件和命令文件 Shell ● 是系统于用户的接口 ● 系统支持很多种shell,其中常见的有三种Shell :(Korn Bourne C)● 系统赋予用户缺省Shell是kshshell的功能作用有:● 命令解释程序● 支持前后台执行● 可编程 文本处理 AIX提供的文本处理包括: ●文本编辑器:vi,ed,Ined,CDE文本编辑器●文档处理:排版工具●拼写检查●打印命令 编程语言和编程工具 AIX支持多种编程语言和工具 ● AIX提供 shell 语言● 可选的有许可证控制的编程语言:C++ C Fortran Pascal 等● 编程工具---编辑器---源代码控制系统(SCCS)---调试工具---代码检查 (lint) 系统管理 AIX系统除了提供基本的使用功能外,还为系统管理员提供了管理系统的方法.AIX的系统管理涉及以下方面: ●软件安装● 用户管理● 设备配置● 储存储管理● 数据备份● 性能监控● 问题诊断 联机文档 AIX提供多种联机文档,用户可以通过联机文档,帮助自己正确的使用系统命令和管理系统,了解系统提供的编程接口. ●Man 帮助提供命令和系统调用的使用手册分页显示可用关键字查找系统命令●InforExplorer可联机查阅全部手册交互的全屏接口可用字符和图形两种方式提供帮助的内容包括命令,任务和资料 强大的查找工 使用系统 注册与注销 注册(login) 用户如果需要使用AIX,用户必须先在系统中进行注册,注册时需要输入用户名称和用户口令(用户名称即用户在系统中的帐户,该帐户在用户登陆到系统前应由系统管理员创建并赋予口令)".用户将看到如下登陆界面 AIX Version 5(C) Copyrights by IBM and by others 1982, 1996.login:user01用户在login:后输入自己的名称后会出现询问口令的提示user01's password:用户在该提示后输入自己设定或系统管理员分配的口令(口令输入时不会在屏幕上显示任何东西.当系统验证无误后会显示一个系统提示符$_ ●注销(logout) 当用户使用完系统后应该从系统中退出即注销.用户可以使用三种方式从系统中退出$ logout或者$ exit或者$ ctrl-d 修该,设置用户的口令 $ passwdChanging password for user01user01’s old password :user01’s new password:reenter the new password :$_ 命令格式 AIX命令的格式如下所示$ command option(s) argument(s)在命令与选项,选项与参数,参数与参数见都应该有空格存在.例如$ mail -f newmail其中选项前必须跟有一个"-"符号,如果有多个选项我们可以将多个选项连在一起些,也可以分开写.如果有多个参数时参数与参数之间必须有空格存在.例如 date 和 cal命令 #dateSat Sep 7 10:15:00 PRC 2002我们在有时会查看一下年历,我们可以使用cal命令,例如● 看一个月的日期 cal命令后可以跟两个参数,跟一个参数时该参数表示所要显示的年份,跟两个参数时第一的参数表示月份,di'er的参数表示年份● 看一年的日期$ cal 2002 who 和 finger 命令 $who am iteam01 pts/1 Sept 4 17:21$whoamiteam01 我们用who命令只可以看到用户的登陆名称,登陆时间和登陆地点,用户的其它信息无法获得,用户可以使用finger的命令来进一步了解一个已登陆系统用户的较详细信息.例如 发送邮件 $ mail team01Subject: helloThis is a test mail from user01.Cc:[enter]在subject:填写信的标题,输入标题后可以输入信的内容.当输入一个只包含"."字符的空行后表示信的结束.邮件系统会出现Cc的提示表示输入该信需要转发的人的地址.如果不需要转发,可以直接按回车键.到此为止一封信就被发出了.如果我们需要给system2机器上的team01写一封信,我们可以这样做
C语言高级编程与实例剖析》随书源码 第1章 内存管理 1. 1.1 预备知识 1 1.1.1 PC存储器结构 1 1.1.2 CPU地址线宽度 3 1.1.3 内存管理方式 5 1.1.4 内存编译模式 6 1.1.5 堆概念和结构 9 1.1.6 堆管理函数 10 1.2 高速分配内存技巧 15 1.2.1 类型声明及变量定义 15 1.2.2 函数剖析 16 1.2.3 归纳总结 18 1.3 学生信息数据库实例 18 1.3.1 需求分析 19 1.3.2 源代码解析 19 1.3.3 运行结果 23 1.3.4 归纳总结 23 1.4 巧用内存管理创建通信录 25 1.4.1 需求分析 25 1.4.2 源代码解析 25 .1.4.3 程序运行结果 31 1.4.4 归纳总结 32 1.5 小结 32 第2章 文本屏幕界面设计 33 2.1 文本方式的控制 33 2.1.1 文本方式控制函数 33 2.1.2 文本方式颜色控制函数 34 2.1.3 字符显示亮度控制函数 36 2.1.4 实例解析 36 2.2 窗口设置和文本输出函数 38 2.2.1 窗口设置函数 38 2.2.2 控制台文本输出函数 38 2.2.3 实例解析 38 2.3 清屏和光标操作函数 40 2.3.1 清屏函数 40 2.3.2 光标操作函数 41 2.3.3 实例解析 41 2.4 屏幕文本移动与存取函数 43 2.4.1 屏幕文本移动函数 43 2.4.2 屏幕文本存取函数 43 2.4.3 实例解析 44 2.5 状态查询函数 46 2.5.1 状态查询函数 46 2.5.2 实例解析 47 2.6 创建弹出式菜单实例 48 2.6.1 需求分析 48 2.6.2 源代码解析 49 2.6.3 运行结果 55 2.6.4 归纳总结 55 2.7 文本方式下创建下拉式菜单 56 2.7.1 需求分析 56 2.7.2 源代码解析 56 2.7.3 运行结果 61 2.7.4 归纳总结 62 2.8 综合应用 62 2.8.1 需求分析 62 2.8.2 源代码解析 63 2.8.3 运行结果 66 2.8.4 归纳总结 66 2.9 小结 67 第3章 文件高级操作 68 3.1 文件的基本概念 68 3.2 标准文件的输入输出操作 68 3.2.1 标准文件输入输出 70 3.2.2 标准文件打开函数fopen() 71 3.2.3 标准文件关闭函数fclose() 74 3.2.4 标准文件的读写 75 3.2.5 文件的随机读写函数 78 3.2.6 实例解析 82 3.3 文件的加密与解密 83 3.3.1 移位加密法 83 3.3.2 伪随机数加密法 84 3.3.3 命令加密法 86 3.3.4 逐字节异或加密法 88 3.4 文件分割程序 91 3.4.1 操作方法 91 3.4.2 源代码解析 91 3.4.3 运行结果 94 3.4.4 归纳总结 94 3.5 文件合并程序 94 3.5.1 操作方法 94 3.5.2 源代码解析 95 3.5.3 运行结果 97 3.5.4 归纳总结 97 3.6 小结 97 第4章 图形图像 98 4.1 图形显示基本概念 98 4.1.1 图形显示的坐标 98 4.1.2 像素 99 4.2 图形函数 99 4.2.1 图形系统的初始化 99 4.2.2 恢复显示方式和清屏函数 102 4.2.3 基本图形函数 102 4.3 颜色控制函数 107 4.3.1 颜色设置函数 108 4.3.2 调色板颜色设置 110 4.4 画线的线型函数 114 4.4.1 设定线型函数 115 4.4.2 得到当前画线信息的函数 117 4.5 填色函数及相关作图函数 118 4.5.1 填色函数 118 4.5.2 用户自定义填充函数 119 4.5.3 得到填充模式和颜色的函数 121 4.5.4 与填充函数有关的作图函数 121 4.5.5 可对任意封闭图形填充的函数 124 4.6 屏幕操作函数 125 4.6.1 屏幕图像存储和显示函数 125 4.6.2 设置显示页函数 127 4.7 图形方式下的文本输出函数 130 4.7.1 文本输出函数 131 4.7.2 文本输出字符串函数 133 4.7.3 定义文本字型函数 135 4.8 动画技术 137 4.8.1 动态开辟图视口的方法 137 4.8.2 利用显示页和编辑页交替变化 138 4.8.3 利用画面存储再重放的方法 139 4.8.4 直接对图像动态存储器进行操作 141 4.9 菜单生成技术 141 4.10 图形程序使用环境 142 4.10.1 BGI使用 143.. 4.10.2 图形方式下字符输出的条件 144 4.10.3 BGI图形驱动 145 4.11 直接存储存取 145 4.11.1 BIOS中断在显示中的应用 147 4.11.2 VGA寄存器 149 4.11.3 屏幕图形与VRAM地址的关系 151 4.11.4 VRAM的位面结构 151 4.11.5 将VRAM位面信息存入文件 152 4.11.6 将文件图像信息写入VRAM位面 153 4.11.7 VGA标准图形模式12H编程 154 4.11.8 VGA标准图形模式13H编程 157 4.12 SVGA编程 157 4.12.1 SVGA显卡的检测 158 4.12.2 SVGA模式信息的获取与模式操作 160 4.12.3 SVGA的直接存储器显示与内存控制 162 4.13 综合应用实例 163 4.13.1 用户自定义图模填充长方框图像 163 4.13.2 画圆饼图程序 165 4.13.3 画条形图程序 167 4.13.4 画函数曲线 169 4.14 图形图像综合应用——用动画演示排序算法 171 4.14.1 程序介绍 171 4.14.2 源代码解析 172 4.14.3 运行结果 183 4.14.4 归纳总结 184 4.15 小结 184 第5章 中断 185 5.1 中断的基本概念 185 5.1.1 BIOS 185 5.1.2 中断和异常 186 5.1.3 BIOS功能调用 189 5.2 鼠标中断编程的应用实例 191 5.2.1 鼠标中断的基本概念 191 5.2.2 程序功能分析 198 5.2.3 源代码解析 199 5.2.4 归纳总结 202 5.3 键盘中断编程的应用实例 203 5.3.1 键盘中断的基本概念 203 5.3.2 键盘操作函数bioskey() 207 5.4 鼠标与键盘的综合应用实例 208 5.4.1 需求分析 208 5.4.2 源代码解析 208 5.4.3 运行结果 212 5.4.4 归纳总结 213 5.5 中断应用——菜单制作程序剖析 213 5.5.1 需求分析 213 5.5.2 源代码解析 214 5.5.3 运行结果 227 5.5.4 归纳总结 227 5.6 小结 228 第6章 通信技术 229 6.1 概述 229 6.2 Winsock编程基础 230 6.2.1 Winsock基本概念 230 6.2.2 Winsock基本API 230 6.2.3 关于Winsock的异步模式 234 6.3 Cscoket编程技术 238 6.4 串口编程 238 6.4.1 概念 239 6.4.2 串行接口 239 6.4.3 串行通信方式及异步通信协议 240 6.4.4 串口针脚功能 243 6.5 并口编程 244 6.5.1 概念 244 6.5.2 并行接口 244 6.5.3 并口针脚功能 245 6.6 串并口操作的输入/输出函数 246 6.6.1 输入函数 246 6.6.2 输出函数 246 6.7 双机连接的方法 247 6.8 双机并口通信实例 248 6.8.1 源代码解析 249 6.8.2 归纳总结 280 6.9 网络通信编程——聊天室实例 281 6.9.1 需求分析 281 6.9.2 聊天室服务器端程序分析 282 6.9.3 聊天室客户端程序分析 290 6.10 小结 297 第7章 基本总线接口编程 298 7.1 ISA总线 298 7.1.1 ISA总线简介 298 7.1.2 ISA引脚介绍 299 7.2 PCI总线 302 7.2.1 PCI总线简介 302 7.2.2 PCI引脚介绍 303 7.3 中断控制操作 306 7.3.1 软件中断 307 7.3.2 硬件中断 307 7.4 PCI总线配置 308 7.4.1 PCI总线配置空间及配置机制 308 7.4.2 用I/O命令访问PCI总线配置空间 309 7.5 采用中断方式的信号采集程序 311 7.5.1 功能分析 311 7.5.2 源代码解析 311 7.6 小结 316 第8章 游戏开发 317 8.1 游戏开发概述 317 8.2 BMP图像格式 318 8.3 TC环境下的256色显示 324 8.3.1 VGA的DAC色彩寄存器知识 324 8.3.2 置256色图形模式 324 8.3.3 访问显存 325 8.3.4 显示卡换页 326 8.3.5 硬件无关屏幕初始化 327 8.4 魔方游戏开发程序剖析 329 8.4.1 功能分析 330 8.4.2 鼠标驱动程序 330 8.4.3 主函数模块 344 8.4.4 初始化图形to_graphic_mode模块 347 8.4.5 初始化鼠标initialize模块 347 8.4.6 显示程序的作者word模块 348 8.4.7 显示游戏标题title模块 350 8.4.8 绘制游戏主窗口的draw_win模块 352 8.4.9 建立魔方游戏界面body模块 353 8.4.10 显示魔方游戏showcube模块 362 8.4.11 清除键盘缓冲区clr_kb_buff模块 363 8.4.12 返回鼠标按下操作键值getmousech模块 363 8.4.13 处理用户对功能热键的操作handle模块 364 8.5 小结 377 第9章 综合开发实例——信息管理系统 378 9.1 问题定义 378 9.2 算法设计 378 9.2.1 主函数算法 379 9.2.2 各模块算法 379 9.3 流程图设计 381 9.3.1 主函数模块的流程图 381 9.3.2 其他各模块的流程图 382 9.4 编写程序代码 392 9.4.1 基本介绍 392 9.4.2 信息管理系统程序代码 392 9.5 测试与调试 410 9.5.1 基本介绍 410 9.5.2 信息管理系统测试与调试 411 9.6 整理文档 412 9.7 系统维护 412 9.8 归纳总结 412...
第1讲:2015-01-12(进制01) 第2讲:2015-01-13(进制02) 第3讲:2015-01-14(数据宽度-逻辑运算03) 第4讲:2015-01-15(通用寄存器-内存读写04) 第5讲:2015-01-16(内存寻址-堆栈05) 第6讲:2015-01-19(EFLAGS寄存器06) 第7讲:2015-01-20(JCC) 第8讲:2015-01-21(堆栈图) 第8讲:2015-01-21(宝马问题) 第9讲:2015-01-22(堆栈图2) 第10讲:2015-01-23(C语言01_后半段) 第10讲:2015-01-23(C语言完整版) 第11讲:2015-01-26(C语言02_数据类型) 第12讲:2015-01-27(C语言03_数据类型_IF语句) 第13讲:2015-01-28(C语言04_IF语句逆向分析上) 第14讲:2015-01-28(C语言04_IF语句逆向分析下) 第15讲:2015-01-29(C语言04_正向基础) 第16讲:2015-01-30(C语言05_循环语句) 第17讲:2015-02-02(C语言06_参数_返回值_局部变量_数组反汇编) 第18讲:2015-02-02(2015-01-30课后练习) 第19讲:2015-02-03(C语言07_多维数组) 第20讲:2015-02-03(2015-02-02课后练习) 第21讲:2015-02-04(C语言08_结构体) 第22讲:2015-02-05(C语言09_字节对齐_结构体数组) 第23讲:2015-02-06(C语言10_Switch语句反汇编) 第24讲:2015-02-26(C语言11_指针1) 第25讲:2015-02-27(C语言11_指针2) 第26讲:2015-02-28(C语言11_指针3) 第27讲:2015-02-28(C语言11_指针4) 第28讲:2015-03-02(C语言11_指针5) 第29讲:2015-03-03(C语言11_指针6) 第30讲:2015-03-04(C语言11_指针7) 第31讲:2015-03-06(C语言11_指针8) 第32讲:2015-03-09(位运算) 第33讲:2015-03-10(内存分配_文件读写) 第34讲:2015-03-11(PE头解析_手动) 第35讲:2015-03-12(PE头字段说明) 第36讲:2015-03-13(PE节表) 第37讲:2015-03-16(FileBuffer转ImageBuffer) 第38讲:2015-03-17(代码节空白区添加代码) 第39讲:2015-03-18(任意节空白区添加代码) 第40讲:2015-03-19(新增节添加代码) 第41讲:2015-03-20(扩大节-合并节-数据目录) 第42讲:2015-03-23(静态连接库-动态链接库) 第43讲:2015-03-24(导出表) 第44讲:2015-03-25(重定位表) 第45讲:2015-03-26(移动导出表-重定位表) 第46讲:2015-03-27(IAT表) 第47讲:2015-03-27(导入表) 第48讲:2015-03-30(绑定导入表) 第49讲:2015-03-31(导入表注入) 第50讲:2015-04-01(C++ this指针 类 上) 第51讲:2015-04-01(C++ this指针 类 下) 第52讲:2015-04-02(C++ 构造-析构函数 继承) 第53讲:2015-04-03(C++ 权限控制) 第54讲:2015-04-07(C++ 虚函数表) 第55讲:2015-04-08(C++ 动态绑定-多态-上) 第56讲:2015-04-08(C++ 动态绑定-多态-下) 第57讲:2015-04-09(C++ 模版) 第58讲:2015-04-10(C++ 引用-友元-运算符重载) 第59讲:2015-04-13(C++ new-delete-Vector) 第60讲:2015-04-14(C++Vector实现) 第61讲:2015-04-15(C++链表) 第62讲:2015-04-16(C++链表实现) 第63讲:2015-04-16(C++二叉树) 第64讲:2015-04-17(C++二叉树实现) 第65讲:2015-04-20(Win32 宽字符) 第66讲:2015-04-21(Win32 事件-消息-消息处理函数) 第67讲:2015-04-22(Win32 ESP寻址-定位回调函数-条件断点) 第68讲:2015-04-23(Win32 子窗口-消息处理函数定位) 第69讲:2015-04-24(Win32 资源文件-消息断点) 第70讲:2015-04-27(Win32 提取图标-修改标题) 第71讲:2015-04-28(Win32 通用控件-VM_NOTIFY) 第72讲:2015-04-29(Win32 PE查看器-项目要求) 项目一:PE查看器 开发周期(5天) 需求文档 第73讲:2015-05-07(Win32 创建线程) 第74讲:2015-05-08(Win32 线程控制_CONTEXT) 第75讲:2015-05-11(Win32 临界区) 第76讲:2015-05-12(Win32 互斥体) 第77讲:2015-05-13(Win32 事件) 第78讲:2015-05-14(Win32 信号量) 第79讲:2015-05-15(Win32 线程同步与线程互斥) 第80讲:2015-05-18(Win32 进程创建_句柄表) 第81讲:2015-05-20(Win32 以挂起形式创建进程) 第82讲:2015-05-21(Win32 加密壳_项目说明) 项目二:加密壳 开发周期(5天) 需求文档 第83讲:2015-05-28(Win32 枚举窗口_鼠标键盘事件) 第84讲:2015-05-29(Win32 CE练习) 第85讲:2015-06-01(Win32 OD练习) 第86讲:2015-06-03(Win32 ShellCode_远程线程注入) 第87讲:2015-06-04(Win32 加载EXE_模块隐藏) 第88讲:2015-06-09(Win32 IAT_HOOK) 第89讲:2015-06-10(Win32 InlineHook) 第90讲:2015-06-11(Win32 进程通信) 第91讲:2015-06-11(Win32 进程监控_项目说明) 项目三:进程监控 开发周期(5天) 需求文档 第92讲:2015-06-15(硬编码_01) 第93讲:2015-06-16(硬编码_02) 第94讲:2015-06-17(硬编码_03) 第95讲:2015-06-18(硬编码_04) 第96讲:2015-06-19(硬编码_05)
视频名称 源码 -------------------------------------------------------------------------------- 04_开发与运行(卸载)第一个ANDROID应用.avi 所在项目:Hello 06_电话拔号器.avi 所在项目:phone 08_短信发送器.avi 所在项目:sms 09_深入了解各种布局技术.avi 所在项目:sms & FrameLayout 10_对应用进行单元测试.avi 所在项目:junitest 11_查看与输出日志信息.avi 所在项目:junitest 12_文件的保存与读取.avi 所在项目:File 13_文件的操作模式.avi 所在项目:File & other 14_把文件存放在SDCard.avi 所在项目:File 15_采用Pull解析器解析和生成XML内容.avi 所在项目:xml 16_采用SharedPreferences保存用户偏好设置参数.avi 所在项目:SharedPreferences 17_创建数据库与完成数据添删改查.avi 所在项目:db 18_在SQLite中使用事务.avi 所在项目:db 19_采用ListView实现数据列表显示.avi 所在项目:db 20_采用ContentProvider对外共享数据.avi 所在项目:db & other 21_监听ContentProvider中数据的变化.avi 所在项目:db & other & Aapp 22_访问通信录中的联系人和添加联系人.avi 所在项目:contacts 23_网络通信之网络图片查看器.avi 所在项目:netimage & Web端应用:web 24_网络通信之网页源码查看器.avi 所在项目:HtmlViewer & Web端应用:web 25_网络通信之视频资讯客户端.avi 所在项目:news & Web端应用:web 26_采用JSON格式返回数据给资讯客户端.avi 所在项目:news & Web端应用:web 27_网络通信之通过GET和POST方式提交参数给web应用.avi 所在项目:newsmanage & Web端应用:web 28_网络通信之通过HTTP协议实现文件上传.avi 所在项目:newsmanage & Web端应用:web 29_发送xml数据和调用webservice.avi 所在项目:mobileAddressQuery & Web端应用:web 30_多线程下载原理.avi 所在项目:net 31_多线程断点下载器.avi 所在项目:MulThreadDownloader 32_文件断点上传器.avi 所在项目:videoUpload & javaSE应用:socket 33_为应用添加多个Activity与参数传递.avi 所在项目:MulActivity 34_Activity的启动模式.avi 所在项目:LaunchMode & openSingleInstance & singleInstance 35_Intent深入解剖.avi 所在项目:Intent 36_Activity生命周期.avi 所在项目:ActivityLife 37_采用广播接收者实现短信窃听器.avi 所在项目:SMSListener & Web端应用:web 38_采用广播接收者拦截外拔电话与其特性.avi 所在项目:SMSListener 39_采用Service实现电话窃听器.avi 所在项目:phonelistener 40_建立能与访问者进行相互通信的本地服务.avi 所在项目:studentquery 41_使用AIDL实现进程通信.avi 所在项目:remoteService & remoteServiceClient 42_服务的生命周期.avi 43_音乐播放器.avi 所在项目:audioplayer 44_在线视频播放器.avi 所在项目:videoplayer 45_拍照.avi 所在项目:takepicture 46_视频刻录.avi 所在项目:videoRecorder 47_手势识别.avi 所在项目:gesture & GestureBuilder 48_实现软件国际化.avi 所在项目:i18n 49_屏幕适配.avi 所在项目:ScreenAdapter 50_样式与主题.avi 所在项目:style 51_编码实现软件界面.avi 所在项目:codeUI 52_发送状态栏通知.avi 所在项目:Notification 53_采用网页设计软件界面.avi 所在项目:htmlUI 54_tween动画.avi 所在项目:tween 55_frame动画的实现.avi 所在项目:frameAnimation 56_activity切换动画与页面切换动画.avi 所在项目:animation 57_采用方向传感器实现指南针.avi 所在项目:sensor 58_拖拉功能与多点触摸.avi 所在项目:DragScale 59_各种图形的使用介绍.avi 所在项目:drawable 60_meta-data的使用.avi 所在项目:metadata 61_Widget.avi 所在项目:Widgets 62_自定义窗口标题.avi 所在项目:customtitle 63_PopupWindow.avi 所在项目:PopupWindow 64_ListView数据异步加载与AsyncTask.avi 所在项目:DataAsyncLoad 65_ListView数据的分批加载.avi 所在项目:datapageload 66_自定义标签页.avi 所在项目:tabhost 67_TraceView性能测试与Android应用性能优化方案.avi 所在项目:tabhost Android核心基础加强内容(暂不对外公布) 复杂UI界面设计、GPS与GoogleMap、自定义View、Ubuntu Linux下使用C语言面向底层开发、通过JNI进行底层组件调用、图形与OpenGl ES、界面特效、下载修改及编绎Android框架代码

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值