首页 > 其他分享 >C语言练习

C语言练习

时间:2024-03-20 16:29:50浏览次数:21  
标签:10 ++ 练习 C语言 int num printf include

1.输出方形。
#include<stdio.h>
int main()
{
	char star='*', space = ' ';
	int a,i,j;
	for (a = 0; a < 5; a++)
	{
		if (a == 0 || a== 4)
			for (i = 0; i < 4; i++)
				putchar(star);
		else
		{
			putchar(star);
			for (j = 0; j< 2; j++)
				putchar(space);
			putchar(star);
		}
		printf("\n");
	}
}
2.输出菱形。
#include<stdio.h>
int main()
{
	char star = '*', space = ' ';
	int a, b, m, n;
	for (a = 0; a < 5; a++)
	{
		if (a < 3)
			m = 22 - a , n = 2 * a + 1;
		else
			m = a + 18 , n = 9 - 2 * a;
		for (b = 0; b < m; b++)
			putchar(space);
		for (b = 0; b < n; b++)
			putchar(star);
		printf("\n");
	}
}

3.输入一段字符,输出每3字符空1格。
#include<stdio.h>
void main()
{
	char *p, a[20],*q,b[20];
	gets(a);
	p = a, q = b;
	int i = 1;
	for (; *p; p++, i++)
	{
		*q = *p;
		q++;
		if (i % 3 == 0)
			*q = ' ', q++;
	}
	*q = '\0';
	puts(b);		
}

4.删星号。
#include<stdio.h>
int main()
{
	char* p, a[20],*q,b[20];
	gets(a);
	p = a, q = b;
	while (*p)
	{
		if (*p != '*')
			*q= *p,q++;
		p++;
	}
	*q = '\0';
	puts(b);
}

5.回归数。获取num=abc,且num=a*a*a + b*b*b + c*c*c。
#include<stdio.h>
int regress(int num)
{
	int a, b, c;
	a = num / 100;
	b = (num % 100) / 10;
	c = num % 10;
	if (num == a*a*a + b*b*b + c*c*c)
		printf("%d ", num);
	return 1;
}
int main()
{
	for (int num = 100; num < 1000; num++)
		regress(num);
}

6.数的平方是3位数。
#include<stdio.h>
#include<math.h>
int main()
{
	int x,y,n=0, a,b,c;
	for (x = 999; x >99; x--)
	{
		a = x / 100, b = (x - a * 100) / 10, c = x % 10, y = sqrt((float)x);
		if ((x == y * y) && ((a == b) +( b == c) +( a == c) ==1))
		{
			printf("%5d", x);  n++;
		}
	}
	printf("\n数的平方是3位数的共有%d个数", n);
}

7.获得n=6xx...x,m=xx...x6,且n=4*m。
#include<stdio.h>

int main()
{
	int n, m, i;
	for (i = 0; i < 10; i++)
	{
		n = 60 + i;
		m = i * 10 + 6;
		if (n == 4 * m)
		{
			printf("n=%d\n", n);
			printf("m=%d", m);
			break;
		}
	}
	for (i = 0; i < 100; i++)
	{
		n = 600 + i;
		m = i * 10 + 6;
		if (n == 4 * m)
		{
			printf("n=%d\n", n);
			printf("m=%d", m);
			break;
		}
	}
	for (i = 0; i < 1000; i++)
	{
		n = 6000 + i;
		m = i * 10 + 6;
		if (n == 4 * m)
		{
			printf("n=%d\n", n);
			printf("m=%d", m);
			break;
		}
	}
	for (i = 0; i < 10000; i++)
	{
		n = 60000 + i;
		m = i * 10 + 6;
		if (n == 4 * m)
		{
			printf("n=%d\n", n);
			printf("m=%d", m);
			break;
		}
	}
	for (i = 0; i < 100000; i++)
	{
		n = 600000 + i;
		m = i * 10 + 6;
		if (n == 4 * m)
		{
			printf("n=%d\n", n);
			printf("m=%d", m);
			break;
		}
	}
}
	

8.十进制转换二进制。
#include<stdio.h>
int main()
{
	int num;
	char StringNum[20];
	int i, j, Num[20];
	puts("请输入十进制整数num:");
	scanf("%d", &num);
	for (i = 0; num != 0; ++i)
	{
		Num[i] = (num % 2);
		num /= 2;
	}
	for (j = 0; j < i; ++j)
		StringNum[j] =Num[i-j-1] ? '1' : '0';
	StringNum[j] = 0;
	puts("转换成二进制字符串:");
	puts(StringNum);
}

9.求10个整数中不相同数的个数。
#include<stdio.h>
int main()
{
	int num[10], i, j,k, n = 0;
	printf("请输入10个整数:\n");
	for (i = 0; i < 10; i++)
	scanf("%d",&num[i]);
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < i; j++)
		{
			if (num[i] == num[j])	break;
		}
		if (i <= j)		n++;
	}
	printf("10个整数中不相同数的个数为%d", n);
}

10.获得连续数字。
#include<stdio.h>
int main()
{
	char* p, * q, a[20] , b[20];
	int n = 0;
	gets(a);
	p = a, q = b;
	for(;*p; p++)
		while (*p >= '0' && *p <= '9')
		{
			*q = *p, q++, p++;
			if (*p >= '0' && *p <= '9')
				*q = *p, q++, p++, n++;
			else
			{
				q--; break;
			}
			for(;*p >= '0' && *p <= '9';q++, p++)
				*q = *p;
			*q = ',', q++,p++;
			if(*p=='\0')
				break;
		}
	*(--q) = '\0';
	printf("连续数字有%d个:", n);
	puts(b);
}
11.输出年份日历。
#include <stdio.h>

int year(int y)
{
	if ((y % 4 == 0) && (y % 100 != 0) || y % 400 == 0)
		return 366;
	else
		return 365;
}

int main()
{
	int y;
	int i, j, sum = 0;
	int begin, week;
	int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	scanf("输入年份:");
	scanf("%d", &y);
	for (i = 1; i < y; i++)
		sum += year(i);

	week = (sum + 1) % 7;		//表示该年1月1日为星期几

	if (year(y) == 366)
		days[1] = 29;

	printf("\n%d年日历如下:\n\n", y);

	for (i = 0; i < 12; i++)
	{
		printf("       %d月          \n", i + 1);
		printf("  7  1  2  3  4  5  6\n");
		printf("=====================\n");
		begin = 1;
		for (j = 0; j < week; j++)
			printf("   ");
		while (begin <= days[i])
		{
			printf("%3d", begin);
			begin++;
			week = (week + 1) % 7;
			if (week % 7 == 0)
				printf("\n");
		}
		printf("\n\n");

	}
	return 0;
}

12.使用函数排序。
#include <stdio.h> 
void swap(int *a, int *b)
{
    int c;
    if (*a > *b)
        c =* a,* a =* b, *b = c;
}
int main()
{
    int a, b;
    printf("a=");
    scanf("%d",&a);
    printf("b=");
    scanf("%d",&b);
    swap(&a, &b);
    printf("a=%d,b=%d", a, b);
}

13.冒泡排序。
#include<stdio.h>
void tmp(int a[10])
{
	int  i, j, k, t;
	for (i = 0; i < 9; i++)
		for (j = 0; j < 9-i; j++)
			if (a[j] >a[j+1])	//把大的数放后面
				t = a[j], a[j] = a[j+1], a[j+1] = t;
}
int main()
{
	int a[10], i;
	printf("请输入10个整数:\n");
	for (i = 0; i < 10; i++)
		scanf("%d", &a[i]);
	tmp(a);
	printf("排序后的10个整数为:\n");
	for (i = 0; i < 10; i++)
		printf("%d ", a[i]);
}

14.选择排序。
#include<stdio.h>
void tmp(int a[10])
{
	int  i, j, k, t;
	for (i = 0; i < 9; i++)
	{
		k = i;
		for (j = i + 1; j < 10; j++)
			if (a[k] > a[j])	//把小的放前面
				k = j;
		if (k!=i)
			t = a[i], a[i] = a[k], a[k] = t;
	}
}
int main()
{
	int a[10], i;
	printf("请输入10个整数:\n");
	for (i = 0; i < 10; i++)
		scanf("%d", &a[i]);
	tmp(a);
	printf("排序后的10个整数为:\n");
	for (i = 0; i < 10; i++)
		printf("%d ", a[i]);
}

15.国家名称排序。
#include<stdio.h>
#include<string.h>
int main()
{
	char n[20], name[5][20];
	int i, j,m;
	puts("请输入5个国家名称:\n");
	for (i = 0; i < 5; i++)
		gets(name[i]);
	for (i = 0; i < 4; i++)
	{
		m = i;
		for (j = i+1; j < 5; j++)
		{
			if (strcmp(name[m], name[j]) > 0)
				m = j;
		}
		if (m != i)
			strcpy_s(n, name[i]), strcpy_s(name[i], name[m]), strcpy_s(name[m], n);
	}
	puts("排序后的名称:\n");
	for (i = 0; i < 5; i++)
		puts(name[i]);
}

// #include<stdio.h>
// #include<string.h>
// int main()
// {
// 	char n[20], name[5][20];
// 	int i, j;
// 	puts("请输入5个国家名称:\n");
// 	for (i = 0; i < 5; i++)
// 		gets(name[i]);
// 	for (i = 0; i < 5; i++)
// 		for (j = 0; j < 5; j++)
// 			if (strcmp(name[i], name[j]) >0)
// 			strcpy_s(n, name[i]), strcpy_s(name[i], name[j]), strcpy_s(name[j], n);
// 	puts("排序后的名称:\n");
// 	for (; i>=0; i--)
// 		puts(name[i]);
// }

16.对字符串排序不重复。
// #pragma warning(disable : 4996)
#include<stdio.h>
#include<string.h>
int main()
{
	char str[100], * p, * q, * r, c;
	printf("please input a string:");
	gets(str);
	for (p = str; *p; p++)
	{
		for (q = p, r = p; *q; q++)
			if (*r>*q)
				r = q;
		if (r!=p)
		{
			c = *r;
			*r = *p;
			*p = c;
		}
	}
	for (p = str; *p; p++)
	{
		for (q = p; *p == *q; q++);
		strcpy(p+1, q);
	}
	printf("the sorted and non-repetitive result is:%s\n", str);
}

17.指针获取最大值和最小值。
// #include<stdio.h>
// #define a 3
// void max_min(double* num, double* max, double* min) {
// 	for (int i = 1; i < a; i++) {
// 		if (num[i] > *max)
// 			*max = num[i];
// 		if (num[i] < *min)
// 			*min= num[i];
// 	}
// }
// int main() {
// 	double num[a],* max=num, * min=num;
// 	for (int j = 0; j < a; j++)
// 		scanf("%lf", &num[j]);
// 	*max = num[0], * min = num[0];
// 	max_min(&num[1], max, min);
// 	printf("max=%lf\n", *max); 
// 	printf("min=%lf\n", *min);
// }

#include <stdio.h>
#include <stdlib.h> //<cstdlib>
#define SIZE 3
void max_min(double* num, double* max, double* min) {
    for (int i = 0; i < SIZE; i++) {
		// printf("------------%d------------\n",i);
        if (num[i] > *max){
            // printf("num[i]=%lf\n", num[i]);
            // printf("max=%lf\n", *max);
            // printf("--------------------------\n");
            *max = num[i];
        }
        if (num[i] < *min){
            // printf("num[i]=%lf\n", num[i]);
            // printf("min=%lf\n", *min);
            // printf("--------------------------\n");
            *min = num[i];
        }
		// printf("num[i]=%lf\n", num[i]);
		// printf("max=%lf\n", *max);
		// printf("min=%lf\n", *min);
    }
}
int main() {
    double num[SIZE];
    double *max = (double*)malloc(sizeof(double));  //分配空间
    double *min = (double*)malloc(sizeof(double));  //分配空间
    // 读取数组元素
    for (int i = 0; i < SIZE; i++)
        scanf("%lf", &num[i]);
    // 初始化最大值和最小值为数组的第一个元素
    *max = num[0];
    *min = num[0];
    // 调用max_min函数找到最大值和最小值
    max_min(num, max, min);
    printf("max=%lf\n", *max);
    printf("min=%lf\n", *min);
    return 0;
}

18.指针比较字符串大小。
#include<stdio.h>
int main()
{
	char* p, * q, a[20], b[20];
	gets(a), gets(b);
	p= a, q= b;
	for (; *p; q++, p++)
	{
		if (*p > *q)
		{
			printf("%s>%s", a, b); break;
		}
		if (*p < *q)
		{
			printf("%s<%s", a, b); break;
		}
	}
	if(*p=='\0')
	if (*q)
		printf("%s<%s", a, b);
	else
		printf("%s==%s", a, b);
}

19.指针连接字符串。
#include<stdio.h>
int main()
{
	char *p1,*p2, a[20], b[20];
	gets(a),gets(b);
	p1 = a, p2 = b;
	while (*p1)
		p1++;
	while (*p1 = *p2)
		p1++,p2++;
	*p1 = '\0';
	puts(a);
}

标签:10,++,练习,C语言,int,num,printf,include
From: https://blog.csdn.net/qq_69866029/article/details/136791576

相关文章

  • C语言结构体
    前言还记得我在总结操作符时,涉及到了结构体,在C语言中类型分为两大类一个是内置类型,一个是自定义类型,常见的内置类型我们不说,我们今天来好好看一看为自定义类型之一的结构体吧个人主页:小张同学zkf若有问题 评论区见感兴趣就关注一下吧目录1.什么是结构体2.结构体类......
  • 【C语言】结构体的内存对齐问题
    1.结构体内存对齐我们已经基本掌握了结构体的使用了。那我们现在必须得知道结构体在内存中是如何存储的?内存是如何分配的?所以我们得知道如何计算结构体的大小?这就引出了我们今天所要探讨的内容:结构体内存对齐。1.1对齐规则首先得掌握结构体的对齐规则:1.结构体的第⼀......
  • C数据类型(C语言)---变量的类型决定了什么?
    目录数据类型(DataType)变量的类型决定了什么?(1)不同类型数据占用的内存大小不同如何计算变量或类型占内存的大小(2)不同数据类型的表数范围不同(3)不同类型数据的存储形式不同整型数定点数与浮点数字符型数据(英文字母、数字、控制字符)(4)不同数据类型可参与的运算不同整型......
  • 第 6 章 ROS-URDF练习(自学二刷笔记)
    重要参考:课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ讲义链接:Introduction·Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程6.3.4URDF练习需求描述:创建一个四轮圆柱状机器人模型,机器人参数如下,底盘为圆柱状,半径10cm,高8cm,四轮由两个驱动轮和......
  • 数据结构(C语言版)——单链表的查找
    1.按位查找//按位查找,返回第i个元素(带头结点)LNode*GetElem(LinkListL,inti){ if(i<0) returnfalse; LNode*p;//指针p指向当前扫描到的结点 intj=0;//当前p指向的是第几个结点 p=L;//L指向头结点,头结点是第0个结点(不存数据) while(p!=NULL&&j<i)......
  • C语言的UDP广播实现
    C语言的UDP广播实现以下是一个使用epoll和getopt的UDP广播客户端示例。这个客户端会向指定的广播地址发送一条消息,并等待服务器返回的数据包。#include<arpa/inet.h>#include<netinet/in.h>#include<sys/epoll.h>#include<sys/socket.h>#include<unistd.h>#include<st......
  • c语言应用,模拟用户登陆
     模拟用户登陆所呈现的效果是,在我们设置一个原有的密码(我这边设置的是123456),程序开始执行之后,需要输入密码,同时设置好三次密码输入错误的机会,若是在三次内密码均输入错误,那程序就会强行退出。main函数一开始,我们先定义一个变量a和数组变量p,然后进入for循环(这个for循环就是判......
  • 什么是for语句,for语句在c语言中的应用
    for语句,又称for循环。是编程语言中一种循环语句,在c语言中也是经常使用的语句,和while语句相同,for语句也是循环语句,循环语句由循环体及循环的判定条件两部分组成,一般的格式为for(变量;条件;变量++),for循环比较于while循环,for循环是在一开始就将所有的变量和进入条件都设置好了,而while......
  • C语言程序设计(第二版)学习笔记——第三章
    第三章基本数据类型及数据的输入输出3.1C语言的基本数据类型简介要在C环境下实现运算必须首先定义变量,并确定变量的数据类型,然后才能对数据进行操作。C语言的数据类型分为四大类:基本类型、构造类型、指针类型和空类型(无值类型)。3.2标识符、常量和变量3.2.1标识符1、......
  • [数组练习题]二分法查找操作实例:使用二分法查找有序数组中元素。 找到返回索引,不存在
    文章目录题干一、题目分析1.定义数组,用于后续在数组中查找元素2.对数组进行排序3.定义方法4.调用方法,打印输出二、代码1.代码块2.一图流总结题干提示:这段是题干,仔细阅读仔细分析:二分法查找操作:使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。......