C语言练习题100道

C 练习实例37 - 排序

题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

// 选择排序
#include 
#include 
#include 
using namespace std;

#include

#define N 5
int main()
{	
	int a[N],i,j,temp;
	for(i=0;i<N;i++)
	{
		scanf("%d",&a[i]);
	}
	int min;
	for(i=0;i<N-1;i++)
	{
		min=i;
		for(j=i+1;j<N;j++)
		{
			if(a[j]<a[min]) min = j;
		}
		if(min!=i)
		{
			temp = a[i];
			a[i] = a[min];
			a[min] = temp;
		}	
	}
	for(i=0;i<N;i++)
	{
		printf("%d",a[i]);
	}
    return 0;
}

C 练习实例40

题目:将一个数组逆序输出。

程序分析:用第一个与最后一个交换。

#include
#define N 10
int main()
{
    int a[N]={0,1,2,3,4,5,6,7,8,9};
    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;
}

**51 进制转换,文件操作

#include
#include
#include
#include
 
// 把十进制转成二进制,并保存存在文件里
void printBinaryDigitIntoFile(FILE *fp, int i)
{
	assert(i >= 0 && i <= 255);
 
	char str[20];
	int r = 2;
	itoa(i, str, r); // 重要函数
 
	int length = strlen(str);
	int j;
	for(j = length; j < 8; j++)
		fprintf(fp, "0"); // 前面补0
 
	fprintf(fp, "%s\n", str);
}
 
int main()
{
	FILE *fp = fopen("myData.txt", "w");
	int i;
	for(i = 0; i <= 255; i++)
	{
		printBinaryDigitIntoFile(fp, i);
	}
	fclose(fp);
 
	return 0;
}

66 利用指针和函数实现交换:输入3个数a,b,c,按大小顺序输出

// 选择排序
#include 
#include 
#include 
using namespace std;

#include

void swap(int* ,int*);

int main()   
{  
    printf("输入三个待排序的数:");
	int a,b,c;
	int *pa,*pb,*pc;  //1.定义
	
	pa = &a;  //2.取地址
	pb = &b;
	pc = &c;
	
	scanf("%d %d %d",&a,&b,&c);
	
	if(*pa < *pb)//3.解引用
	{
		swap(pa,pb);
	}
	if(*pa < *pc)
	{
		swap(pa,pc);
	}
	if(*pb < *pc)
	{
		swap(pb,pc);
	}
	printf("排序后的结果:");
	printf("%d,%d,%d",*pa,*pb,*pc);
    return 0;  
}
void swap(int *p,int *q)
{
	int temp;
	temp = *p;
	*p = *q;
	*q = temp;
}

69 排圈题目

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。



76函数指针与指针函数

C语言练习题100道_第1张图片
2.函数参数传递问题
C语言练习题100道_第2张图片

78 结构体数组,指针

题目:找到年龄最大的人,并输出。请找出程序中有什么问题

// 选择排序
#include 
#include 
#include 
using namespace std;

#include

struct man{
	char name[20];
	int age;
}
person[3]={"li",18,"wang",25,"sun",22};


int main()   
{  
	struct man *q,*p;
	int i,m =0;
	p = person;
	//q 可能不被赋值的问题
	q = p;
	for(i=0;i<3;i++)
	{
		 if(m<p->age)
		 {
			 m = p->age;
			 q = p;
		 }
		 p++;
	}
	printf("%s %d",q->name,q->age);
    return 0;  
}

87 结构体变量传递,局部变量值的改变

#include
 
struct student
{
    int x;
    char c;
} a;
 
int main()
{
    a.x=3;
    a.c='a';
    f(a);
    printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
    b.x=20;
    b.c='y';
}

94 猜谜游戏

// 选择排序
#include 
#include 
#include 
using namespace std;

#include

void caizi(void)
{
    int n;
    char begin;
    int count = 1;
    srand((int)time(NULL));
    int m = (rand() % 100) + 1;
    puts("游戏开始,请输入数字:");
    while (1)
    {
        scanf("%d", &n);
        if (n == m)
        {
            printf("猜中了,使用了 %d 次!\n", count);
            if (count == 1)
            {
                printf("你是神级人物了!膜拜\n");
                getchar();
                printf("你已经达到最高级别,还需要玩吗?Y/N \n");
                scanf("%c", &begin);
                if (begin == 'Y' || begin == 'y')      //重复玩的一个嵌套循环
                {
                    caizi();
                }
                else
                {
                    printf("谢谢,再见!\n");
                }
            }
            else if (count <= 5)
            {
                printf("你是王级人物了!非常赞\n");
                getchar();
                printf("需要挑战最高级别不?Y/N \n");
                scanf("%c", &begin);
                if (begin == 'Y' || begin == 'y')
                {
                    caizi();
                }
                else
                {
                    printf("谢谢,再见!\n");
                }
            }
            else if (count <= 10)
            {
                printf("你是大师级人物了!狂赞\n");
                getchar();
                printf("需要挑战最高级别不?Y/N \n");
                scanf("%c", &begin);
                if (begin == 'Y' || begin == 'y')
                {
                    caizi();
                }
                else
                {
                    printf("谢谢,再见!\n");
                }
            }
            else if (count <= 15)
            {
                printf("你是钻石级人物了!怒赞\n");
                getchar();
                printf("需要挑战最高级别不?Y/N \n");
                scanf("%c", &begin);
                if (begin == 'Y' || begin == 'y')
                {
                    caizi();
                }
                else
                {
                    printf("谢谢,再见!\n");
                }
            }
            else
            {
                getchar();
                printf("你的技术还有待提高哦!重玩? Y/N\n");
                scanf("%c",&begin);
                if (begin == 'Y' || begin == 'y')
                {
                    caizi();
                }
                else
                {
                    printf("谢谢,再见!\n");
                }
            }
            break;
        }
        else if (n < m)
        {
            puts("太小了!");
            puts("重新输入:");
        }
        else
        {
            puts("太大了!");
            puts("重新输入:");
        }
        count++;//计数器
        
        
    }
}
 
 
int main(void)
{
    
    caizi();
    system("pause");
    return 0;
}

98 大小写转换加文件指针

#include 
#include 
#include 
using namespace std;

#include
#include

int main(void)
{
    
    FILE *fp = NULL;
	char str[50];
	int i,len,k;
	printf("请输入一些字符:\n");
	
	gets(str);
	len  = strlen(str);
	for(i=0;i<len;i++)
	{
		if(str[i]<='z'&&str[i]>='a')
		{
			str[i]-=32;
		}
	}
	for(k = 0;k<3;k++)
	{
		printf("%c\n",str[k]);
	}
	fp = fopen("D:/C++/test.txt","a"); 
	fprintf(fp,"%s",str);
	fclose(fp);
    // system("pause");
    return 0;
}

文件指针的学习:https://blog.csdn.net/qq_44757034/article/details/104696262

你可能感兴趣的:(C语言基础学习,C++语言学习,c语言,算法,c++)