ACM程序设计实验报告二-C语言语法练习

一 ,实验目的

  1. 进一步熟练掌握Dev Cpp软件的使用及C语言语法;
  2. 掌握C语言的各种数据类型以及整型、字符型、实型变量的定义;
  3. 掌握C语言中有关算术运算符及表达式的使用;
  4. 掌握C语言关系表达式和逻辑表达式的运算和使用;
  5. 完成课堂练习。
    二,实验原理
    C 语言知识
    三,使用仪器及环境
    Dev cpp 电脑
    四,实验内容与步骤(过程及结果截图)
    项目1.
#include <stdio.h>
int max(int,int);
int main()
{
	int a , b , c;				/*定义变量*/
	a=23;  b=56;	  			/*为变量赋值*/
	c=max(a,b);				/*调用max函数,将得到的值赋给c*/
	printf(“max is %d\n”,c); 	/*输出c的值*/
	return 0;
}
int max(int x,int y)				/*定义max函数,函数值为整型*/
{			
	int z;					/*定义变量*/
	if(x>y)	
z=x;
	else		
z=y;
	return(z);					/*将z的值返回*/
}

在这里插入图片描述
项目2.

#include<stdio.h>
int main()
{
	float m,n,s;
	printf("m=");
	scanf("%f",&m);	/*输入矩形的边长*/
	printf("n=");
	scanf("%f",&n);	/*输入矩形的边长*/
	s=m*n;			/*计算矩形的面积*/
	printf("s=%f\n",s);	/*输出矩形的面积*/
	return 0;
}

在这里插入图片描述

在这里插入图片描述
项目3. 冒泡排序

#include <stdio.h>
	void bubble_sort( int arr[], int len) {
		int i, j, temp;
		for (i = 0; i < len - 1; i++)
			for (j = 0; j < len - 1 - i; j++)
				if ( arr[j] > arr[j + 1]){
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
	}
int main() {
	int arr[] = { 22,34,3,32,82,55,89,50,37,5,64,35,9,70 };
	int len = (int) sizeof( arr) / sizeof( *arr);
	bubble_sort( arr, len);
	int i;
	for (i = 0; i < len; i++)
	printf("%d ", arr[i]);
	return 0;
}

在这里插入图片描述

项目4. 实现两个矩阵相加

#include <stdio.h>
int main(){
	int r, c, a[100][100], b[100][100],sum[ 100][100],i,j;
	printf("输入行数(1 ~ 100) : ");
	scanf("%d", &r) ;
	printf("输入列数〔1 ~ 100) : ");
	scanf( "%d",&c);
	printf("\n输入第―维数组的元素:\n");
	for(i=0; i<r; ++i)
		for(j=0; j<c; ++j){
			printf("输入元素 a%d%d:",i+1,j+1);
			scanf("%d" ,&a[i][j]);
		}
    printf("输入第二维数组的元素: \n");
	for( i=0; i<r; ++i)
		for(j=0; j<c; ++j){
			printf("输入元素 a%d%d: ",i+1,j+1);
			scanf("%d",&b[i][j]);
		}
//相加

	for(i=0;i<r;++i)
		for(j=0;j<c;++j){
			sum[i][j]=a[i][j]+b[i][j];
		}
//显示结果
	printf( "\n二维数组相加结果: \n\n");
	for( i=0;i<r;++i)
		for(j=0;j<c;++j){
		 	printf("%d  ", sum[i][j]);
			if(j==c-1)
			{
			printf("\n\n" );
			}
		}
		return 0;
}

在这里插入图片描述
四、课堂练习

  1. 输入一个百分制成绩,输出对应的等级。
#include<stdio.h>
int main(){
	int grade;
	scanf("%d",&grade);
	int g;
	g=grade/10;
	switch(g){
	case 10:printf("您的等级为:10"); break;
	case 9:printf("您的等级为:9"); break;
	case 8:printf("您的等级为:8");break;
	case 7:printf("您的等级为:7");break;
	case 6:printf("您的等级为:6");break;
	case 5:printf("您的等级为:5"); break;
	case 4:printf("您的等级为:4");break;
	case 3:printf("您的等级为:3");break;
	case 2:printf("您的等级为:2");break;
	case 1:printf("您的等级为:1");break;
	case 0:printf("您的等级为:0");break;
	}
}

在这里插入图片描述
2. 在这里插入图片描述

#include<stdio.h>
int main(){
	int a=1;
	int sum=0;
	for(int i=1;i<=10;a=1,i++){// 1到10的阶乘相加 ,重新复制a 
		for(int j=1;j<=i;j++){//计算 1到10的阶乘 
			a=j*a;	//1到i相乘赋值给a 
    	}
	sum=a+sum;
	}
	printf("1!+2!+...+10!=%d",sum);
}

在这里插入图片描述
3. 输入3个学生4门课的成绩,分别用函数实现以下功能:(1)计算每个学生的平均分。(2)计算每门课的平均分。(3)找出12个分数中最高分数所对应的学生和课程。

#include<stdio.h>
int main(){
	int stuaver[2],sg[3][4],couseaver[3];
	int sum,average;
	int CouAver[3];
	int CouseSum=0;
	//输入3个学生4门课的成绩
	for(int i=1;i<=3;sum=0,i++){
		printf("输入第 %d 个学生4门课的成绩:\n",i);
		for(int j=1;j<=4;j++){
			scanf("%d",&sg[i][j]);
		}
	}
	
	//计算每个学生的平均分。
	for(int i=1;i<=3;sum=0,i++){
		for(int j=1;j<=4;j++){
			sum=sum+sg[i][j];
		}
		stuaver[i]=sum/4;
		printf("第%d学生的平均分%d\n",i,stuaver[i]);
	}
	//计算每门课的平均分。
	for(int j=1;j<=4;CouseSum=0,j++){
		for(int i=1;i<=3;++i){
			CouseSum=CouseSum+sg[i][j];
		}
		CouAver[j]=CouseSum/3.0;
		printf("第%d个课程的平均分%d\n",j,CouAver[j]);
	}
	
	// 找出12个分数中最高分数所对应的学生和课程。
	int maxx=0;
	int  MaxStu,MaxCou;
	for(int i=1;i<=3;i++){
		for(int j=1;j<=4;j++){
			if(maxx<=sg[i][j]){
				maxx=sg[i][j];
				MaxStu=i;
				MaxCou=j;
			}
		}
	}
	printf("最高分数所对应的学生和课程分别为:第%d个学生 第%d个课程\n",MaxStu,MaxCou);
}

在这里插入图片描述
4. 编写函数 int find(int *p,int n,int x),在指针 p 所指的数组中查找整型数 x,如果 x 在数组中,则该函数返回 1,否则返回 0。n 为数组的大小。编写主函数测试之。

#include<stdio.h>
int find(int *p,int n,int x){
	for(int i=0;i<n;i++,p++){ 
		if(*p==x)
			return 1;
		} 
			return 0;
	}

int main(){
	int a[5]={1,2,3,4,5},b,x;
	printf("x为:");
	scanf("%d",&x); 
	b=find(a,5,x);
	printf("%d\n",b);
}

在这里插入图片描述
在这里插入图片描述
5. 计算s,并输出:
在这里插入图片描述
n通过键盘输入,例如:若n的值为11时,则函数值为:1.833333

#include<stdio.h>
int main(){
	int n;
	double sum=0,S=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		sum=sum+i;//分母相加
		S=S+1.0/sum; 
	}
	printf("%f",S); 
}

在这里插入图片描述
6. 计算并输出方程x^2 + y^2 = 1989的所有整数解。

#include<stdio.h>
void fun()
{
	int x,y;
	for(x=1;x<=44;x++)
	for(y=1;y<=44;y++)
	if(x*x+y*y==1989)
	printf("x=%d,y=%d\n",x,y);
}
int main()
{
	printf("方程x^2 + y^2 = 1989的解为:\n");
	fun();
}

在这里插入图片描述

五,实验总结
认真打完这些代码需要思考,做出来挺满足的,只是有些代码似乎还不够完善,还需再接再厉多加练习,将代码做得更好一些。有时候也会犯一些小错误,导致得不到答案,比如说第五题输出1+1/(1+2)+…的和,我在进行输出的时候把printf("%f",S);中的f打成了d,输出的会是一大串整数。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值