西北农林科技大学C语言上机实习6答案_c语言上机实习报告

实习报告 时间:2020-02-28 10:33:02 收藏本文下载本文
【www.daodoc.com - 实习报告】

西北农林科技大学C语言上机实习6答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言上机实习报告”。

实习六答案

1、整数交换函数设计

/* exer 6-1 交换2个整数 */ 设计一个函数,将任意2个整数交换,并在主函数中调用此函数。

输入: 任意2个整数 输出: 交换后的2个整数 输入样例: 1 2 输出样例: 2 1

#include

void swap(int *, int *);

/* 函数声明 */

void main(void){

int a,b;

//printf(“please enter 2 data:”);

scanf(“%d%d”,&a,&b);

/* 输入2个整数 */

//printf(“a=%d,b=%dn”,a,b);

swap(&a,&b);

/* 调用函数进行交换 */

printf(“%d %dn”,a,b);}

void swap(int *p1, int *p2)

/* 交换函数 */ {

int temp;

temp = *p2;

/* 交换 */

*p2 = *p1;

*p1 = temp;}

2、数字字符个数统计函数设计

/* exer 6-2 统计一串字符中数字字符的个数 */ 设计一个函数,统计任意一串字符中数字字符的个数,并在主函数中调用此函数。输入:任意一串字符 输出:字符串中数字字符的个数 输入样例:abs1234ajbkc

#include int count(char *);

/* 函数声明 */ void main(void){

char pstr[80];

//printf(“please enter string:”);

gets(pstr);

/* 输入字符串 */

printf(“%dn”,count(pstr));/* 调用函数进行统计 */ }

int count(char *p)

/* 统计函数 */

{

int num=0;

while(*p!='')

/* 循环依次遍历 */

{

if(*p>='0' && *p

num++;

/* 统计 */

p++;

/* 指针后移 */

}

return num;}

3、排序函数设计

/* exer 6-3 利用函数排序 */ 设计一个函数,对任意n个整数排序(从大到小),并在主函数中输入数据个数n和n个整数,调用此函数实现排序。输入: n个整数 输出:排序后的n个整数

输入样例:10

输出样例: 9 8 7 6 5 4 3 2 1 0

#include void sort(int a[ ],int num);

/* 函数声明 */ void main(void){

int n, i, data[10];

//printf(“please enter 10 data:”);

scanf(“%d”, &n);

for(i=0;i

scanf(“%d”,&data[i]);

/* 输入数组 */

sort(data,n);

/* 调用函数排序 */

for(i=0;i

printf(“%d ”,data[i]);

/* 输出数组 */ }

void sort(int a[ ],int num)

/* 排序函数 */ {

int i,j,k,temp;

for(i=0;i

/* 排序 */

{

k = i;

for(j=i+1;j

if(a[k]

k = j;

if(k!=i)

{

temp = a[k];

a[k] = a[i];

a[i] = temp;

/* 交换 */

}

} }

4、矩阵转置函数设计 /* exer 6-4 矩阵转置 */ 设计一个函数,将任意n×n的矩阵转置,并在主函数中调用此函数将一个4*4的矩阵转置。

输入:n×n的矩阵

输出:转置后的n×n的矩阵

输入样例:3 1 2 3 4 5 6 7 8 9 输出样例:1 4 7 2 5 8 3 6 9

#include void transpose(int a[][100],int);

/* 函数声明 */ void main(void){

int n, i, j, data[100][100];

scanf(“%d”, &n);

for(i=0;i

{

for(j=0;j

scanf(“%d”,&data[i][j]);

/* 输入数组 */

}

transpose(data,n);

/* 调用函数转置 */

for(i=0;i

{

for(j=0;j

printf(“%d ”,data[i][j]);

/* 输出数组 */

printf(“%dn”, data[i][j]);

} }

void transpose(int a[][100],int n)

/* 转置函数 */ {

int i,j,temp;

for(i=0;i

/* 转置 */

{

for(j=0;j

{

temp = a[i][j];

a[i][j] = a[j][i];

a[j][i] = temp;

/* 交换 */

}

} }

5、求素数函数设计 /* exer 6-5 求素数 */ 设计一个函数,用以判断一个整数是否为素数,如果是,则返回1;如果不是,则返回0;并利用此函数,找出m-n之间的所有素数,并统计其个数,m、n由键盘输入。

#include #include int Prime(int);

/* 函数声明 */ void main(void){

int m,num=0;

/* 定义整型变量 */

for(m=101;m

{

if(Prime(m))

/* 调用函数判断此数是否为素数 */

{

printf(“%d ”,m);

/* 输出素数 */

num++;

/* 统计素数 */

}

}

printf(“n%dn”,num);/* 输出素数个数 */ }

int Prime(int n)

/* 判断此数是否为素数函数 */ {

int found;

/* 定义开关变量 */

int i,k;

k = sqrt((double)n);

found = 1;

/* 初始化开关变量 */

i = 2;

while(i

/* 循环依次检测条件 */

{

if(n%i ==0)

found = 0;

/* 一旦除尽修正开关变量 */

i++;

}

return found;}

6、进制转换函数设计

/* exer 6-6 八进制数据字符串转换为十进制数据 */ 设计一个函数,将任意一个八进制数据字符串转换为十进制数据,并在主函数中调用此函数。输入一个八进制数转换为八进制 77 63

#include int conver(char *);

/* 函数声明 */ void main(void){

char str[10];

gets(str);

/* 输入八进制数据字符串 */

printf(“%dn”,conver(str));/* 调用子函数转换 */ }

int conver(char *p)

/* 转换子函数 */ {

int num=0;

for(;*p!='';p++)

num = num*8+*p-'0';

/* 进行转换 */

return num;}

7、求最大公约数函数设计 /* exer 6-7 求最大公约数 */ 设计一个函数,找出任意2个整数的最大公约数,并在主函数中调用此函数。输入2个整数,输出最大公约数

#include int comdivi(int ,int);

/* 函数声明 */ void main(void){

int a,b,com;

//printf(“please enter two integers:”);

scanf(“%d%d”,&a,&b);

/* 输入两个正整数 */

com = comdivi(a,b);

/* 调用函数 */

printf(“%dn”,com);}

int comdivi(int m,int n)

/* 求最大公约数子函数 */ {

int q;

if(n>m)

/* 如果m小于n,交换 */

{

int z;

z = m;

m = n;

n = z;

}

do

{

q = m%n;

/* 开始迭代

*/

m = n;

n = q;

}

while(q!=0);

/* 循环整除取余,直到余数为0 */

return m;}

8、对称数组判断

/* exer 6-8 判断二维数组是否为对称数组 */ 设计一个函数,判断二维数组是否为对称数组(对称矩阵),如果是,则返回1;如果不是,则返回0,并在主函数中调用此函数,判断一个4*4的数组是否为对称数组。输入:二维数组

输出:是否为对称数组

#include #include int array(int *,int);

/* 函数声明 */ void main(void){

int n, i, j, data[100][100];

scanf(“%d”, &n);

for(i=0;i

{

for(j=0;j

scanf(“%d”,&data[i][j]);

/* 输入数组 */

}

if(array((int *)data, 4))

/* 调用函数判断 */

printf(“Yesn”);

else

printf(“Non”);}

int array(int *p,int n)

/* 判断此数组是否为对称数组函数 */ {

int found;

/* 定义开关变量 */

int i,j;

found = 1;

/* 初始化开关变量 */

for(i=0;i

{

for(j=0;j

{

if(*(p+i*100+j)!=*(p+j*100+i))/* 循环依次判断 */

{

found = 0;

break;

}

}

}

return found;}

下载西北农林科技大学C语言上机实习6答案word格式文档
下载西北农林科技大学C语言上机实习6答案.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文