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

C 语言练习分享

时间:2024-03-27 18:34:01浏览次数:27  
标签:include 语言 int str2 str1 练习 ++ printf 分享

c语言的一些小练习,可以多思考,多看看

1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{
	//Sum=1-2+3-4+5-6+……+99-100
	int sum=0;
	for (int i = 1; i <= 100; ++i)
	{
		if (i % 2 == 0)
		{
			sum -= i;
		}
		else
		{
			sum += i;
		}
	}
	printf("Sum=1-2+3-4+5-6+……+99-100=%d", sum);//结果为-50
}

2. 有无符号数比大小

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{
	int num1 = -10;
	unsigned int num2 = 5;//unsigned是无符号数的定义
	//条件运算表达式
	num1 + num2 > 0 ? printf(">0\n") : printf("<0\n");//格式:表达式?结果1:结果2;
}

3. 数组的逆置

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	int j = sizeof(a) / sizeof(a[0]) - 1;
	int tmp = 0;
	while (i < j)
	{		//前后交换
		tmp = a[i];
		a[i] = a[j];
		a[j] = tmp;
		//移动位置
		i++;
		j--;
	}
	for (int i = 0; i <= sizeof(a) / sizeof(a[0])-1; i++)
	{
		printf("%d ", a[i]);
	}
}

4. 数组的冒泡排列

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a[5] = { 2,5,6,3,-1 };
	int n = sizeof(a) / sizeof(a[0]);//sizeof是计算数值存储变量的字节
	for (int i = 0; i < n - 1; i++) //比较轮数
	{
		for (int j = 0; j < n - 1 - i; j++) //比较两数的大小,如果后面的数比前面的数大,则互换一下位置
		{
			if (a[j] > a[j + 1])
			{
				int tmp = a[j + 1];
				a[j + 1] = a[j];
				a[j] = tmp;
			}
		}
	}
	for (int i = 0; i < n; i++)//打印数组
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	return 0;
}

5. 计算三列的平均数和统计没课的不及格数:a[5][3] = { {80,75,56},{59,65,71},{59,63,70},{85,45,90},{76,77,45} }

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{
	//二维数组
	float a[5][3] = { {80,75,56},{59,65,71},{59,63,70},{85,45,90},{76,77,45} };
	float sum = 0.0;
	float aver[3] = { 0 };   //数组第一列5个数的平均值的空数组
	int num[3] = { 0 };     //不及格次数的空数组
	for (int i = 1; i < 3; i++)
	{
		sum = 0;//每次循环的sum值都要初始化,清零
		for (int j = 0; j < 5; j++)
		{
			sum += a[j][i];
			if (a[j][i] < 60)   //判断分数及格还是不及格
			{
				num[i]++;
			}
		}
		aver[i] = sum / 5;
	}
	for (int i = 0; i < 3; i++)  //统计平均数
	{
		printf("%f\n", aver[i]);
	}
	for (int i = 0; i < 3; i++)  //统计次数
	{
		printf("%d\n", num[i]);
	}
}

6. 数组(寻找\0的下标)

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
int main()
{
	char buf[128] = "helloA";
	int i = 0;
	while (buf[i] != '\0')//有几个元素不等于0
	{
		i++;
	}
	printf("i=%d\n", i);
	buf[i - 1] = '\0';//使最后一个元素等于\0
	printf("%s", buf);
	system("pause");
	return 0;
}

7. 字符数组的比大小

#define _CRT_SECURE_NO_WARNINGS 1//要写到代码第一行
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
	/*定义两个空字符串*/
	char str1[128] = "";
	char str2[128] = "";
	printf("请输入两个字符串:\n");
	fgets(str1, sizeof(str1), stdin); /*stdin的意思是,从键盘获取(固定值)*/
	fgets(str2, sizeof(str2), stdin); 
	/*strlen()是测字符数组里面有多个元素,后面是使最后一个元素等于0,
	也就是结束数组,0等于\0*/
	str1[strlen(str1) - 1] = 0;
	str2[strlen(str2) - 1] = 0;
	printf("%s\n", str1);
	printf("%s\n", str2);
	/*第一种,写法用的是while,元素不能是\0和互不相等*/
	int i = 0;
	while (str1[i] != 0 && str2[i] != 0) /*去掉if条件,直接加 && str1[i]==str2[i]*/
	{
		if (str1[i] != str2[i])
			break;
		i++;
	}
	/*第二种,用for*/
	//  for (int i= 1; str1[i] != 0 && str2[i] != 0 && str1[i] == str2[i]; i++)

	if (str1[i] > str2[i])  /*比较大小*/
	{
		printf("str1>str2\n");
	}
	else if (str1[i] < str2[i])
	{
		printf("str1<str2\n");
	}
	else
	{
		printf("str1==str2");
	}
}

8. 有个数组,找出第二大的数,并且打印出来(使用指针操作数组元素个数,不要使用[ ])int a[ ]={100,100,100,234,123,500,32,68,41,99,13,71}

#define _CRT_SECURE_NO_WARNINGS 1 //要写在第一行
#include "stdio.h"
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
int main() 
{    
	int a[] = {100, 100, 100, 234, 123, 500, 32, 68, 41, 99, 13, 71};
	int size = sizeof(a) / sizeof(a[0]);  // 计算数组的大小
	int *ptr = a;  // 指向数组的指针
	int max = *ptr;  // 假设第一个元素为最大值
	int secondMax = *ptr;  // 假设第一个元素为第二大的值
    // 遍历数组,找出最大值和第二大的值   
	 for (int i = 0; i < size; i++) //遍历数组
	 {        
		 if (*ptr > max) //*ptr是首元素地址,max是指针地址
		 {            
			 secondMax = max;            
			 max = *ptr;       
		 } 
		 else if (*ptr > secondMax && *ptr < max) 
		 {            
			 secondMax = *ptr;       
		 }
		 ptr++;  // 指针移动到下一个元素   
	 }   
	 std::cout << "第二大的数是:" << secondMax << std::endl;
	 return 0;
}

9. 提取字符串

int main()
{
	char buf[] = "               hello world         ";
	char num[128] = "";
	char* start = buf;/*首元素地址*/
	char* end = &buf[strlen(buf) - 1];/*字符串最后元素地址*/
	while (*start == ' ' && *start != 0)
	{
		start++;
	}
	while (*end == ' ' && *end != 0)
	{
		end--;
	}
	printf("%d\n", end - start + 1);/*提取字符的元素个数*/
	strncpy(num, start, end - start + 1);/*拷贝:将字符数组start拷贝至num,拷贝个数是end-start+1个*/
	printf("num=%s\n", num); 
}

10. 字符串的前后替换

int main()
{
	char buf[] = "abcdefg";
	char* start = buf;
	char* end = &buf[strlen(buf) - 1];
	while (end > start)
	{
		char ch = *end;
		* end = *start;
		*start = ch;
		end--;
		start++;

	}
	printf("%s\n", buf);
}

谢谢大家的观看!

标签:include,语言,int,str2,str1,练习,++,printf,分享
From: https://blog.csdn.net/weixin_74994771/article/details/137085128

相关文章

  • C语言学习之第一个C语言程序【建议收藏】
    环境搭建好了C语言学习之环境搭建【建议收藏】-CSDN博客,接下来让我们一起来用VC编写第一个C语言程序吧!保姆级教程,非常建议小白学习使用,建议收藏!第一个C语言程序 双击打开VC,然后点击新建项目:按照图上的步骤,创建新项目→点击确定引导点击下一步:应用程序设置:项目创建完成:外......
  • 2024MathorCup数学建模思路A题B题C题D题思路汇总 妈妈杯建模思路分享
    文章目录1赛题思路2比赛日期和时间3组织机构4建模常见问题类型4.1分类问题4.2优化问题4.3预测问题4.4评价问题5建模资料1赛题思路(赛题出来以后第一时间在CSDN分享)https://blog.csdn.net/dc_sinor?type=blog2比赛日期和时间报名截止时间:2024年4月11......
  • 2024妈妈杯数学建模思路ABCD题思路汇总分析 MathorCup建模思路分享
    文章目录1赛题思路2比赛日期和时间3组织机构4建模常见问题类型4.1分类问题4.2优化问题4.3预测问题4.4评价问题5建模资料1赛题思路(赛题出来以后第一时间在CSDN分享)https://blog.csdn.net/dc_sinor?type=blog2比赛日期和时间报名截止时间:2024年4月11......
  • 数据结构——栈(C语言版)
    前言:在学习完数据结构顺序表和链表之后,其实我们就可以做很多事情了,后面的栈和队列,其实就是对前面的顺序表和链表的灵活运用,今天我们就来学习一下栈的原理和应用。准备工作:本人习惯将文件放在test.c、SeqList.c、SeqList.h三个文件中来实现,其中test.c用来放主函数,SeqList.c......
  • C语言 预处理详解
    目录前言一、预定义符号二、#define定义常量三、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏与函数的对比七、#和##7.1#运算符7.2##运算符八、命名约定九、#undef十、命令行定义十一、条件编译十二、头文件的包含12.1头文件被包含的方式:12......
  • 【Android面经】练习时长 1 年 2 个月的 Android菜鸡练习生的面经
    自我介绍本人是练习时长1年2个月的Android菜鸡练习生,去年集团组织架构调整(裁员),一直到现在未找到工作。校招那会儿非科班转码,学了两个多月的时间就上岸了,所以沾沾自喜,工作一年被毒打的不成样子,再次进入社会社招感到基础薄弱,菜的一批。下面是我最近面试的面经:腾讯WXG......
  • 网上的一个用C语言实现FFT算法
     用C语言实现FFT算法/*****************fftprograme*********************/#include"typedef.h"#include"math.h"structcompxEE(structcompxb1,structcompxb2){structcompxb3;b3.real=b1.real*b2.real-b1.imag*b2.imag;b3.imag=b1.real*b2.imag+b1.imag*b2.real;......
  • 宏定义(C语言)
    1、宏定义一个两数相乘#defineMUL(a,b)a*b代码如下:#include<stdio.h>#defineMUL(a,b)a*bintmain(){intvalue;printf("value=%d\n",MUL(2,4));return0;}2、在虚拟机中运行,利用如下命令进行屏蔽屏蔽头文件,就可以完成宏替换。gcc-Edemo.c-o......
  • 选择排序的练习题及答案(共三种方式实现选择排序)
    习题1班级里五个人成绩比较升序排列,成绩分别为64,75,88,92,21packagexuanze;importjava.util.*;publicclasschapter1{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerscan=newScanner(System.in); intn=scan.nextInt......
  • 大文件上传实践分享
    一、方案背景:在此前的项目中有个需求是用户需要通过前端页面上传大约1.5G的压缩包,存储到OSS,后提供给其他用户下载。于是我开始了大文件上传方案的探索。本文主要探究的是前端技术实现,后端给予相应的支持。二、原理探索之路2.1大文件上传想要实现的目标在此项目中,我想实现的目......