![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C练习
Hygge55
~~~~~~~~
展开
-
有5个学生, 每个学生包含学号num, 姓名name, 三门课的成绩score[3]. 从键盘获取所有的学生数据, 输出3门课的平均成绩, 以及最高分的学生数据。
有5个学生, 每个学生包含学号num, 姓名name, 三门课的成绩score[3];从键盘获取所有的学生数据, 输出3门课的平均成绩, 以及最高分的学生数据。#include<stdio.h>typedef struct student{ int num; char name[20]; int score[3]; float ave;}student;student stu[20],tmp;int i,j;void input(){ for (i = 0原创 2021-01-23 21:08:44 · 11329 阅读 · 0 评论 -
定义一个结构体变量,包含年,月,日; 实现一个函数Days,由main函数将该结构体变量指针传给Days函数, Days函数返回该日期是当年的第几天
定义一个结构体变量,包含年,月,日;实现一个函数Days,由main函数将该结构体变量指针传给Days函数,Days函数返回该日期是当年的第几天。#include<stdio.h>typedef struct data{ int year; int month; int day;}data;int Days(const struct data *d){ int sum = 0; int a[] = { 31, 28, 31, 30, 31, 30, 31, 31, 3原创 2021-01-23 21:01:29 · 1724 阅读 · 0 评论 -
从键盘输入一个字符串,将其中的小写字母全部转换成大写字母, 然后输出到一个磁盘文件“test”中保存,输入的字符串以“!” 结束。
从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存,输入的字符串以“!”结束。#include<stdio.h>#include<string.h>#include<assert.h>int main(){ FILE *fw = fopen("D:\\test", "w");//创建一个名为“test”的文件 assert(fw != NULL);//断言文件打开成功 printf("请输入一个字符串原创 2021-01-23 20:41:02 · 3165 阅读 · 0 评论 -
1-2+3-4+5-6+7...n
#include <stdio.h>int main(){ int n; int sum = 0;//注意初始化 int flag = 1; scanf("%d", &n); for (int i = 1; i <= n; i++) { sum += flag * i; flag *= -1;//符号变化 } printf("%d \n", sum); return 0;}原创 2020-12-22 21:40:12 · 237 阅读 · 0 评论 -
辗转相除法求最大公约数
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的: 1997 / 615 = 3 (余 152)615 / 152 = 4(余7) 152 / 7 = 21(余5) 7 / 5 = 1 (余2) 5 / 2 = 2 (余1) 2 / 1= 2 (余0) 至此,最大公约数为1 以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公.原创 2020-12-22 21:35:34 · 712 阅读 · 0 评论 -
调用函数计算两个整数的平均值
#include <stdio.h>int ave(int a, int b){ int c; c = (a + b) / 2; return c;}int main(){ int c = ave(20, 10); printf("%d \n", c); return 0;}原创 2020-12-17 23:25:01 · 3836 阅读 · 0 评论 -
数列异或操作[异或,循环]
给你两个整数,n和start,其中n为数据的数量,start为第一个数据。当前数据定义为:num = start + 2*i(i表示第几个数据,从0开始)。请返回数列中所有数据按位异或(XOR)后得到的结果.示例 1:输入:n = 5, start = 0输出:8解释:数列为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。"^" 为按位异或运算符。示例 2:输入:n = 4, start = 3输出:8解释:数列为 [3, 5, 7, 9],其中 (原创 2020-12-09 22:36:32 · 630 阅读 · 0 评论 -
重新排列数组
给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums = [1,2,3,4,4,3,2,1], n原创 2020-12-09 22:34:50 · 422 阅读 · 0 评论 -
两种方法 求“ 好数对 ”的数量
给你一个整数数组nums,如果一组数字(i,j)满足 nums[i] == nums[j] 且 i < j,就可以认为这是一组好数对,然后返回好数对的数目。算法分析:1.要确认nums数组里的一组数字(i,j)是否相等,我们肯定会想到要运用双层循环,然后来进行判断;2.要输出好数对的数目一定要定义一个计数器,这里定义count,判断相等则count ++。代码如下://第一种方法 调用函数#include <stdio.h>int ArrPairs(int nums[], i原创 2020-12-08 19:30:37 · 484 阅读 · 0 评论 -
两种方法求一维数组前缀和
问题描述:给你一个一维数组nums。数组 前缀和 的计算公式为:rtSum[i] = sum(nums[0] … nums[i])。示例:输入: nums = [1, 1, 1, 1]输出:[1, 2, 3, 4, 5]前缀和计算过程为[1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]原创 2020-12-08 18:49:45 · 582 阅读 · 0 评论 -
有若干张一元、五元、十元面值的钞票,要支付十五元有多少种方法?
问题描述:有若干张一元、五元、十元面值的钞票,要支付十五元有多少种方法?算法分析:1.十元凑十五元最少需要0张,最多需要1张; 五元凑十五元最少需要0张,最多需要3张; 一元凑十五元最少需要0张,最多需要15张;2.将1中三种情况分别组合起来,若刚好组合起来等于十五,则分别输出这时一元、五元、十元各自的张数;3.要统计多少种方法,则需要定义一个计数器;4.输出.#include <stdio.h>int main(){ int a = 1; int b = 5;原创 2020-12-06 00:38:26 · 3708 阅读 · 0 评论 -
求解一元二次方程的根
编写程序求解一元二次方程(ax^2 + bx + c = 0)的根:描述算法:1.创建a, b, c三个变量,从键盘获取这三个变量的值;2.计算delta;3.根据delta判断方程的根当delta>=0 : 方程有两个不相等的根x1 = (-b + sqrt(delta)) / 2a;x2 = (-b - sqrt(delta)) / 2a;当detla<0:方程无解;4.输出;#include<stdio.h>#include<mat原创 2020-12-06 00:28:20 · 1974 阅读 · 0 评论 -
判断 “完数”
一个数恰好等于它的因子之和,这个数就成为“完数”。#include <stdio.h>bool IsPrefect(int n){ int sum = 0; for (int i = 1; i < n; i++) { if (n % i == 0)//判断n的因子 { sum += i;//求因子之和 } } return sum == n;}int main(){ for (int i = 1; i < 1000; i++) {原创 2020-12-03 20:52:37 · 178 阅读 · 0 评论 -
判断水仙花数
#include <stdio.h>bool isFlower(int n){ int sum = 0; int temp; int m = n; while (n != 0) { temp = n % 10;//得到个位 sum += temp* temp * temp; n = n / 10;//丢弃个位 } return sum == m;}int main(){ for (int i = 100; i < 1000; i++) {原创 2020-12-03 20:35:51 · 179 阅读 · 0 评论 -
求n的阶乘(n!)
#include<stdio.h>int main(){ int n; int ret = 1;//注意初始化不能为0 scanf("%d", &n); for (int i = 1; i <= n; i++) { ret *= i; } printf("%d \n", ret); return 0;}原创 2020-12-02 00:34:58 · 470 阅读 · 0 评论 -
输出九九乘法表 C语言
#include<stdio.h>int main(){ for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { printf("%d * %d = %2d ", i, j, i * j); } printf("\n");//应按j行换行输出 } return 0;}运行截图如下:原创 2020-12-02 00:28:13 · 305 阅读 · 0 评论 -
C语言练习1
C知识点整理1.进制转换二进制转十进制: 1111 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 15二进制转十六进制; 十进制转二进制: 十六进制转二进制:2.函数顺序 函数的顺序都是任意的,主函数不一定在最后面。 如果主函数在前面调用其他在它后面的函数,则要将此函数的声明放在主函数之前。3.C语言中连续比较例题:1+2+3……+x < 1000;1+2+3……+x+(x+1) >1000;求x;#include <原创 2020-11-23 22:41:19 · 145 阅读 · 0 评论