C语言数组编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数组编程相关的知识,希望对你有一定的参考价值。

C语言数组编程怎么用数组完成编程

打印输出这种的效果,不对的话再微调修改下:

#include <stdio.h>

#include <stdlib.h>

int main()

int i = 0;//存放行

int j = 0;//存放列

double sum;//存放对角线数据和

//定义一个整型二维数组array并初始化

int array[5][5] =

1,2,3,4,5,

6,7,8,9,10,

11,12,13,14,15,

16,17,18,19,20,

21,22,23,24,25,;

//以5x5的矩阵形式输出数组

for(i=0; i<5; i++)

for(j=0; j<5; j++)

//            printf("第%d行第%d列元素是:%4d\\t",i+1,j+1,array[i][j]);

printf("%4d",array[i][j]);//打印输出矩阵数组

if(j==4)

printf("\\n");

if(i == j || 4-i == 4-j)    //计算对角线之和

sum += array[i][j];

sum += array[4-i][4-j];

printf("\\n对角线之和是:%4.lf\\n",sum);

return 0;

参考技术A #include <iostream>
using namespace std;
int main()
int a[51],mx,mi,n,i;
while(cin>>n)
for(i=1;i<=n;i++)
cin>>a[i];
mx=mi=a[1];
bool maxflag=0,minflag=0;
for(i=1;i<=n;i++)
if(mx<a[i]) mx=a[i];
if(mi>a[i]) mi=a[i];

for(i=1;i<=n;i++)
if(mx==a[i]&&!maxflag)
cout<<"max="<<a[i]<<" position "<<i<<endl;
maxflag=1;

if(mi==a[i]&&!minflag)
cout<<"min="<<a[i]<<" position "<<i<<endl;
minflag=1;



有不懂请追问哦

参考技术B 回答

你好,请发题目....

提问

软件工程2020级某班一共有L人,2020-2021学年第一学期有M门课考试。为了对软件工程2020级某班班级学生学习效果进行分析,需要对学生的考试成绩进行处理,分别用函数实现下列功能。(L和M分别用scanf函数输入,a[0][0]可以代表第1位学生的第1门课成绩,所有要求均在一个程序内实现。)

输入每个学生每门课的分数,计算每个学生的平均分。

   

回答

输入每个学生每门课的分数和计算每个学生的平均分,要用两个函数吧?

(L和M分别用scanf函数输入,a[0][0]可以代表第1位学生的第1门课成绩,所有要求均在一个程序内实现。)请问,L和M是在主程序中输入吧?

提问

L和M是在程序运行需要自己输入的

回答

嗯,请稍等...

主函数:main()int input(int*,int,int);int aver(int*,float*,int,int);int print(int*,float*,int,int);int a[100][10];int L,M;float av[100];printf("请输入人数:")scanf("%d",&L);printf("请输入科目数:")scanf("%d",&M);input(a,L,M);aver(a,av,L,M);print(a,av,L,M);

主函数:main()int input(int**,int,int);int aver(int**,float*,int,int);int print(int**,float*,int,int);int a[100][10];int L,M;float av[100];printf("请输入人数:")scanf("%d",&L);printf("请输入科目数:")scanf("%d",&M);input(a,L,M);aver(a,av,L,M);print(a,av,L,M);

输入函数:int input(int(*a)[],int L,int M)int i,j;for(i=0;i

计算函数:int aver(int(*a)[],float*av,int L,int M)int i,j,sum;for(i=0;i提问

OK

感谢

参考技术C #include<stdio.h>
int main()

static int a[100];int i=1,n;
scanf("%d\\n",&n);
for(i=1;i<=n;i++)

scanf("%d",&a[i]);


int max=a[1],min=a[1];
for(i=2;i<=n;i++)

if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];

if(max==min) printf("max=%d position 1\\nmin=%d position 1\\n",max,min);
else
for(i=1;i<=n;i++) if(max==a[i]) printf("max=%d position %d\\n",max,i);
for(i=1;i<=n;i++) if(min==a[i]) printf("min=%d position %d\\n",min,i);

return 0;

这样子就OK了,如果有不懂的话可以私信哦

参考技术D 作者,给你提供一个思路吧,假如碰到一个空格,当前指针位置对应的字符ch是*p,那么就判断*(p+1)是不是>'A'&&<'Z',如果是的,就ch=ch+32,如果不满足>'A'&&<'Z',表示是小写字母,就不用替换,反正碰到空格,下一个字符就这么判断一下就OK

C语言编程中数组的定义

12.20写的小程序:输入整型,输出16进制的数;将各个位求和;并将16进制的数翻转;最后再将它转化为10进制数输出

#include <stdio.h>
#include <math.h>
void main()

int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

int a[2]; //这里的数组长度应当依据什么来定义
int i=0;
int yushu;
while(num>0)

yushu=num%16;
a[i]=yushu;
num=num/16;
i++;



printf("转化为十六进制的数为:");
for(;i>=0;i--)

printf("%x",a[i]);


printf("\n");
int sum;
sum=0;
for(i=0;i<2;i++)
sum=sum+a[i];
printf("十六进制的各个位之和:");
printf("%d\n",sum);
printf("十六进制翻转为:");
int b[2];

for(i=0;i<2;i++)

b[i]=a[i];
printf("%x",b[i]);


printf("\n");

int c;
c=0;
for(i=0;i<2;i++)

pow(16,i);
c=c+a[i]*pow(16,i);

printf("转化为十进制的数为:%d\n",c);

问题:在运行时,数组长度不一样,运行的结果可能会出错,但我现在还不明白应该依据什么来定义。
太谢谢了,虽然不是很理解,但是如果是a[10]的话,运行就会出错啊,比如是输入100,16进制电脑会输出ccccccc64,而如果是a[2]的话,就会输出064,这是为什么?

这种题目一般不希望设计内存管理。所以一般都是进可能给一个比较大的数组。
例如
a[10];
表示位数不会超过十,你输入的时候需要个索引记录a[]数组有效的位数。
使用的时候,只使用有效位数。
肯定会有一段内存不用的。或多或少。这就是数组存储动态数据特点。
如果内存管理的话,你设计个增量比如5.
一旦索引告诉你10个位置用完了,地方不够,你在动态申请
15个位置,把原来的复制到新的内存空间。
这就是数组内存管理的方法,但是一般程序不要求这样,因为你要作的是实现算法思想,而不是去想这些内存管理的方面。
所以现在大多不需要程序员考虑内存管理。对实现算法而讲,注重的是实现的思想。
a[10]不行,你就设置你认为足够长的。比如a[100]
通常这种情况,你要考虑你输入的最大数字对应的位数,这种题目肯定是有上限的,不是任何数都可以。
我刚看你的程序了,10进制变16进制程序有误,你没有考虑余数10,11...
10对应A,11对应B..
这样的话,应该用char[]数组存储。
下面是程序
你输入15,会输出F
100,会输出64
#include <stdio.h>
#include <math.h>
void main()

int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

char a[100]; //这里的数组长度应当依据什么来定义
int i=0;
int yushu;
while(num>0)

yushu=num%16;
if(yushu<10)
a[i]=yushu+'0';
else
a[i]='A'+(yushu-10);
num=num/16;
i++;


i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)

printf("%c",a[i]);


printf("\n");
参考技术A 用longint试试看...

以上是关于C语言数组编程的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程 一维数组和函数

C语言编程,判断一个数是不是存在于一个数组中

C语言编程怎么将一个数组截断成几个数组

C语言编程中数组的定义

c语言编程:输出数组中重复出现的数

求问一道c语言编程题,在二维数组中进行查找 输出下标