C语言学习记暨能否简化程序逻辑
本帖最后由 zohoChou 于 2022-4-1 19:51 编辑题目1:输出以下图形:
我的奇怪逻辑…………(话说我想了半天结果发现自己用python也还是这奇怪逻辑……)
#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……文本串都得费老大事储存……】
#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;
for (int i = 0; i < N; ++i) {
printf_s("n%d=", i + 1);
scanf("%d", &x);
}
calc(x, N);
return 0;
}
int calc(int *a, int N) {
int max, min;
int sum = 0;
max = a;
min = a;
for (int i = 0; i < N; ++i) {
if (max < a) {
max = a;
}
if (min > a) {
min = a;
}
sum += a;
}
float avg = sum / N;
printf("Max=%d\nMin=%d\nAvg=%.2f", max, min, avg);
return 0;
}
求问各位大神有没有什么好的方法……C语言属实是刚入门,程序实现逻辑也很奇怪……
(这里面有个while是废话,但是老师规定得用while,迫不得已……)
#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");
}
} 棒棒哒,真厉害! 平淡最真 发表于 2022-4-1 21:28
#include
#include
void p(int n, char c[])
好家伙,太牛了{:1_919:}
您是怎么想的思路啊{:301_1008:}我真没想到还能这么简洁(笑哭 zohoChou 发表于 2022-4-3 18:36
好家伙,太牛了
您是怎么想的思路啊我真没想到还能这么简洁(笑哭
你都写复杂了,就根据排列的数学规律来凑出来的吧
#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);
}
真厉害,棒棒哒
页:
[1]