欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言试题答案

程序员文章站 2022-06-07 14:58:42
...

原创试题答案

第一题答案(满分40分):

#include<stdio.h>
int main()
{	
	int n,temp;
	printf("请输入所需排序数的总个数:\n");
	scanf("%d",&n);
	int a[n];
	printf("请输入需要比较大小的正整数:\n");//人性化 
	/*把需要排序的数字存入数组****************8分***********/ 
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n"); 
    /*冒泡排序或者选择排序按从小到大或从大到小排序*/
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
	for(int j=0;j<n;j++)
        {
            printf("%d ",a[j]);
        }
    printf("\n"); /********************8分***************/
    /*输出结果*/
	if(n%2==0)//
	{
		for(int i=0;i<n;i+=2)
		{
			printf("%d ",a[i]);
		}
		for(int i=n-1;i>0;i-=2)
		{
			printf("%d ",a[i]);
		}
	}
	else
	{
		for(int i=0;i<n;i+=2)
		{
			printf("%d ",a[i]);
		}
		for(int i=n-2;i>0;i-=2)
		{
			printf("%d ",a[i]);
		}
	}/*************************20分*******/
	return 0;
}/****4分***/

这里是我编的参考代码,并且增加了一些细节

算法:

1.输入任意长度的一组正整数。8分

2.利用冒泡排序或者选择排序排列大小。8分

3.按照格式输出答案。20分

4.代码可读性强。4分

测试多组数据答案完全正确,但算法不一样可以满分。

第二题答案(满分24分):

#include<stdio.h>

int main()
{	
	int n,temp;
	printf("输入方阵维数:\n");
	scanf("%d",&n);
	int a[n][n];
	printf("输入方阵:\n");
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	//行排列
	//对二维数字进行排序,学长才疏学浅,只会这样子,复杂度较高O(n^3)。
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			for(int k=j+1;k<n;k++)
			{
				temp=a[i][j];
				a[i][j]=a[i][k];
				a[i][k]=temp;
			}
		}
	}/*****************12分***********************/
	printf("******************************\n");
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%d  ",a[i][j]);
		}
		printf("\n");
	}
	//转置
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(j>i)
			{
				temp=a[i][j];
				a[i][j]=a[j][i];
				a[j][i]=temp;
			}
		}
	}
	printf("************************************\n");
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%d  ",a[i][j]);
		}
		printf("\n");
	}/******************12分********************/
	
}

算法:

1、对输入的n维方阵进行行排列(从小到大排列)。12分

2、对方阵进行转置。12分

补充:格式需要严格一致,不一致,但结果正确扣一分。

第三题答案(满分36分):

#include<stdio.h>
int main()
{
	int n;
	printf("请输入需要进行运算的数的个数;\n");
	scanf("%d",&n);
	int a[n+2][n+2];
	//初始化数组
	for(int i=0;i<n+2;i++)
	{
		for(int j=0;j<n+2;j++)
		{
			a[i][j]=0;
		}
	}/**********************************8分*****************/
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[0][i]);
	}
	for(int i=0;i<n;i++)
	{
		printf("%d  ",a[0][i]);
	}
	printf("\n");
	printf("************************************\n");
	//求和
	int k=0,j=0;
	for(int i=1;i<n;i++)
	{
		k=0;j=0;
		while(1)//注意跳出循环条件
		{	
			if(a[i-1][j]!=0&&a[i-1][j+1]!=0)
			{
				a[i][k]=a[i-1][j]+a[i-1][j+1];
				printf("%d  ",a[i][k]);
				j=j+2;k++;
			}
			else if(a[i-1][j]!=0&&a[i-1][j+1]==0)
			{
				a[i][k]=a[i-1][j];
				printf("%d  ",a[i][k]);
				break;
			}
			else if(a[i-1][j]==0&&a[i-1][j+1]==0)
			{
				printf("\n");
				break;
			}
		}/*******************************15分**********************/
		printf("\n");
		//终止条件
		if(a[i][0]!=0&&a[i][1]==0&&a[i][2]==0)
		{
			break;
		}/******************3分*******************/
	}
}

1.算法实例:

0 1 2 3 4
0 1 2 3 4 5
1 3 7 5
2 10 5
3 15
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 10
1 3 7 11 15 19
2 10 26 19
3 36 19
4 55

2.实例:

C语言试题答案

####################END######################

学弟学妹们不难吧0.0

C语言试题答案
C语言试题答案
C语言试题答案
C语言试题答案