吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1282|回复: 6
收起左侧

[讨论] C语言学习记暨能否简化程序逻辑

[复制链接]
zohoChou 发表于 2022-4-1 19:50
本帖最后由 zohoChou 于 2022-4-1 19:51 编辑

题目1:输出以下图形:
图片.png



我的奇怪逻辑…………(话说我想了半天结果发现自己用python也还是这奇怪逻辑……)


[C] 纯文本查看 复制代码
#include <stdio.h>
int main(void) {
        for (int i = -6; i <= 6; i = i + 2) {
                int reg_i = i;
                int abs_i = -i;
                if (i > 0) {
                        reg_i = -i;
                        abs_i = i;
                }
                int abs_temp_1 = abs_i / 2;
                int abs_temp_2 = abs_i / 2;
                int reg_temp = reg_i + 7;
                while (abs_temp_1 > 0) {
                        printf_s(" ");
                        --abs_temp_1;
                }
                while (reg_temp > 0) {
                        printf_s("*");
                        --reg_temp;
                }
                while (abs_temp_2 > 0) {
                        printf_s(" ");
                        --abs_temp_2;
                }
                printf("\n");
        }
        return 0;
}



题目二:
输入最多10个整数,多出的做出提示,并找出最大值、最小值、计算平均值。输入样例如下:
N=5
n1=1
n2=3
n3=5
n4=7
n5=9
---------(输出如下)

Max=9
Min=1
Avg=5



我的奇怪思路(甚至用了还没学到的数组)【python的列表就是香啊……不用管指针什么的,方法都是现成的……C……文本串都得费老大事储存……】


[C] 纯文本查看 复制代码
[/size]
[size=4]#include <stdio.h>
#include <stdlib.h>

int calc(int *a, int N);

int main(void) {
        int N = 0;
        printf("N=");
        scanf("%d", &N);
        if ((N <= 0) || (N > 10)) {
                printf_s("请输入小于等于10的正整数");
                getchar();
                exit(-1);
        } else if (N == 1) {
                printf_s("n1=");
                scanf("%d", &N);
                printf("Max=%d\nMin=%d\nAvg=%d", N, N, N);
                while (1) {
                        exit(0);
                }
        }

        int x[N];
        for (int i = 0; i < N; ++i) {
                printf_s("n%d=", i + 1);
                scanf("%d", &x[i]);
        }
        calc(x, N);
        return 0;
}

int calc(int *a, int N) {
        int max, min;
        int sum = 0;
        max = a[0];
        min = a[0];
        for (int i = 0; i < N; ++i) {
                if (max < a[i]) {
                        max = a[i];
                }
                if (min > a[i]) {
                        min = a[i];
                }
                sum += a[i];
        }
        float avg = sum / N;
        printf("Max=%d\nMin=%d\nAvg=%.2f", max, min, avg);
        return 0;
}


求问各位大神有没有什么好的方法……C语言属实是刚入门,程序实现逻辑也很奇怪……
(这里面有个while是废话,但是老师规定得用while,迫不得已……)
图片.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

平淡最真 发表于 2022-4-1 21:28
[C] 纯文本查看 复制代码
#include <stdio.h >
#include <stdlib.h>
void p(int n, char c[])
{
	for (int i = 0; i < n; i++)
	{
		printf(c);
	}
}
int main()
{
	for (int i = 1; i < 8; i++)
	{
		char a[] = "*";
		char b[] = " ";
		p(abs(8-2*i)/2, b);
		p(7-abs(8-2*i), a);
		p(abs(8-2*i)/2, b);
		printf( "\n");

	}
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zohoChou + 1 + 1 用心讨论,共获提升!

查看全部评分

头像被屏蔽
xiadongming 发表于 2022-4-1 21:33
snake88 发表于 2022-4-1 23:13
 楼主| zohoChou 发表于 2022-4-3 18:36
平淡最真 发表于 2022-4-1 21:28
[mw_shl_code=c,true]#include
#include
void p(int n, char c[])

好家伙,太牛了
您是怎么想的思路啊我真没想到还能这么简洁(笑哭
平淡最真 发表于 2022-4-4 03:25
zohoChou 发表于 2022-4-3 18:36
好家伙,太牛了
您是怎么想的思路啊我真没想到还能这么简洁(笑哭

你都写复杂了,就根据排列的数学规律来凑出来的吧
[C] 纯文本查看 复制代码
#include <stdio.h >
int main()
{
	int max, min, i,N,M;
	printf_s("请输入个数:");
	scanf_s("%d", &N);
	M = N;
	int Sum = 0;
	float avg;
	while (N)
	{
		printf_s("请输入一个整数:");
		scanf_s("%d",&i);
		Sum =Sum+ i;
		if (N == M) 
		{
			max = i;
			min = i;
		}
		if (i > max) { max = i; }
		if (i < min) { min = i; }
		N--;
	}
	avg = Sum / M;
	printf_s("最大值=%d,最小值=%d,平均值=%f", max,min,avg);
}
UNline 发表于 2022-4-12 17:07

真厉害,棒棒哒
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表