西北农林科技大学c语言实习答案

时间:2019-05-12 01:40:00下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《西北农林科技大学c语言实习答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《西北农林科技大学c语言实习答案》。

第一篇:西北农林科技大学c语言实习答案

实习1

1、简单程序设计 编程写程序,在屏幕上输出信息:Happy New

Year!

/* 输出图形*/ #include void main()

{

printf(“Happy New Year!n”);

}

2、简单计算 由键盘任意输入2个数,分别计算它们的和、差、积、商。/*简单计算*/ #include void main()

{ float a,b;float h,c,j,s;scanf(“%f%f”, &a,&b);

h=a+b;c=a-b;j=a*b;

s=a/b;printf(“和=%f,差=%f,积=%f,商=%fn”,h,c,j,s);

}

3、计算梯形的面积 已知梯形的上底、下底和高,计算梯形的面积。

/*计算梯形的面积*/ #include void main()

{

float supline,dowline,high;

double area;scanf(“%f”,&supline);

scanf(“%f”,&dowline);

scanf(“%f”,&high);area =((supline+dowline)*high)/2.0;

printf(“%f n”,area);

}

4、输出字符对应的ASCII码 任意输入一个字符,输出此字符对应的ASCII码。

/*输出字符对应的ASCII码*/

#include void main()

{

char c;scanf(“%c”,&c);printf(“%dn”,c);

}

5、数据类型长度测试

编写程序,测试所使用的计算机系统字符型、短整型、整形、长整型、单精度实型、双精度实型所占有的字节数量。

/*数据类型长度测试*/ #include void main()

{ printf(“size of char=%dn”,sizeof(char));

printf(“size of short=%dn”,sizeof(short));

printf(“size of int=%dn”,sizeof(int));

printf(“size of long int=%dn”,sizeof(long int));

printf(“size of float=%dn”,sizeof(float));

printf(“size of double=%dn”,sizeof(double));

}

1.成绩判断

输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。不要改变与输入输出有关的语句。

/*成绩判断*/ #include

void main()

{ float mark;

scanf(“%f”,&mark);

if(mark<60)

printf(“Failn”);

else

printf(“Passn”);

} 2.字符转换

输入一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。不要改变与输入输出有关的语句。

#include

main(){char ch;ch=getchar();

if(ch>='A'&&ch<='Z')

{ch=ch+32;

printf(“%cn”,ch);}

else if(ch>='a'&&ch<='z')

{ch=ch-32;

printf(“%cn”,ch);}

else

printf(“%cn”,ch);

} 3.利用海伦公式求三角形面积 三角形三个边长

/*计算三角形面积*/ #include “math.h” #include “stdio.h” void main()

{

double a,b,c,s,area;

printf(“请输入3条边长:”);scanf(“%lf%lf%lf”,&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b)

{

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“三角形的面积是:%fn”,area);

scanf(“%lfn”,area);

} else

printf(“这3个数无法组成三角形!n”);

} 4.判断是否能构成一个三角形

从键盘输三个数,判断是否能将它们作为三角形的三条边构成一个三角形。若能,输出“Yes”,否则,输出“No”。

/*判断是否能构成一个三角形*/

#include void main()

{ float a,b,c;

printf(“请输入3条边长:”);scanf(“%f%f%f”,&a,&b,&c);if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&& b+c>a)

printf(“Yesn”);

else printf(“Non”);

} 5.按从大到小排序三个数 从键盘输入三个数,将它们按从大到小进

行排序,然后输出。/*按从大到小排序三个数*/

#include

main(){ int a,b,c,d,e,f;

printf(“请输入三个整数n1,n2,n3:”);

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

printf(“排序前:%d, %d, %dn”, a, b, c);

if(a>b){ {

d=c;e=a;f=b;

} { if(c

} else { d=a;e=c;f=b;} } }

else{if(bc){d=b;e=a;f=c;} else{d=b;e=c;f=a;} } } printf(“排序后:%d, %d, %dn”, d, e, f);

} 1.数据统计 任意输入n个整数,分别统计奇数的和、奇数的个数、偶数的和、偶数的个数。

/*数据统计*/ #include

void main()

{

int i,n,m,jishuhe=0,oushuhe=0,jishuge=0,oushuge=0;

scanf(“%d”,&n);

for(i=0;i

{

scanf(“%d”,&m);

if(m%2!=0)

{

jishuhe=jishuhe+m;

jishuge++;

}

else

{

oushuhe=oushuhe+m;

oushuge++;

}

}

printf(“%dn%dn%dn%dn”,jishuhe,jishuge,oushuhe,oushuge);

}

2.爱因斯坦阶梯问题

爱因斯坦阶梯问题。设有一阶梯,每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨6阶,最后剩5阶;每步跨7阶,正好到阶梯顶。问满足条件的最少阶梯数是多少。

/*爱因斯坦阶梯问题*/ #include void main()

{

int x;x=7;while(!((x%3==2)&&(x%5==4)&&(x%6==5)))

x+=14;

printf(“%dn”,x);

}

3.猴子吃桃问题

一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一个,第2天接着吃了前一天剩下的一半,再多吃了一个,以后每天如此,直到第n天,只剩下1个桃子,问猴子一共摘了多少桃子?

/*猴子吃桃问题*/ #include void main()

{ int n;int x=1,i;

scanf(“%d”,&n);for(i=1;i

{ x=2*(x+1);

}

printf(“%dn”,x);

}

┏(^ω^)=☞✘✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 4.求两个数的最大公约数和最小公倍数

用辗转相除法(即欧几里得算法)求两个正整数的最大公约数和最

小公倍数。

/* 求两个数的最大公约数和最小公倍数*/

#include

void main()

{ int a,b,rem,temp;int Div,Multi;int a1,b1;

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

a1=a;b1=b;if(a

temp=a;a=b;b=temp;} while(rem)

{

rem = a%b;

a=b;b=rem;} Div=a;Multi = a1*b1/Div;

printf(“%dn%dn”,Div,Multi);

}

5.求sin(x)的近似值

利用公式求sin(x)的近似值(精度为10e-6)。sin(x)=x-x3/3!+x5/5!-x7/7!+....(-1)nx(2n+1)/(2n+1)!+.../*求sin(x)的近似值*/ #include #include

main(){ float a,b=1;float i,sinx,x;scanf(“%f”,&x);

a=x;sinx=0;

for(i=1;fabs(a/b)>=1e-6;i++)

{ sinx+=a/b;a=-a*x*x;b=b*2*i*(2*i+1);

}

printf(“%fn”,sinx);

} 6.图形输出

输入一个字符及行数n,用该字符在屏幕上输出如下图形:

*

***

***** ******* ********* 输入: 一个字符及要输出的行数n。

输出: 用该字符在屏幕上构成的要求图形。

#include

void main()

{

int n,i,j;char ch;ch=getchar();scanf(“%d”,&n);for(i=0;i

for(j=0;j<(n-1-i);j++)

printf(“ ”);

for(j=0;j<(2*i+1);j++)printf(“%c”,ch);

printf(“n”);}

}

(^ω^)=☞1.字符串连接

由键盘任意输入两串字符,不用库函

数strcat,连接将两串字符。

输入: 两串字符

输出: 连接将两串字符

输入样例: abc

def

输出样例: abcdef /*字符串连接*/ #include #include void main()

{

┏ int i,j,k;

char str[20]={“”},str1[10],str2[10];

gets(str1);

gets(str2);

j=strlen(str1),k=strlen(str2);

for(i=0;i

{

if(i

else str[i]=str2[i-j];

}

puts(str);}

/*字符串连接*/ #include #include void main()

{

char str1[100],str2[50];

int i,j;

gets(str1);gets(str2);

for(i=0;str1[i]!='';i++)

;

for(j=0;str2[j]!='';j++)

{

str1[i]=str2[j];

i++;}

str1[i] = '';

puts(str1);

}

2.简单加密程序

描述:

由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。

输入: 一串字符

输出: 加密后的字符串

输入样例: abl2CDxyz

输出样例: cdl2EFzab

提示: 1.可用gets()和puts()输入输出字符串。

2.利用ASCII码运算进行加密。

3.循环右移的含义是:将a-z,A-Z各看成一个环进行移动,即y右移2个字母后为a,z右移2个字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。

/*简单加密程序*/ #include

void main()

{

char a[80];

int i;gets(a);

for(i=0;a[i]!=0;i++){if((a[i]>='A'&& a[i]<='X')||(a[i]>='a'&&a[i]<='x'))

a[i]=a[i]+2;else if((a[i]>='y'&&a[i]<='z')||(a[i]>='Y'&&a[i]<='Z'))

a[i]=a[i]-24;} puts(a);}

3.矩阵对角线元素求和

描述:

输入一个5×5的数组,分别求其主对角线和辅对角线上

元素之和。

输入: 5×5的数组

输出: 主对角线和辅对角线上元素之和

输入样例: 1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

输出样例: 65 65

提示:

主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。

/*矩阵对角线元素求和*/

#include #include void main()

{

int i,j;int a[6][6];int sum1=0,sum2=0;

for(i=0;i<5;i++)for(j=0;j<5;j++)scanf(“%d”,&a[i][j]);for(i=0;i<5;i++)

{

sum1=sum1+a[i][i];sum2=sum2+a[i][4-i];

}

printf(“%d %dn”,sum1,sum2);

}

4.数据顺序调整

描述:

由键盘任意输入10个数,将最大数调到最前面,最小数

调到最后面。

输入: 任意10个数

输出: 数据调整后的10个数。

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

① 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置;

② 在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2;

③ 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存

入x1,并将其下标存入x2;

④ 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。

/* 数据顺序调整*/ #include #include void main()

{

int i,a[10],temp;int kmax=0,kmin=0;

for(i=0;i<10;i++)scanf(“%d”,&a[i]);

for(i=0;i<10;i++)

{

if(a[i]>a[kmax])

kmax=i;

if(a[i]

kmin=i;

1、字符串连接

/* exer 4-1 两串字符连接 */ #include #include void main(void){

unsigned int i,j;

char soustr[80],desstr[80];

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

gets(soustr);

}

temp=a[0];a[0]=a[kmax];a[kmax]=temp;

if(kmax!=9)

{ temp=a[9];a[9]=a[kmin];a[kmin]=temp;

} 实习四答案

/* 输入原串 */

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

gets(desstr);

/* 输入目的串 */

i = strlen(soustr);

/* 取目的串尾部位置 */

for(j=0;j<=strlen(soustr);j++,i++)

{

soustr[i] = desstr[j];

/* 将原串依次接入目的串尾部 */

}

puts(soustr);}

2、简单加密程序

/* exer 4-2 字符加密 */ #include #include void main(void){

unsigned int j;

char soustr[80],secstr[80];

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

gets(soustr);

/* 输入原串 */

for(j=0;j<=strlen(soustr);j++)

{

if(soustr[j]>='A' && soustr[j]<='Z')

secstr[j] =(soustr[j]-'A'+2)%26+'A';/*计算大写字母密文*/

else if(soustr[j]>='a' && soustr[j]<='z')

secstr[j] =(soustr[j]-'a'+2)%26+'a';/*计算小写字母密文*/

else

secstr[j] = soustr[j];

/* 其它字符不变 */

}

puts(secstr);}

3、矩阵对角线元素求和

/* exer 4-3 主和辅对角线上元素之和 */ #include #include void main(void){

int i,j;

int a[5][5];

int sum1=0,sum2=0;

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

for(i=0;i<5;i++)

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

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

/* 输入数组 */

for(i=0;i<5;i++)

{

sum1 = sum1+a[i][i];

/* 主对角线 */

sum2 = sum2+a[i][4-i];

/* 辅对角线 */

}

printf(“%d %dn”,sum1,sum2);}

4、数据顺序调整

/* exer 4-4 将最大数调到最前面,最小数调到最后面 */ #include #include void main(void){

int i,a[10],temp;

int kmax=0,kmin=0;

//printf(“please enter :”);

for(i=0;i<10;i++)

/* 输入数组 */

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

for(i=0;i<10;i++)

{

if(a[i]>a[kmax])

kmax = i;

/* 找最大数位置 */

else if(a[i]

kmin = i;

/* 找最小数位置 */

}

if(kmax == 9 && kmin == 0)

{

temp = a[0];

a[0] = a[kmax];

a[kmax] = temp;

/* 与最前面的数交换 */

}

else

{

temp = a[0];

a[0] = a[kmax];

a[kmax] = temp;

/* 与最前面的数交换 */

temp = a[9];

a[9] = a[kmin];

a[kmin] = temp;

/* 与最后面的数交换 */

}

for(i=0;i<9;i++)

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

/* 输出数组 */

printf(“%dn”,a[i]);}

5、字符个数统计

/* exer 4-5 统计大写字母、小写字母、数字及其它字符的个数 */ #include #include void main(void){

unsigned int i;

int cap=0,low=0,dig=0,oth=0;

/* 定义并初始化 */

char str[80];

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

gets(str);

/* 输入原串 */

for(i=0;i

{

if(str[i]>='A' && str[i]<='Z')

cap++;

/* 统计大写字母 */

else if(str[i]>='a' && str[i]<='z')

low++;

/* 统计小写字母 */

else if(str[i]>='0' && str[i]<='9')

dig++;

/* 统计数字 */

else

oth++;

/* 统计其它字符 */

}

printf(“%d %d %d %dn”,cap,low,dig,oth);}

6、学生成绩计算

/* exer 4-6 求每一个学生的总成绩和平均成绩 */ #include void main(void){

int i,j;

float score[10][5]={0.0f};

float allsco[10],avesco[10];

for(i=0;i<10;i++)

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

scanf(“%f”,&score[i][j]);

/* 输入学生的成绩 */

for(i=0;i<10;i++)

{

allsco[i] = 0;

/* 总成绩清零 */

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

{

allsco[i] = allsco[i]+score[i][j];

/* 累加总成绩 */

}

avesco[i] = allsco[i]/5;

/* 计算平均成绩 */

}

for(i=0;i<10;i++)

printf(“%f %fn”,allsco[i],avesco[i]);/* 输出成绩 */ }

7、姓名排序

/* exer 4-7 姓名排序 */ #include #include void main(void){

int i,j,k;

char name[10][80],temp[80];

//printf(“please enter :”);

for(i=0;i<10;i++)

gets(name[i]);

/* 输入姓名数组 */

for(i=0;i<9;i++)

/* 排序 */

{

k = i;

for(j=i+1;j<10;j++)

if(strcmp(name[k],name[j])>0)

k = j;

if(k!=i)

{

strcpy(temp,name[i]);

strcpy(name[i],name[k]);

strcpy(name[k],temp);

/* 交换 */

}

}

for(i=0;i<10;i++)

puts(name[i]);

/* 输出姓名数组 */ }

8、输出杨辉三角形

/* exer 4-8 打印杨辉三角形 */ #include void main(void){

int i,j;

int a[6][6];

for(i=0;i<6;i++)

{

a[i][i] = 1;

/* 主对角线为1 */

a[i][0] = 1;

/* 第1列为1 */

}

for(i=2;i<6;i++)

for(j=1;j

a[i][j] = a[i-1][j-1]+a[i-1][j];/* 计算 */

for(i=0;i<6;i++)

{

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

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

/* 输出 */

printf(“n”);

/* 换行 */

} }

实习五答案

1、用指针实现排序

/* exer 5-1 由键盘输入 10个整数,将它们按由小到大顺序排列 */ #include void main(void){

int a[10],*p = NULL;

/* 说明数组和指针 */

int i, j, temp;

for(p = a;p < a + 10;p++)

/* 指针从数组首到尾 */

{

scanf(“%d”, p);

/* 利用指针依次输入 */

}

p = a;

for(i = 0;i < 9;i++)

/* 利用指针依次比较 */

{

for(j = i + 1;j < 10;j++)

if(*(p + i)> *(p + j))

{

temp = *(p + i);

*(p + i)= *(p + j);

*(p + j)= temp;

}

}

for(p=a;p < a + 9;p++)

printf(“%d ”, *p);

printf(“%dn”, *p);}

2、用指针实现字符串排序 /*exer 5-2 将 10个长度小于20的字符串排序*/ #include #include void main(void){

char szStr[10][20],*psz[10],szTemp[20];

int i,j;

for(i = 0;i < 10;i++)

{

psz[i] = szStr[i];

/*指针数组的每个元素指向各行串*/

}

for(i = 0;i < 10;i++)

{

gets(psz[i]);

/*输入10个字符串*/

}

for(i = 0;i < 9;i++)

/*字符串排序*/

{

for(j = i + 1;j < 10;j++)

{

if(strcmp(psz[i], psz[j])> 0)

{

strcpy(szTemp, psz[i]);

strcpy(psz[i], psz[j]);

strcpy(psz[j], szTemp);

}

}

}

for(i = 0;i < 10;i++)

{

puts(psz[i]);

/*输出字符串*/

} }

3、数据倒置

/*exer 5-3 将具有10个元素的一维数组中的数据倒置 */ #include void main(void){

int a[10], iTemp, *p, *q;

int i;

for(i = 0;i < 10;i++)

{

scanf(“%d”, a + i);

/*输入数组*/

}

p = a;

q = a + 9;

for(p = a, q = a + 9;p < q;p++, q--)

/*首尾交换*/

{

iTemp = *p;

*p = *q;

*q = iTemp;

}

for(i = 0;i < 10;i++)

{

printf(“%d ”, *(a + i));

/*输出*/

} }

4、用指针实现数据位置调整

/*exer 5-4 输入 10个整数,将最大的调到最后,最小的调到最前*/ #include

void swap(int *px, int *py);

int main(void){

int a[10], iTemp, *pMax, *pMin;

int i;

for(i = 0;i < 10;i++)

{

scanf(“%d”, a + i);/*输入数组*/

}

pMax = a;

/*最大值指针指向数组首地址*/

pMin = a;

/*最小值指针指向数组首地址*/

for(i = 1;i < 10;i++)

{

if(*(a+i)> *pMax)

pMax = a + i;

if(*(a+i)< *pMin)

pMin = a + i;

}

/*最大值是第1个元素,最小值是最后一个元素*/

if(pMax == a && pMin == a + 9)

{

swap(pMax, pMin);

}

else

{

/*最小值与第一个元素交换*/

swap(a, pMin);

/*最大值与最后一个元素交换*/

swap(a + 9, pMax);

}

for(i = 0;i < 10;i++)

{

printf(“%d ”, *(a + i));

/*输出*/

}

return 0;}

void swap(int *px, int *py){

int temp;

temp = *px;

*px = *py;

*py = temp;}

5、用指针实现查找二维数组中最大数及其位置

/*exer 5-5 找出二维数组(设3行4列)中的最大数及其位置 */ #include void main(void){

int a[3][4],(*p)[4], iCol, iRow;

int i, j;

p = a;

for(i = 0;i < 3;i++)

{

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

scanf(“%d”, *(p + i)+ j);

/*输入数组*/

}

iCol = 0;

/*设最大数及其位置 */

iRow = 0;

for(i = 0;i < 3;i++)

{

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

{

if(*(*(p + i)+ j)> *(*(p + iRow)+ iCol))

{

iRow = i;

iCol = j;

/*修改位置*/

}

}

}

printf(“%d %d %dn”, iRow, iCol, a[iRow][iCol]);}

6、用指针实现子字符串提取

/*exer 5-6 由键盘输入一串字符,从字符串下标为m开始

取出n个字符(m和n由键盘输入),形成一个新的字符串

*/ #include #include void main(void){

char szStrSour[80], szStrDest[80], *pszSour, *pszDest;

int i, m, n;

gets(szStrSour);

/* 输入字符串 */

scanf(“%d%d”, &m, &n);

/* 输入位置和长度 */

pszSour = szStrSour + m;

/* 确定起始位置 */

pszDest = szStrDest;

for(i = 0;i < n;i++)

/* 依次取n个字符 */

{

*pszDest = *pszSour;

pszDest++;

pszSour++;

}

*pszDest = '';

/* 在字符串末尾追加结束标志 */

puts(szStrDest);}

实习六答案

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<='9')

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<=200;m=m+2)/* 循环依次遍历待检测的奇数 */

{

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<=k && found)

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

{

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;}

实习七答案

1、电话薄管理程序设计

/* exer 7-1 手机电话簿管理 */ #include #include #include int N=0;

/* 定义全局变量,代表电话簿长度 */ struct stud

/* 定义结构类型 */ {

char name[15];

char phone_num[15];

char mobile_num[15];} book[100];

/* 定义结构数组 */ void creat();

/* 函数的原型声明 */ void insert();void search();void delete();void output();

int main(void)

/* 主函数 */ {

int k;

do

{

printf(“ 0: exitn”);

/* 打印菜单项 */

printf(“ 1: creatn”);

printf(“ 2: searchn”);

printf(“ 3: insertn”);

printf(“ 4: deleten”);

printf(“ 5: outputn”);

printf(“please select:”);

scanf(“%d”,&k);

/* 输入选择项 */

switch(k)

{

case 0:

exit(0);

/* 退出函数 */

case 1:

creat();

break;

case 2:

search();

break;

case 3:

insert();

break;

case 4:

delete();

break;

case 5:

output();

break;

/* 调用子函数 */

default:

exit(0);

}

}

while(1);

return 0;}

void creat(void)

/* 生成子函数 */ {

char appella[15];

getchar();

while(1)

/* 输入结构数组 */

{

gets(appella);

if(*appella=='*')break;

/* 输入*,则结束 */

strcpy(book[N].name, appella);

gets(book[N].phone_num);

gets(book[N].mobile_num);

N++;

/* 统计长度 */

} }

void search(void)

/*查找子函数 */ {

char appella[15];

int i=0;

getchar();

gets(appella);

while(i

{

i++;

}

if(i

printf(“%s %s %sn”,book[i].name,book[i].phone_num,book[i].mobile_num);

else

printf(“not found”);}

void insert(void)

/* 插入子函数 */ {

getchar();

gets(book[N].name);

gets(book[N].phone_num);

gets(book[N].mobile_num);

N++;

/* 长度加1 */ }

void delete(void)

/*删除子函数 */ {

char appella[15];

int i=0,j;

getchar();

gets(appella);

while(i

{

i++;

}

if(i

{

for(j=i+1;j

{

book[j-1] = book[j];

}

N--;

/* 长度减1 */

}

else

printf(“not found”);}

void output(void)

/* 输出子函数 */ {

int i;

for(i=0;i

printf(“%s %s %sn”,book[i].name,book[i].phone_num,book[i].mobile_num);}

2、正负数判断

/* exer 8-1 判断数是正数、负数 */ #include int main(void){

short num,mask,bit;

mask = 0x8000;

/* 构造掩码 */

scanf(“%hx”,&num);

/* 输入数据 */

bit =(mask & num)?1:0;

/* 取出第一位 */

if(bit == 0)

printf(“is positive numbern”);

/* 输出正数 */

else

printf(“is negative numbern”);

/* 输出负数 */

return 0;}

3、偶数位清零

/* exer 8-3 将偶数位清零,其它位保留 */ #include int main(void){

unsigned short a,b,mask;

mask = 0x5555;

/* 构造掩码 */

scanf(“%hx”,&a);

/* 输入数据a */

b = a & mask;

/* 与掩码按位与 */

printf(“%xn”,b);

/* 输出 */

return 0;}

4、结构体的定义与引用 #include

/*定义结构体*/ struct employee {

char name[100];

char ID[20];

int age;

float salary;};

int main(){

/*定义结构体变量*/

struct employee staff;

/*输入数据*/

gets(staff.name);

gets(staff.ID);

scanf(“%d”, &staff.age);

scanf(“%f”, &staff.salary);

/*输出数据*/

puts(staff.name);

puts(staff.ID);

printf(“%dn”, staff.age);

printf(“%.2fn”, staff.salary);

return 0;}

5、结构体数组的定义与引用 #include

/*定义结构体*/ struct employee {

char name[100];

char ID[20];

int age;

float salary;};

int main(){

int i = 0;

float MaxSalary = 0.0f;

/*定义结构体变量*/

struct employee staff[5];

/*输入数据*/

for(i = 0;i < 5;i++)

{

scanf(“%s”, staff[i].name);

scanf(“%s”, staff[i].ID);

scanf(“%d”, &staff[i].age);

scanf(“%f”, &staff[i].salary);

}

MaxSalary = staff[0].salary;

for(i = 1;i < 5;i++)

{

if(staff[i].salary > MaxSalary)

MaxSalary = staff[i].salary;

}

printf(“%.2fn”, MaxSalary);

return 0;}

第二篇:西北农林科技大学 c语言上机 实习5答案

实习五答案

1、用指针实现排序

/* exer 5-1 由键盘输入 10个整数,将它们按由小到大顺序排列 */ #include void main(void){

int a[10],*p = NULL;

/* 说明数组和指针 */

int i, j, temp;

for(p = a;p < a + 10;p++)

/* 指针从数组首到尾 */

{

scanf(“%d”, p);

/* 利用指针依次输入 */

}

p = a;

for(i = 0;i < 9;i++)

/* 利用指针依次比较 */

{

for(j = i + 1;j < 10;j++)

if(*(p + i)> *(p + j))

{

temp = *(p + i);

*(p + i)= *(p + j);

*(p + j)= temp;

}

}

for(p=a;p < a + 9;p++)

printf(“%d ”, *p);

printf(“%dn”, *p);}

2、用指针实现字符串排序

/*exer 5-2 将 10个长度小于20的字符串排序*/ #include #include void main(void){

char szStr[10][20],*psz[10],szTemp[20];

int i,j;

for(i = 0;i < 10;i++)

{

psz[i] = szStr[i];

/*指针数组的每个元素指向各行串*/

}

for(i = 0;i < 10;i++)

{

gets(psz[i]);

/*输入10个字符串*/

}

for(i = 0;i < 9;i++)

/*字符串排序*/

{

for(j = i + 1;j < 10;j++)

{

if(strcmp(psz[i], psz[j])> 0)

{

strcpy(szTemp, psz[i]);

strcpy(psz[i], psz[j]);

strcpy(psz[j], szTemp);

}

}

}

for(i = 0;i < 10;i++)

{

puts(psz[i]);

/*输出字符串*/

} }

3、数据倒置

/*exer 5-3 将具有10个元素的一维数组中的数据倒置 */ #include void main(void){

int a[10], iTemp, *p, *q;

int i;

for(i = 0;i < 10;i++)

{

scanf(“%d”, a + i);

/*输入数组*/

}

p = a;

q = a + 9;

for(p = a, q = a + 9;p < q;p++, q--)

/*首尾交换*/

{

iTemp = *p;

*p = *q;

*q = iTemp;

}

for(i = 0;i < 10;i++)

{

printf(“%d ”, *(a + i));

/*输出*/

} }

4、用指针实现数据位置调整 /*exer 5-4 输入 10个整数,将最大的调到最后,最小的调到最前*/ #include

void swap(int *px, int *py);

int main(void){

int a[10], iTemp, *pMax, *pMin;

int i;

for(i = 0;i < 10;i++)

{

scanf(“%d”, a + i);/*输入数组*/

}

pMax = a;

/*最大值指针指向数组首地址*/

pMin = a;

/*最小值指针指向数组首地址*/

for(i = 1;i < 10;i++)

{

if(*(a+i)> *pMax)

pMax = a + i;

if(*(a+i)< *pMin)

pMin = a + i;

}

/*最大值是第1个元素,最小值是最后一个元素*/

if(pMax == a && pMin == a + 9)

{

swap(pMax, pMin);

}

else

{

/*最小值与第一个元素交换*/

swap(a, pMin);

/*最大值与最后一个元素交换*/

swap(a + 9, pMax);

}

for(i = 0;i < 10;i++)

{

printf(“%d ”, *(a + i));

/*输出*/

}

return 0;}

void swap(int *px, int *py){

int temp;

temp = *px;

*px = *py;

*py = temp;}

5、用指针实现查找二维数组中最大数及其位置

/*exer 5-5 找出二维数组(设3行4列)中的最大数及其位置 */ #include void main(void){

int a[3][4],(*p)[4], iCol, iRow;

int i, j;

p = a;

for(i = 0;i < 3;i++)

{

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

scanf(“%d”, *(p + i)+ j);

/*输入数组*/

}

iCol = 0;

/*设最大数及其位置 */

iRow = 0;

for(i = 0;i < 3;i++)

{

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

{

if(*(*(p + i)+ j)> *(*(p + iRow)+ iCol))

{

iRow = i;

iCol = j;

/*修改位置*/

}

}

}

printf(“%d %d %dn”, iRow, iCol, a[iRow][iCol]);}

6、用指针实现子字符串提取

/*exer 5-6 由键盘输入一串字符,从字符串下标为m开始

取出n个字符(m和n由键盘输入),形成一个新的字符串

*/ #include #include void main(void){

char szStrSour[80], szStrDest[80], *pszSour, *pszDest;

int i, m, n;

gets(szStrSour);

/* 输入字符串 */

scanf(“%d%d”, &m, &n);

/* 输入位置和长度 */

pszSour = szStrSour + m;

/* 确定起始位置 */

pszDest = szStrDest;

for(i = 0;i < n;i++)

/* 依次取n个字符 */

{

*pszDest = *pszSour;

pszDest++;

pszSour++;

}

*pszDest = '';

puts(szStrDest);}

/* 在字符串末尾追加结束标志 */

第三篇:西北农林科技大学 c语言上机 实习6答案

实习六答案

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<='9')

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<=200;m=m+2)/* 循环依次遍历待检测的奇数 */

{

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<=k && found)

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

{

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;}

第四篇:西北农林科技大学C语言上机实习4答案

实习四答案

1、字符串连接

/* exer 4-1 两串字符连接 */由键盘任意输入两串字符,不用库函数strcat,连接将两串字符。

输入: 两串字符

输出: 连接将两串字符

输入样例: abc def

输出样例: abcdef

#include #include void main(void){

unsigned int i,j;

char soustr[80],desstr[80];

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

gets(soustr);

/* 输入原串 */

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

gets(desstr);

/* 输入目的串 */

i = strlen(soustr);

/* 取目的串尾部位置 */

for(j=0;j<=strlen(soustr);j++,i++)

{

soustr[i] = desstr[j];

/* 将原串依次接入目的串尾部 */

}

puts(soustr);}

2、简单加密程序

/* exer 4-2 字符加密 */ 由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。

输入: 一串字符

输出: 加密后的字符串

输入样例: abl2CDxyz 输出样例: cdl2EFzab

提示: 1.可用gets()和puts()输入输出字符串。

2.利用ASCII码运算进行加密。

3.循环右移的含义是:将a-z,A-Z各看成一个环进行移动,即y右移2个字母后为a,z右移2个字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。

#include #include void main(void){

unsigned int j;

char soustr[80],secstr[80];

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

gets(soustr);

/* 输入原串 */

for(j=0;j<=strlen(soustr);j++)

{

if(soustr[j]>='A' && soustr[j]<='Z')

secstr[j] =(soustr[j]-'A'+2)%26+'A';/*计算大写字母密文*/

else if(soustr[j]>='a' && soustr[j]<='z')

secstr[j] =(soustr[j]-'a'+2)%26+'a';/*计算小写字母密文*/

else

secstr[j] = soustr[j];

/* 其它字符不变 */

}

puts(secstr);}

3、矩阵对角线元素求和

/* exer 4-3 主和辅对角线上元素之和 */ 输入一个5×5的数组,分别求其主对角线和辅对角线上元素之和。输入: 5×5的数组

输出: 主对角线和辅对角线上元素之和

输入样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 输出样例: 65 65

主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。

#include #include void main(void){

int i,j;

int a[5][5];

int sum1=0,sum2=0;

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

for(i=0;i<5;i++)

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

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

/* 输入数组 */

for(i=0;i<5;i++)

{

sum1 = sum1+a[i][i];

/* 主对角线 */

sum2 = sum2+a[i][4-i];

/* 辅对角线 */

}

printf(“%d %dn”,sum1,sum2);}

4、数据顺序调整

/* exer 4-4 将最大数调到最前面,最小数调到最后面 */

由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。输入: 任意10个数 输出: 数据调整后的10个数。输入样例: 0 1 2 3 4 5 6 7 8 9

输出样例: 9 1 2 3 4 5 6 7 8 0 提示:① 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置;

② 在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2;

③ 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2;

④ 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。

#include #include void main(void){

int i,a[10],temp;

int kmax=0,kmin=0;

//printf(“please enter :”);

for(i=0;i<10;i++)

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

for(i=0;i<10;i++)

{

if(a[i]>a[kmax])

kmax = i;

else if(a[i]

kmin = i;

}

if(kmax == 9 && kmin == 0)

{

temp = a[0];

a[0] = a[kmax];

a[kmax] = temp;

}

else

{

temp = a[0];

a[0] = a[kmax];

a[kmax] = temp;

temp = a[9];

a[9] = a[kmin];

a[kmin] = temp;

}

for(i=0;i<9;i++)

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

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

/* 输入数组 */

/* 找最大数位置 */

/* 找最小数位置 */ /* 与最前面的数交换 */ /* 与最前面的数交换 */

/* 与最后面的数交换 */

/* 输出数组 */

}

5、字符个数统计

/* exer 4-5 统计大写字母、小写字母、数字及其它字符的个数 */ 由键盘输入任意一串字符串,将其存入一个字符数组,统计其中的大写字母、小写字母、数字以及其他字符的个数。

输入: 任意一串字符串

输出: 大写字母、小写字母、数字以及其他字符的个数。

输入样例: abcdefg123456ABCDEFG

输出样例: 7 7 6 #include #include void main(void){

unsigned int i;

int cap=0,low=0,dig=0,oth=0;

/* 定义并初始化 */

char str[80];

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

gets(str);

/* 输入原串 */

for(i=0;i

{

if(str[i]>='A' && str[i]<='Z')

cap++;

/* 统计大写字母 */

else if(str[i]>='a' && str[i]<='z')

low++;

/* 统计小写字母 */

else if(str[i]>='0' && str[i]<='9')

dig++;

/* 统计数字 */

else

oth++;

/* 统计其它字符 */

}

printf(“%d %d %d %dn”,cap,low,dig,oth);}

6、学生成绩计算

/* exer 4-6 求每一个学生的总成绩和平均成绩 */ 已知10个学生的5门课程的成绩,将其存入一个二维数组,求每一个学生的总成绩和每一个学生的平均成绩。

输入: 10个学生的5门课程的成绩

输出: 每一个学生的总成绩和每一个学生的平均成绩

输入样例: 90.5 80 70 89 84.6 91.5 81 71 88 84.7 92.5 82 72 87 84.8 93.5 83 73 86 84.9 94.5 84 74 85 84.0 95.5 85 75 84 84.1 96.5 86 76 83 84.2 97.5 87 77 82 84.3 98.5 88 78 81 84.4 99.5 89 79 80 84.5

输出样例: 414.100006 82.820000

416.200012 83.240005 418.299988 83.659996 420.399994 84.080002 421.500000 84.300003 423.600006 84.720001 425.700012 85.139999 427.799988 85.559998 429.899994 85.979996 432.000000 86.400002

#include void main(void){

int i,j;

float score[10][5]={0.0f};

float allsco[10],avesco[10];

for(i=0;i<10;i++)

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

scanf(“%f”,&score[i][j]);

/* 输入学生的成绩 */

for(i=0;i<10;i++)

{

allsco[i] = 0;

/* 总成绩清零 */

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

{

allsco[i] = allsco[i]+score[i][j];

/* 累加总成绩 */

}

avesco[i] = allsco[i]/5;

/* 计算平均成绩 */

}

for(i=0;i<10;i++)

printf(“%f %fn”,allsco[i],avesco[i]);/* 输出成绩 */ }

7、姓名排序

/* exer 4-7 姓名排序 */ 由键盘任意输入10个学生的姓名(以拼音形式),将它们按照ASCⅡ码的顺序从小到大排序。10个学生的姓名(以拼音形式)

输出: 按照ASCⅡ码的顺序从小到大排序

输入样例:

输入:

zhang ziang zaang zbang zcang zdang zeang zfang zgang zhang

输出样例: zaang zbang zcang zdang zeang zfang zgang zhang zhang ziang

#include #include void main(void){

int i,j,k;

char name[10][80],temp[80];

//printf(“please enter :”);

for(i=0;i<10;i++)

gets(name[i]);

/* 输入姓名数组 */

for(i=0;i<9;i++)

/* 排序 */

{

k = i;

for(j=i+1;j<10;j++)

if(strcmp(name[k],name[j])>0)

k = j;

if(k!=i)

{

strcpy(temp,name[i]);

strcpy(name[i],name[k]);

strcpy(name[k],temp);

/* 交换 */

}

}

for(i=0;i<10;i++)

puts(name[i]);

/* 输出姓名数组 */ }

8、输出杨辉三角形

/* exer 4-8 打印杨辉三角形 */ 编程实现n阶(n<10)杨辉三角形的输出,n=6时,杨辉三角形如下所示: 1 1 1 2 1 3 1 4 1 5 10 5

输入: 杨辉三角形的阶数n。

输出: n阶杨辉三角形。

输入样例: 6 输出样例: 1 1 1 1 2 1 3 1 4 1 5 10 5

提示:

① 杨辉三角形的特点:第一列和对角线上的元素值均为1,即a[i][0]=a[i][i]=1;其余位置元素的值=上一行本列元素值+上一行前一列元素值,如第三行第二列2就是第二行第一列+第二行第二列,计算公式为a[i][j]=a[i-1][j-1]+ a[i-1][j]。

② 应先对第一列和对角线元素赋值,然后再为其它元素赋值。

#include void main(void){

int i,j;

int a[6][6];

for(i=0;i<6;i++)

{

a[i][i] = 1;

/* 主对角线为1 */

a[i][0] = 1;

/* 第1列为1 */

}

for(i=2;i<6;i++)

for(j=1;j

a[i][j] = a[i-1][j-1]+a[i-1][j];/* 计算 */

for(i=0;i<6;i++)

{

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

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

/* 输出 */

printf(“n”);

/* 换行 */

}

} 或者

#include #include #include

int main(){

int n,i,j;

int a[20][20];

printf(“please input one number:”);

scanf(“%d”,&n);

for(i=0;i

{

a[i][i]=1;

a[i][0]=1;

}

for(i=2;i

for(j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i

{

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

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

printf(“n”);

}

return 0;}

第五篇:西北农林科技大学C语言上机实习6答案

实习六答案

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<='9')

num++;

/* 统计 */

p++;

/* 指针后移 */

}

return num;}

3、排序函数设计

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

输入样例:10<----数据个数 0 1 2 3 4 5 6 7 8 9<----数据

输出样例: 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<=200;m=m+2)/* 循环依次遍历待检测的奇数 */

{

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<=k && found)

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

{

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语言实习答案word格式文档
下载西北农林科技大学c语言实习答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    西北农林科技大学 c语言上机 实习7答案

    实习七答案 1、 电话薄管理程序设计 /* exer 7-1 手机电话簿管理 */ #include #include #include int N=0; /* 定义全局变量,代表电话簿长度 */ struct stud /* 定义结构......

    西北农林科技大学 c语言上机 实习8答案

    1. 文本文件中字符个数统计 #include #include int main(void) { char ch, filename[200]; int count = 0; FILE *fp; scanf("%s", filename); if((fp = fopen(filename, "r......

    西北农林科技大学C语言试题答案

    1、简单程序设计 编程写程序,在屏幕上输出信息:Happy New Year! /* 输出图形*/ #include void main() { printf("Happy New Year!n"); } 2、简单计算 由键盘任意输入2个数,分......

    西北农林科技大学C语言上机实习5答案[共五篇]

    实习五答案 1、 用指针实现排序 /* exer 5-1 由键盘输入 10个整数,将它们按由小到大顺序排列 */ 用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。输入: 键盘输入的......

    西北农林科技大学

    西北农林科技大学 热能与动力工程(本科类) 热能与动力工程专业 学制四年,毕业授予工学学士学位。本专业培养具备水利水电动力工程学科的基本理论、基本知识和基本技能,受到现......

    西北农林科技大学

    西北农林科技大学 2005年下半年教职工政治理论学习安排2005年下半年全校教职工政治理论学习总的要求是:坚持以“三个代表”重要思想为指导,深入学习贯彻党的十六大及十六届四......

    西北农林科技大学实习报告

    摘要:做为水利水电工程二年级的学生,学校安排了本次为期五天的认识实习。要求学生对水工建筑物有基本认识。通过实习让我们对水工建筑物的规模,作用及特点有了很大的了解。同......

    西北农林科技大学外语系

    西北农林科技大学外语系 深入学习实践科学发展观活动整改落实阶段工作方案 (征求意见稿) 整改落实阶段是在学习调研、分析检查阶段工作的基础上,集中精力解决突出问题、完善体......