0
点赞
收藏
分享

微信扫一扫

C语言-台科院练习

zhoulujun 2022-01-04 阅读 16
其中有一些代码不是原创的。 
## **C语言实验题――数组逆序**

输入10个整数存入一维数组,再按逆序重新存放后再输出。

#include <stdio.h>
#include <math.h>
int main()
{
	int a[10];
	int i;
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}//输入一个数组,一个数字对应一个数组里面的数值 
	printf("%d",a[9]); 
	for(i=8;i>=0;i--)
	{
		printf(" %d",a[i]);
	}
//		printf("%d",a[0]);
	return 0;
}

## **统计同成绩学生人数**

读入N名学生的成绩,将获得某一给定分数的学生人数输出。

#include <stdio.h>
int main()
{
	int n,m,k;
	int a[1000];
while(scanf("%d",&n)!=EOF)
{
	

	if(n==0)break;//判断一次是否等于0 
	if(n>1000)break;//判断n是否小于1000 
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);	//输入 
		if(a[i]<0||a[i]>100)//判断是否符合0-100的数 
		{
			printf("score error\n");
			break;//结束 
		}
	}
		scanf("%d",&m);//输入 
		k=0;//重置 
	for(int i=0;i<n;i++)
	{
		if(m==a[i])
		{
			k++;
		}
	}
	
	printf("%d\n",k);
//	return 0; 
} 
}

## **并列排名**

在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。 例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。 请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。

#include <stdio.h>
int main()
{
	int n,a[100],m,x,i,j,t,s=0;
	scanf("%d",&n);//输入第一个数进入循环 
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);//成绩 
	}
		scanf("%d",&m);//输入成绩,下面并且开始判断有几次 
	///进行排序,冒泡排序 
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-1-i;j++)
		{
			if(a[j]<a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
				//冒泡排序法 
			}
		}
	}
	for(i=0;i<n;i++)
	{
		//判断
		if(a[i]==m)//判断数组中的值是否与m相等
		{
			x=i;
//			printf("%d",x);
			break;
		}
//		if(a[i]==a[i+1])
//			s++;
			//这句if不能用{}括起来. 
	}
	printf("%d\n",x+1);//输出时 
}

## **校赛冠军** 

台州学院第六届“星峰杯”大学生程序设计竞赛如期举行,本次竞赛的冠军可能会授予特等奖,并获得“台州市星峰电子信息工程有限公司”赞助的高额奖金,但该奖项也可以空缺。竞赛组委会根据第一名和第二名的差距来确定是否授予该奖项,如果冠军超过第二名2题及以上则属遥遥领先,颁发1000元奖金,如果只超过1题,则颁发800元奖金,如果与第二名题数相同,则该奖项空缺。

给定所有选手的解题数,请输出特等奖的奖金。

#include <stdio.h>
int main()
{
	int a[200],n,i,j,t,k;//如果发生runtime error那就是给的a[范围不够] 
	scanf("%d\n",&n);//输入循环次数
	//判断n是否小于等于200 没写 
	for(k=0;k<n;k++)
	{
		scanf("%d",&a[k]);//将数输入数组中 
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n-1-i;j++)
		{
			if(a[j]<a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
	//判断第一名与第二名
	if(a[0]-a[1]==1)
		printf("800");
	else if(a[0]-a[1]>=2)
		printf("1000");
	else if(a[0]==a[1])
		printf("None");
	return 0;
}

## **奇偶间谍**

奇数和偶数正在交战,在奇数的阵营里有偶数出现就被认为是间谍,反过来也一样。输入包含10行,请将其中的间谍数(与其他数奇偶性不同的那一个)找出来并输出。

注意,间谍可能是奇数也可能是偶数

#include <stdio.h>
int main()
{
	int a[10],b[10];
	int i,n,m=0,k=0,z;
//	scanf("%d",&n);
	for(i=0;i<10;i++)
	{
		scanf("%d",&z);
		if(z%2==0)
			a[m++]=z;//偶数赋值 
		else
			b[k++]=z;//奇数赋值 
	}
	//输出相反的数。
	//假设偶数>1的那就是剩下一个奇数是间谍	
	//反之相同。 
	if(m>1)
		printf("%d",b[0]);
	else
		printf("%d",a[0]);
	return 0;
}

## **求区间内奇数之和**

给定n个正整数组成的序列,问数组中从第x到第y个元素之间(含x和y,即区间[x, y])的所有奇数之和。

#include <stdio.h>
int main ( )
{
	int n;int i;int a[100];
	int m,k;
	int j;
	int all=0;
	scanf("%d",&n);
	

	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d %d",&m,&k);
	for(j=m;j<=k;j++)
	{
		if(a[j]%2!=0)
			
			all+=a[j];	
	
	}
		printf("%d",all);
}

## **C语言实验题――分割整数**

从键盘输入一个长正整数(不超过10位),从高位开始逐位分割并输出。

#include <stdio.h>
#include <math.h>
#include <string.h> 
int main ( )
{
	long n;
	int a[11];
	int j,i;
	scanf("%ld",&n);
	for(i=0;i<10;i++)
	{
		a[i]=n%10;
		n=n/10;
		//连续并且取出
		if(n==0) break; 
	}
	//上面的a[i]中存储这i的数 
	for(j=i;j>=0;j--)
	{
		if(j!=0)
			{
				printf("%d ",a[j]);
			}
		else
			printf("%d",a[0]);
	}
}

## **C语言实验题――数组逆序2** 

有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m<n<100)个位置。

#include <stdio.h>
#include <math.h>
#include <string.h> 
int main ( )
{
	int n,m[100];
	int i;
	int h ;
	int k ; 
	int j ;
	
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&m[i]);
	}
	scanf("%d",&h);
	//
	for(i=0;i<h;i++)
	{
		k=m[n-1];
		for(j=n-1;j>0;j--)
		{
			m[j]=m[j-1];
		}
		m[j]=k;
	}
	//
	for(i=0;i<n;i++)
	{
		if(i==n-1)
		
			printf("%d\n",m[i]);
		else
			printf("%d ",m[i]);
	}
}

10最后一道题目

 3 1

1 2 3

3 1 2

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,p,t;
    scanf("%d %d",&n,&p);
    int* a=(int*)malloc(sizeof(int)*n);
    int* b=(int*)malloc(sizeof(int)*n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<p+1;i++){
        b[i]=a[i];
    }
    for(int i=0;i<n-p-1;i++){
        a[i]=a[p+1+i];
    }
    for(int i=0;i<p+1;i++){
        a[n-p-1+i]=b[i];
    }
    printf("%d",a[0]);
    for(int i=1;i<n;i++){
        printf(" %d",a[i]);
    }
    return 0;
}
举报

相关推荐

C语言练习

C语言 练习

C语言,练习6

C语言习题练习

C语言循环练习

C语言,练习5

C语言-作业练习

0 条评论