C语言题目练习100例——题目+题目分析+源代码(61—70)

【题目61】

题目:将一个数组逆序输出。
1.题目分析:用第一个与最后一个交换。
2.题目源代码如下:

#include "stdio.h"
#define N 6

int main()
{
	int a[N]={0,1,2,3,4,5};
	int i,t;
	printf("原始数组是:\n");
	for(i=0;i<N;i++)
	{
		printf("%d ",a[i]);
	}
	for(i=0;i<N/2;i++)
	{
		t=a[i];
		a[i]=a[N-1-i];
		a[N-1-i]=t;
	}
	printf("\n排序后的数组:\n");
	for(i=0;i<N;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
	return 0;
}

【题目62】

题目:学习使用按位与 & 。
1.题目分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 。
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int a,b;
	a=077;
	b=a&3;
	printf("(a & b)为%d \n",b);
	b=b&7;
	printf("(a & b)为%d \n",b);
	return 0;
}

【题目63】

题目:学习使用按位或 | 。
1.题目分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 。
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int a,b;
	a=077;
	b=a|3;
	printf("b的值为:%d \n",b);
	b|=7;			// b=b|7;
	printf("b的值为:%d \n",b);
	return 0;
}

【题目64】

题目:学习使用按位异或 ^ 。
1.题目分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 。
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int a,b;
	a=077;
	b=a^3;
	printf("b的值为:%d \n",b);
	b^=7;
	printf("b的值为:%d \n",b);
	return 0;
}

【题目65】

题目:学习使用按位取反 ~ 。
1.题目分析:~0=1; ~1=0。
2.题目源代码如下:

#include "stdio.h"

int main()
{
    int a,b;
    a=234;
    b=~a;
    printf("a的按位取反值为(十进制):%d \n",b);
    a=~a;
    printf("a的按位取反值为(十六进制):%x \n",a);
    return 0;
}

【题目66】

题目:打印出杨辉三角形(要求打印出6行)。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int i,j;
	int a[6][6];
	printf("\n");
	for(i=0;i<6;i++)
	{
		a[i][0]=1;
		a[i][i]=1;
	}
	for(i=2;i<10;i++)
	{
		for(j=1;j<i;j++)
		{
			a[i][j]=a[i-1][j-1]+a[i-1][j];
		}
	}
	for(i=0;i<6;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%5d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

【题目67】

题目:输入3个数a,b,c,按大小顺序输出。
1.题目分析:利用指针方法。
#2.题目源代码如下:

#include "stdio.h"

void swap(int *,int *);
int main()
{
	int a,b,c;
	int *p1,*p2,*p3;
	printf("请输入a,b,c: \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 *s1,int *s2)
{
	int t;
	t=*s1;
	*s1=*s2;
	*s2=t;	
} 

【题目68】

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"

int main()
{
	int num[50],n,*p,j,loop,i,m,k;
	printf("请输入这一圈人的数量: \n");
	scanf("%d",&n);
	p=num;
	for(j=0;j<n;j++)
	{
		*(p+j)=j+1;	
	}	
	i=0;		//i用于计数,即让指针后移
	m=0;		//m记录退出圈子的人数 
	k=0; 		//k报数1,2,3
	while(m<n-1)
	{
		if(*(p+i) != 0)
		{
			k++; 
		}
		if(k==3)
		{
			k=0;		//报数清零,即下一个人从1开始报数
			*(p+i)=0;	//将报数为3的人编号重置为0
			m++;		//退出人数加1	
		} 
		i++;		//指针后移
		if(i==n)
		{
			i=0;	
		} 
	} 
	printf("现在剩下的人是: ");
	for(loop=0;loop<n;loop++)
	{
		if(num[loop] != 0)
		{
			printf("%2d号\n",num[loop]);
		}
	}
}

【题目69】

题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"
#include "stdlib.h"

int length(char *);			//声明被调用的函数 
int main()
{
	int len;
	char str[20];
	printf("请输入字符串: \n");
	scanf("%s",str);
	len=length(str);
	printf("字符串有%d个字符。",len);
}
int length(char *s)		//求字符串的长度 
{
	int i=0;
	while(*s != '\0')
	{
		i++;
		s++;
	}
	return i;
}

【题目70】

题目:编写input()和output()函数输入,输出3个学生的数据记录。
1.题目分析:
2.题目源代码如下:

#include "stdio.h"
#include "stdlib.h"

typedef struct{
	char name[20];
	char sex[3];
	int age;
}Stu;

void input(Stu *stu);
void output(Stu *stu);
int main()
{
	Stu stu[3];
	printf("请输入3个学生的信息:姓名 性别 年龄: \n");
	input(stu);
	printf("3个学生的信息如下:\n姓名 性别 年龄 \n");
	output(stu);
	
	system("pause");
	return 0;
}
void input(Stu *stu)
{
	int i;
	for(i=0;i<3;i++)
	{
		scanf("%s%s%d",stu[i].name,stu[i].sex,&(stu[i].age));
	}; 
} 
void output(Stu *stu)
{
	int i;
	for(i=0;i<3;i++)
	{
		printf("%s %s %d \n",stu[i].name,stu[i].sex,stu[i].age);
	}
}

你可能感兴趣的:(#,C语言——100题目练习,c语言,算法,开发语言,数据结构,经验分享)