西北农林科技大学C语言上机实习4答案_c语言上机题答案大全

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

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

实习四答案

1、字符串连接

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

输入: 两串字符

输出: 连接将两串字符

输入样例: abc def

输出样例: abcdef

#include #include void main(void){

unsigned int i,j;

char soustr[80],detr[80];

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

gets(soustr);

/* 输入原串 */

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

gets(detr);

/* 输入目的串 */

i = strlen(soustr);

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

for(j=0;j

{

soustr[i] = detr[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

{

if(soustr[j]>='A' && soustr[j]

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

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

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

for(j=0;j

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

/* 输入数组 */

for(i=0;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

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

for(i=0;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

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]

cap++;

/* 统计大写字母 */

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

low++;

/* 统计小写字母 */

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

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

for(j=0;j

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

/* 输入学生的成绩 */

for(i=0;i

{

allsco[i] = 0;

/* 总成绩清零 */

for(j=0;j

{

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

/* 累加总成绩 */

}

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

/* 计算平均成绩 */

}

for(i=0;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

gets(name[i]);

/* 输入姓名数组 */

for(i=0;i

/* 排序 */

{

k = i;

for(j=i+1;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

puts(name[i]);

/* 输出姓名数组 */ }

8、输出杨辉三角形

/* exer 4-8 打印杨辉三角形 */ 编程实现n阶(n

1 1 1 21 31 41 5 10 5

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

输出: n阶杨辉三角形。

输入样例: 6 输出样例: 1 1 1 1 21 31 41 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

{

a[i][i] = 1;

/* 主对角线为1 */

a[i][0] = 1;

/* 第1列为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

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

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

printf(“n”);

}

return 0;}

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

文档为doc格式

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