C语言课程训练系统题-一维数组

本文通过一系列C语言编程题目,包括创建一维数组、找数组中最大最小值、计算平均值、 Fibonacci 数列、阿姆斯特朗数等,深入讲解一维数组的操作和算法应用。通过实例代码,帮助读者掌握C语言中数组的使用技巧。

1.创建并输出一个一维数组(含20个元素),数组元素的值分别是下标的3倍多2

**输出格式要求:"%3d"

#include <stdio.h>
main()
{
	int a[20],i,b,n;
	for(i=0;i<20;i++)
	{
		a[i]=3*i+2;
		printf("%3d",a[i]);
	}
}

2.输入10个数,找出其中最小和最大的数及其位置

#include<stdio.h>
main()
{
int a[10],n,i,b,d,e;
for(i=0;i<10;i++)scanf("%d",a+i);
b=a[0];
d=a[0];
for(i=0;i<10;i++)
{
if(a[i]>=b)
{b=a[i];n=i;}
if(a[i]<=d){d=a[i];e=i;}
}
printf("max=%d, pos=%d\n",b,n);
printf("min=%d, pos=%d\n",d,e);
}

3.输入10个数,找出最大的数及其位置

#include<stdio.h>
main()
{
	int a[10],n,i,b;
	printf("请输入10个元素的值:\n");
	for(i=0;i<10;i++)scanf("%d",a+i);
	b=a[0];
	for(i=1;i<10;i++)
	{
		if(a[i]>b)
		{b=a[i];n=i;}
	}
	printf("值最大的元素值为:%d  下标为%d\n",b,n);
}

4.编写程序计算一个包含10个整数的数组中所有整数的平均值(平均值计算为双精度浮点数)。

在main函数中利用循环输入10个整数,保存在一个数组中,计算均值,然后输出计算结果。
***输入提示信息:“Please input ten integers:\n”
***每个整数的输入格式要求:"%d"
***输出格式要求:“The mean value is %.2f\n”

#include<stdio.h>
main()
{
	int a[10],n,i,b;
	double sum=0,ave;
	printf("Please input ten integers:\n");
	for(i=0;i<10;i++)scanf("%d",a+i);
	for(i=0;i<10;i++)
	{
		sum+=a[i];
	}
	ave=sum/10.0;
	printf("The mean value is %.2f\n",ave);
}

5.利用数组计算fibonacci数列的前10个数,即1, 1, 2, 3, 5, ……,并按每行打印5个数的格式输出

输出格式要求:"%6d"

#include<stdio.h>
main()
{
	int a[10],n=0,i,b;
	a[0]=1;
	a[1]=1;
	for(i=2;i<10;i++)
	{a[i]=a[i-2]+a[i-1];}
	for(i=0;i<10;i++)
	{
		printf("%6d",a[i]);
		n++;
		if(n==5)printf("\n");
	}
}

6.编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和。

输入提示信息:“Input 20 Numbers:\n”
输入格式:"%d"
输出格式:“sum = %d, counter = %d\n”
运行示例:
Input 20 Numbers:
1 2 3 4 5 6 7 8 -9 -10↙
12 -45 56 -99 34 87 90 -23 0 65↙
sum = 380, counter = 15

#include<stdio.h>
main()
{
	int a[20],n,i,b=0;
	long sum=0,ave;
	printf("Input 20 Numbers:\n");
	for(i=0;i<10;i++)scanf("%d",a+i);
	for(i=10;i<20;i++)scanf("%d",a+i);
	for(i=0;i<20;i++)
	{
		if(a[i]>=0){sum+=a[i];b++;}
	}
	printf("sum = %d, counter = %d\n",sum,b);
}

7.编程实现两个数组中对应该元素值的交换(数组的长度定义成5)

输出函数:"%5d"
输入举例:注意输入的顺序
6 7 8 9 10 (输入第一个数组元素)
1 2 3 4 5 (输入第二个数组元素)
输出举例:
1 2 3 4 5 (输入第一个数组元素)
6 7 8 9 10 (输入第二个数组元素)

#include<stdio.h>
void main()
{
	int a[5],b[5],i,c,n;
	
	for(i=0;i<5;i++)scanf("%d",a+i);
	for(i=0;i<5;i++)scanf("%d",b+i);
	for(i=0;i<5;i++)
	{
		c=a[i];
		a[i]=b[i];
		b[i]=c;
	}
	for(i=0;i<5;i++)printf("%5d",a[i]);
	printf("\n");
	for(i=0;i<5;i++)printf("%5d",b[i]);
}

8.如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。如407=43+03+7^3就是一个阿姆斯特朗数。试编程求1000内的所有3位数的阿姆斯特朗数。

如407=43+03+7^3就是一个阿姆斯特朗数。试编程求1000内的所有3位数的阿姆斯特朗数。
**输出格式要求:“There are following Armstrong number smaller than 1000:\n” " %d "
程序运行示例如下:
There are following Armstrong number smaller than 1000:
153 370 371 407

#include<stdio.h>
void main()
{
	int a[5],i,c,n;
	printf("There are following Armstrong number smaller than 1000:\n");
	for(i=100;i<1000;i++)
	{
		a[0]=i/100;
		a[1]=(i/10)%10;
		a[2]=((i%100)%10);
		if((a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2])==i)printf(" %d ",i);
	}


}

9.反向输出有5个元素的int数组中的各元素的值。数组为{10,20,30,40,50}

**输出格式要求:"\ta[%d]=%d,"
程序运行示例如下:
a[4]=50, a[3]=40, a[2]=30, a[1]=20, a[0]=10,

#include<stdio.h>
void main()
{
	int a[5]={10,20,30,40,50},i,c,n;
	for(i=4;i>=0;i--)printf("\ta[%d]=%d,",i,a[i]);
}

10.

#include<stdio.h>
#define N 10
void main()
{
	int a[N];
	int i,j,temp;
	printf("Input %d number",N);
	for(i=0;i<N;i++)scanf("%d",a+i);
	for(i=0;i<N-1;i++)
	{
		for(j=0;j<N-i-1;j++)
		{if(a[j]>a[j+1])
	{temp=a[j];
		a[j]=a[j+1];
		a[j+1]=temp;
		}
		}
	}
	printf("After sorted:");
	for(i=0;i<N;i++)
	{
		if(i%10==0)
	printf("\n");
	printf("%d  ",a[i]);
	}
}

11.

#include<stdio.h>
#define N 5
void main()
{
	int a[N];
	int i,j,temp;
	for(i=0;i<N;i++)
	{
		printf("Enter No.%2d:",i+1);
		scanf("%d",&a[i]);
	}

	for(i=0;i<N-1;i++)
	{
		for(j=0;j<N-i-1;j++)
		{if(a[j]>a[j+1])
	{temp=a[j];
		a[j]=a[j+1];
		a[j+1]=temp;
		}
		}
	}

	for(i=0;i<N;i++)
	{
	printf("%d",a[i]);
	}
}

13.输入一行字符,统计其中的英文字符、数字字符、空格和其他字符的个数

输入提示信息:“Please input a string:”
输入字符串用gets()
输出提示信息和格式:
“English character: %d\n”
“digit character: %d\n”
“space: %d\n”
“other character: %d\n”

#include<stdio.h>
#include<string.h>
void main()
{
	char a[1000],b=0,e=0,f=0,g=0,i,c;
	printf("Please input a  string:");
	gets(a);
	c=strlen(a);
	for(i=0;i<c;i++)
	{
		if(' '==a[i])f++;
		if('0'<=a[i]&&'9'>=a[i])b++;
		if('a'<=a[i]&&'z'>=a[i]||'A'<=a[i]&&'Z'>=a[i])e++;
	}
	printf("English character:  %d\n",e);
	printf("digit character:  %d\n",b);
	printf("space:  %d\n",f);
	printf("other character:  %d\n",c-e-b-f);
}

14.数组在函数中的返回

#include <stdio.h>
int* fun(int* a,int n);

void main()
{
    int n=10,i;
    int aa[10];
int *p=fun(aa,n);
    for(i=0;i<n;i++)
    {printf("%d\n",p[i]);}
    getchar();
}


int* fun(int* a,int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        a[i]=+i;
    }
    return a;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pitepa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值