C语言函数实验

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言函数实验相关的知识,希望对你有一定的参考价值。

一定要是新做的 不能重复

实验题目
把a[n][n]二维数组对角线元素置1,并求其余元素之和,要求用函数完成。
(本题令n=4)
要求:
主函数中完成:
1) 输入a数组元素值。
2) 输出对角线置1后a数组。
3) 输出其余元素之和。
被调用函数中完成:
1) 对角线元素(主、副两条对角线)置1。
2) 求其余元素之和后返回其值。
注意:要给出至少两次的运行的输入输出结果。

【实验目的】
1.熟悉函数的一般形式以及函数的定义与调用。
2.掌握函数的实参与形参的对应关系。
3.掌握自定义函数的编写。

【评分标准】
实验报告内容中写明:
1. 题目:10分
2. 算法描述:20分
3. 源程序:50分
u 主函数30分
u 被调用函数20分
4.运行结果:20。注意,每次运行结果10分

可以写的留下QQ 我把实验报告发过去

#include<stdlib.h>
#include<stdio.h>
#define N 4
int zhi(int a[][N])
int i,j,sum=0;

for(i=0;i<N;i++)
printf("\n");
for(j=0;j<N;j++)

if((i+j)==(N-1)||i==j)
a[i][j]=1;
else
sum+=a[i][j];
printf("%4d",a[i][j]);


printf("\n");
return sum;

int main()

int i,j,a[N][N],sum=0;
for(i=0;i<N;i++)

for(j=0;j<N;j++)

scanf("%d",&a[i][j]);


printf("%d\n",zhi(a));

return 0;
//qq:470615109追问

你的//qq加不上

追答

程序就这样,你自己输入试试。

参考技术A c++代码,改改输入输出就好,看看能用不;
float fo( float a[][4] )

float sum = 0;

for( int i=0; i<4; ++i )

for( int j=0; j<4; ++j )

if( i==j || j==(3-i) )

a[i][j] = 1;

else

sum += a[i][j];




return sum;


int _tmain(int argc, _TCHAR* argv[])

float a[4][4] = 0;
float sum = 0;

for( int i=0; i<4; ++i )

for( int j=0; j<4; ++j )

cout << " Please input a[" << i << "][" << j << "]: " ;
cin >> a[i][j];



sum = fo( a );

for( int i=0; i<4; ++i )

for( int j=0; j<4; ++j )

cout << a[i][j] << ' ' ;



cout << endl;



cout << "sum:" << sum << endl;追问

你这个是自己写的吗?

追答

是的。

第二次C语言实验

Part1:

printf(),scanf()函数的用法

/* 
C语言程序设计教程学习指导》p119 实验内容(2)  
这是一个格式化输入输出函数及格式符使用练习
找出两处错误,修改并运行程序 
为a1,a2,a3,c1,c2,c3,x,y输入数据,使得:
a1=1,a2=2,a3=3,c1=‘a‘,c2=‘b‘,c3=‘c‘, x=1.5, y=2.5 
*/ 
#include <stdio.h>
int main() {
	double x,y;
	char c1,c2,c3;
	int a1,a2,a3;
	scanf("%d%d%d",&a1,&a2,&a3);
	printf("%d,%d,%d\\n",a1,a2,a3);
	scanf("%c%c%c",&c1,&c2,&c3);
	printf("%c%c%c\\n",c1,c2,c3);
	scanf("%lf,%lf",&x,&y);
	printf("%lf,%lf\\n",x,y);
	return 0;
} 

  技术图片

%d:按十进制整型输出

%f:用来输出实数,以小数形式输出,默认情况下保留小数点6位。

%c:用来输出一个字符。

%e:以指数形式输出实数。

%s:用来输出一个字符串。

%5d:表示按十进制输出数据,最小输出宽度为5个字符,右对齐,如果输出的数据小于5个字符,前补空格。如果超过5个字符,按实际数据长度输出。

%f:表示以double型格式输入或输出变量的值。

%.3f表示单精度浮点型,保留3位小数。

%lf表示双精度浮点型

%6.2f表示输出结果总共占6个字符,包含3位小数。

输入输出双精度类型数据的时候必须要用%lf

 

part4:

/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息  
*/
#include <stdio.h>
int main() {
	int level;
	printf("输入现在状态等级(1-5):  ");
	scanf("%d",&level);
	switch(level) {
		case 1: printf("high翻了:)\\n"); break; 
		case 2: printf("low爆了:(\\n"); break; 
		default: printf("一言难尽,无法概括。。。\\n");
	}
	return 0;
} 

 

 有break情形

技术图片

技术图片

技术图片

无break情形

/*
switch语句使用示例
输入1,2,3...的不同整数,显示不同提示信息  
*/
#include <stdio.h>
int main() {
	int level;
	printf("输入现在状态等级(1-5):  ");
	scanf("%d",&level);
	switch(level) {
		case 1: printf("high翻了:)\\n"); 
		case 2: printf("low爆了:(\\n"); 
		default: printf("一言难尽,无法概括。。。\\n");
	}
	return 0;
} 

  技术图片

技术图片

技术图片

不同之处:

有break的时候,程序跳出这一层的switch语句结构,转到其结构后面的语句执行,即输入1执行case1的语句,输入2执行case2的语句,不执行case1,

当没有break语句时,程序就会一直执行下去,直到遇到break语句或该switch结构结束。

 

part5:

简单编程小练习

/*要求用户从键盘输入x(A,B,C,D之一),如果用户答案是‘A‘,则输
出提示信息"Binggo, you are right~",否则,输出提示信息"
try again~"。
*/
# include <stdio.h>
int main()
{
	int ch;
	printf("输入字母‘A‘-‘D‘ ");
	scanf("%c",&ch);
	switch(ch){
		case ‘A‘: printf("Binggo, you are right~"); break;
		case ‘B‘: 
		case ‘C‘: 
		case ‘D‘: printf("try again~"); break;  
		 
	}
	return 0;	
}

  技术图片

技术图片

用if语句编写

/*要求用户从键盘输入(A,B,C,D之一),如果用户答案是‘A‘,则输
息"Binggo, you are right~",否则,输出提示信息"
try again~"。
*/
# include <stdio.h>
int main()
{
	int ch;
	printf("输入字母‘A‘-‘D‘ ");
	scanf("%c",&ch);
	if(ch==‘A‘) 
	printf("Biggo, you are right~");
	else
	printf("try again~"); 
		 
	
	return 0;	
}

  技术图片

技术图片

总结与体会

输入函数scanf()中要有地址符&,格式符使用时要注意各格式符的意思不能乱用,而且要根据实际情况正确使用。

对于if语句的使用还有点不熟,难以正确定义变量,就part5我觉得用if语句比较简单,但是最初我是用switch语句,因为开始的时候用if语句时我只定义了变量ch

也没有提示输入,这点应该是我输入函数没有理解好,对于变量的输入也没有明确表示,还有一个经常犯的毛病就是字符型常量忘记加单引号。

if语句尚未理解透彻,还需多加练习。switch语句我觉得还没有完全理解透彻,有些细节性的东西还要多多练习。

 

以上是关于C语言函数实验的主要内容,如果未能解决你的问题,请参考以下文章

C语言实验9_结构体

C语言实验题 求大神指点

第二次C语言实验

用c语言解决数组

ISLR实验:R语言简介

#ex8 C语言标准实验报告