C语言实验报告第6章答案

合集下载

C语言程序谭浩强第四版 第六章课后习题解析

C语言程序谭浩强第四版 第六章课后习题解析

1.程序如下:#include "stdio.h"#include<math.h>void main(){ int i,j,n,a[101];for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2;i<=sqrt(100);i++)for(j=i+1;j<=100;j++){if(a[i]!=0&&a[j]!=0)if(a[j]%a[i]==0)a[j]=0;}printf("\n");for(i=2,n=0;i<=100;i++){if(a[i]!=0){printf("%5d",a[i]);n++;}if(n==10){printf("\n");n=0;}}printf("\n");}运行结果:2.程序如下:#include "stdio.h"void main(){ int i,j,min,temp,a[11];printf("enter data:\n");for(i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("The orginal numbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for(i=1;i<=9;i++){min=i;for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThe sorted numbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");}运行结果:3.程序如下:#include "stdio.h"void main(){ int a[3][3],sum=0;int i,j;printf("enter data:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%3d",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum); }运行结果:4.程序如下:#include "stdio.h"void main(){ int a[11]={1,4,6,9,12,15,19,32,45,100}; int temp1,temp2,number,end,i,j;printf("arry a:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Now arry a:\n");for(i=0;i<11;i++)printf("%5d",a[i]); printf("\n");}运行结果:5.程序如下:#include "stdio.h"#define N 5void main(){ int a[N],i,temp;printf("enter arry a:\n");for(i=0;i<N;i++)scanf("%d",&a[i]);printf("arry a:\n");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){ temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nNow,arry a:\n");for(i=0;i<N;i++)printf("%4d",a[i]);printf("\n");}运行结果:6.程序如下:#include "stdio.h"void main(){ int i,j,n=0,a[31][31]={0};while(n<1||n>30) /*最多可输出30行*/ {printf("请输入杨辉三角形的行数:");scanf("%d",&n);}for(i=0;i<n;i++)a[i][0]=1; /*第一列全置为一*/ for(i=1;i<n;i++)for(j=1;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j]; /*每个数是上面两数之和*/ for(i=0;i<n;i++) /*输出杨辉三角*/{ for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}运行结果:7.程序如下:#include "stdio.h"void main(){ int a[15][15],i,j,k,p,n;p=1;while(p==1){printf("enter n(n=1--15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;}//初始化for(i=1;i<=n;i++);for(j=1;j<=n;j++);a[i][j]=0;//建立魔方阵j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1) i=n;if(j>n) j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}//输出魔方阵for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%5d",a[i][j]);printf("\n");}}运行结果:(错误)8.程序如下:#include "stdio.h"#define N 4#define M 5void main(){ int i,j,k,a[N][M],max,maxj,flag;printf("please input matrix:\n");for(i=0;i<N;i++)for(j=0;j<M;j++)scanf("%d",&a[i][j]);for(i=0;i<N;i++){max=a[i][0];maxj=0;for(j=0;j<M;j++)if(a[i][j]>max){max=a[i][j];max=j;}flag=1;for(k=0;k<N;k++)if(max>a[k][maxj]){flag=0;continue;}if(flag){printf("a[%d][%d]=%d\n",i,maxj,max);break;}}if(!flag)printf("It is not exist!\n");}运行结果:9.程序如下:#include "stdio.h"#define N 15void main(){ int i,number,top,bott,mid,loca,a[N],flag=1,sign;char c;printf("enter data:\n");scanf("%d",&a[0]);i=1;while(i<N){scanf("%d",&a[i]);if(a[i]>=a[i-1])i++;elseprintf("enter this data again:\n");}printf("\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");while(flag)printf("input number to look for:");scanf("%d",&number);sign=0;top=0;bott=N-1;if((number<a[0])||(number>a[N-1]))loca=-1;while((!sign)&&(top<=bott)){mid=(bott+top)/2;if(number==a[mid]){loca=mid;printf("Has found %d,its position is %d\n",number,loca+1);sign=1;}else if(number<a[mid])bott=mid-1;elsetop=mid+1;}if(!sign||loca==-1)printf("cannot find %d.\n",number);printf("continue or not(Y/N)?");scanf("%c",c);if(c=='N'||c=='n')flag=0;}运行结果:(死循环)10.程序如下:#include "stdio.h"void main(){ int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for(i=0;i<3;i++){ printf("please input line %d:\n",i+1);gets(text[i]);for(j=0;j<80&&text[i][j]!=0;j++){ if (text[i][j]>='A'&&text[i][j]<='Z')upp++;else if (text[i][j]>='a'&&text[i][j]<='z')low++;else if (text[i][j]>='0'&&text[i][j]<='9')dig++;else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case:%d\n",upp);printf("lower case:%d\n",low);printf("digit :%d\n",dig);printf("space :%d\n",spa);printf("other :%d\n",oth); }14.#include<stdio.h>main(){int i,ans;char str1[100],str2[100];printf("input string 1:");gets(str1);printf("input string 2:");gets(str2);i=0;while((str1[i]==str2[i]) && (str1[i]!='\0')) i++;if((str1[i]=='\0') && (str2[i]=='\0'))ans=0;elseans=str1[i]-str2[i];printf("\nans:%d\n",ans);}15.#include<stdio.h>#include<string.h>main(){int i;char str1[100],str2[100];printf("input string 2:");scanf("%s",str2);for(i=0;i<=strlen(str2);i++)str1[i]=str2[i];printf("str1:%s\n",str1); }。

C语言第6章习题解答

C语言第6章习题解答

第6章函数和模块设计【习题6-1】更正下面函数中的错误。

(1)返回求x和y平方和的函数。

(2)返回求x和y为直角边的斜边的函数。

sum_of_sq(x,y) hypot(double x,double y){ {double x,y; h=sqrt(x*x+y*y);return(x*x+y*y); return(h);} }程序如下:/*c6_1(1).c*/ /*c6_1(2).c*/(1) (2)double sum_of_sq(double x,double y) double hypot(double x,double y) { {return(x*x+y*y); double h;} h=sqrt(x*x+y*y);return(h);}【习题6-2】说明下面函数的功能。

(1)itoa(int n,char s[ ])(2)int htod(char hex [ ]){ { int i,dec=0;static int i=0,j=0; for(i=0;hex[i]!='\0';i++)int c; { if(hex[i]>='0'&&hex[i]<='9') if(n!=0) dec=dec*16+hex[i]-'0';{ if(hex[i]>='A'&&hex[i]<='F') j++; dec=dec*16+hex[i]-'A'+10;c=n%10+'0'; if(hex[i]>='a'&&hex[i]<='f') itoa(n/10,s); dec=dec*16+hex[i]-'a'+10;s[i++]=c; }} return(dec);else }{ (3)void stod(int n)if(j==0) s[j++]='0'; { int i;s[j]='\0'; if(n<0){ putchar('-');n=-n;} i=j=0; if((i=n/10)!=0) stod(i);} putchar(n%10+'0');} }功能:(1)(略)(2)(略)【习题6-3】编写已知三角形三边求面积的函数,对于给定的3个量(正值),按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。

C程序设计第六章答案

C程序设计第六章答案

实验六数组练习6.2代码如下:#include <iostream>using namespace std;int main(){int num, max = 0, count = 1;//user input 6 numbersfor (int i = 0; i < 6; i++){cout << "Enter a number: ";cin >> num;//if number entered > max, max = num, count = 1 again.if (num > max){max = num;count = 1;}else if (num == max){count++;}}//displaycout << "The largest number is " << max <<endl;cout << "The largest number appears " << count << " times\n";return 0;}练习6.4代码如下:#include <iostream>using namespace std;int main (){int score[40];int upcount = 0, downcount = 0, equalcount = 0, count = 0,i = 0, j = 0, sum = 0;//input the arrays, and when user enter a minus, stop inputingdo{cout << "Please enter less than 40 students' score, if you want to stop entering you can enter a minus.\n";cout << "You have entered " << count << " scores\n";cin >> j;if ((j >= 0) && (j <= 100)){score[i] = j;j++;count++;i++;}else if (j > 100){cout << "You should enter a correct score";}}while (j >= 0);//compute the sum of the arraysfor (i = 0; i < count; i++){sum += score[i];}//compute the averageint average = sum / count;for (i = 0; i < count; i++){if (score[i] > average){upcount++;}else if (score[i] == average){equalcount++;}else if (score[i] < average){downcount++;}}//display the resultcout << "The summer scores among " << count << " students is " << sum << endl;cout << "The average scores among " << count << " students is "<< average << endl;cout << "There are(is) " << upcount << " student's(s') scores are(is) higher than average.\n";cout << "There are(is) " << equalcount << " student's(s') scores are(is) equal to average.\n";cout << "There are(is) " << downcount << " student's(s') scores are(is) lower than average.\n";return 0;}练习6.6代码如下:#include <iostream>#include <iomanip>using namespace std;bool isPrime (int num);int main (){int prime[50];for (int i = 0, num = 2; i < 50; num++){if ( isPrime(num) ){prime[i] = num;i++;}}for (int i = 0, count = 0; i < 50; i++){cout << setw(6) << prime[i];count++;if (10 == count){cout << endl;count = 0;}}system("pause");return 0;}//this function called isPrime is used to judge an integer is prime or not... bool isPrime (int num){bool isPrime = true;for (int i = 2; i <= sqrt( (double)num ); i++){if (0 == num %i){isPrime = false;break;}}return isPrime;}练习6.8代码如下:#include <iostream>using namespace std;int average(int array[], int size);double average(double array[], int size);int main (){int array1[6] = {1,2,3,4,5,6};double array2[7] = {6.0,4.4,1.9,2.9,3,4,3.5};//display the resultcout << average(array1,6) << endl << average(array2,7) << endl;return 0;}//the kind of integerint average(int array[], int size){double sum = 0;for (int i = 0; i < size; i++){sum += array[i];}return sum / size;}//the kind of integerdouble average(double array[], int size) {double sum = 0;for (int i = 0; i < size; i++){sum += array[i];}return sum / size;}练习6.10代码如下:#include <iostream>using namespace std;void min (int array[], int size);int main (){int array[8] = {2,2,4,5,10,100,2,2};min(array,8);return 0;}//打印最小元的下标void min (int array[], int size){int min = array[0];int xiabiao[10];int j = 0;for (int i = 0; i < size; i++){if ( array[i] <= min ){min = array[i];xiabiao[j] = i;j++;}}int k = j;j = 0;//保存最小元下标的个数cout << "The min of the array(s) is " << min << endl;cout << "The subscript of the minnest number is(are) ";for (; j < k; j++){cout << xiabiao[j] << endl;}}练习6.12代码如下:#include <iostream>using namespace std;void reverse (int soure[], int size);//swapvoid reverse (int soure[], int size){for (int i = 0; i < (size / 2); i++){swap ( soure[i], soure[size-1-i] );}}//check the void reverse is right or notint main (){int array[6] = {1,2,3,4,5,6};reverse (array, 6);for (int i = 0; i < 6; i++){cout << array[i] << endl;}return 0;}练习6.14代码如下:#include <iostream>#include <ctime>using namespace std;int main (){int num[100000];srand ( time(0) );for (long i = 0; i < 100000; i++){num[i] = rand();}//生成关键字int key = rand();cout << "关键字是" << key << endl;//开始计时long startTime1 = time(0);for (int i = 0; i < 100000; i++){if (key == num[i]){cout <<"关键字的下标是"<< i <<endl;}}long endTime1 = time(0);long time1 = endTime1 - startTime1;cout << "顺序搜索时间是" << time1 <<"秒\n\n";//二分搜索int low = 0;int high = 99999;//对数组进行排序,现在开始第二次计时long startTime2 = time(0);for (long i = 9999;i >= 1; i--){int xiabiao = 0, lagest = num[0];for (long j = 1;j <= i; j++){if ( num[j] > lagest ){lagest = num[j];xiabiao = j;}}//swapif ( xiabiao != i){num[xiabiao] = num[i];num[i] = lagest;}}while (high >= low){int mid = (low + high) / 2;if (key < num[mid]){high = mid - 1;}else if (key == num[mid]){cout << "关键字下标是" << mid << endl;break;}else{low = mid + 1;}}long endTime2 = time(0);long time2 = endTime2 - startTime2;cout << "排序和二分搜索花费时间是" << time2 << "秒\n\n";system("pause");return 0;}练习6.16代码如下:#include <iostream>using namespace std;void turn ( double arrays[], int size);int main (){double arrays[7] = {6.0,4.4,1.9,2.9,3.4,2.9,3.5};turn(arrays, 7);for (int i = 0; i < 7; i++){cout << arrays[i] << " ";}system("pause");return 0;}//起泡排序void turn ( double arrays[], int size){bool changed = true;do{changed = false;for (int i = 0; i < size - 1; i++){if (arrays[i] > arrays[i+1]){swap(arrays[i], arrays[i+1]);changed = true;}}} while (changed);}练习6.18代码如下:#include <iostream>using namespace std;int main (){int arrays[4][4] = {{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}};int sum = 0;for (int i = 0, j = 0; i < 4; i++,j++){sum += arrays[i][j];}cout << "主对角线之和为" << sum << endl;system("pause");return 0;}练习6.20代码如下:#include <iostream>using namespace std;void turn ( int arrays[], int size);int main(){int time[8][7] = {{2,4,3,4,5,8,8},{7,3,4,3,3,4,4},{3,3,4,3,3,2,2},{9,3,4,7,3,4,1},{3,5,4,3,6,3,8},{3,4,4,6,3,4,4},{3,7,4,8,3,8,4},{6,3,5,9,2,7,9}};int sumofRow[8] = {0,0,0};for (int row = 0; row < 8; row++){for (int i = 0; i < 7; i++){sumofRow[row] += time[row][i];}}turn(sumofRow, 8);for (int i = 7; i >= 0; i--){cout << sumofRow[i] << endl;}system("pause");return 0;}//排序void turn ( int arrays[], int size){bool changed = true;do{changed = false;for (int i = 0; i < size - 1; i++){if (arrays[i] > arrays[i+1]){swap(arrays[i], arrays[i+1]);changed = true;}}} while (changed);}练习6.22代码如下:#include <iostream>using namespace std;//compute the sumvoid mutiplyMatrix (int a[][5],int b[][5],int c[][5],int rowsize){for (int i = 0; i < rowsize; i++){for (int j = 0; j < rowsize; j++){for (int k = 0; k < rowsize; k++){c[i][j] += (a[i][k] + b[k][j]);}}}}int main (){int a[5][5] = {{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};int b[5][5] = {{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};int c[5][5] = {{0,0,0,0,0},{0},{0},{0},{0}};mutiplyMatrix(a,b,c,5);for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){cout << c[i][j] << endl;}}system("pause");return 0;}练习6.24代码如下:#include <iostream>#include <ctime>using namespace std;int main(){srand( time(0) );int chess[8][8];//随机输入0和1,并输出8*8列表for (int i = 0; i < 8; i++){for (int j = 0; j < 8; j++){chess[i][j] = rand() % 2;cout << chess[i][j];}cout << endl;}//计算每行的和for (int row = 0; row < 8; row++){int sumofrow = 0;for (int column = 0; column < 8; column++){sumofrow += chess[row][column];}if (0 == sumofrow){cout << "All 0s on row" << row + 1 << endl;}else if (8 == sumofrow){cout << "All 1s on row" << row + 1 << endl;}}//计算每列的和for (int column = 0; column < 8; column++){int sumofcolumn = 0;for (int row = 0; row < 8; row++){sumofcolumn += chess[row][column];}if (0 == sumofcolumn){cout << "All 0s on column" << column + 1 << endl;}else if (8 == sumofcolumn){cout << "All 1s on column" << column + 1 << endl;}}//计算两个对角线的和int sumofsubdiagonal1 = 0, sumofsubdiagonal2 = 0;for (int row = 0, column = 0; row < 8; row++,column++){sumofsubdiagonal1 += chess[row][7 - column];sumofsubdiagonal2 += chess[row][column];}if ( 0 == sumofsubdiagonal1 ){cout << "All 0s on subdiagonal1" << endl;}else if ( 8 == sumofsubdiagonal1 ){cout << "All 1s on subdiagonal1" << endl;}if ( 0 == sumofsubdiagonal2 ){cout << "All 0s on subdiagonal2" << endl;}else if ( 8 == sumofsubdiagonal2 ){cout << "All 1s on subdiagonal2" << endl;}system("pause");return 0;}练习6.26代码如下:#include <iostream>using namespace std;int factors(int num, int table[][2]){/*从i=2开始除,若不能被i整除则i++;若能被i整除则输出i,且num变成num除以i的商,重新把2赋值给i,循环。

C实验报告6参考答案

C实验报告6参考答案

《高级语言程序设计》实验报告班级: 学号: 姓名: 成绩:实验6 数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。

2. 掌握字符数组和字符串函数的使用。

3. 掌握与数组有关的算法。

二、实验内容1(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。

纠正程序中存在的错误,以实现其功能。

程序以文件名保存。

#include<>void main(){int n=10,i,sum=0;int a[n]; int a[10];for(i=0;i<10;i++){scanf("%d",a[i]); scanf("%d",&a[i]);sum=sum+a[i];}printf("sum=%d\n",sum);}(2)下列程序的功能为:将字符串b 连接到字符串a 。

纠正程序中存在的错误,以实现其功能。

程序以文件名保存。

#include<>void main( ){ char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";int i,n=0;while(!a[n]) n++; while(a[n] != '\0') n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];a[n+i]=’\0’;printf("%s\n",a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

纠正程序中存在的错误,以实现其功能。

程序以文件名保存。

#include<>#define N 4#define M 4main(){for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if ( flag2) if (! flag2)printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案

C语言第6—8章课后习题答案第六章循环语句6.1输入两个正数,求最大公约数和最小公倍数.#include <stdio.h>void main(){ int a,b,num1,num2,temp;printf("请输入两个正整数:\n");scanf("%d,%d",&num1,&num2);if(num1<num2){temp=num1;num1=num2;num2=temp;}a=num1,b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf("它们的最大公约数为:%d\n",a);printf("它们的最小公倍数为:%d\n",num1*num2/a);}编译已通过6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数. 解:#include <stdio.h>void main(){char c;int letters=0,space=0,degit=0,other=0;printf("请输入一行字符:\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z' || c>'A'&&c<='Z')letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;elseother++;}printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space, digit,other);}6.3求s(n)=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数。

c语言教学资料—第6章课后答案.docx

c语言教学资料—第6章课后答案.docx

第6章练习与思考1.指针变量有哪几种运算类型?除了一般变量能做的它都能做以外,还有取地址和取内容运算。

2.有一个4x4的矩阵,试用指针变量按照4行4列格式,输岀矩阵中各元素的值。

#include "stdio.h"void main(){int 询4][4]={{1,1丄1},{1丄1,1},{1丄1,1},{1,1,1,1}};int *p=a;for(i=0;i<4*4;i++){ printf(n%3d",*(p+i));if((i+l)%4=0)printf(H\n H);}}3•输出一个字符串,将这个字符串屮大写字母改为小写字母,第一个字母变大写。

#include "stdio.h"void main(){char a[100],*p 二NULL;int i;printf(n Please input a string:\n H);gets(a);P=a;if(*p>=,a,&&*p<=,z,)*p=*p・32;for(i=l;a[i]!='\O f;i++){if(*(p+i)>='A '&&*(p+i)v=Z) *(p+i)=*(p+i)+32;}puts(a);}4.指向函数的指针有哪些特点?(1)可以通过调用指向函数的指针来调用函数。

(2)对于已定义的函数指针可以指向返回值类型相同的不同函数。

(3)函数指针可做函数的参数。

5.编写程序,在己知字符串str中截取一子串。

要求该子串是从血的第m个字符开始, 由n个字符组成。

#include "stdio.h"void main()char str[100],s[100];char *pl=str,*p2=s;int i,m,n;printf(n please input string:\n");scanf(n%s n,str);printf(”please input m,n:\n n);scanf("%d,%d",&m,&n);for(i=0;i<n;i++)*(p2+i)=*(pl+m+i);for(i=0;*(p2+i)U\0:i++) prin(f(”%c”,*(p2+i));}6.编写程序,利用指针将二维数组屮各元素输出。

谭浩强c语言第四版第六章课后答案

谭浩强c语言第四版第六章课后答案
{
for(j=0;j<colum;++j)
{
if(a[i][j]>='A'&&a[i][j]<='Z')
{
letter1++;
}
else
{
if(a[i][j]>='a'&&a[i][j]<='z')
{
letter2++;
}
else
{
if(a[i][j]>='0'&&a[i][j]<='9')
{
number++;
for(i=0;i<len;++i)
{
printf("%-5d",a[i]);
}
printf("\n");
for(i=0;i<len/2;++i)
{
t=a[i];
a[i]=a[len-1-i];
a[len-1-i]=t;
}
printf("逆序为:\n");
for(i=0;i<len;++i)
{
printf("%-5d",a[i]);
return 0;
}
# endif
//6.11
# if 0
# include<stdio.h>
int main()
{
char a[5][9]={""};
int row=5,colum=9;

C语言第六章课后答案

C语言第六章课后答案
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("\nThe sorted numbers:\n");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
xt6-3
#include <stdio.h>
return 0;
}
xt6-9
#include <stdio.h>
#define N 15
int main()
{ int i,number,top,bott,mid,loca,a[N],flag=1,sign;
char c;
printf("enter data:\n");
scanf("%d",&a[0]);
printf("The orginal numbers:\n");
for (i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for (i=1;i<=9;i++)
{min=i;
for (j=i+1;j<=10;j++)
if (a[min]>a[j]) min=j;
if (a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for (i=2,n=0;i<=100;i++)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.2基础实验一、程序分析分析以下程序段完成的功能,填写在序号后的空白处,并运行验证结果。

1. ⊙以下程序的运行结果是:_______s=12345↙____________________。

#include <stdio.h>int main( ){ inta[]={1,2,3,4,5},i,j=1,s=0;for(i=4;i>=0;i--){ s=s+a[i]*j;j=j*10;}printf(“ s= %d \n” , s );return 0;}2. 以下程序的运行结果是:_____7 5 3______________________。

#include<stdio.h>int main( ){ int k ;int a[3][3]={9,8,7,6,5,4,3,2,1};for(k=0;k<3;k++)printf(“%d ”,a[k][2-k]);return 0;}3. 以下程序的功能是:____查找最大值元素及下标_________________。

#include <stdio.h>int main( ){ int i, j ,x =0 ,y = 0 , m ;int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };m = a [0][0] ;for (i=0 ;i < 3 ;i++)for (j = 0 ; j<3 ; j++ )if ( a[ i] [ j ] >m ){ m = a[ i ][ j ] ;x = i ;y = j ;}printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运行结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运行结果是:__8,I am student!___________________。

#include <stdio.h>int main( ){ char s1[50]= “I am ”;char s2[ ]=“student!” ;printf(“%d,”, strlen(s2) );strcat(s1,s2);printf(“%s\n”,s1);return 0;}5.以下程序的运行结果是:_______6_____________________。

#include <stdio.h>int main( ){ char b[7]={“67da12”};int i,s=0;for(i=0;b[i]>='0'&&b[i]<='9';i+=2)s=10*s+b[i]-'0';printf (“%d\n”,s);return 0;}6. 以下程序的运行结果是:_______CQM_____________________。

#include <stdio.h>int main( ){ int i=0;char a[ ]= “cbm”,b [ ]= “cqid”,c[10];while(a[i]!='\0'&&b[i]!='\0'){ if(a[i]>=b[i]) c[i]=a[i]-32;else c[i]=b[i]-32;++i;c[i]= '\0';puts (c);return 0;}二、程序填空1. 下面程序的功能是将十进制整数转换成二进制,请在横线上填写正确内容。

#include <stdio.h>int main( ){ int k=0,n,j,num[16]={0};printf(“输入要转换的十进制数\n”);scanf(“%d”,&n);printf (“%d转换为二进制数:\n”,n);do{ num[k]=_n%2_____ ;n=n/2;_k++____ ;}while(n!=0);for(k=15;k>=0;k--)printf(“%d”,num[k]);return 0;}2. 设数组a 的元素均为正整数,以下程序是求 a 中奇数的个数和奇数的平均值,请在横线上填写正确内容。

#include <stdio.h>int main( ){ int a[10]={10,9,8,7,6,5,4,3,2,1};int k,s,i;float ave;for(i=0,k=s=0;i<10;i++){ if(_a[i]%2==0___ ) continue ;s+=____a[i]____;k++;if(k!=0){ ave=s/k;printf (“%d,%.2f\n”,k,ave);}return 0;}3. 下面程序的功能是将字符串a中所有的字符d 删除。#include <stdio.h>int main( ){ char s[80];int i,j;gets(s);for(i=j=0;s[i]!='\0';i++)if(s[i]!='d'){__s[j]=s[i]__; __j++__;}s[j]='\0';puts(s);return 0;}4.从键盘输入:apple <CR> computer<CR>music<CR>game<CR>,想找出最大字符串。#include <stdio.h>#include<string.h>int main( ){ char str[10],temp[10]={0};int i;for(i=0;i<4;i++){ gets(str);if (_strcmp(temp,str)<0_)strcpy(temp,str);}puts(temp);return 0;}6.3拓展实验一、程序改错要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果。

2.调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出4.⊙下面程序的功能是:将字符数组a [6] ={ ‘a’, ‘ b’, ‘ c’, ‘d’, ‘e’,’ f’ } 变为a5.●调试下列程序,使之具有如下功能:任意输入两个字符串(如:“abc123”和“china ”),并存放在a,b 两个数组中。

然后把较短的字符串放在a 数组,较6.从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元二、编写程序1.求5×5矩阵两条对角线上的各元素之和。

2.⊙试编制程序使一维数组中的数按照从大到小的次序排列。

(起泡法和选择6.4习题一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A. 整型常量B. 整型变量C. 整型常量或整型表达式D. 任何类型的表达式2.若有说明:int a[10];则对数组元素的正确引用是()。

A. a[10]B. a[3.5]C. a(5)D. a[10-10]3.以下对一维整型数组a的正确说明是()。

A. int a(10) ;B. int n=10,a[n];C. int n;D. #define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];4.以下能对包含10个元素的一维数组a进行正确初始化的语句是()。

A. int a[10]=(0,0,0,0,0);B. int a[10]={0};C. int a[ ]={0};D. int a[10]={0;0;0;0};5.以下叙述中错误的是()。

A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B. 数组名代表的是数组所占存储区的首地址,其值不可改变C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出”下标越界”的出错信息D. 以通过赋初值的方式确定数组元素的个数6.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是()。

A. 3B. 6C. 10D. 207.以下程序的运行结果是()。

#include <stdio.h>int main( ){int n[5]={0,0,0},i,k=2;for (i=0;i<k;i++) n[i]=n[i]+1;printf (”%d\n”,n[k]);return 0;}A. 不确定的值B. 2C. 1D. 08.以下程序的运行结果是()。

#include <stdio.h>int main( ){int i, a[10];for (i=9;i>=0;i--) a[i]=10-i;printf(“%d%d%d”,a[3],a[6],a[9]);return 0;}A. 258B. 741C. 852D. 3699.以下对二维数组a的正确声明是()。

A. int a[3][ ];B. float a(3,4) ;C. double a[1][4];D. float a(3)(4);10.以下不能对二维数组进行正确初始化的是()。

A. int a[2][3]={0};B.int a[ ][3]={{1,2},{0}};C. int a[2][3]={{1,2},{3,4},{5,6}};D. int a[ ][3]={1,2,3,4,5,6};11.若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是()。

A. a[2][!1]B. a[2][3]C. a[0][3]D. a[1>2][ !1]12.⊙以下程序的运行结果是()。

#include <stdio.h>int main( ){int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;for(i=0;i<3;i++)for(k=i+i;k<4;k++) if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;} for(i=0;i<4;i++) printf(“%d,”,a[0][i]);return 0;}A.6,2,1,1,B. 6,4,3,2,C. 1,1,2,6,D. 2,3,4,6,13.若有说明:int a[3][4]={0};则下面正确的叙述是()。

相关文档
最新文档