西北农林科技大学 c语言上机 实习6答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言上机实习报告”。
实习六答案
1、整数交换函数设计
/* exer 6-1 交换2个整数 */ #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 统计一串字符中数字字符的个数 */ #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 利用函数排序 */ #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 矩阵转置 */ #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 求素数 */ #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 八进制数据字符串转换为十进制数据 */ #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 求最大公约数 */ #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 判断二维数组是否为对称数组 */ #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;}