一 ,实验目的
- 进一步熟练掌握Dev Cpp软件的使用及C语言语法;
- 掌握C语言的各种数据类型以及整型、字符型、实型变量的定义;
- 掌握C语言中有关算术运算符及表达式的使用;
- 掌握C语言关系表达式和逻辑表达式的运算和使用;
- 完成课堂练习。
二,实验原理
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;
}
四、课堂练习
- 输入一个百分制成绩,输出对应的等级。
#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,输出的会是一大串整数。